summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index ac08b6c4e..509b9fbc5 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -54,6 +54,14 @@ def get_town_field(label=_(u"Town"), required=True):
validators=[models.valid_id(models.Town)], label=label,
help_text=mark_safe(help_text), required=required)
+def get_advanced_town_field(label=_(u"Town"), required=True):
+ # !FIXME hard_link, reverse_lazy doen't seem to work with formsets
+ return forms.IntegerField(
+ widget=widgets.JQueryTown("/" + settings.URL_PATH + \
+ 'autocomplete-advanced-town'),
+ validators=[models.valid_id(models.Town)], label=label,
+ required=required)
+
def get_person_field(label=_(u"Person"), required=True, person_types=[]):
# !FIXME hard_link, reverse_lazy doen't seem to work with formsets
widget = None
@@ -194,6 +202,13 @@ class OrganizationFormSelection(forms.Form):
OrganizationSelect, models.Organization),
validators=[models.valid_id(models.Organization)])
+class BaseOrganizationForm(forms.ModelForm):
+ form_prefix = "orga"
+ class Meta:
+ model = models.Organization
+ fields = ['name', 'organization_type', 'address', 'address_complement',
+ 'town', 'postal_code',]
+
class PersonSelect(TableSelect):
name = forms.CharField(label=_(u"Name"), max_length=30)
surname = forms.CharField(label=_(u"Surname"), max_length=20)
@@ -245,6 +260,39 @@ class SimplePersonForm(NewItemForm):
associated_model=models.Organization, new=True),
validators=[models.valid_id(models.Organization)], required=False)
+class BasePersonForm(forms.ModelForm):
+ class Meta:
+ model = models.Person
+ fields = ['title', 'name', 'surname', 'address', 'address_complement',
+ 'town', 'postal_code']
+
+class BaseOrganizationPersonForm(forms.ModelForm):
+ class Meta:
+ model = models.Person
+ fields = ['attached_to', 'title', 'name', 'surname',]
+ widgets = {'attached_to':widgets.JQueryPersonOrganization(
+ reverse_lazy('autocomplete-organization'),
+ reverse_lazy('organization_create'),
+ model=models.Organization,
+ attrs={'hidden':True},
+ new=True),
+ }
+
+ def __init__(self, *args, **kwargs):
+ super(BaseOrganizationPersonForm, self).__init__(*args, **kwargs)
+
+ def save(self, *args, **kwargs):
+ person = super(BaseOrganizationPersonForm, self).save(*args, **kwargs)
+ instance = person.attached_to
+ form = BaseOrganizationForm(self.data, instance=instance,
+ prefix=BaseOrganizationForm.form_prefix)
+ if form.is_valid():
+ orga = form.save()
+ if not person.attached_to:
+ person.attached_to = orga
+ person.save()
+ return person
+
class PersonForm(SimplePersonForm):
person_types = forms.MultipleChoiceField(label=_("Person type"),
choices=[], widget=forms.CheckboxSelectMultiple)