summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/admin.py11
-rw-r--r--ishtar_common/lookups.py15
-rw-r--r--ishtar_common/migrations/0047_auto_20180418_1802.py30
-rw-r--r--ishtar_common/models.py2
4 files changed, 57 insertions, 1 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 726238f5b..637669f13 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -764,6 +764,17 @@ class AdministrationTaskAdmin(admin.ModelAdmin):
admin_site.register(models.AdministrationTask, AdministrationTaskAdmin)
+class UserProfileAdmin(admin.ModelAdmin):
+ list_display = ['person', 'profile_type']
+ list_filter = ['profile_type']
+ search_fields = ['person__raw_name']
+ model = models.UserProfile
+ form = make_ajax_form(model, {'areas': 'area'})
+
+
+admin_site.register(models.UserProfile, UserProfileAdmin)
+
+
basic_models = [models.DocumentTemplate]
for model in basic_models:
diff --git a/ishtar_common/lookups.py b/ishtar_common/lookups.py
index f409536da..181fc97a1 100644
--- a/ishtar_common/lookups.py
+++ b/ishtar_common/lookups.py
@@ -2,7 +2,8 @@ from ajax_select import register, LookupChannel as BaseLookupChannel
from django.conf import settings
from django.db.models import Q
-from ishtar_common.models import Person, Organization, IshtarUser, Town, Author
+from ishtar_common.models import Area, Person, Organization, IshtarUser, Town, \
+ Author
class LookupChannel(BaseLookupChannel):
@@ -105,3 +106,15 @@ class UserLookup(LookupChannel):
def format_item_display(self, item):
return u"<span class='ajax-label'>%s</span>" % unicode(item.person)
+
+
+@register('area')
+class AreaLookup(LookupChannel):
+ model = Area
+
+ def get_query(self, q, request):
+ query = Q(label__icontains=q)
+ return self.model.objects.filter(query).order_by('label')[:20]
+
+ def format_item_display(self, item):
+ return u"<span class='ajax-label'>%s</span>" % unicode(item)
diff --git a/ishtar_common/migrations/0047_auto_20180418_1802.py b/ishtar_common/migrations/0047_auto_20180418_1802.py
new file mode 100644
index 000000000..4a02e3041
--- /dev/null
+++ b/ishtar_common/migrations/0047_auto_20180418_1802.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-04-18 18:02
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0046_create_default_areas'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='area',
+ options={'ordering': ('parent__label', 'label'), 'verbose_name': 'Area', 'verbose_name_plural': 'Areas'},
+ ),
+ migrations.AddField(
+ model_name='userprofile',
+ name='areas',
+ field=models.ManyToManyField(blank=True, related_name='profiles', to='ishtar_common.Area', verbose_name='Areas'),
+ ),
+ migrations.AlterField(
+ model_name='area',
+ name='parent',
+ field=models.ForeignKey(blank=True, help_text='Only four level of parent are managed.', null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Area', verbose_name='Parent'),
+ ),
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 1825335fd..ca4055fb2 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2675,6 +2675,8 @@ post_delete.connect(post_save_cache, sender=ProfileType)
class UserProfile(models.Model):
profile_type = models.ForeignKey(
ProfileType, verbose_name=_(u"Profile type"))
+ areas = models.ManyToManyField("Area", verbose_name=_(u"Areas"),
+ blank=True, related_name='profiles')
current = models.BooleanField(_(u"Current profile"), default=False)
person = models.ForeignKey(
Person, verbose_name=_(u"Person"), related_name='profiles')