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 | |
parent | 0dd39cd1f2bbc30554fdc68b852c3f58a1ca5027 (diff) | |
download | Ishtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.tar.bz2 Ishtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.zip |
Delete context records (refs #18)
-rw-r--r-- | ishtar/furnitures/forms.py | 120 | ||||
-rw-r--r-- | ishtar/furnitures/urls.py | 2 |
2 files changed, 63 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',) + diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py index d2e55ac5e..5a72a1182 100644 --- a/ishtar/furnitures/urls.py +++ b/ishtar/furnitures/urls.py @@ -67,6 +67,8 @@ urlpatterns = patterns('', ishtar_forms.record_creation_wizard, name='record_creation'), url(BASE_URL + r'record_modification/(?P<step>.+)$', ishtar_forms.record_modification_wizard, name='record_modification'), + url(BASE_URL + r'record_deletion/(?P<step>.+)$', + ishtar_forms.record_deletion_wizard, name='record_deletion'), ) for section in menu.childs: for menu_item in section.childs: |