summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-04 17:52:17 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-04 17:52:17 +0200
commit235723102fdb7c5b74d42278b8d934b7e2830f1a (patch)
treecf5da383b3ed46de875ee25ec625b0218c2da35a /ishtar_common
parentdaa8d5562ffcab11df290bf7101b2e3fe266b674 (diff)
downloadIshtar-235723102fdb7c5b74d42278b8d934b7e2830f1a.tar.bz2
Ishtar-235723102fdb7c5b74d42278b8d934b7e2830f1a.zip
QA person: bulk modification
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py27
-rw-r--r--ishtar_common/models.py10
-rw-r--r--ishtar_common/urls.py10
-rw-r--r--ishtar_common/views.py5
4 files changed, 48 insertions, 4 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index b91f55ace..df103e541 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -44,7 +44,7 @@ from ishtar_common.templatetags.link_to_window import simple_link_to_window
from forms import FinalForm, FormSet, reverse_lazy, name_validator, \
TableSelect, ManageOldType, CustomForm, FieldType, FormHeader, \
FormSetWithDeleteSwitches, BSForm, get_data_from_formset, \
- file_size_validator, HistorySelect
+ file_size_validator, HistorySelect, CustomFormSearch, QAForm
from ishtar_common.utils import is_downloadable, clean_session_cache, \
max_size_help
@@ -469,7 +469,7 @@ class BaseOrganizationForm(forms.ModelForm):
'town', 'postal_code']
-class PersonSelect(TableSelect):
+class PersonSelect(CustomForm, TableSelect):
_model = models.Person
search_vector = forms.CharField(
@@ -492,7 +492,7 @@ class PersonSelect(TableSelect):
self.fields['person_types'].choices = models.PersonType.get_types()
-class PersonFormSelection(forms.Form):
+class PersonFormSelection(CustomFormSearch):
SEARCH_AND_SELECT = True
form_label = _(u"Person search")
associated_models = {'pk': models.Person}
@@ -505,6 +505,27 @@ class PersonFormSelection(forms.Form):
validators=[models.valid_id(models.Person)])
+class QAPersonFormMulti(QAForm):
+ form_admin_name = _(u"Person - Quick action - Modify")
+ form_slug = "person-quickaction-modify"
+ base_models = ['qa_title_type']
+ associated_models = {
+ 'qa_title': models.TitleType,
+ }
+
+ MULTI = True
+ REPLACE_FIELDS = [
+ 'qa_title',
+ ]
+ qa_title = forms.ChoiceField(
+ label=_(u"Title"), required=False
+ )
+
+ TYPES = [
+ FieldType('qa_title', models.TitleType),
+ ]
+
+
class PersonMergeFormSelection(ManualMerge, forms.Form):
SEARCH_AND_SELECT = True
form_label = _("Person to merge")
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index d95986c70..2e618749b 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3625,7 +3625,7 @@ class PersonManager(models.Manager):
return self.get(**q)
-class Person(Address, Merge, OwnPerms, ValueGetter):
+class Person(Address, Merge, OwnPerms, ValueGetter, MainItem):
SLUG = "person"
_prefix = 'person_'
TYPE = (
@@ -3686,6 +3686,14 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
'ishtaruser__isnull'
),
}
+ QA_EDIT = QuickAction(
+ url="person-qa-bulk-update", icon_class="fa fa-pencil",
+ text=_(u"Bulk update"), target="many",
+ rights=['change_person'])
+ QUICK_ACTIONS = [
+ QA_EDIT
+ ]
+
objects = PersonManager()
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index 957b1bfb3..26dfcdc07 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -62,6 +62,16 @@ urlpatterns = [
url(r'^person-edit/(?P<pk>\d+)$',
check_rights(['change_person', 'change_own_person'])(
views.PersonEdit.as_view()), name='person_edit'),
+
+ url(r'^person-qa-bulk-update/(?P<pks>[0-9-]+)?/$',
+ check_rights(['change_person', 'change_own_person'])(
+ views.QAPersonForm.as_view()),
+ name='person-qa-bulk-update'),
+ url(r'^person-qa-bulk-update/(?P<pks>[0-9-]+)?/confirm/$',
+ check_rights(['change_person', 'change_own_person'])(
+ views.QAPersonForm.as_view()),
+ name='person-qa-bulk-update-confirm', kwargs={"confirm": True}),
+
url(r'organization_search/(?P<step>.+)?$',
check_rights(['add_organization'])(
views.organization_search_wizard), name='organization_search'),
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index ee01e6909..0ebdc411f 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -2083,3 +2083,8 @@ class QAItemEditForm(QAItemForm):
return HttpResponseRedirect(reverse("success"))
+class QAPersonForm(QAItemEditForm):
+ model = models.Person
+ form_class = forms.QAPersonFormMulti
+
+