diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-03-16 17:56:07 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-03-16 17:56:07 +0100 | 
| commit | f214193d757a368315ba0c6a1c6c6c30c30729b4 (patch) | |
| tree | d352cc37e27a245abcbbbe73eb69c27d8a45793d /ishtar/furnitures/forms.py | |
| parent | 0dd39cd1f2bbc30554fdc68b852c3f58a1ca5027 (diff) | |
| download | Ishtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.tar.bz2 Ishtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.zip | |
Delete context records (refs #18)
Diffstat (limited to 'ishtar/furnitures/forms.py')
| -rw-r--r-- | ishtar/furnitures/forms.py | 120 | 
1 files changed, 61 insertions, 59 deletions
| diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index b59829784..414b0b1de 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -985,7 +985,48 @@ file_modification_wizard = FileWizard([                              },                            url_name='file_modification',) -class FileClosingWizard(Wizard): +class DeletionWizard(Wizard): +    def get_formated_datas(self, forms): +        datas = super(DeletionWizard, 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, '') +        if not datas and self.fields: +            datas = [['', []]] +        for field in self.fields: +            if field in res: +                datas[0][1].append(res[field]) +        return datas + +    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 FileClosingWizard(DeletionWizard):      model = models.File      fields = ['year', 'numeric_reference', 'internal_reference',                'file_type', 'in_charge', 'general_contractor', 'creation_date', @@ -1541,7 +1582,7 @@ class OperationDateFormSelection(forms.Form):      end_date = forms.DateField(label=_(u"Closing date"),                                 widget=widgets.JQueryDate) -class OperationClosingWizard(FileClosingWizard): +class OperationClosingWizard(DeletionWizard):      model = models.Operation      fields = ['year', 'operation_code', 'operation_type', 'associated_file',             'in_charge', 'start_date', 'end_date', 'comment', 'towns', 'remains'] @@ -1556,19 +1597,11 @@ operation_closing_wizard = OperationClosingWizard([                       ('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([ +operation_deletion_wizard = DeletionWizard([                       ('selec-operation_deletion', OperationFormSelection),                       ('final-operation_deletion', OperationDeletionForm)],                        url_name='operation_deletion',) @@ -1662,54 +1695,7 @@ class RecordWizard(Wizard):              dct.pop('pk')          return super(RecordWizard, self).save_model(dct, m2m, request, storage,                                             form_list, return_object) -    """ -    def done(self, request, storage, form_list, **kwargs): -        ''' -        Save datings -        ''' -        r = super(RecordWizard, self).done(request, storage, form_list, -                                         return_object=True, **kwargs) -        if type(r) not in (list, tuple) or len(r) != 2: -            return r -        obj, res = r -        for form in form_list: -            if not hasattr(form, 'prefix') \ -               or not form.prefix.startswith('datings-') \ -               or not hasattr(form, 'forms'): -                continue -            datings = obj.datings.clear() -            for frm in form.forms: -                if not frm.is_valid(): -                    continue -                dct = frm.cleaned_data.copy() -                if not dct: -                    continue -                try: -                    dct['period'] = models.Period.objects.get( -                                                     pk=int(dct['period'])) -                except (ValueError, ObjectDoesNotExist): -                    continue -                try: -                    dct['dating_type'] = models.DatingType.objects.get( -                                                     pk=int(dct['dating_type'])) -                except (ValueError, ObjectDoesNotExist): -                    continue -                try: -                    dct['quality'] = models.DatingQuality.objects.get( -                                                     pk=int(dct['quality'])) -                except (ValueError, ObjectDoesNotExist): -                    continue -                if 'DELETE' in dct: -                    dct.pop('DELETE') -                dating = models.Dating.objects.filter(**dct).all() -                if dating: -                    dating = dating[0] -                else: -                    dating = models.Dating(**dct) -                    dating.save() -                obj.datings.add(dating) -        return res -""" +  class RecordModifWizard(RecordWizard):      model = models.ContextRecord @@ -1846,3 +1832,19 @@ record_modification_wizard = RecordModifWizard([      ('final-record_modification', FinalForm)],       url_name='record_modification',) +class RecordDeletionWizard(DeletionWizard): +    model = models.ContextRecord +    fields = ['label', 'parcel', 'description', 'lenght', 'width', 'thickness', +              'depth', 'location', 'datings', 'units', 'has_furniture', +              'filling', 'interpretation', 'taq', 'taq_estimated', 'tpq', +              'tpq_estimated'] + +class RecordDeletionForm(FinalForm): +    confirm_msg = " " +    confirm_end_msg = _(u"Would you like to delete this context record?") + +record_deletion_wizard = RecordDeletionWizard([ +                     ('selec-record_deletion', RecordFormSelection), +                     ('final-record_deletion', RecordDeletionForm)], +                      url_name='record_deletion',) + | 
