diff options
Diffstat (limited to 'archaeological_finds/views.py')
| -rw-r--r-- | archaeological_finds/views.py | 500 |
1 files changed, 353 insertions, 147 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index c340639c5..fb5cdc11e 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -19,6 +19,7 @@ import json +from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse from django.db.models import Q from django.http import HttpResponseRedirect, HttpResponse, Http404 @@ -27,18 +28,24 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic import TemplateView from django.views.generic.edit import CreateView, FormView + +from ishtar_common.models import IshtarUser, get_current_profile +from archaeological_operations.models import AdministrativeAct +from archaeological_finds import models + +from ishtar_common.forms import FinalForm from archaeological_context_records.forms \ import RecordFormSelection as RecordFormSelectionTable from archaeological_operations.forms import FinalAdministrativeActDeleteForm -from archaeological_operations.wizards import AdministrativeActDeletionWizard -from forms import * -from ishtar_common.forms import FinalForm -from ishtar_common.models import IshtarUser, get_current_profile +from archaeological_finds import forms + from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \ LoginRequiredMixin, QAItemEditForm, QAItemForm from ishtar_common.views_item import display_item, get_item, show_item, \ - revert_item, get_autocomplete_item -from wizards import * + revert_item, get_autocomplete_item, get_autocomplete_query + +from archaeological_operations.wizards import AdministrativeActDeletionWizard +from archaeological_finds import wizards get_find = get_item(models.Find, 'get_find', 'find') @@ -105,30 +112,66 @@ def autocomplete_treatmentfile(request): return HttpResponse(data, content_type='text/plain') -show_find = show_item(models.Find, 'find') +def show_find_extra(request, find): + if not request.user or not request.user.ishtaruser: + return {} + user = request.user.ishtaruser + q = models.FindBasket.objects.filter(items__pk=find.pk).filter( + Q(user=user) | Q(shared_with__pk=user.pk) | + Q(shared_write_with__pk=user.pk) + ) + return {"baskets": [(basket.pk, basket.full_label) for basket in q.all()]} + + +show_find = show_item(models.Find, 'find', extra_dct=show_find_extra) display_find = display_item(models.Find) revert_find = revert_item(models.Find) -show_findbasket = show_item(models.FindBasket, 'findbasket') +show_findbasket = show_item(models.FindBasket, 'findbasket', + model_for_perms=models.Find) display_findbasket = display_item(models.FindBasket, show_url='show-find/basket-') + +def autocomplete_findbasket(request, current_right=None): + if not request.GET.get('term'): + return HttpResponse(content_type='text/plain') + + query = get_autocomplete_query(request, ['label']) + limit = 20 + query = query & models.FindBasket.get_write_query_owns( + request.user.ishtaruser) + items = models.FindBasket.objects.filter(query).order_by('label')[:limit] + data = json.dumps( + [{'id': item.pk, + 'value': u"{} - {}".format(item.label, item.user)[:60]} + for item in items] + ) + return HttpResponse(data, content_type='text/plain') + get_find_basket = get_item( models.FindBasket, 'get_findbasket', 'findbasket', + model_for_perms=models.Find ) -basket_search_wizard = FindBasketSearch.as_view( - [('selec-find_basket_search', FindBasketFormSelection)], +get_find_basket_for_write = get_item( + models.FindBasket, 'get_findbasket', 'findbasket', + model_for_perms=models.Find, alt_query_own='get_write_query_owns' +) + +basket_search_wizard = wizards.FindBasketSearch.as_view( + [('selec-find_basket_search', forms.FindBasketFormSelection)], label=_(u"Basket search"), url_name='find_basket_search', ) -basket_modify_wizard = FindBasketEditWizard.as_view( +basket_modify_wizard = wizards.FindBasketEditWizard.as_view( [ - ('selec-find_basket_modification', FindBasketFormSelection), - ('basket-find_basket_modification', FindBasketForm), + ('selec-find_basket_modification', + forms.FindBasketForWriteFormSelection), + ('basket-find_basket_modification', forms.FindBasketForm), ('final-find_basket_modification', FinalForm) - ], + ], label=_(u"Basket modify"), url_name='find_basket_modification', ) @@ -137,13 +180,26 @@ basket_modify_wizard = FindBasketEditWizard.as_view( def find_basket_modify(request, pk): basket_modify_wizard(request) key = 'selec-find_basket_modification' - FindBasketEditWizard.session_set_value( + wizards.FindBasketEditWizard.session_set_value( request, key, 'pk', pk, reset=True) return redirect( reverse('find_basket_modification', kwargs={'step': 'basket-find_basket_modification'})) +findbasket_deletion_steps = [ + ('selec-find_basket_deletion', forms.FindBasketForWriteFormSelection), + ('final-find_basket_deletion', FinalForm) +] + + +basket_delete_wizard = wizards.FindBasketDeletionWizard.as_view( + findbasket_deletion_steps, + label=_(u"Basket deletion"), + url_name='find_basket_deletion', +) + + def check_preservation_module(self): return get_current_profile().preservation @@ -158,9 +214,9 @@ def check_not_warehouse_module(self): find_creation_steps = [ ('selecrecord-find_creation', RecordFormSelectionTable), - ('find-find_creation', FindForm), - ('preservation-find_creation', PreservationForm), - ('dating-find_creation', DatingFormSet), + ('find-find_creation', forms.FindForm), + ('preservation-find_creation', forms.PreservationForm), + ('dating-find_creation', forms.DatingFormSet), ('final-find_creation', FinalForm) ] @@ -168,7 +224,7 @@ find_creation_condition_dict = { 'preservation-find_creation': check_preservation_module, } -find_creation_wizard = FindWizard.as_view( +find_creation_wizard = wizards.FindWizard.as_view( find_creation_steps, label=_(u"New find"), condition_dict=find_creation_condition_dict, @@ -179,31 +235,47 @@ find_search_condition_dict = { 'generalwarehouse-find_search': check_warehouse_module, } -find_search_wizard = FindSearch.as_view([ - ('general-find_search', FindFormSelection), - ('generalwarehouse-find_search', FindFormSelectionWarehouseModule)], +find_search_wizard = wizards.FindSearch.as_view([ + ('general-find_search', forms.FindFormSelection), + ('generalwarehouse-find_search', forms.FindFormSelectionWarehouseModule)], label=_(u"Find search"), url_name='find_search', condition_dict=find_search_condition_dict ) + +def has_many_base_find(wizard): + find = wizard.get_current_object() + if not find: + return False + return find.base_finds.count() > 1 + + +def has_only_one_base_find(wizard): + return not has_many_base_find(wizard) + + find_modification_condition_dict = { 'selec-find_modification': check_not_warehouse_module, 'selecw-find_modification': check_warehouse_module, 'preservation-find_modification': check_preservation_module, + 'selecrecord-find_modification': has_only_one_base_find, + 'find-find_modification': has_only_one_base_find, + 'simplefind-find_modification': has_many_base_find, } find_modification_steps = [ - ('selec-find_modification', FindFormSelection), - ('selecw-find_modification', FindFormSelectionWarehouseModule), - ('selecrecord-find_modification', RecordFormSelection), - ('find-find_modification', FindForm), - ('preservation-find_modification', PreservationForm), - ('dating-find_modification', DatingFormSet), + ('selec-find_modification', forms.FindFormSelection), + ('selecw-find_modification', forms.FindFormSelectionWarehouseModule), + ('selecrecord-find_modification', forms.RecordFormSelection), + ('find-find_modification', forms.FindForm), + ('simplefind-find_modification', forms.SimpleFindForm), + ('preservation-find_modification', forms.PreservationForm), + ('dating-find_modification', forms.DatingFormSet), ('final-find_modification', FinalForm) ] -find_modification_wizard = FindModificationWizard.as_view( +find_modification_wizard = wizards.FindModificationWizard.as_view( find_modification_steps, condition_dict=find_modification_condition_dict, label=_(u"Find modification"), @@ -216,11 +288,18 @@ def find_modify(request, pk): key = 'selec-find_modification' if get_current_profile().warehouse: key = 'selecw-find_modification' - FindModificationWizard.session_set_value( + wizards.FindModificationWizard.session_set_value( request, key, 'pk', pk, reset=True) + q = models.Find.objects.filter(pk=pk) + if not q.count(): + raise Http404() + step = 'find-find_modification' + find = q.all()[0] + if find.base_finds.count() > 1: + step = 'simplefind-find_modification' + return redirect( - reverse('find_modification', - kwargs={'step': 'selecrecord-find_modification'})) + reverse('find_modification', kwargs={'step': step})) find_deletion_condition_dict = { 'selec-find_deletion': check_not_warehouse_module, @@ -228,11 +307,11 @@ find_deletion_condition_dict = { } find_deletion_steps = [ - ('selec-find_deletion', FindFormSelection), - ('selecw-find_deletion', FindFormSelectionWarehouseModule), - ('final-find_deletion', FindDeletionForm)] + ('selec-find_deletion', forms.FindFormSelection), + ('selecw-find_deletion', forms.FindFormSelectionWarehouseModule), + ('final-find_deletion', forms.FindDeletionForm)] -find_deletion_wizard = FindDeletionWizard.as_view( +find_deletion_wizard = wizards.FindDeletionWizard.as_view( find_deletion_steps, condition_dict=find_deletion_condition_dict, label=_(u"Find deletion"), @@ -247,7 +326,7 @@ autocomplete_integritytype = get_autocomplete_generic(models.IntegrityType) class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView): template_name = 'ishtar/form.html' model = models.FindBasket - form_class = NewFindBasketForm + form_class = forms.NewFindBasketForm page_name = _(u"New basket") def get_form_kwargs(self): @@ -268,15 +347,15 @@ class OwnBasket(object): def get_basket(self, user, pk): try: return models.FindBasket.objects.filter( - Q(user=user) | Q(shared_with=user) - ).get(pk=pk) + Q(user=user) | Q(shared_with=user) | Q(shared_write_with=user) + ).distinct().get(pk=pk) except models.FindBasket.DoesNotExist: raise PermissionDenied class SelectBasketForManagement(IshtarMixin, LoginRequiredMixin, FormView): template_name = 'ishtar/form.html' - form_class = SelectFindBasketForm + form_class = forms.SelectFindBasketForm page_name = _(u"Manage items in basket") def get_form_kwargs(self): @@ -309,9 +388,9 @@ class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin, ) context['basket'] = self.basket if get_current_profile().warehouse: - context['form'] = MultipleFindFormSelectionWarehouseModule() + context['form'] = forms.MultipleFindFormSelectionWarehouseModule() else: - context['form'] = MultipleFindFormSelection() + context['form'] = forms.MultipleFindFormSelection() context['add_url'] = reverse('add_iteminbasket') context['list_url'] = reverse('list_iteminbasket', kwargs={'pk': self.basket.pk}) @@ -323,7 +402,7 @@ class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin, class FindBasketAddItemView(IshtarMixin, LoginRequiredMixin, FormView): template_name = 'ishtar/simple_form.html' - form_class = FindBasketAddItemForm + form_class = forms.FindBasketAddItemForm def get_success_url(self, basket): return reverse('list_iteminbasket', kwargs={'pk': basket.pk}) @@ -381,22 +460,6 @@ class FindBasketDeleteItemView(OwnBasket, IshtarMixin, LoginRequiredMixin, basket.items.remove(find) return HttpResponseRedirect(self.get_success_url(basket)) - -class DeleteFindBasketView(IshtarMixin, LoginRequiredMixin, FormView): - template_name = 'ishtar/form_delete.html' - form_class = DeleteFindBasketForm - success_url = '/' - page_name = _(u"Delete basket") - - def get_form_kwargs(self): - kwargs = super(DeleteFindBasketView, self).get_form_kwargs() - kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk) - return kwargs - - def form_valid(self, form): - form.save() - return HttpResponseRedirect(self.get_success_url()) - get_upstreamtreatment = get_item( models.FindUpstreamTreatments, 'get_upstreamtreatment', 'uptreatment') @@ -405,46 +468,53 @@ get_downstreamtreatment = get_item( 'downtreatment') treatment_wizard_steps = [ - ('file-treatment_creation', TreatmentFormFileChoice), - ('basetreatment-treatment_creation', BaseTreatmentForm), - ('selecfind-treatment_creation', UpstreamFindFormSelection), - ('selecbasket-treatment_creation', SelectFindBasketForm), - # ('resultfind-treatment_creation', ResultFindForm), - # ('resultfinds-treatment_creation', ResultFindFormSet), + ('selecfind-treatment_creation', forms.UpstreamFindFormSelection), + ('file-treatment_creation', forms.TreatmentFormFileChoice), + ('basetreatment-treatment_creation', forms.BaseTreatmentForm), ('final-treatment_creation', FinalForm) ] -treatment_search_wizard = TreatmentSearch.as_view([ - ('general-treatment_search', TreatmentFormSelection)], +treatment_search_wizard = wizards.TreatmentSearch.as_view([ + ('general-treatment_search', forms.TreatmentFormSelection)], label=_(u"Treatment search"), url_name='treatment_search',) -treatment_creation_wizard = TreatmentWizard.as_view( +treatment_creation_wizard = wizards.TreatmentWizard.as_view( treatment_wizard_steps, - condition_dict={ - 'selecfind-treatment_creation': - check_value('basetreatment-treatment_creation', - 'target_is_basket', False), - 'selecbasket-treatment_creation': - check_value('basetreatment-treatment_creation', - 'target_is_basket', True), - # 'resultfinds-treatment_creation': - # check_type_field('basetreatment-treatment_creation', - # 'treatment_type', models.TreatmentType, - # 'downstream_is_many'), - # 'resultfind-treatment_creation': - # check_type_field('basetreatment-treatment_creation', - # 'treatment_type', models.TreatmentType, - # 'upstream_is_many') - }, label=_(u"New treatment"), url_name='treatment_creation',) -treatment_modification_wizard = TreatmentModificationWizard.as_view( - [('selec-treatment_modification', TreatmentFormSelection), - ('file-treatment_modification', TreatmentFormFileChoice), - ('basetreatment-treatment_modification', TreatmentModifyForm), +treatment_n1_wizard_steps = [ + ('selecfind-treatment_creation_n1', forms.UpstreamFindFormSelection), + ('file-treatment_creation_n1', forms.TreatmentFormFileChoice), + ('basetreatment-treatment_creation_n1', forms.N1TreatmentForm), + ('resultingfind-treatment_creation_n1', forms.ResultingFindForm), + ('final-treatment_creation_n1', FinalForm) +] + +treatment_creation_n1_wizard = wizards.TreatmentN1Wizard.as_view( + treatment_n1_wizard_steps, + label=_(u"New treatment"), + url_name='treatment_creation_n1',) + +treatment_1n_wizard_steps = [ + ('selecfind-treatment_creation_1n', forms.SingleUpstreamFindFormSelection), + ('file-treatment_creation_1n', forms.TreatmentFormFileChoice), + ('basetreatment-treatment_creation_1n', forms.OneNTreatmentForm), + ('resultingfinds-treatment_creation_1n', forms.ResultingFindsForm), + ('final-treatment_creation_1n', FinalForm) +] + +treatment_creation_1n_wizard = wizards.Treatment1NWizard.as_view( + treatment_1n_wizard_steps, + label=_(u"New treatment"), + url_name='treatment_creation_1n',) + +treatment_modification_wizard = wizards.TreatmentModificationWizard.as_view( + [('selec-treatment_modification', forms.TreatmentFormSelection), + ('file-treatment_modification', forms.TreatmentFormFileChoice), + ('basetreatment-treatment_modification', forms.TreatmentModifyForm), ('final-treatment_modification', FinalForm)], label=_(u"Treatment modification"), url_name='treatment_modification', @@ -453,41 +523,116 @@ treatment_modification_wizard = TreatmentModificationWizard.as_view( def treatment_modify(request, pk): treatment_modification_wizard(request) - TreatmentModificationWizard.session_set_value( + wizards.TreatmentModificationWizard.session_set_value( request, 'selec-treatment_modification', 'pk', pk, reset=True) return redirect(reverse( 'treatment_modification', - kwargs={'step': 'basetreatment-treatment_modification'})) - - -treatment_deletion_wizard = TreatmentDeletionWizard.as_view([ - ('selec-treatment_deletion', TreatmentFormSelection), - ('final-treatment_deletion', TreatmentDeletionForm)], + kwargs={'step': 'file-treatment_modification'})) + + +def treatment_add(request, pks, treatment_file=None): + treatment_creation_wizard(request) + wizards.TreatmentWizard.session_set_value( + request, 'selecfind-treatment_creation', + 'resulting_pk', pks, reset=True) + if treatment_file: + wizards.TreatmentWizard.session_set_value( + request, 'file-treatment_creation', 'file', treatment_file.pk) + else: + wizards.TreatmentWizard.session_set_value( + request, 'file-treatment_creation', 'file', '') + if treatment_file: + in_charge = treatment_file.in_charge + if not in_charge: + in_charge = request.user.ishtaruser.person + dct = { + "treatment_type": treatment_file.type.treatment_type.pk + if treatment_file.type and treatment_file.type.treatment_type + else "", + "year": treatment_file.year, + "person": in_charge.pk, + } + locas = list( + set([str(f.container.location.pk) + for f in treatment_file.associated_basket.items.all() + if f.container and f.container.location]) + ) + if len(locas) == 1: # one and only one location for all finds + dct["location"] = locas[0] + for k in dct: + wizards.TreatmentWizard.session_set_value( + request, 'basetreatment-treatment_creation', k, dct[k]) + return redirect(reverse( + 'treatment_creation', + kwargs={'step': 'basetreatment-treatment_creation'})) + + +def find_treatment_add(request, pk, current_right=None): + if not models.Find.objects.filter(pk=pk).count(): + raise Http404() + return treatment_add(request, str(pk)) + + +def findbasket_treatment_add(request, pk, current_right=None): + try: + basket = models.FindBasket.objects.get(pk=pk) + except models.FindBasket.DoesNotExist: + raise Http404() + return treatment_add( + request, ",".join([str(f.pk) for f in basket.items.all()])) + + +def container_treatment_add(request, pk, current_right=None): + try: + basket = models.FindBasket.objects.get(pk=pk) + except models.FindBasket.DoesNotExist: + raise Http404() + return treatment_add(request, + ",".join([str(f.pk) for f in basket.items.all()])) + + +def treatmentfile_treatment_add(request, pk, current_right=None): + try: + tf = models.TreatmentFile.objects.get(pk=pk) + except models.TreatmentFile.DoesNotExist: + raise Http404() + if not tf.associated_basket: + raise Http404() + basket = tf.associated_basket + return treatment_add( + request, ",".join([str(f.pk) for f in basket.items.all()]), + treatment_file=tf + ) + + +treatment_deletion_wizard = wizards.TreatmentDeletionWizard.as_view([ + ('selec-treatment_deletion', forms.TreatmentFormSelection), + ('final-treatment_deletion', forms.TreatmentDeletionForm)], label=_(u"Treatment deletion"), url_name='treatment_deletion',) treatment_administrativeact_search_wizard = \ - SearchWizard.as_view([ + wizards.SearchWizard.as_view([ ('selec-treatment_admacttreatment_search', - AdministrativeActTreatmentFormSelection)], + forms.AdministrativeActTreatmentFormSelection)], label=_(u"Treatment: search administrative act"), url_name='treatment_admacttreatment_search',) treatment_administrativeact_wizard = \ - TreatmentAdministrativeActWizard.as_view([ - ('selec-treatment_admacttreatment', TreatmentFormSelection), + wizards.TreatmentAdministrativeActWizard.as_view([ + ('selec-treatment_admacttreatment', forms.TreatmentFormSelection), ('administrativeact-treatment_admacttreatment', - AdministrativeActTreatmentForm), + forms.AdministrativeActTreatmentForm), ('final-treatment_admacttreatment', FinalForm)], label=_(u"Treatment: new administrative act"), url_name='treatment_admacttreatment',) treatment_administrativeact_modification_wizard = \ - TreatmentEditAdministrativeActWizard.as_view([ + wizards.TreatmentEditAdministrativeActWizard.as_view([ ('selec-treatment_admacttreatment_modification', - AdministrativeActTreatmentFormSelection), + forms.AdministrativeActTreatmentFormSelection), ('administrativeact-treatment_admacttreatment_modification', - AdministrativeActTreatmentModifForm), + forms.AdministrativeActTreatmentModifForm), ('final-treatment_admacttreatment_modification', FinalForm)], label=_(u"Treatment: administrative act modification"), url_name='treatment_admacttreatment_modification',) @@ -495,7 +640,7 @@ treatment_administrativeact_modification_wizard = \ treatment_admacttreatment_deletion_wizard = \ AdministrativeActDeletionWizard.as_view([ ('selec-treatment_admacttreatment_deletion', - AdministrativeActTreatmentFormSelection), + forms.AdministrativeActTreatmentFormSelection), ('final-treatment_admacttreatment_deletion', FinalAdministrativeActDeleteForm)], label=_(u"Treatment: administrative act deletion"), @@ -504,7 +649,7 @@ treatment_admacttreatment_deletion_wizard = \ def treatment_administrativeacttreatment_modify(request, pk): treatment_administrativeact_modification_wizard(request) - TreatmentEditAdministrativeActWizard.session_set_value( + wizards.TreatmentEditAdministrativeActWizard.session_set_value( request, 'selec-treatment_admacttreatment_modification', 'pk', pk, reset=True) @@ -517,69 +662,86 @@ def treatment_administrativeacttreatment_modify(request, pk): })) +def treatment_adminact_add(request, pk, current_right=None): + try: + models.Treatment.objects.get(pk=pk) + except models.Treatment.DoesNotExist: + raise Http404() + treatment_administrativeact_wizard(request) + + wizards.TreatmentAdministrativeActWizard.session_set_value( + request, 'selec-treatment_admacttreatment', 'pk', pk, reset=True) + return redirect(reverse( + 'treatment_admacttreatment', + kwargs={'step': 'administrativeact-treatment_admacttreatment'})) + + # treatment request -treatmentfile_search_wizard = TreatmentFileSearch.as_view([ - ('general-treatmentfile_search', TreatmentFileFormSelection)], +treatmentfile_search_wizard = wizards.TreatmentFileSearch.as_view([ + ('general-treatmentfile_search', forms.TreatmentFileFormSelection)], label=_(u"Treatment request search"), url_name='treatmentfile_search',) treatmentfile_wizard_steps = [ - ('treatmentfile-treatmentfile_creation', TreatmentFileForm), + ('treatmentfile-treatmentfile_creation', forms.TreatmentFileForm), ('final-treatmentfile_creation', FinalForm)] -treatmentfile_creation_wizard = TreatmentFileWizard.as_view( +treatmentfile_creation_wizard = wizards.TreatmentFileWizard.as_view( treatmentfile_wizard_steps, label=_(u"New treatment request"), url_name='treatmentfile_creation',) -treatmentfile_modification_wizard = TreatmentFileModificationWizard.as_view( - [('selec-treatmentfile_modification', TreatmentFileFormSelection), - ('treatmentfile-treatmentfile_modification', TreatmentFileModifyForm), - ('final-treatmentfile_modification', FinalForm)], - label=_(u"Treatment request modification"), - url_name='treatmentfile_modification', -) +treatmentfile_modification_wizard = \ + wizards.TreatmentFileModificationWizard.as_view( + [('selec-treatmentfile_modification', forms.TreatmentFileFormSelection), + ('treatmentfile-treatmentfile_modification', + forms.TreatmentFileModifyForm), + ('final-treatmentfile_modification', FinalForm)], + label=_(u"Treatment request modification"), + url_name='treatmentfile_modification', + ) def treatmentfile_modify(request, pk): treatmentfile_modification_wizard(request) - TreatmentFileModificationWizard.session_set_value( + wizards.TreatmentFileModificationWizard.session_set_value( request, 'selec-treatmentfile_modification', 'pk', pk, reset=True) return redirect(reverse( 'treatmentfile_modification', kwargs={'step': 'treatmentfile-treatmentfile_modification'})) -treatmentfile_deletion_wizard = TreatmentFileDeletionWizard.as_view([ - ('selec-treatmentfile_deletion', TreatmentFileFormSelection), - ('final-treatmentfile_deletion', TreatmentFileDeletionForm)], +treatmentfile_deletion_wizard = wizards.TreatmentFileDeletionWizard.as_view([ + ('selec-treatmentfile_deletion', forms.TreatmentFileFormSelection), + ('final-treatmentfile_deletion', forms.TreatmentFileDeletionForm)], label=_(u"Treatment request deletion"), url_name='treatmentfile_deletion',) treatmentfile_admacttreatmentfile_search_wizard = \ - SearchWizard.as_view([ + wizards.SearchWizard.as_view([ ('selec-treatmentfle_admacttreatmentfle_search', - AdministrativeActTreatmentFileFormSelection)], + forms.AdministrativeActTreatmentFileFormSelection)], label=_(u"Treatment request: search administrative act"), url_name='treatmentfle_admacttreatmentfle_search',) treatmentfile_admacttreatmentfile_wizard = \ - TreatmentFileAdministrativeActWizard.as_view([ - ('selec-treatmentfle_admacttreatmentfle', TreatmentFileFormSelection), + wizards.TreatmentFileAdministrativeActWizard.as_view([ + ('selec-treatmentfle_admacttreatmentfle', + forms.TreatmentFileFormSelection), ('admact-treatmentfle_admacttreatmentfle', - AdministrativeActTreatmentFileForm), + forms.AdministrativeActTreatmentFileForm), ('final-treatmentfle_admacttreatmentfle', FinalForm)], label=_(u"Treatment request: new administrative act"), url_name='treatmentfle_admacttreatmentfle',) treatmentfile_admacttreatmentfile_modification_wizard = \ - TreatmentFileEditAdministrativeActWizard.as_view([ + wizards.TreatmentFileEditAdministrativeActWizard.as_view([ ('selec-treatmentfle_admacttreatmentfle_modification', - AdministrativeActTreatmentFileFormSelection), + forms.AdministrativeActTreatmentFileFormSelection), ('admact-treatmentfle_admacttreatmentfle_modification', - AdministrativeActTreatmentFileModifForm), + forms.AdministrativeActTreatmentFileModifForm), ('final-treatmentfle_admacttreatmentfle_modification', FinalForm)], label=_(u"Treatment request: administrative act modification"), url_name='treatmentfle_admacttreatmentfle_modification',) @@ -587,7 +749,7 @@ treatmentfile_admacttreatmentfile_modification_wizard = \ treatmentfile_admacttreatmentfile_deletion_wizard = \ AdministrativeActDeletionWizard.as_view([ ('selec-treatmentfle_admacttreatmentfle_deletion', - AdministrativeActTreatmentFileFormSelection), + forms.AdministrativeActTreatmentFileFormSelection), ('final-treatmentfle_admacttreatmentfle_deletion', FinalAdministrativeActDeleteForm)], label=_(u"Treatment request: administrative act deletion"), @@ -596,7 +758,7 @@ treatmentfile_admacttreatmentfile_deletion_wizard = \ def treatmentfile_administrativeacttreatmentfile_modify(request, pk): treatmentfile_admacttreatmentfile_modification_wizard(request) - TreatmentFileEditAdministrativeActWizard.session_set_value( + wizards.TreatmentFileEditAdministrativeActWizard.session_set_value( request, 'selec-treatmentfle_admacttreatmentfle_modification', 'pk', pk, reset=True) @@ -609,24 +771,42 @@ def treatmentfile_administrativeacttreatmentfile_modify(request, pk): })) +def treatmentfile_adminact_add(request, pk, current_right=None): + try: + models.TreatmentFile.objects.get(pk=pk) + except models.TreatmentFile.DoesNotExist: + raise Http404() + treatmentfile_admacttreatmentfile_wizard(request) + + wizards.TreatmentFileAdministrativeActWizard.session_set_value( + request, 'selec-treatmentfle_admacttreatmentfle', 'pk', pk, reset=True) + return redirect(reverse( + 'treatmentfle_admacttreatmentfle', + kwargs={'step': 'admact-treatmentfle_admacttreatmentfle'})) + + def reset_wizards(request): for wizard_class, url_name in ( - (FindWizard, 'find_creation'), - (FindModificationWizard, 'find_modification'), - (FindDeletionWizard, 'find_deletion'), - (TreatmentWizard, 'treatement_creation'), - (TreatmentModificationWizard, 'treatment_modification'), - (TreatmentDeletionWizard, 'treatment_deletion'), - (TreatmentAdministrativeActWizard, 'treatment_admacttreatment'), - (TreatmentEditAdministrativeActWizard, + (wizards.FindWizard, 'find_creation'), + (wizards.FindModificationWizard, 'find_modification'), + (wizards.FindDeletionWizard, 'find_deletion'), + (wizards.TreatmentWizard, 'treatement_creation'), + (wizards.TreatmentModificationWizard, 'treatment_modification'), + (wizards.TreatmentDeletionWizard, 'treatment_deletion'), + (wizards.TreatmentAdministrativeActWizard, + 'treatment_admacttreatment'), + (wizards.TreatmentEditAdministrativeActWizard, 'treatment_admacttreatment_modification'), - (TreatmentDeletionWizard, 'treatment_admacttreatment_deletion'), - (TreatmentFileWizard, 'treatmentfile_creation'), - (TreatmentFileModificationWizard, 'treatmentfile_modification'), - (TreatmentFileDeletionWizard, 'treatmentfile_deletion'), - (TreatmentFileAdministrativeActWizard, + (wizards.TreatmentDeletionWizard, + 'treatment_admacttreatment_deletion'), + (wizards.TreatmentFileWizard, + 'treatmentfile_creation'), + (wizards.TreatmentFileModificationWizard, + 'treatmentfile_modification'), + (wizards.TreatmentFileDeletionWizard, 'treatmentfile_deletion'), + (wizards.TreatmentFileAdministrativeActWizard, 'treatmentfle_admacttreatmentfle'), - (TreatmentFileEditAdministrativeActWizard, + (wizards.TreatmentFileEditAdministrativeActWizard, 'treatmentfle_admacttreatmentfle_modification'), (AdministrativeActDeletionWizard, 'treatmentfle_admacttreatmentfle_deletion'), @@ -636,13 +816,13 @@ def reset_wizards(request): class QAFindForm(QAItemEditForm): model = models.Find - form_class = QAFindFormMulti + form_class = forms.QAFindFormMulti class QAFindBasketFormView(QAItemForm): template_name = 'ishtar/forms/qa_find_basket.html' model = models.Find - form_class = QAFindBasketForm + form_class = forms.QAFindBasketForm page_name = _(u"Basket") modal_size = "small" @@ -662,7 +842,7 @@ class QAFindBasketFormView(QAItemForm): class QAFindTreatmentFormView(QAItemForm): template_name = 'ishtar/forms/qa_find_treatment.html' model = models.Find - form_class = QAFindTreatmentForm + form_class = forms.QAFindTreatmentForm page_name = _(u"Packaging") def get_quick_action(self): @@ -677,3 +857,29 @@ class QAFindTreatmentFormView(QAItemForm): def form_valid(self, form): form.save(self.items, self.request.user) return HttpResponseRedirect(reverse("success")) + + +class QAFindbasketDuplicateFormView(QAItemForm): + template_name = 'ishtar/forms/qa_findbasket_duplicate.html' + model = models.FindBasket + page_name = _(u"Duplicate") + modal_size = "small" + form_class = forms.QAFindbasketDuplicateForm + + def get_quick_action(self): + return models.FindBasket.QUICK_ACTIONS[0] + + def get_form_kwargs(self): + kwargs = super(QAFindbasketDuplicateFormView, self).get_form_kwargs() + kwargs['user'] = self.request.user + return kwargs + + def form_valid(self, form): + form.save() + return HttpResponseRedirect(reverse("success")) + + def get_context_data(self, **kwargs): + data = super(QAFindbasketDuplicateFormView, self).get_context_data( + **kwargs) + data['action_name'] = _(u"Duplicate") + return data |
