diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-04-18 18:12:11 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-12 08:41:54 +0200 |
commit | 68f0b07848478b525898b73e0788f92bb6670210 (patch) | |
tree | faf0f20d409405afc8d579fd19e000b446b74a64 | |
parent | 48046732fbbd307906c492344c886da5f713f06d (diff) | |
download | Ishtar-68f0b07848478b525898b73e0788f92bb6670210.tar.bz2 Ishtar-68f0b07848478b525898b73e0788f92bb6670210.zip |
Associate area to userprofiles (refs #4060)
-rw-r--r-- | ishtar_common/admin.py | 11 | ||||
-rw-r--r-- | ishtar_common/lookups.py | 15 | ||||
-rw-r--r-- | ishtar_common/migrations/0047_auto_20180418_1802.py | 30 | ||||
-rw-r--r-- | ishtar_common/models.py | 2 |
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') |