diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2014-12-28 01:15:07 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2015-05-06 15:38:32 +0200 | 
| commit | 3b557c928dc57942d4e9496b7730504bc44ad1eb (patch) | |
| tree | cf7782840ce79aee720cf3b6c55571ab0b2e7c8e /ishtar_common/forms_common.py | |
| parent | 16fbb32b8ba00325a7b813825f288cb097699c98 (diff) | |
| download | Ishtar-3b557c928dc57942d4e9496b7730504bc44ad1eb.tar.bz2 Ishtar-3b557c928dc57942d4e9496b7730504bc44ad1eb.zip | |
Work on dynamic (too much of ajax and JS...) person/organization widget
Diffstat (limited to 'ishtar_common/forms_common.py')
| -rw-r--r-- | ishtar_common/forms_common.py | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index d8740b68c..e1a0e9063 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -191,6 +191,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) @@ -242,6 +249,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) | 
