diff options
Diffstat (limited to 'ishtar/furnitures/forms.py')
| -rw-r--r-- | ishtar/furnitures/forms.py | 45 | 
1 files changed, 40 insertions, 5 deletions
| diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index c393bb3df..f152d27e4 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -21,6 +21,7 @@  Forms definition  """  import datetime +import re  from django.core.urlresolvers import reverse  from django.core import validators @@ -176,7 +177,7 @@ class Wizard(NamedUrlSessionFormWizard):                      if key.startswith('hidden_'):                          continue                      value = form.cleaned_data[key] -                    if key in associated_models: +                    if key in associated_models and value:                          value = associated_models[key].objects.get(pk=value)                      dct[key] = value          dct = self.get_extra_model(dct, request, storage, form_list) @@ -362,6 +363,44 @@ class Wizard(NamedUrlSessionFormWizard):                      initial.append(vals)          return initial +def get_now(): +    format = formats.get_format('DATE_INPUT_FORMATS')[0] +    value = datetime.datetime.now().strftime(format) +    return value + +regexp_name = re.compile(r'^[\w\- ]+$', re.UNICODE) +name_validator = validators.RegexValidator(regexp_name, +_(u"Enter a valid name consisting of letters, spaces and hyphens."), 'invalid') + +class PersonWizard(Wizard): +    model = models.Person + +class PersonForm(forms.Form): +    form_label = _("Identity") +    associated_models = {'attached_to':models.Organization, +                         'person_type':models.PersonType} +    title = forms.ChoiceField(label=_("Title"), choices=models.Person.TYPE) +    surname = forms.CharField(label=_(u"Surname"), max_length=20, +                              validators=[name_validator]) +    name = forms.CharField(label=_(u"Name"), max_length=30, +                              validators=[name_validator]) +    email = forms.CharField(label=_(u"Email"), max_length=40, +                            validators=[validators.validate_email]) +    person_type = forms.ChoiceField(label=_("Person type"), +                                  choices=models.PersonType.get_types()) +    attached_to = forms.IntegerField(label=_("Current organization"), +  widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-organization'), +  associated_model=models.Organization), +  validators=[models.valid_id(models.Organization)], required=False) +    is_author = forms.NullBooleanField(label=_(u"Is an author?"), +                                       required=False) +    in_charge_storage = forms.NullBooleanField(required=False, +                                       label=_(u"In charge of a storage?")) + +person_creation_wizard = PersonWizard([ +                        ('identity-person_creation', PersonForm), +                        ('final-person_creation', FinalForm)], +                         url_name='person_creation',)  class FileWizard(Wizard):      model = models.File @@ -438,10 +477,6 @@ class FileWizard(Wizard):                      parcel.save()          return res -def get_now(): -    format = formats.get_format('DATE_INPUT_FORMATS')[0] -    value = datetime.datetime.now().strftime(format) -    return value  class FileFormSelection(forms.Form):      form_label = _("Archaelogical file") | 
