From 34e552f7606541f9c99a13d51cfbbfee94db8e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Sat, 5 Oct 2019 14:34:30 +0200 Subject: [PATCH] New 'events' app, first model The objective is to move (at some point) all the management logic in this app. Before that time: as long as the events app does not have all the features necessary to be used in production it is only available in dev mode and coexists with the old event system. When it's ready we'll move the old events in the new app (data migration) and remove the old system. --- cof/settings/dev.py | 4 ++ events/__init__.py | 0 events/admin.py | 4 ++ events/apps.py | 5 +++ events/migrations/0001_event.py | 67 +++++++++++++++++++++++++++++++++ events/migrations/__init__.py | 0 events/models.py | 31 +++++++++++++++ events/views.py | 0 8 files changed, 111 insertions(+) create mode 100644 events/__init__.py create mode 100644 events/admin.py create mode 100644 events/apps.py create mode 100644 events/migrations/0001_event.py create mode 100644 events/migrations/__init__.py create mode 100644 events/models.py create mode 100644 events/views.py diff --git a/cof/settings/dev.py b/cof/settings/dev.py index 3bf2f4f9..0920e538 100644 --- a/cof/settings/dev.py +++ b/cof/settings/dev.py @@ -15,6 +15,10 @@ DEBUG = True if TESTING: PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"] +# Only in development mode as long as the events app is not +# ready for production +INSTALLED_APPS += ["events"] + # --- # Apache static/media config diff --git a/events/__init__.py b/events/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/events/admin.py b/events/admin.py new file mode 100644 index 00000000..7be669c2 --- /dev/null +++ b/events/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from events.models import Event + +admin.site.register(Event) diff --git a/events/apps.py b/events/apps.py new file mode 100644 index 00000000..60b376ce --- /dev/null +++ b/events/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class EventsConfig(AppConfig): + name = "events" diff --git a/events/migrations/0001_event.py b/events/migrations/0001_event.py new file mode 100644 index 00000000..dc3a6bce --- /dev/null +++ b/events/migrations/0001_event.py @@ -0,0 +1,67 @@ +# Generated by Django 2.2.6 on 2019-10-05 12:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Event", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=200, verbose_name="titre")), + ("location", models.CharField(max_length=200, verbose_name="lieu")), + ( + "start_date", + models.DateTimeField( + blank=True, null=True, verbose_name="date de début" + ), + ), + ( + "end_date", + models.DateTimeField( + blank=True, null=True, verbose_name="date de fin" + ), + ), + ( + "description", + models.TextField(blank=True, verbose_name="description"), + ), + ( + "image", + models.ImageField( + blank=True, + null=True, + upload_to="imgs/events/", + verbose_name="image", + ), + ), + ( + "registration_open", + models.BooleanField( + default=True, verbose_name="inscriptions ouvertes" + ), + ), + ( + "old", + models.BooleanField( + default=False, verbose_name="archiver (événement fini)" + ), + ), + ], + options={"verbose_name": "événement", "verbose_name_plural": "événements"}, + ) + ] diff --git a/events/migrations/__init__.py b/events/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/events/models.py b/events/models.py new file mode 100644 index 00000000..1fa3a96e --- /dev/null +++ b/events/models.py @@ -0,0 +1,31 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + + +class Event(models.Model): + title = models.CharField(_("titre"), max_length=200) + location = models.CharField(_("lieu"), max_length=200) + start_date = models.DateTimeField(_("date de début"), blank=True, null=True) + end_date = models.DateTimeField(_("date de fin"), blank=True, null=True) + description = models.TextField(_("description"), blank=True) + image = models.ImageField( + _("image"), blank=True, null=True, upload_to="imgs/events/" + ) + registration_open = models.BooleanField(_("inscriptions ouvertes"), default=True) + old = models.BooleanField(_("archiver (événement fini)"), default=False) + + class Meta: + verbose_name = _("événement") + verbose_name_plural = _("événements") + + def __str__(self): + return self.title + + +# TODO: gérer les inscriptions + +# TODO: gérer les options (EventOption & EventOptionChoice de gestioncof) +# par exemple: "option végé au Mega (oui / non)" + +# TODO: gérer les champs commentaires (EventCommentField & EventCommentChoice) +# par exemple: "champ "allergies / régime particulier" au Mega diff --git a/events/views.py b/events/views.py new file mode 100644 index 00000000..e69de29b