diff --git a/photo21/settings.py b/photo21/settings.py index 2d8b229..05c1cf3 100644 --- a/photo21/settings.py +++ b/photo21/settings.py @@ -44,6 +44,7 @@ INSTALLED_APPS = [ 'photologue_custom', 'photologue', 'sortedm2m', + 'taggit', ] MIDDLEWARE = [ diff --git a/photologue_custom/admin.py b/photologue_custom/admin.py index 8c38f3f..a38f925 100644 --- a/photologue_custom/admin.py +++ b/photologue_custom/admin.py @@ -1,3 +1,22 @@ from django.contrib import admin +from photologue.admin import GalleryAdmin as GalleryAdminDefault +from photologue.models import Gallery -# Register your models here. +from .models import GalleryExtended + + +class GalleryExtendedInline(admin.StackedInline): + model = GalleryExtended + can_delete = False + + +class GalleryAdmin(GalleryAdminDefault): + """ + Define our new one-to-one model as an inline of Photologue's Gallery + model. + """ + inlines = [GalleryExtendedInline, ] + + +admin.site.unregister(Gallery) +admin.site.register(Gallery, GalleryAdmin) diff --git a/photologue_custom/migrations/0001_initial.py b/photologue_custom/migrations/0001_initial.py new file mode 100644 index 0000000..a76a246 --- /dev/null +++ b/photologue_custom/migrations/0001_initial.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.24 on 2021-09-23 08:26 + +from django.db import migrations, models +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('taggit', '0003_taggeditem_add_unique_index'), + ('photologue', '0011_auto_20190223_2138'), + ] + + operations = [ + migrations.CreateModel( + name='GalleryExtended', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('gallery', models.OneToOneField(on_delete='cascade', related_name='extended', to='photologue.Gallery')), + ('tags', taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')), + ], + options={ + 'verbose_name': 'Extra fields', + 'verbose_name_plural': 'Extra fields', + }, + ), + ] diff --git a/photologue_custom/models.py b/photologue_custom/models.py index 71a8362..377f83b 100644 --- a/photologue_custom/models.py +++ b/photologue_custom/models.py @@ -1,3 +1,22 @@ from django.db import models +from taggit.managers import TaggableManager +from photologue.models import Gallery -# Create your models here. + +class GalleryExtended(models.Model): + # Extend Photologue Gallery model. + gallery = models.OneToOneField( + Gallery, + related_name='extended', + on_delete='cascade', + ) + + # Add tags + tags = TaggableManager(blank=True) + + class Meta: + verbose_name = u'Extra fields' + verbose_name_plural = u'Extra fields' + + def __str__(self): + return self.gallery.title diff --git a/photologue_custom/templates/photologue/gallery_detail.html b/photologue_custom/templates/photologue/gallery_detail.html index 95d1e1d..368da46 100644 --- a/photologue_custom/templates/photologue/gallery_detail.html +++ b/photologue_custom/templates/photologue/gallery_detail.html @@ -23,6 +23,13 @@ {% block content %}
{% trans "Published" %} {{ gallery.date_added }}
+{% if gallery.extended.tags.all %} ++ Tags : {% for tag in gallery.extended.tags.all %} + {{ tag }} + {% endfor %} +
+{% endif %} {% if gallery.description %}{{ gallery.description|safe }}
{% endif %}