Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mediatek/site-interludes
  • aeltheos/site-kwei
  • mediatek/site-kwei
3 results
Show changes
# Generated by Django 3.0.8 on 2021-03-24 15:04 # Generated by Django 3.2.9 on 2021-11-07 19:00
from django.db import migrations, models from django.db import migrations, models
...@@ -10,9 +10,9 @@ class Migration(migrations.Migration): ...@@ -10,9 +10,9 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.AlterField( migrations.AddField(
model_name='sitesettings', model_name='sitesettings',
name='activity_submission_form', name='hosting_school',
field=models.CharField(blank=True, default='', max_length=200, null=True, verbose_name='Lien pour soumettre une activité'), field=models.CharField(blank=True, max_length=50, null=True, verbose_name="École hébergeant l'événement"),
), ),
] ]
# Generated by Django 3.0.8 on 2021-04-07 12:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0002_auto_20210324_1604'),
]
operations = [
migrations.AddField(
model_name='sitesettings',
name='discord_link',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='Lien du serveur discord'),
),
migrations.AddField(
model_name='sitesettings',
name='global_message_as_html',
field=models.BooleanField(default=False, help_text='Assurez vous que le message est bien formaté, cela peut casser toutes les pages du site', verbose_name='Message global au format HTML'),
),
]
# Generated by Django 3.2.16 on 2022-11-08 18:19
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0002_sitesettings_hosting_school'),
]
operations = [
migrations.AddField(
model_name='sitesettings',
name='activity_inscriptions_open',
field=models.BooleanField(default=False, help_text="Permet d'ouvrir la partie du formulaire d'inscription pour les activités (nécessite l'ouverture des inscriptions)", verbose_name="Ouvrir l'inscription aux activitées"),
),
migrations.AlterField(
model_name='sitesettings',
name='inscriptions_open',
field=models.BooleanField(default=False, help_text="Permet d'ouvrir le formulaire d'inscription (repas et dodo; l'inscription aux activité est ouvrable en plus)", verbose_name='Ouvrir les inscriptions'),
),
]
# Generated by Django 3.0.8 on 2021-04-24 15:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0003_auto_20210407_1420'),
]
operations = [
migrations.AddField(
model_name='sitesettings',
name='planning_caption',
field=models.TextField(blank=True, help_text='Légende du planning (au format HTML). Les couleurs sont accessibles dans le stylevia var(--color_1), var(--color_1_fg) et var(--color_1_hover)', null=True, verbose_name='Légende du planning'),
),
]
# Generated by Django 3.0.8 on 2021-04-25 15:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0004_sitesettings_planning_caption'),
]
operations = [
migrations.RemoveField(
model_name='sitesettings',
name='planning_caption',
),
migrations.AddField(
model_name='sitesettings',
name='planning_file',
field=models.FileField(blank=True, null=True, upload_to='', verbose_name='Version PDF du planning'),
),
]
from datetime import timedelta from datetime import timedelta
from pathlib import Path
from django.db import models from django.db import models
from django.core.cache import cache from django.core.cache import cache
from django.core.files.storage import FileSystemStorage
from django.utils.timezone import now from django.utils.timezone import now
class Colors(models.TextChoices):
"""Couleur d'affichage dans le planning
Leur code HTML est hardcodé dans la template '_planning.html'."""
RED = "a", "Rouge"
ORANGE = "b", "Orange"
YELLOW = "c", "Jaune"
GREEN = "d", "Vert"
BLUE = "e", "Bleu"
DARK_BLUE = "f", "Bleu foncé"
BLACK = "g", "Noir"
class OverwriteStorage(FileSystemStorage):
"""used to enforcing a fixed filename to upload file
This allow for a constant link to a changeable file"""
filename = "PlanningInterludes"
def get_available_name(self, name, **kwargs):
"""
Returns a filename that's free on the target storage system, and
available for new content to be written to.
"""
# If the filename already exists, remove it as if it was a true file system
extension = Path(name).suffix
new_name = self.filename + extension
if self.exists(new_name):
self.delete(new_name)
return super(FileSystemStorage, self).get_available_name(new_name, **kwargs)
class SingletonModel(models.Model): class SingletonModel(models.Model):
"""Table de la BDD qui ne possède qu'un seul élément""" """Table de la BDD qui ne possède qu'un seul élément"""
class Meta: class Meta:
...@@ -35,12 +68,27 @@ class SingletonModel(models.Model): ...@@ -35,12 +68,27 @@ class SingletonModel(models.Model):
class SiteSettings(SingletonModel): class SiteSettings(SingletonModel):
"""Réglages globaux du site""" """Réglages globaux du site"""
contact_email = models.EmailField("Email contact", blank=True, null=True) contact_email = models.EmailField("Email contact", blank=True, null=True)
hosting_school = models.CharField(
"École hébergeant l'événement", max_length=50, blank=True, null=True
)
date_start = models.DateField("Date de début", blank=True, null=True) date_start = models.DateField("Date de début", blank=True, null=True)
date_end = models.DateField("Date de fin", blank=True, null=True) date_end = models.DateField("Date de fin", blank=True, null=True)
registrations_open = models.BooleanField("Ouvrir la création de compte", default=True)
inscriptions_open = models.BooleanField("Ouvrir les inscriptions", default=False, help_text="Permet d'ouvrir le formulaire d'inscription (repas et dodo; l'inscription aux activité est ouvrable en plus)")
activity_inscriptions_open = models.BooleanField("Ouvrir l'inscription aux activitées", default=False, help_text="Permet d'ouvrir la partie du formulaire d'inscription pour les activités (nécessite l'ouverture des inscriptions)")
activity_submission_open = models.BooleanField(
"Ouvrir l'ajout d'activité", default=False,
help_text="Permet de proposer une activité via le formulaire dédié"
)
show_host_emails = models.BooleanField(
"Afficher les mails des orgas d'activités", default=False,
help_text="Ces mail sont affichés sur la page activités pour que les gens puissent les contacter",
)
registrations_open = models.BooleanField("Ouvrir la création de compte", default=False)
inscriptions_open = models.BooleanField("Ouvrir les inscriptions", default=False)
inscriptions_start = models.DateTimeField("Ouverture des inscriptions", inscriptions_start = models.DateTimeField("Ouverture des inscriptions",
blank=True, null=True, blank=True, null=True,
...@@ -54,6 +102,7 @@ class SiteSettings(SingletonModel): ...@@ -54,6 +102,7 @@ class SiteSettings(SingletonModel):
display_planning = models.BooleanField("Afficher le planning", default=False) display_planning = models.BooleanField("Afficher le planning", default=False)
planning_file = models.FileField( planning_file = models.FileField(
verbose_name="Version PDF du planning", null=True, blank=True, verbose_name="Version PDF du planning", null=True, blank=True,
storage=OverwriteStorage(),
) )
activities_allocated = models.BooleanField( activities_allocated = models.BooleanField(
...@@ -61,10 +110,6 @@ class SiteSettings(SingletonModel): ...@@ -61,10 +110,6 @@ class SiteSettings(SingletonModel):
help_text="Suppose que l'allocation des activités a été effectuée." help_text="Suppose que l'allocation des activités a été effectuée."
) )
activity_submission_form = models.CharField(
"Lien pour soumettre une activité", max_length=200, default="",
blank=True, null=True
)
discord_link = models.CharField( discord_link = models.CharField(
"Lien du serveur discord", max_length=200, blank=True, null=True "Lien du serveur discord", max_length=200, blank=True, null=True
) )
...@@ -91,6 +136,37 @@ class SiteSettings(SingletonModel): ...@@ -91,6 +136,37 @@ class SiteSettings(SingletonModel):
help_text="Assurez vous que le message est bien formaté, cela peut casser toutes les pages du site", help_text="Assurez vous que le message est bien formaté, cela peut casser toutes les pages du site",
) )
# Légende du planning modifiable
caption_red = models.CharField(
"Légende planning (rouge)", default="Jeux de rôle grandeur nature",
blank=True, null=True, max_length=200,
)
caption_orange = models.CharField(
"Légende planning (orange)", default="Jeux de rôle sur table",
blank=True, null=True, max_length=200,
)
caption_yellow = models.CharField(
"Légende planning (jaune)", default="Activités libres",
blank=True, null=True, max_length=200,
)
caption_green = models.CharField(
"Légende planning (vert)", default="Tournois",
blank=True, null=True, max_length=200,
)
caption_blue = models.CharField(
"Légende planning (bleu)", default="Événements de début et fin",
blank=True, null=True, max_length=200,
)
caption_dark_blue = models.CharField(
"Légende planning (bleu foncé)", default="Jeux vidéos",
blank=True, null=True, max_length=200,
)
caption_black = models.CharField(
"Légende planning (noir)", default="Autre",
blank=True, null=True, max_length=200,
)
@property @property
def contact_email_reversed(self) -> str: def contact_email_reversed(self) -> str:
return self.contact_email[::-1] return self.contact_email[::-1]
...@@ -113,6 +189,17 @@ class SiteSettings(SingletonModel): ...@@ -113,6 +189,17 @@ class SiteSettings(SingletonModel):
if self.date_start: if self.date_start:
return self.date_start + timedelta(days=1) return self.date_start + timedelta(days=1)
@property
def has_caption(self) -> bool:
"""Vérifie si l'une des légende est non-nulle"""
return self.caption_red \
or self.caption_orange \
or self.caption_yellow \
or self.caption_green \
or self.caption_blue \
or self.caption_dark_blue \
or self.caption_black
class Meta: class Meta:
verbose_name = "paramètres" verbose_name = "paramètres"
verbose_name_plural = "paramètres" verbose_name_plural = "paramètres"
......