diff --git a/src/agenda_culturel/admin.py b/src/agenda_culturel/admin.py index 76d8b04..302f280 100644 --- a/src/agenda_culturel/admin.py +++ b/src/agenda_culturel/admin.py @@ -1,6 +1,21 @@ from django.contrib import admin +from django import forms from .models import Event, EventSubmissionForm, Category +from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin +from django_better_admin_arrayfield.forms.widgets import DynamicArrayWidget +from django_better_admin_arrayfield.models.fields import DynamicArrayField -admin.site.register(Event) admin.site.register(EventSubmissionForm) admin.site.register(Category) + +class URLWidget(DynamicArrayWidget): + def __init__(self, *args, **kwargs): + kwargs['subwidget_form'] = forms.URLField() + super().__init__(*args, **kwargs) + +@admin.register(Event) +class Eventdmin(admin.ModelAdmin, DynamicArrayMixin): + + formfield_overrides = { + DynamicArrayField: {'urls': URLWidget}, + } \ No newline at end of file diff --git a/src/agenda_culturel/migrations/0008_alter_event_reference_urls_alter_event_tags.py b/src/agenda_culturel/migrations/0008_alter_event_reference_urls_alter_event_tags.py new file mode 100644 index 0000000..d5979dc --- /dev/null +++ b/src/agenda_culturel/migrations/0008_alter_event_reference_urls_alter_event_tags.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.1 on 2023-10-29 13:51 + +from django.db import migrations, models +import django_better_admin_arrayfield.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('agenda_culturel', '0007_event_category_event_tags'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='reference_urls', + field=django_better_admin_arrayfield.models.fields.ArrayField(base_field=models.URLField(max_length=512), blank=True, help_text='List of all the urls where this event can be found.', null=True, size=None, verbose_name='URLs'), + ), + migrations.AlterField( + model_name='event', + name='tags', + field=django_better_admin_arrayfield.models.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, help_text='A list of tags that describe the event.', null=True, size=None, verbose_name='Tags'), + ), + ] diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index dfe471e..7686bbe 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.contrib.postgres.fields import ArrayField +from django_better_admin_arrayfield.models.fields import ArrayField from django.utils.translation import gettext_lazy as _ from django.template.defaultfilters import slugify # new from django.urls import reverse diff --git a/src/agenda_culturel/settings/base.py b/src/agenda_culturel/settings/base.py index f538d4c..8271698 100644 --- a/src/agenda_culturel/settings/base.py +++ b/src/agenda_culturel/settings/base.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ "agenda_culturel", "colorfield", 'django_extensions', + 'django_better_admin_arrayfield', ] MIDDLEWARE = [ diff --git a/src/requirements.txt b/src/requirements.txt index 3728db4..ed1cc6c 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -27,3 +27,4 @@ django-colorfield==0.10.1 cffi==1.16.0 django-extensions==3.2.3 djipsum==1.1.5 +django-better-admin-arrayfield==1.4.2