summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
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
commit086cb36acde4343f5e4dc8dc18a70cdbd8512c33 (patch)
treecf7782840ce79aee720cf3b6c55571ab0b2e7c8e /ishtar_common/forms_common.py
parentee6a1eb3588da3c6c1c3f0e75691541cea2d37ab (diff)
downloadIshtar-086cb36acde4343f5e4dc8dc18a70cdbd8512c33.tar.bz2
Ishtar-086cb36acde4343f5e4dc8dc18a70cdbd8512c33.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.py40
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)