summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-18 20:03:04 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-05-18 20:03:04 +0200
commit3a81d40b69a7f86731d45ac73188eed63fc14c77 (patch)
tree9beb8f0accd7700838e31d25fe79b1d02fe4d763
parentb114fa6d0b42a0ba2bc1a1988c1714f48d6a5474 (diff)
downloadIshtar-3a81d40b69a7f86731d45ac73188eed63fc14c77.tar.bz2
Ishtar-3a81d40b69a7f86731d45ac73188eed63fc14c77.zip
Basket: create a new basket
-rw-r--r--archaeological_finds/forms.py21
-rw-r--r--archaeological_finds/ishtar_menu.py26
-rw-r--r--archaeological_finds/urls.py5
-rw-r--r--archaeological_finds/views.py29
-rw-r--r--ishtar_common/views.py2
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