diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-02-11 03:49:50 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-02-11 03:49:50 +0100 |
commit | a9b5d4dff598de052156c8586edac500aca8fede (patch) | |
tree | 4b5d5239772666448740fbf21dc00bb59549a130 /ishtar/furnitures/forms.py | |
parent | 107463ea683b02c90a090fab65c8803383b9596a (diff) | |
download | Ishtar-a9b5d4dff598de052156c8586edac500aca8fede.tar.bz2 Ishtar-a9b5d4dff598de052156c8586edac500aca8fede.zip |
Modification of archaelogical file's admin act (refs #141)
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r-- | ishtar/furnitures/forms.py | 59 |
1 files changed, 53 insertions, 6 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index 68c672c01..1e23c9877 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -1017,6 +1017,10 @@ file_closing_wizard = FileWizard([ """ class FileAdministrativeActWizard(FileWizard): + edit = False + def get_associated_file(self, request, storage, dct): + return self.get_current_object(request, storage) + def done(self, request, storage, form_list, **kwargs): ''' Save the administrative act @@ -1035,23 +1039,33 @@ class FileAdministrativeActWizard(FileWizard): if key in associated_models and value: value = associated_models[key].objects.get(pk=value) dct[key] = value - associated_file = self.get_current_object(request, storage) + associated_file = self.get_associated_file(request, storage, dct) if not associated_file: return self.render(request, storage, form) dct['associated_file'] = associated_file dct['history_modifier'] = request.user - if 'pk_admact': - pass - #admact = models.AdministrativeAct.objects() - else: - admact = models.AdministrativeAct.objects(**dct) + if self.edit: + admact = self.get_current_object(request, storage) + for k in dct: + if hasattr(admact, k): + setattr(admact, k, dct[k]) admact.save() + else: + admact = models.AdministrativeAct(**dct) res = render_to_response('wizard_done.html', {}, context_instance=RequestContext(request)) return res +class FileEditAdministrativeActWizard(FileAdministrativeActWizard): + model = models.AdministrativeAct + edit = True + def get_associated_file(self, request, storage, dct): + return self.get_current_object(request, storage).associated_file + class AdministrativeActForm(forms.Form): form_label = _("Administrative act") + associated_models = {'act_type':models.ActType, + 'signatory':models.Person} act_type = forms.ChoiceField(label=_("Act type"), choices=models.ActType.get_types(dct={'intented_to':'F'})) signatory = forms.IntegerField(label=_("Signatory"), @@ -1065,12 +1079,45 @@ class AdministrativeActForm(forms.Form): if settings.COUNTRY == 'fr': ref_sra = forms.CharField(label=u"Référence SRA", max_length=15) +class AdministrativeActFileSelect(forms.Form): + associated_file__towns = forms.IntegerField(label=_(u"Town"), + widget=widgets.JQueryAutoComplete("/" + settings.URL_PATH + \ + 'autocomplete-town', associated_model=models.Town), + validators=[models.valid_id(models.Town)]) + act_type = forms.ChoiceField(label=_("Act type"), + choices=models.ActType.get_types(dct={'intented_to':'F'})) + +class AdministrativeActFileFormSelection(forms.Form): + form_label = _("Administrative Act") + associated_models = {'pk':models.AdministrativeAct} + currents = {'pk':models.AdministrativeAct} + pk = forms.IntegerField(label="", required=False, + widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeact'), + AdministrativeActFileSelect(), models.AdministrativeAct), + validators=[models.valid_id(models.AdministrativeAct)]) + + def clean(self): + cleaned_data = self.cleaned_data + if 'pk' not in cleaned_data or not cleaned_data['pk']: + raise forms.ValidationError(_(u"You should select an administrative" + " act.")) + return cleaned_data + + file_administrativeact_wizard = FileAdministrativeActWizard([ ('selec-file_administrativeact', FileFormSelection), ('administrativeact-file_administrativeact', AdministrativeActForm), ('final-file_administrativeact', FinalForm)], url_name='file_administrativeact',) +file_administrativeact_modification_wizard = FileEditAdministrativeActWizard([ + ('selec-file_administrativeact_modification', + AdministrativeActFileFormSelection), + ('administrativeact-file_administrativeact_modification', + AdministrativeActForm), + ('final-file_administrativeact_modification', FinalForm)], + url_name='file_administrativeact_modification',) + class OperationWizard(Wizard): model = models.Operation |