From 3a81d40b69a7f86731d45ac73188eed63fc14c77 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 18 May 2016 20:03:04 +0200 Subject: Basket: create a new basket --- archaeological_finds/forms.py | 21 +++++++++++++++++++++ archaeological_finds/ishtar_menu.py | 26 ++++++++++++++++++++++++++ archaeological_finds/urls.py | 5 ++++- archaeological_finds/views.py | 29 ++++++++++++++++++++++++++++- ishtar_common/views.py | 2 +- 5 files changed, 80 insertions(+), 3 deletions(-) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index e3207a2f5..2b3586979 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -390,6 +390,27 @@ FindSourceFormSelection = get_form_selection( _(u"You should select a document.")) +class NewFindBasketForm(forms.ModelForm): + class Meta: + model = models.FindBasket + fields = ('label', 'comment') + + def __init__(self, *args, **kwargs): + self.user = kwargs.pop('user') + super(NewFindBasketForm, self).__init__(*args, **kwargs) + + def clean(self): + q = models.FindBasket.objects.filter(user=self.user, + label=self.cleaned_data['label']) + if q.count(): + raise forms.ValidationError(_(u"Another basket already exist with " + u"this name.")) + return self.cleaned_data + + def save(self, commit=True): + self.instance.user = self.user + return super(NewFindBasketForm, self).save(commit) + """ #################################### # Source management for treatments # diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index daa12a37b..9eaf601f2 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -55,6 +55,32 @@ MENU_SECTIONS = [ model=models.Find, access_controls=['change_find', 'change_own_find']), + SectionItem( + 'find_basket', _(u"Basket"), + childs=[ + MenuItem('find_basket_creation', + _(u"Creation"), + model=models.FindBasket, + access_controls=['change_find', + 'change_own_find']), + MenuItem('find_basket_modification_add', + _(u"Add items"), + model=models.FindBasket, + access_controls=[ + 'change_find', + 'change_own_find']), + MenuItem('find_basket_modification_del', + _(u"Delete items"), + model=models.FindBasket, + access_controls=[ + 'change_find', + 'change_own_find']), + MenuItem('find_basket_deletion', + _(u"Deletion"), + model=models.FindBasket, + access_controls=['change_find', + 'change_own_find']), + ]), SectionItem( 'find_source', _(u"Documentation"), childs=[ diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index acf9c46a6..bbf9aa976 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015 Étienne Loks +# Copyright (C) 2010-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -55,6 +55,9 @@ urlpatterns = patterns( check_rights(['change_find', 'change_own_find'])( views.find_source_deletion_wizard), name='find_source_deletion'), + url(r'^find_basket_creation/$', + check_rights(['change_find', 'change_own_find'])( + views.NewFindBasketView.as_view()), name='new_findbasket'), ) urlpatterns += patterns( diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 46594a2b0..e40a3acb9 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -18,16 +18,19 @@ # See the file COPYING for details. from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect from django.shortcuts import redirect from django.utils.translation import ugettext_lazy as _ +from django.views.generic.edit import CreateView, DeleteView from ishtar_common.forms import FinalForm from ishtar_common.forms_common import SourceForm, AuthorFormset, \ SourceDeletionForm +from ishtar_common.models import IshtarUser from archaeological_context_records.forms import RecordFormSelection from ishtar_common.views import get_item, show_item, revert_item, \ - get_autocomplete_generic + get_autocomplete_generic, IshtarMixin, LoginRequiredMixin from ishtar_common.wizards import SearchWizard from wizards import * @@ -156,6 +159,30 @@ autocomplete_preservationtype = get_autocomplete_generic( models.PreservationType) autocomplete_integritytype = get_autocomplete_generic(models.IntegrityType) + +class NewFindBasketView(IshtarMixin, LoginRequiredMixin, CreateView): + template_name = 'ishtar/form.html' + model = models.FindBasket + form_class = NewFindBasketForm + page_name = _(u"New basket") + + def get_form_kwargs(self): + kwargs = super(NewFindBasketView, self).get_form_kwargs() + kwargs['user'] = IshtarUser.objects.get(pk=self.request.user.pk) + print(kwargs) + return kwargs + + def get_success_url(self): + return reverse('new_findbasket') + + def form_valid(self, form): + self.object = form.save() + return HttpResponseRedirect(self.get_success_url()) + + +class DeleteFindBasketView(IshtarMixin, LoginRequiredMixin, DeleteView): + pass + """ treatment_creation_wizard = TreatmentWizard.as_view([ ('basetreatment-treatment_creation', BaseTreatmentForm), diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 86664d4e7..752cbcc74 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015 Étienne Loks +# Copyright (C) 2010-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as -- cgit v1.2.3