summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/forms.py
diff options
context:
space:
mode:
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
commitf62f609dba49bdd99ccb52cda666b8b7a07d7ae9 (patch)
tree8ea0e9e0422008774054b770296bc7bb95cb0186 /ishtar/furnitures/forms.py
parent3ae6feef8730ee29010ae53a6879c4b88313ae51 (diff)
downloadIshtar-f62f609dba49bdd99ccb52cda666b8b7a07d7ae9.tar.bz2
Ishtar-f62f609dba49bdd99ccb52cda666b8b7a07d7ae9.zip
Manage administrative acts (refs #16)
Diffstat (limited to 'ishtar/furnitures/forms.py')
-rw-r--r--ishtar/furnitures/forms.py194
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',)