diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-19 11:17:58 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-03-19 11:17:58 +0100 |
commit | baf29e1bb4b18fb9830956c53f3475db2f828e3f (patch) | |
tree | 31b6b0a838b83efce2437d956a4f8d1a54f0aae6 /archaeological_finds/wizards.py | |
parent | 9d662a73d94264e2129195018d230481e1e2272f (diff) | |
download | Ishtar-baf29e1bb4b18fb9830956c53f3475db2f828e3f.tar.bz2 Ishtar-baf29e1bb4b18fb9830956c53f3475db2f828e3f.zip |
Format - black: finds
Diffstat (limited to 'archaeological_finds/wizards.py')
-rw-r--r-- | archaeological_finds/wizards.py | 350 |
1 files changed, 198 insertions, 152 deletions
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index d49529bf8..c4c191e4e 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> @@ -22,8 +22,12 @@ from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from ishtar_common.utils import ugettext_lazy as _, pgettext from ishtar_common.forms import reverse_lazy -from ishtar_common.wizards import Wizard, DeletionWizard, SearchWizard, \ - MultipleDeletionWizard +from ishtar_common.wizards import ( + Wizard, + DeletionWizard, + SearchWizard, + MultipleDeletionWizard, +) from archaeological_operations.wizards import OperationAdministrativeActWizard from archaeological_operations.models import AdministrativeAct @@ -37,19 +41,19 @@ class FindSearch(SearchWizard): class FindWizard(Wizard): model = models.Find - wizard_done_window = reverse_lazy('show-find') + wizard_done_window = reverse_lazy("show-find") redirect_url = "find_modification" def get_current_contextrecord(self): step = self.steps.current if not step: return - if step.endswith('_creation'): # a context record has been selected - main_form_key = 'selecrecord-' + self.url_name + if step.endswith("_creation"): # a context record has been selected + main_form_key = "selecrecord-" + self.url_name try: - idx = int(self.session_get_value(main_form_key, 'pk')) + idx = int(self.session_get_value(main_form_key, "pk")) return ContextRecord.objects.get(pk=idx) - except(TypeError, ValueError, ObjectDoesNotExist): + except (TypeError, ValueError, ObjectDoesNotExist): pass current_item = self.get_current_object() if current_item: @@ -66,12 +70,14 @@ class FindWizard(Wizard): def get_form_kwargs(self, step=None): kwargs = super(FindWizard, self).get_form_kwargs(step) if step not in ( - 'find-find_creation', 'find-find_modification', - 'simplefind-find_modification',): + "find-find_creation", + "find-find_modification", + "simplefind-find_modification", + ): return kwargs - kwargs['context_record'] = self.get_current_contextrecord() - if step == 'simplefind-find_modification': - kwargs['base_finds'] = self.get_current_basefinds() + kwargs["context_record"] = self.get_current_contextrecord() + if step == "simplefind-find_modification": + kwargs["base_finds"] = self.get_current_basefinds() return kwargs def get_context_data(self, form, **kwargs): @@ -80,42 +86,57 @@ class FindWizard(Wizard): """ context = super(FindWizard, self).get_context_data(form, **kwargs) current_cr = self.get_current_contextrecord() - if not current_cr or self.steps.current.startswith('select-'): + if not current_cr or self.steps.current.startswith("select-"): return context - context['reminders'] = ( + context["reminders"] = ( (_("Operation"), str(current_cr.operation)), - (_("Context record"), str(current_cr))) + (_("Context record"), str(current_cr)), + ) return context def get_extra_model(self, dct, m2m, form_list): dct = super(FindWizard, self).get_extra_model(dct, m2m, form_list) - dct['order'] = 1 - if 'pk' in dct and type(dct['pk']) == ContextRecord: - dct['base_finds__context_record'] = dct.pop('pk') + dct["order"] = 1 + if "pk" in dct and type(dct["pk"]) == ContextRecord: + dct["base_finds__context_record"] = dct.pop("pk") return dct class FindModificationWizard(FindWizard): modification = True - main_item_select_keys = ('selec-', 'selecw-') + main_item_select_keys = ("selec-", "selecw-") filter_owns = { - 'selec-find_modification': ['pk'], - 'selecw-find_modification': ['pk'], + "selec-find_modification": ["pk"], + "selecw-find_modification": ["pk"], } wizard_templates = { - 'simplefind-find_modification': - 'ishtar/wizard/wizard_simplefind.html', + "simplefind-find_modification": "ishtar/wizard/wizard_simplefind.html", } class FindDeletionWizard(MultipleDeletionWizard): model = models.Find - main_item_select_keys = ('selec-', 'selecw-') - fields = ['label', 'material_types', 'datings', 'find_number', - 'object_types', 'description', 'conservatory_state', 'mark', - 'preservation_to_considers', 'integrities', 'remarkabilities', - 'volume', 'weight', 'length', 'width', 'height', 'diameter', - 'comment'] + main_item_select_keys = ("selec-", "selecw-") + fields = [ + "label", + "material_types", + "datings", + "find_number", + "object_types", + "description", + "conservatory_state", + "mark", + "preservation_to_considers", + "integrities", + "remarkabilities", + "volume", + "weight", + "length", + "width", + "height", + "diameter", + "comment", + ] redirect_url = "find_deletion" @@ -125,7 +146,7 @@ class TreatmentSearch(SearchWizard): class TreatmentBase(Wizard): model = models.Treatment - wizard_done_window = reverse_lazy('show-treatment') + wizard_done_window = reverse_lazy("show-treatment") base_url = "" saved_args = {"treatment_type_list": []} redirect_url = "treatment_search" @@ -134,55 +155,54 @@ class TreatmentBase(Wizard): step = self.steps.current if not step: return - find_form_key = 'selecfind-' + self.base_url + find_form_key = "selecfind-" + self.base_url find_ids = self.session_get_value(find_form_key, "resulting_pk") try: return [ models.Find.objects.get(pk=int(find_id.strip())) - for find_id in find_ids.split(',') + for find_id in find_ids.split(",") ] - except(TypeError, ValueError, AttributeError, ObjectDoesNotExist): + except (TypeError, ValueError, AttributeError, ObjectDoesNotExist): pass def get_form_initial(self, step, data=None): initial = super(TreatmentBase, self).get_form_initial(step) - base_step = 'basetreatment-' + self.base_url + base_step = "basetreatment-" + self.base_url if step != base_step: return initial finds = self.get_current_finds() if not finds: return initial - locations = [find.container.location.pk for find in finds - if find.container] + locations = [find.container.location.pk for find in finds if find.container] # no location or multiple locations if not locations or len(set(locations)) != 1: return initial if not initial: initial = {} - initial['location'] = locations[0] + initial["location"] = locations[0] return initial def get_extra_model(self, dct, m2m, form_list): dct = super(TreatmentBase, self).get_extra_model(dct, m2m, form_list) - dct['treatment_type_list'] = [] + dct["treatment_type_list"] = [] for k, v in m2m: - if k == 'treatment_type': + if k == "treatment_type": if type(v) not in (list, tuple): v = [v] - dct['treatment_type_list'] += v + dct["treatment_type_list"] += v return dct class TreatmentWizard(TreatmentBase): - basket_step = 'basetreatment-treatment_creation' + basket_step = "basetreatment-treatment_creation" saved_args = {"items": [], "treatment_type_list": []} - base_url = 'treatment_creation' + base_url = "treatment_creation" def get_form_kwargs(self, step, **kwargs): kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs) if self.basket_step not in step: return kwargs - kwargs['user'] = self.request.user + kwargs["user"] = self.request.user return kwargs def get_extra_model(self, dct, m2m, form_list): @@ -190,13 +210,13 @@ class TreatmentWizard(TreatmentBase): Get items concerned by the treatment """ dct = super(TreatmentWizard, self).get_extra_model(dct, m2m, form_list) - if 'resulting_pk' in dct: - dct['items'] = [] - pks = dct.pop('resulting_pk') + if "resulting_pk" in dct: + dct["items"] = [] + pks = dct.pop("resulting_pk") if isinstance(pks, models.Find): pks = [pks] if not isinstance(pks, (list, tuple)): - pks = str(pks).split(',') + pks = str(pks).split(",") for pk in pks: if isinstance(pk, models.Find): @@ -206,17 +226,18 @@ class TreatmentWizard(TreatmentBase): find = models.Find.objects.get(pk=pk) except models.Find.DoesNotExist: raise PermissionDenied - dct['items'].append(find) - if 'basket' in dct: - basket = dct.pop('basket') - if basket.user.pk != dct['history_modifier'].pk: + dct["items"].append(find) + if "basket" in dct: + basket = dct.pop("basket") + if basket.user.pk != dct["history_modifier"].pk: raise PermissionDenied - dct['items'] = list(basket.items.all()) + dct["items"] = list(basket.items.all()) - if 'items' in dct: - for find in dct['items']: - if 'own' in self.current_right \ - and not find.is_own(dct['history_modifier']): + if "items" in dct: + for find in dct["items"]: + if "own" in self.current_right and not find.is_own( + dct["history_modifier"] + ): raise PermissionDenied return dct @@ -226,9 +247,12 @@ class TreatmentModificationWizard(TreatmentWizard): class TreatmentN1Wizard(TreatmentBase): - saved_args = {"upstream_items": [], "resulting_find": None, - "treatment_type_list": []} - base_url = 'treatment_creation_n1' + saved_args = { + "upstream_items": [], + "resulting_find": None, + "treatment_type_list": [], + } + base_url = "treatment_creation_n1" def _update_simple_initial_from_finds(self, initial, find, k): r_k = "resulting_" + k @@ -242,7 +266,7 @@ class TreatmentN1Wizard(TreatmentBase): def _update_multi_initial_from_finds(self, initial, find, k): r_k = "resulting_" + k - for value in getattr(find, k + 's').all(): + for value in getattr(find, k + "s").all(): if value.pk not in initial[r_k]: initial[r_k].append(value.pk) return initial @@ -256,7 +280,7 @@ class TreatmentN1Wizard(TreatmentBase): initial[r_k] += getattr(find, k) return initial - def _update_char_initial_from_finds(self, initial, find, k, sep=' ; '): + def _update_char_initial_from_finds(self, initial, find, k, sep=" ; "): r_k = "resulting_" + k value = getattr(find, k) if not value: @@ -266,24 +290,27 @@ class TreatmentN1Wizard(TreatmentBase): initial[r_k] = value else: # new value is entirely inside the current value - if value == initial[r_k] or (value + sep) in initial[r_k] or \ - (sep + value) in initial[r_k]: + if ( + value == initial[r_k] + or (value + sep) in initial[r_k] + or (sep + value) in initial[r_k] + ): return initial initial[r_k] += sep + value return initial def get_form_initial(self, step, data=None): initial = super(TreatmentN1Wizard, self).get_form_initial(step) - if step != 'resultingfind-treatment_creation_n1': + if step != "resultingfind-treatment_creation_n1": return initial finds = self.get_current_finds() if not finds: return initial - simple_key = ['material_type_quality'] - multi_key = ['material_type', 'object_type', 'communicabilitie'] - numeric_key = ['find_number', 'min_number_of_individuals'] - desc_key = ['decoration', 'inscription', 'comment', 'dating_comment'] - char_key = ['manufacturing_place'] + simple_key = ["material_type_quality"] + multi_key = ["material_type", "object_type", "communicabilitie"] + numeric_key = ["find_number", "min_number_of_individuals"] + desc_key = ["decoration", "inscription", "comment", "dating_comment"] + char_key = ["manufacturing_place"] for k in simple_key + numeric_key + desc_key + char_key: initial["resulting_" + k] = None @@ -292,20 +319,19 @@ class TreatmentN1Wizard(TreatmentBase): for find in finds: for k in simple_key: - initial = self._update_simple_initial_from_finds( - initial, find, k) + initial = self._update_simple_initial_from_finds(initial, find, k) for k in multi_key: - initial = self._update_multi_initial_from_finds( - initial, find, k) + initial = self._update_multi_initial_from_finds(initial, find, k) for k in numeric_key: - initial = self._update_num_initial_from_finds( - initial, find, k) + initial = self._update_num_initial_from_finds(initial, find, k) for k in char_key: initial = self._update_char_initial_from_finds( - initial, find, k, sep=' ; ') + initial, find, k, sep=" ; " + ) for k in desc_key: initial = self._update_char_initial_from_finds( - initial, find, k, sep='\n') + initial, find, k, sep="\n" + ) for k in list(initial.keys()): if initial[k] is None: @@ -316,16 +342,15 @@ class TreatmentN1Wizard(TreatmentBase): """ Get items concerned by the treatment """ - dct = super(TreatmentN1Wizard, self).get_extra_model( - dct, m2m, form_list) - if 'resulting_pk' not in dct: + dct = super(TreatmentN1Wizard, self).get_extra_model(dct, m2m, form_list) + if "resulting_pk" not in dct: return dct - dct['upstream_items'] = [] + dct["upstream_items"] = [] # manage upstream items - pks = dct.pop('resulting_pk') - if hasattr(pks, 'split'): - pks = pks.split(',') # string + pks = dct.pop("resulting_pk") + if hasattr(pks, "split"): + pks = pks.split(",") # string for pk in pks: if isinstance(pk, models.Find): find = pk @@ -334,60 +359,59 @@ class TreatmentN1Wizard(TreatmentBase): find = models.Find.objects.get(pk=pk) except models.Find.DoesNotExist: raise PermissionDenied - dct['upstream_items'].append(find) + dct["upstream_items"].append(find) - for find in dct['upstream_items']: - if 'own' in self.current_right \ - and not find.is_own(dct['history_modifier']): + for find in dct["upstream_items"]: + if "own" in self.current_right and not find.is_own(dct["history_modifier"]): raise PermissionDenied # extract data of the new find - dct['resulting_find'] = {} + dct["resulting_find"] = {} for k in list(dct.keys()): - if k.startswith('resulting_') and k != "resulting_find": - dct['resulting_find'][ - k[len('resulting_'):] - ] = dct.pop(k) + if k.startswith("resulting_") and k != "resulting_find": + dct["resulting_find"][k[len("resulting_") :]] = dct.pop(k) return dct class Treatment1NWizard(TreatmentBase): - saved_args = {"upstream_item": None, "resulting_finds": None, - "treatment_type_list": []} - base_url = 'treatment_creation_1n' + saved_args = { + "upstream_item": None, + "resulting_finds": None, + "treatment_type_list": [], + } + base_url = "treatment_creation_1n" redirect_url = "find_modification" open_created_in_redirect = False def get_form_kwargs(self, step, **kwargs): kwargs = super(Treatment1NWizard, self).get_form_kwargs(step, **kwargs) - if step != 'resultingfind-treatment_creation_1n': + if step != "resultingfind-treatment_creation_1n": return kwargs - kwargs['user'] = self.request.user + kwargs["user"] = self.request.user return kwargs def get_form_initial(self, step, data=None): initial = super(Treatment1NWizard, self).get_form_initial(step) - if step != 'resultingfinds-treatment_creation_1n': + if step != "resultingfinds-treatment_creation_1n": return initial finds = self.get_current_finds() if not finds: return initial lbl = finds[0].label - initial['resultings_basket_name'] = str(_("Basket")) + " - " + lbl - initial['resultings_label'] = lbl + "-" + initial["resultings_basket_name"] = str(_("Basket")) + " - " + lbl + initial["resultings_label"] = lbl + "-" return initial def get_extra_model(self, dct, m2m, form_list): """ Get items concerned by the treatment """ - dct = super(Treatment1NWizard, self).get_extra_model( - dct, m2m, form_list) - if 'resulting_pk' not in dct: + dct = super(Treatment1NWizard, self).get_extra_model(dct, m2m, form_list) + if "resulting_pk" not in dct: return dct # manage upstream item - pk = dct.pop('resulting_pk') + pk = dct.pop("resulting_pk") if isinstance(pk, models.Find): find = pk else: @@ -395,46 +419,61 @@ class Treatment1NWizard(TreatmentBase): find = models.Find.objects.get(pk=pk) except models.Find.DoesNotExist: raise PermissionDenied - dct['upstream_item'] = find + dct["upstream_item"] = find - if 'own' in self.current_right \ - and not find.is_own(dct['history_modifier']): + if "own" in self.current_right and not find.is_own(dct["history_modifier"]): raise PermissionDenied # extract attributes to generate the new find - dct['resulting_finds'] = {} + dct["resulting_finds"] = {} for k in list(dct.keys()): - if k.startswith('resultings_'): - dct['resulting_finds'][ - k[len('resultings_'):] - ] = dct.pop(k) + if k.startswith("resultings_"): + dct["resulting_finds"][k[len("resultings_") :]] = dct.pop(k) messages.add_message( - self.request, messages.INFO, - str(_("The new basket: \"{}\" have been created with the " - "resulting items. This search have been pinned.") - ).format(dct["resulting_finds"]["basket_name"]) + self.request, + messages.INFO, + str( + _( + 'The new basket: "{}" have been created with the ' + "resulting items. This search have been pinned." + ) + ).format(dct["resulting_finds"]["basket_name"]), ) self.request.session["pin-search-find"] = '{}="{}"'.format( str(pgettext("key for text search", "basket")), - dct["resulting_finds"]["basket_name"]) - self.request.session['find'] = '' + dct["resulting_finds"]["basket_name"], + ) + self.request.session["find"] = "" return dct class TreatmentDeletionWizard(DeletionWizard): model = models.Treatment - wizard_confirm = 'ishtar/wizard/wizard_treatement_deletion.html' - fields = ['label', 'other_reference', 'year', 'index', - 'treatment_types', 'location', 'person', 'organization', - 'external_id', 'comment', 'description', - 'goal', 'start_date', 'end_date', 'container'] + wizard_confirm = "ishtar/wizard/wizard_treatement_deletion.html" + fields = [ + "label", + "other_reference", + "year", + "index", + "treatment_types", + "location", + "person", + "organization", + "external_id", + "comment", + "description", + "goal", + "start_date", + "end_date", + "container", + ] redirect_url = "treatment_deletion" class TreatmentAdministrativeActWizard(OperationAdministrativeActWizard): model = models.Treatment - current_obj_slug = 'administrativeacttreatment' - ref_object_key = 'treatment' + current_obj_slug = "administrativeacttreatment" + ref_object_key = "treatment" redirect_url = "treatment_admacttreatment_modification" def get_reminder(self): @@ -455,7 +494,7 @@ class TreatmentFileSearch(SearchWizard): class TreatmentFileWizard(Wizard): model = models.TreatmentFile - wizard_done_window = reverse_lazy('show-treatmentfile') + wizard_done_window = reverse_lazy("show-treatmentfile") redirect_url = "treatmentfile_modification" @@ -465,29 +504,40 @@ class TreatmentFileModificationWizard(TreatmentFileWizard): class TreatmentFileDeletionWizard(MultipleDeletionWizard): model = models.TreatmentFile - fields = ['name', 'internal_reference', 'external_id', 'year', - 'index', 'type', 'in_charge', 'reception_date', - 'creation_date', 'end_date', 'comment'] + fields = [ + "name", + "internal_reference", + "external_id", + "year", + "index", + "type", + "in_charge", + "reception_date", + "creation_date", + "end_date", + "comment", + ] redirect_url = "treatmentfile_deletion" -class TreatmentFileAdministrativeActWizard( - OperationAdministrativeActWizard): +class TreatmentFileAdministrativeActWizard(OperationAdministrativeActWizard): model = models.TreatmentFile - current_obj_slug = 'administrativeacttreatmentfile' - ref_object_key = 'treatment_file' + current_obj_slug = "administrativeacttreatmentfile" + ref_object_key = "treatment_file" redirect_url = "treatmentfle_admacttreatmentfle_modification" def get_reminder(self): - form_key = 'selec-' + self.url_name - if self.url_name.endswith('_administrativeactop'): + form_key = "selec-" + self.url_name + if self.url_name.endswith("_administrativeactop"): # modification and deletion are suffixed with '_modification' # and '_deletion' so it is creation pk = self.session_get_value(form_key, "pk") try: return ( - (_("Treatment request"), - str(models.TreatmentFile.objects.get(pk=pk))), + ( + _("Treatment request"), + str(models.TreatmentFile.objects.get(pk=pk)), + ), ) except models.TreatmentFile.DoesNotExist: return @@ -497,15 +547,12 @@ class TreatmentFileAdministrativeActWizard( admin = AdministrativeAct.objects.get(pk=admin_id) if not admin.operation: return - return ( - (_("Operation"), str(admin.operation)), - ) + return ((_("Operation"), str(admin.operation)),) except AdministrativeAct.DoesNotExist: return -class TreatmentFileEditAdministrativeActWizard( - TreatmentFileAdministrativeActWizard): +class TreatmentFileEditAdministrativeActWizard(TreatmentFileAdministrativeActWizard): model = AdministrativeAct edit = True @@ -519,25 +566,24 @@ class FindBasketSearch(SearchWizard): class FindBasketWizard(Wizard): model = models.FindBasket - wizard_done_window = reverse_lazy('show-findbasket') + wizard_done_window = reverse_lazy("show-findbasket") redirect_url = "find_basket_modification" class FindBasketEditWizard(FindBasketWizard): edit = True - alt_is_own_method = 'get_write_query_owns' + alt_is_own_method = "get_write_query_owns" def get_form_kwargs(self, step, **kwargs): - kwargs = super(FindBasketEditWizard, self).get_form_kwargs( - step, **kwargs) - if step != 'basket-find_basket_modification': + kwargs = super(FindBasketEditWizard, self).get_form_kwargs(step, **kwargs) + if step != "basket-find_basket_modification": return kwargs - kwargs['basket_pk'] = self.get_current_object().pk - kwargs['user'] = self.request.user + kwargs["basket_pk"] = self.get_current_object().pk + kwargs["user"] = self.request.user return kwargs class FindBasketDeletionWizard(DeletionWizard): model = models.FindBasket redirect_url = "find_basket_deletion" - wizard_confirm = 'ishtar/wizard/wizard_findbasket_deletion.html' + wizard_confirm = "ishtar/wizard/wizard_findbasket_deletion.html" |