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