Only allow users to add NPC or Player characters.
[matthijs/projects/xerxes.git] / influences / forms.py
index 8ced120dcd8d1e854832cf7c43514f7ba4fe5270..db825cc018362760833c0c2e74a44a11c582e8e4 100644 (file)
@@ -1,7 +1,9 @@
-from django.forms.fields import CharField
+from django.forms.fields import CharField, BooleanField
 from django.forms.widgets import Textarea
+from django.forms.models import ModelMultipleChoiceField
 from threadedcomments.forms import ThreadedCommentForm
 from xerxes.tools.forms import ContextModelForm
+from xerxes.tools.widgets import DropDownMultiple
 from models import Influence, Character
 
 #
@@ -23,6 +25,7 @@ class InfluenceCommentForm(ThreadedCommentForm):
 
 class AdminInfluenceCommentForm(ThreadedCommentForm):
     comment = CharField(widget=Textarea(attrs={'cols' : 80}))
+    is_public = BooleanField(required=False, initial=False)
     def __init__(self, *args, **kwargs):
         super(AdminInfluenceCommentForm, self).__init__(*args, **kwargs)
 
@@ -65,6 +68,11 @@ def _get_influence_comment_form(allow_markup, allow_public, allow_private):
         raise Exception("Unsupported configuration")
 
 class InfluenceForm(ContextModelForm):
+    # Manually define this field so we can select the DropDownMultiple
+    # widget. However, we leave the queryset empty, which characters can
+    # be selected depends on the logged in user and should be set by
+    # setting the choices property in the view.
+    other_characters = ModelMultipleChoiceField(queryset=Character.objects.none(), widget=DropDownMultiple)
     class Meta:
         model = Influence
         fields = ('initiator', 'summary', 'other_characters', 'other_contacts', 'description')
@@ -72,5 +80,5 @@ class InfluenceForm(ContextModelForm):
 class CharacterForm(ContextModelForm):
     class Meta:
         model = Character
-        fields = ('name')
+        fields = ('name', 'type')