diff options
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',)  | 
