diff options
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r-- | ishtar_common/forms_common.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 091d31c1c..664dfb775 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 @@ -193,6 +201,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) @@ -244,6 +259,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) |