summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitf214193d757a368315ba0c6a1c6c6c30c30729b4 (patch)
treed352cc37e27a245abcbbbe73eb69c27d8a45793d
parent0dd39cd1f2bbc30554fdc68b852c3f58a1ca5027 (diff)
downloadIshtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.tar.bz2
Ishtar-f214193d757a368315ba0c6a1c6c6c30c30729b4.zip
Delete context records (refs #18)
-rw-r--r--ishtar/furnitures/forms.py120
-rw-r--r--ishtar/furnitures/urls.py2
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: