diff options
-rw-r--r-- | archaeological_finds/forms.py | 21 | ||||
-rw-r--r-- | archaeological_finds/ishtar_menu.py | 26 | ||||
-rw-r--r-- | archaeological_finds/urls.py | 5 | ||||
-rw-r--r-- | archaeological_finds/views.py | 29 | ||||
-rw-r--r-- | 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 @@ -56,6 +56,32 @@ MENU_SECTIONS = [ 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=[ MenuItem('find_source_creation', 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 <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # 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 <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as |