diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-21 15:04:28 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-10-21 15:04:28 +0200 |
commit | 038b12ea13407d69fbbe8f0fae3067aa55f1f763 (patch) | |
tree | a8d881b59447269f2e92578cf5924759bad17704 /archaeological_operations/wizards.py | |
parent | ea73bf44c5d527f407c89b35b22b21abf2f32617 (diff) | |
download | Ishtar-038b12ea13407d69fbbe8f0fae3067aa55f1f763.tar.bz2 Ishtar-038b12ea13407d69fbbe8f0fae3067aa55f1f763.zip |
Djangoization - Major refactoring (step 8)
* clean-up on request and storage args in methods
* view creation now managed by South
* clean some mess in session values by using MultiValueDict
Diffstat (limited to 'archaeological_operations/wizards.py')
-rw-r--r-- | archaeological_operations/wizards.py | 89 |
1 files changed, 46 insertions, 43 deletions
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 542d0118b..2dae72aad 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -31,35 +31,36 @@ class OperationWizard(Wizard): model = models.Operation object_parcel_type = 'operation' - def get_template(self, request, storage): - templates = super(OperationWizard, self).get_template(request, storage) + def get_template_names(self): + templates = super(OperationWizard, self).get_template_names() current_step = storage.get_current_step() or self.get_first_step( request, storage) if current_step.startswith('towns-'): - templates = ['towns_wizard.html'] + templates + # vérifier que le context_data est bien chargé + #templates = ['ishtar/wizard/towns_wizard.html'] + templates + templates = ['ishtar/wizar/towns_wizard.html'] + templates return templates - def get_extra_context(self, request, storage): + def get_context_data(self, form, **kwargs): """ Return extra context for templates """ - context = super(OperationWizard, self).get_extra_context(request, - storage) + context = super(OperationWizard, self).get_context_data(forms, + **kwargs) #step = self.determine_step(request, storage) step = self.steps.current if not step.startswith('towns-'): return context - context['TOWNS'] = self.get_towns(request, storage) + context['TOWNS'] = self.get_towns() return context - def get_towns(self, request, storage): + def get_towns(self): """ Obtention des villes disponibles """ general_form_key = 'general-' + self.url_name towns = [] - file_id = self.session_get_value(request, storage, general_form_key, - "associated_file") + file_id = self.session_get_value(general_form_key, "associated_file") if file_id: try: for town in models.File.objects.get(pk=int(file_id) @@ -71,7 +72,7 @@ class OperationWizard(Wizard): else: return -1 - def get_form(self, request, storage, step=None, data=None, files=None): + def get_form(self, step=None, data=None, files=None): """ Manage specifics fields """ @@ -82,13 +83,13 @@ class OperationWizard(Wizard): if not step: #step = self.determine_step(request, storage) step = self.steps.current - form = self.get_form_list(request, storage)[step] + form = self.get_form_list()[step] general_form_key = 'general-' + self.url_name # manage the dynamic choice of towns if step.startswith('towns-') and hasattr(form, 'management_form'): - data['TOWNS'] = self.get_towns(request, storage) + data['TOWNS'] = self.get_towns() elif step.startswith('parcels') and hasattr(form, 'management_form'): - file_id = self.session_get_value(request, storage, general_form_key, + file_id = self.session_get_value(general_form_key, "associated_file") if file_id: parcels = [] @@ -103,8 +104,8 @@ class OperationWizard(Wizard): town_form_key = step.startswith('parcelsgeneral') \ and 'townsgeneral-' or 'towns-' town_form_key += self.url_name - town_ids = self.session_get_value(request, storage, - town_form_key, 'town', multi=True) or [] + town_ids = self.session_get_value(town_form_key, 'town', + multi=True) or [] towns = [] for town_id in town_ids: try: @@ -114,8 +115,7 @@ class OperationWizard(Wizard): pass data['TOWNS'] = sorted(towns, key=lambda x:x[1]) data = data or None - form = super(OperationWizard, self).get_form(request, storage, step, - data, files) + form = super(OperationWizard, self).get_form(step, data, files) return form def get_formated_datas(self, forms): @@ -138,7 +138,8 @@ class OperationModificationWizard(OperationWizard): class OperationClosingWizard(ClosingWizard): model = models.Operation fields = ['year', 'operation_code', 'operation_type', 'associated_file', -'in_charge', 'start_date', 'excavation_end_date', 'comment', 'towns', 'remains'] + 'in_charge', 'start_date', 'excavation_end_date', 'comment', + 'towns', 'remains'] class OperationDeletionWizard(DeletionWizard): model = models.Operation @@ -146,15 +147,14 @@ class OperationDeletionWizard(DeletionWizard): class OperationSourceWizard(SourceWizard): model = models.OperationSource - def get_form_initial(self, request, storage, step): - initial = super(OperationSourceWizard, self).get_form_initial(request, - storage, step) + def get_form_initial(self, step): + initial = super(OperationSourceWizard, self).get_form_initial(step) # put default index and operation_id field in the main source form general_form_key = 'selec-' + self.url_name if step.startswith('source-') \ - and self.session_has_key(request, storage, general_form_key): - gen_storage = request.session[storage.prefix]['step_data']\ - [general_form_key] + and self.session_has_key(general_form_key): + gen_storage = self.request.session[storage.prefix]['step_data']\ + [general_form_key] if general_form_key+"-operation" in gen_storage: operation_id = int(gen_storage[general_form_key+"-operation"]) elif general_form_key+"-pk" in gen_storage: @@ -180,27 +180,27 @@ class OperationSourceDeletionWizard(DeletionWizard): class OperationAdministrativeActWizard(OperationWizard): edit = False - def get_extra_model(self, dct, request, storage, form_list): - dct['history_modifier'] = request.user + def get_extra_model(self, dct, form_list): + dct['history_modifier'] = self.request.user return dct - def get_associated_item(self, request, storage, dct): - return self.get_current_object(request, storage) + def get_associated_item(self, dct): + return self.get_current_object() - def save_model(self, dct, m2m, whole_associated_models, request, storage, - form_list, return_object): - associated_item = self.get_associated_item(request, storage, dct) + def save_model(self, dct, m2m, whole_associated_models, form_list, + return_object): + associated_item = self.get_associated_item(dct) if not associated_item: - return self.render(request, storage, form_list[-1]) + return self.render(form_list[-1]) if isinstance(associated_item, models.File): dct['associated_file'] = associated_item elif isinstance(associated_item, models.Operation): dct['operation'] = associated_item - dct['history_modifier'] = request.user + dct['history_modifier'] = self.request.user if 'pk' in dct: dct.pop('pk') if self.edit: - admact = self.get_current_object(request, storage) + admact = self.get_current_object() for k in dct: if hasattr(admact, k): setattr(admact, k, dct[k]) @@ -208,14 +208,14 @@ class OperationAdministrativeActWizard(OperationWizard): admact = models.AdministrativeAct(**dct) admact.save() res = render_to_response('wizard_done.html', {}, - context_instance=RequestContext(request)) + context_instance=RequestContext(self.request)) return res class OperationEditAdministrativeActWizard(OperationAdministrativeActWizard): model = models.AdministrativeAct edit = True - def get_associated_item(self, request, storage, dct): - return self.get_current_object(request, storage).operation + def get_associated_item(self, dct): + return self.get_current_object().operation class AdministrativeActDeletionWizard(ClosingWizard): model = models.AdministrativeAct @@ -224,11 +224,11 @@ class AdministrativeActDeletionWizard(ClosingWizard): if settings.COUNTRY == 'fr': fields += ['ref_sra'] - def done(self, request, storage, form_list, **kwargs): - obj = self.get_current_object(request, storage) + def done(self, form_list, **kwargs): + obj = self.get_current_object() obj.delete() return render_to_response('wizard_done.html', {}, - context_instance=RequestContext(request)) + context_instance=RequestContext(self.request)) def is_preventive(form_name, model, type_key='operation_type', key=''): def func(self): @@ -241,8 +241,11 @@ def is_preventive(form_name, model, type_key='operation_type', key=''): request.session[storage.prefix]['step_data'][form_name]: return False try: - typ = int(request.session[storage.prefix]['step_data']\ - [form_name][form_name+'-'+type_key][0]) + typ = request.session[storage.prefix]['step_data']\ + [form_name][form_name+'-'+type_key] + if type(typ) in (list, tuple): + typ = typ[0] + typ = int(typ) return model.is_preventive(typ, key) except ValueError: return False |