return res
-class DynamicContentPersonListInline(TabularDynamicInlineAdmin):
+class PersonAutocompleteInline(TabularDynamicInlineAdmin):
- model = DynamicPersonList
- form = DynamicPersonListForm
-
- class Media:
- js = (
- static("mezzanine/js/admin/dynamic_inline.js"),
- static("mezzanine/js/jquery-ui-1.9.2.min.js"),
- )
+ model = PersonAutocomplete
+ form = PersonAutocompleteForm
class PersonListBlockAdmin(admin.ModelAdmin):
- inlines = [DynamicContentPersonListInline, ]
-
-
+ inlines = [PersonAutocompleteInline,]
admin.site.register(Organization, OrganizationAdmin)
from django.forms.widgets import HiddenInput
from django.forms import ModelForm
from mezzanine.core.models import Orderable
-from organization.network.models import Person
-from organization.network.models import PersonListBlock, DynamicPersonList #DynamicContentPersonList,
-from organization.pages.models import DynamicPersonListBlockPage
-
-
-class DynamicPersonListForm(autocomplete.FutureModelForm):
- """
- List of Person
- """
- content_object = dal_queryset_sequence.fields.QuerySetSequenceModelField(
- queryset=autocomplete.QuerySetSequence(
- Person.objects.all(),
- ),
- required=False,
- widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-person-list'),
+from organization.network.models import Person, PersonListBlock, DynamicPersonList, PersonAutocomplete #DynamicContentPersonList,
+from organization.pages.models import DynamicPersonListBlockPage, Page
+
+
+class PagePersonListForm(forms.ModelForm):
+
+ person_list_block = forms.ModelChoiceField(
+ queryset=PersonListBlock.objects.all(),
+ widget=autocomplete.ModelSelect2(url='person-list-block-autocomplete')
)
class Meta:
- model = DynamicPersonList
- fields = ('content_object',)
-
-
-class DynamicContentPersonListBlockForm(autocomplete.FutureModelForm):
- """
- List of PersonListBlock
- """
- content_object = dal_queryset_sequence.fields.QuerySetSequenceModelField(
- queryset=autocomplete.QuerySetSequence(
- PersonListBlock.objects.all(),
- ),
- required=False,
- widget=dal_select2_queryset_sequence.widgets.QuerySetSequenceSelect2('dynamic-content-person-list-block'),
+ model = Page
+ fields = ('person_list_block',)
+
+
+class PersonAutocompleteForm(forms.ModelForm):
+
+ person = forms.ModelChoiceField(
+ queryset=Person.objects.all(),
+ widget=autocomplete.ModelSelect2(url='person-autocomplete')
)
class Meta:
- model = DynamicPersonListBlockPage
- fields = ('content_object',)
+ model = PersonAutocomplete
+ fields = ('__all__')
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 11:06
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('pages', '0004_auto_20160804_1547'),
+ ('organization-network', '0008_auto_20160916_1129'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='personlistblock',
+ name='page',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='person_list_block', to='pages.Page', verbose_name='Page'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 12:40
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0009_personlistblock_page'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='PersonAutocomplete',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('person_list_block', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='person_autocomplete', to='organization-network.PersonListBlock', verbose_name='Person List Block')),
+ ],
+ options={
+ 'verbose_name': 'Person autocomplete',
+ },
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 12:46
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0010_personautocomplete'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='personautocomplete',
+ name='persons',
+ field=models.ManyToManyField(to='organization-network.Person'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 12:56
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0011_personautocomplete_persons'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='personautocomplete',
+ old_name='persons',
+ new_name='person',
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 15:15
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0012_auto_20160916_1456'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='personautocomplete',
+ name='person',
+ ),
+ migrations.AddField(
+ model_name='personlistblock',
+ name='persons',
+ field=models.ManyToManyField(to='organization-network.Person'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 15:19
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0013_auto_20160916_1715'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='personlistblock',
+ name='persons',
+ ),
+ migrations.AddField(
+ model_name='personautocomplete',
+ name='person',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person'),
+ preserve_default=False,
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 15:32
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0014_auto_20160916_1719'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='personautocomplete',
+ name='person',
+ ),
+ migrations.AddField(
+ model_name='personlistblock',
+ name='person',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='organization-network.Person'),
+ preserve_default=False,
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 15:41
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0015_auto_20160916_1732'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='personlistblock',
+ name='person',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='person_list_block', to='organization-network.Person', verbose_name='Person'),
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 16:02
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0016_auto_20160916_1741'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='personlistblock',
+ name='person_list_block',
+ field=models.ForeignKey(default=7, on_delete=django.db.models.deletion.CASCADE, to='organization-network.PersonListBlock'),
+ preserve_default=False,
+ ),
+ ]
--- /dev/null
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-09-16 16:13
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('organization-network', '0017_personlistblock_person_list_block'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='personlistblock',
+ name='person',
+ ),
+ migrations.RemoveField(
+ model_name='personlistblock',
+ name='person_list_block',
+ ),
+ migrations.AddField(
+ model_name='personautocomplete',
+ name='person',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='person_list_block', to='organization-network.Person', verbose_name='Person'),
+ ),
+ ]
class PersonListBlock(Titled):
+ page = models.ForeignKey(Page, verbose_name=_('Page'), related_name='person_list_block', blank=True, null=True, on_delete=models.SET_NULL)
+
class Meta:
verbose_name = _('Person List')
return self.title
+class PersonAutocomplete(models.Model):
+
+ person_list_block = models.ForeignKey(PersonListBlock, verbose_name=_('Person List Block'), related_name='person_autocomplete', blank=True, null=True, on_delete=models.SET_NULL)
+ person = models.ForeignKey(Person, verbose_name=_('Person'), related_name='person_list_block', blank=True, null=True, on_delete=models.SET_NULL)
+
+ class Meta:
+ verbose_name = _('Person autocomplete')
+
+
class DynamicPersonList(DynamicContent, Orderable):
person_list_block = models.ForeignKey("PersonListBlock", verbose_name=_('Person List Block'), related_name='dynamic_person_list', blank=True, null=True, on_delete=models.SET_NULL)
class PersonListBlockTranslationOptions(TranslationOptions):
pass
+
+
+@register(PersonAutocomplete)
+class PersonListBlockTranslationOptions(TranslationOptions):
+
+ pass
urlpatterns = [
url(r'^(?P<department>.*)/teams/$', TeamListView.as_view(), name="organization-network-team-list"),
url(r'^person/(?P<slug>.*)/$', PersonDetailView.as_view(), name="organization-network-person-detail"),
- url("^dynamic-person-list/$", DynamicPersonListView.as_view(), name='dynamic-person-list'),
- url("^dynamic-content-person-list-block/$", DynamicContentPersonListBlockView.as_view(), name='dynamic-content-person-list-block'),
-
+ url("^person-list-block-autocomplete/$", PersonListBlockAutocompleteView.as_view(), name='person-list-block-autocomplete'),
+ url("^person-autocomplete/$", PersonListView.as_view(), name='person-autocomplete'),
]
context_object_name = 'person'
-class DynamicPersonListView(Select2QuerySetSequenceView):
+class PersonListBlockAutocompleteView(autocomplete.Select2QuerySetView):
def get_queryset(self):
- persons = Person.objects.all()
- if self.q:
- persons = persons.filter(person_title__icontains=self.q)
- qs = autocomplete.QuerySetSequence(persons)
+ # if not self.request.is_authenticated():
+ # return PersonListBlock.objects.none()
+
+ qs = PersonListBlock.objects.all()
+
+ title = self.forwarded.get('title', None)
+
+ if title:
+ qs = qs.filter(title=title)
+
if self.q:
- qs = qs.filter(person_title__icontains=self.q)
- qs = self.mixup_querysets(qs)
+ qs = qs.filter(title__istartswith=self.q)
+
return qs
-class DynamicContentPersonListBlockView(Select2QuerySetSequenceView):
+class PersonListView(autocomplete.Select2QuerySetView):
def get_queryset(self):
- person_list_blocks = PersonListBlock.objects.all()
- if self.q:
- person_list_blocks = person_list_blocks.filter(title__icontains=self.q)
- qs = autocomplete.QuerySetSequence(person_list_blocks)
+ # if not self.request.is_authenticated():
+ # return PersonListBlock.objects.none()
+
+ qs = Person.objects.all()
+
+ person_title = self.forwarded.get('person_title', None)
+
+ if person_title:
+ qs = qs.filter(person_title=person_title)
+
if self.q:
- qs = qs.filter(title__icontains=self.q)
- qs = self.mixup_querysets(qs)
+ qs = qs.filter(person_title__istartswith=self.q)
+
return qs
model = PageLink
-class DynamicContentPersonListBlockInline(TabularDynamicInlineAdmin):
+class PersonListBlockAutocompleteInline(TabularDynamicInlineAdmin):
- model = DynamicPersonListBlockPage
- form = DynamicContentPersonListBlockForm
-
- class Media:
- js = (
- static("mezzanine/js/admin/dynamic_inline.js"),
- )
+ model = PersonListBlock
+ form = PagePersonListForm
class CustomPageAdmin(PageAdmin):
- inlines = [PageBlockInline, PageImageInline, PageAudioInline, PageVideoInline, PageLinkInline, DynamicContentPersonListBlockInline]
+ inlines = [PageBlockInline, PageImageInline,
+ PageAudioInline,
+ PageVideoInline,
+ PageLinkInline,
+ PersonListBlockAutocompleteInline,
+ ]
class DynamicContentHomeSliderInline(TabularDynamicInlineAdmin):
inlines = [DynamicContentHomeSliderInline, DynamicContentHomeBodyInline ]
-
-
-
-
-
admin.site.register(CustomPage, CustomPageAdmin)
admin.site.register(Home, HomeAdminDisplayable)
-# admin.site.register(PersonListBlock, PersonListBlockAdmin)