summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-23 11:07:45 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-23 11:07:45 +0200
commit7924c43af9044cfd40f36bd8a84378417223d95b (patch)
tree78197ea5c36baaff4fcc1a53580eb3d586630b39 /ishtar_common/forms_common.py
parent54b87741a26a2bd805ed32200b082ca07ee0e27d (diff)
parent0bdaa7c90017b436b3baf026c9710a8d49c9420a (diff)
downloadIshtar-7924c43af9044cfd40f36bd8a84378417223d95b.tar.bz2
Ishtar-7924c43af9044cfd40f36bd8a84378417223d95b.zip
Merge branch 'master' into v0.9
Conflicts: ishtar_common/migrations/0053_auto__add_field_ishtarsiteprofile_currency.py
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py64
1 files changed, 56 insertions, 8 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 1d8dc2092..6fdee55cb 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.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
@@ -208,8 +208,10 @@ class OrganizationFormSelection(forms.Form):
currents = {'pk': models.Organization}
pk = forms.IntegerField(
label="",
- widget=widgets.JQueryJqGrid(reverse_lazy('get-organization'),
- OrganizationSelect, models.Organization),
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-organization'), OrganizationSelect,
+ models.Organization,
+ source_full=reverse_lazy('get-organization-full')),
validators=[models.valid_id(models.Organization)])
@@ -245,8 +247,9 @@ class PersonFormSelection(forms.Form):
currents = {'pk': models.Person}
pk = forms.IntegerField(
label="",
- widget=widgets.JQueryJqGrid(reverse_lazy('get-person'),
- PersonSelect, models.Person),
+ widget=widgets.JQueryJqGrid(
+ reverse_lazy('get-person'), PersonSelect, models.Person,
+ source_full=reverse_lazy('get-person-full')),
validators=[models.valid_id(models.Person)])
@@ -306,6 +309,51 @@ class SimplePersonForm(NewItemForm):
self.fields['raw_name'].widget.attrs['readonly'] = True
+class PersonUserSelect(PersonSelect):
+ ishtaruser__isnull = forms.NullBooleanField(
+ label=_(u"Already has an account"), initial=False)
+
+
+class PersonUserFormSelection(PersonFormSelection):
+ form_label = _(u"Person search")
+ associated_models = {'pk': models.Person}
+ currents = {'pk': models.Person}
+ pk = forms.IntegerField(
+ label="",
+ widget=widgets.JQueryJqGrid(reverse_lazy('get-person'),
+ PersonUserSelect, models.Person),
+ validators=[models.valid_id(models.Person)])
+
+
+class IshtarUserSelect(TableSelect):
+ username = forms.CharField(label=_(u"Username"), max_length=200)
+ name = forms.CharField(label=_(u"Name"), max_length=200)
+ surname = forms.CharField(label=_(u"Surname"), max_length=50)
+ email = forms.CharField(label=_(u"Email"), max_length=75)
+ person_types = forms.ChoiceField(label=_(u"Type"), choices=[])
+ attached_to = forms.IntegerField(
+ label=_("Organization"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-organization'),
+ associated_model=models.Organization),
+ validators=[models.valid_id(models.Organization)])
+
+ def __init__(self, *args, **kwargs):
+ super(IshtarUserSelect, self).__init__(*args, **kwargs)
+ self.fields['person_types'].choices = models.PersonType.get_types()
+
+
+class AccountFormSelection(forms.Form):
+ form_label = _(u"Account search")
+ associated_models = {'pk': models.IshtarUser}
+ currents = {'pk': models.IshtarUser}
+ pk = forms.IntegerField(
+ label="",
+ widget=widgets.JQueryJqGrid(reverse_lazy('get-ishtaruser'),
+ IshtarUserSelect, models.IshtarUser),
+ validators=[models.valid_id(models.IshtarUser)])
+
+
class BasePersonForm(forms.ModelForm):
class Meta:
model = models.Person
@@ -427,11 +475,11 @@ class AccountForm(forms.Form):
raise forms.ValidationError(_(u"You must provide a correct "
u"password."))
# check username unicity
- usernames = models.IshtarUser.objects.filter(
+ q = models.IshtarUser.objects.filter(
username=cleaned_data.get('username'))
if cleaned_data.get('pk'):
- usernames.exclude(pk=cleaned_data.get('pk'))
- if usernames.count():
+ q = q.exclude(person__pk=cleaned_data.get('pk'))
+ if q.count():
raise forms.ValidationError(_(u"This username already exists."))
return cleaned_data