diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-18 08:01:35 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-18 08:01:35 +0100 |
commit | f62f609dba49bdd99ccb52cda666b8b7a07d7ae9 (patch) | |
tree | 8ea0e9e0422008774054b770296bc7bb95cb0186 /ishtar/furnitures/forms.py | |
parent | 3ae6feef8730ee29010ae53a6879c4b88313ae51 (diff) | |
download | Ishtar-f62f609dba49bdd99ccb52cda666b8b7a07d7ae9.tar.bz2 Ishtar-f62f609dba49bdd99ccb52cda666b8b7a07d7ae9.zip |
Manage administrative acts (refs #16)
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r-- | ishtar/furnitures/forms.py | 194 |
1 files changed, 161 insertions, 33 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index caab07e8c..02fa838f0 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -699,7 +699,8 @@ class FileFormAddress(forms.Form): validators=[validators.MinValueValidator(0), validators.MaxValueValidator(999999999)]) address = forms.CharField(label=_(u"Main address"), widget=forms.Textarea) - address_complement = forms.CharField(label=_(u"Main address - complement")) + address_complement = forms.CharField(label=_(u"Main address - complement"), + required=False) postal_code = forms.CharField(label=_(u"Main address - postal code"), max_length=10) @@ -844,6 +845,138 @@ file_modification_wizard = FileWizard([ }, url_name='file_modification',) +class FileClosingWizard(Wizard): + model = models.File + fields = ['year', 'numeric_reference', 'internal_reference', + 'file_type', 'in_charge', 'general_contractor', 'creation_date', + 'reception_date', 'total_surface', 'total_developed_surface', + 'address', 'address_complement', 'postal_code', 'comment'] + if settings.COUNTRY == 'fr': + fields += ['saisine_type', 'reference_number'] + fields += ['towns'] + + def get_formated_datas(self, forms): + datas = super(FileClosingWizard, self).get_formated_datas(forms) + self.current_obj = None + for form in forms: + if not hasattr(form, "cleaned_data"): + continue + for key in form.cleaned_data: + if key == 'pk': + model = form.associated_models['pk'] + self.current_obj = model.objects.get(pk=form.cleaned_data['pk']) + if not self.current_obj: + return datas + res = {} + for field in self.model._meta.fields + self.model._meta.many_to_many: + if field.name not in self.fields: + continue + value = getattr(self.current_obj, field.name) + if not value: + continue + if hasattr(value, 'all'): + value = ", ".join([unicode(item) for item in value.all()]) + if not value: + continue + else: + value = unicode(value) + res[field.name] = (field.verbose_name, value, '') + for field in self.fields: + if field in res: + datas[0][1].append(res[field]) + return datas + +class FileDeletionWizard(FileClosingWizard): + def get_formated_datas(self, forms): + datas = super(FileDeletionWizard, self).get_formated_datas(forms) + datas.append((_("Associated operations"), [])) + for operation in models.Operation.objects.filter( + associated_file=self.current_obj).all(): + if operation.end_date: + datas[-1][1].append(('', unicode(operation))) + return datas + + def done(self, request, storage, form_list, **kwargs): + obj = self.get_current_object(request, storage) + for operation in models.Operation.objects.filter( + associated_file=obj).all(): + operation.delete() + obj.delete() + return render_to_response('wizard_done.html', {}, + context_instance=RequestContext(request)) + + +class FinalOperationDeleteForm(FinalForm): + confirm_msg = " " + confirm_end_msg = _(u"Would you like to delete this archaelogical file ?") + +file_deletion_wizard = FileDeletionWizard([ + ('selec-file_deletion', FileFormSelection), + ('final-file_deletion', FinalOperationDeleteForm)], + url_name='file_deletion',) +""" +file_closing_wizard = FileWizard([ + ('selec-file_closing', FileFormSelection), + ('date-operation_closing', OperationDateFormSelection), + ('final-operation_closing', FinalOperationClosingForm)], + url_name='operation_closing',) +""" + +class FileAdministrativeActWizard(FileWizard): + def done(self, request, storage, form_list, **kwargs): + ''' + Save the administrative act + ''' + dct = {} + for form in form_list: + if not form.is_valid(): + return self.render(request, storage, form) + associated_models = hasattr(form, 'associated_models') and \ + form.associated_models or {} + if type(form.cleaned_data) == dict: + for key in form.cleaned_data: + if key == 'pk': + continue + value = form.cleaned_data[key] + 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) + 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) + admact.save() + res = render_to_response('wizard_done.html', {}, + context_instance=RequestContext(request)) + return res + +class AdministrativeActForm(forms.Form): + form_label = _("Administrative act") + act_type = forms.ChoiceField(label=_("Act type"), + choices=models.ActType.get_types()) + signatory = forms.IntegerField(label=_("Signatory"), + widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-person'), + associated_model=models.Person), + validators=[models.valid_id(models.Person)]) + act_object = forms.CharField(label=_(u"Object"), max_length=200, + widget=forms.Textarea) + signature_date = forms.DateField(label=_(u"Signature date"), + widget=widgets.JQueryDate) + if settings.COUNTRY == 'fr': + ref_sra = forms.CharField(label=u"Référence SRA", max_length=15) + +file_administrativeact_wizard = FileAdministrativeActWizard([ + ('selec-file_administrativeact', FileFormSelection), + ('administrativeact-file_administrativeact', AdministrativeActForm), + ('final-file_administrativeact', FinalForm)], + url_name='file_administrativeact',) + class OperationWizard(Wizard): model = models.Operation @@ -1024,42 +1157,11 @@ class OperationDateFormSelection(forms.Form): end_date = forms.DateField(label=_(u"Closing date"), widget=widgets.JQueryDate) -class OperationClosingWizard(Wizard): +class OperationClosingWizard(FileClosingWizard): model = models.Operation fields = ['year', 'operation_code', 'operation_type', 'associated_file', 'in_charge', 'start_date', 'end_date', 'comment', 'towns', 'remains'] - def get_formated_datas(self, forms): - datas = super(OperationClosingWizard, self).get_formated_datas(forms) - current_obj = None - for form in forms: - if not hasattr(form, "cleaned_data"): - continue - for key in form.cleaned_data: - if key == 'pk': - model = form.associated_models['pk'] - current_obj = model.objects.get(pk=form.cleaned_data['pk']) - if not current_obj: - return datas - res = {} - for field in self.model._meta.fields + self.model._meta.many_to_many: - if field.name not in self.fields: - continue - value = getattr(current_obj, field.name) - if not value: - continue - if hasattr(value, 'all'): - value = ", ".join([unicode(item) for item in value.all()]) - if not value: - continue - else: - value = unicode(value) - res[field.name] = (field.verbose_name, value, '') - for field in self.fields: - if field in res: - datas[0][1].append(res[field]) - return datas - class FinalOperationClosingForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to close this operation?") @@ -1069,3 +1171,29 @@ operation_closing_wizard = OperationClosingWizard([ ('date-operation_closing', OperationDateFormSelection), ('final-operation_closing', FinalOperationClosingForm)], url_name='operation_closing',) + +class OperationDeletionWizard(OperationClosingWizard): + def done(self, request, storage, form_list, **kwargs): + obj = self.get_current_object(request, storage) + obj.delete() + return render_to_response('wizard_done.html', {}, + context_instance=RequestContext(request)) + + +class OperationDeletionForm(FinalForm): + confirm_msg = " " + confirm_end_msg = _(u"Would you like to delete this operation?") + +operation_deletion_wizard = OperationDeletionWizard([ + ('selec-operation_deletion', OperationFormSelection), + ('final-operation_deletion', OperationDeletionForm)], + url_name='operation_deletion',) + +class OperationAdministrativeActWizard(FileAdministrativeActWizard): + model = models.Operation + +operation_administrativeact_wizard = OperationAdministrativeActWizard([ + ('selec-operation_administrativeact', OperationFormSelection), + ('administrativeact-operation_administrativeact', AdministrativeActForm), + ('final-operation_administrativeact', FinalForm)], + url_name='operation_administrativeact',) |