summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/admin.py2
-rw-r--r--ishtar_common/context_processors.py5
-rw-r--r--ishtar_common/forms_common.py7
-rw-r--r--ishtar_common/models.py10
-rw-r--r--ishtar_common/templates/ishtar/sheet_person.html18
-rw-r--r--ishtar_common/wizards.py25
6 files changed, 49 insertions, 18 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 637669f13..db5d885e9 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -765,7 +765,7 @@ admin_site.register(models.AdministrationTask, AdministrationTaskAdmin)
class UserProfileAdmin(admin.ModelAdmin):
- list_display = ['person', 'profile_type']
+ list_display = ['person', 'profile_type', 'area_labels']
list_filter = ['profile_type']
search_fields = ['person__raw_name']
model = models.UserProfile
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py
index 7619363dc..108fb7ec4 100644
--- a/ishtar_common/context_processors.py
+++ b/ishtar_common/context_processors.py
@@ -60,6 +60,11 @@ def get_base_context(request):
menu = Menu(request.user, current_action=current_action,
session=request.session)
menu.init()
+
+ if hasattr(request.user, 'ishtaruser') and request.user.ishtaruser and \
+ request.user.ishtaruser.has_right('administrator',
+ session=request.session):
+ dct['ADMIN'] = True
if menu.selected_idx is not None:
dct['current_theme'] = "theme-%d" % (menu.selected_idx + 1)
dct['MENU'] = menu
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index a7c464883..d4b1b5703 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -725,13 +725,18 @@ class AccountForm(forms.Form):
class ProfileForm(ManageOldType):
form_label = _("Profiles")
base_model = 'profile'
- associated_models = {'profile_type': models.ProfileType}
+ associated_models = {
+ 'profile_type': models.ProfileType,
+ 'area': models.Area
+ }
profile_type = forms.ChoiceField(label=_(u"Type"), choices=[],
required=False)
+ area = widgets.Select2MultipleField(label=_(u"Areas"), required=False)
pk = forms.IntegerField(label=" ", widget=forms.HiddenInput, required=False)
TYPES = [
FieldType('profile_type', models.ProfileType),
+ FieldType('area', models.Area, is_multiple=True),
]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index ca4055fb2..67c4422f6 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2686,7 +2686,15 @@ class UserProfile(models.Model):
verbose_name_plural = _(u"User profiles")
def __unicode__(self):
- return unicode(self.profile_type)
+ lbl = unicode(self.profile_type)
+ if not self.areas.count():
+ return lbl
+ return u"{} ({})".format(lbl, u", ".join(
+ [unicode(area) for area in self.areas.all()]))
+
+ @property
+ def area_labels(self):
+ return u", ".join([unicode(area) for area in self.areas.all()])
class IshtarUser(FullSearch):
diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html
index 65c94d188..c1fe0504e 100644
--- a/ishtar_common/templates/ishtar/sheet_person.html
+++ b/ishtar_common/templates/ishtar/sheet_person.html
@@ -10,14 +10,16 @@
{% block content %}
<div class="row">
-{% field_flex "Title" item.full_title %}
-{% field_flex "Name" item.name %}
-{% field_flex "Surname" item.surname %}
-{% field_flex "Raw name" item.raw_name %}
-{% field_flex_detail "Created by" item.history_creator.ishtaruser.person %}
-{% field_flex "Email" item.email %}
-{% field_flex "Type(s)" item.person_types_list %}
-{% field_flex "Profile(s)" item.profiles_list %}
+ {% field_flex "Title" item.full_title %}
+ {% field_flex "Name" item.name %}
+ {% field_flex "Surname" item.surname %}
+ {% field_flex "Raw name" item.raw_name %}
+ {% field_flex_detail "Created by" item.history_creator.ishtaruser.person %}
+ {% field_flex "Email" item.email %}
+ {% field_flex "Type(s)" item.person_types_list %}
+ {% if ADMIN %}
+ {% field_flex "Profile(s)" item.profiles_list %}
+ {% endif %}
</div>
{% if item.phone or item.phone2 or item.phone3 or item.mobile_phone %}
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index dcad096cf..ca4937ec3 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -1482,6 +1482,7 @@ class AccountWizard(Wizard):
profile_form = form_dict['profile-account_management']
for form in profile_form:
data = form.cleaned_data
+ print(data)
profile = None
if data.get('pk', None):
try:
@@ -1503,14 +1504,24 @@ class AccountWizard(Wizard):
except models.ProfileType.DoesNotExist:
continue
if profile:
- if profile_type == profile.profile_type:
- # no change
+ if profile_type != profile.profile_type:
+ profile.profile_type = profile_type
+ profile.save()
+ else:
+ profile = models.UserProfile.objects.create(
+ profile_type=profile_type, person=person)
+ area_pks = data.get('area', None)
+ areas = []
+ if area_pks:
+ try:
+ areas = [models.Area.objects.get(pk=pk) for pk in area_pks]
+ except models.Area.DoesNotExist:
+ # something wrong is happening - doing nothing on areas
continue
- profile.profile_type = profile_type
- profile.save()
- continue
- models.UserProfile.objects.create(
- profile_type=profile_type, person=person)
+ profile.areas.clear()
+ for area in areas:
+ profile.areas.add(area)
+
final_form = form_dict['final-account_management']
if settings.ADMINS and type(final_form.cleaned_data) == dict and \