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
Django~=3.0.8
\ No newline at end of file
Django~=3.2.7
django-allauth~=0.51.0
\ No newline at end of file
......@@ -12,6 +12,7 @@ class ExportCsvMixin:
filename = None
csv_export_exclude = []
csv_export_fields = None
def get_filename(self):
if self.filename:
......@@ -22,7 +23,8 @@ class ExportCsvMixin:
"""renvoie un fichier CSV contenant l'information du queryset"""
view = CSVWriteViewForAdmin(
request=request, queryset=queryset, model=self.model,
filename=self.get_filename(), exclude_fields = self.csv_export_exclude,
filename=self.get_filename(), exclude_fields=self.csv_export_exclude,
fields=self.csv_export_fields,
)
return view.get(request)
......
......@@ -19,6 +19,7 @@ class CSVWriteView(View):
headers = None
model = None
exclude_fields = []
fields = None
def get_filename(self):
return self.filename
......@@ -28,7 +29,7 @@ class CSVWriteView(View):
if self.headers:
return self.headers
if self.model:
return [field.name for field in self.get_field_names()]
return self.get_field_names()
return None
def get_values(self):
......@@ -41,9 +42,13 @@ class CSVWriteView(View):
def get_field_names(self):
"""overload to limit/change field names
default to all minus those in exclude_fields"""
default to:
- the value of self.field if not None
- all fields minus those in exclude_fields otherwise"""
if self.fields is not None:
return self.fields
return [
field for field in self.model._meta.fields
field.name for field in self.model._meta.get_fields()
if not field.name in self.exclude_fields
]
......@@ -53,7 +58,7 @@ class CSVWriteView(View):
fields = self.get_field_names()
table = []
for row in queryset:
table.append([row[field.name] for field in fields])
table.append([row[field] for field in fields])
return table
def get(self, request, *args, **kwargs):
......
let
pkgs = import <nixpkgs> {};
in pkgs.mkShell {
buildInputs = [
pkgs.python3
pkgs.python39Packages.django
pkgs.python39Packages.pip
];
shellHook = ''
# Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
# See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
export PIP_PREFIX=$(pwd)/_build/pip_packages
export PYTHONPATH="$PIP_PREFIX/${pkgs.python3.sitePackages}:$PYTHONPATH"
export PATH="$PIP_PREFIX/bin:$PATH"
unset SOURCE_DATE_EPOCH
'';
}
\ No newline at end of file
# The website version number
WEBSITE_VERSION = "1.2.8"
WEBSITE_VERSION_DATE = "2021-05-06"
WEBSITE_VERSION = "2.0.0-beta"
WEBSITE_VERSION_DATE = "2021-10-05"
WEBSITE_FULL_VERSION = "{} - {}".format(
WEBSITE_VERSION, WEBSITE_VERSION_DATE
)
# Update this to force reload of cached css
CSS_VERSION = "1.1"
CSS_VERSION = "1.0"
# Generated by Django 3.0.8 on 2021-03-21 17:30
# Generated by Django 3.2.7 on 2021-10-05 18:45
from django.db import migrations, models
import site_settings.models
class Migration(migrations.Migration):
......@@ -18,17 +19,28 @@ class Migration(migrations.Migration):
('contact_email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Email contact')),
('date_start', models.DateField(blank=True, null=True, verbose_name='Date de début')),
('date_end', models.DateField(blank=True, null=True, verbose_name='Date de fin')),
('registrations_open', models.BooleanField(default=False, verbose_name='Ouvrir la création de compte')),
('registrations_open', models.BooleanField(default=True, verbose_name='Ouvrir la création de compte')),
('inscriptions_open', models.BooleanField(default=False, verbose_name='Ouvrir les inscriptions')),
('activity_submission_open', models.BooleanField(default=False, help_text='Permet de proposer une activité via le formulaire dédié', verbose_name="Ouvrir l'ajout d'activité")),
('show_host_emails', models.BooleanField(default=False, help_text='Ces mail sont affichés sur la page activités pour que les gens puissent les contacter', verbose_name="Afficher les mails des orgas d'activités")),
('inscriptions_start', models.DateTimeField(blank=True, help_text="Cette date n'est qu'informative. Les inscription s'ouvrent via la checkbox uniquement", null=True, verbose_name='Ouverture des inscriptions')),
('inscriptions_end', models.DateTimeField(blank=True, help_text="Cette date n'est qu'informative. Les inscription se ferment via la checkbox uniquement", null=True, verbose_name='Fermeture des inscriptions')),
('display_planning', models.BooleanField(default=False, verbose_name='Afficher le planning')),
('planning_file', models.FileField(blank=True, null=True, storage=site_settings.models.OverwriteStorage(), upload_to='', verbose_name='Version PDF du planning')),
('activities_allocated', models.BooleanField(default=False, help_text="Suppose que l'allocation des activités a été effectuée.", verbose_name='Afficher les activités obtenues')),
('activity_submission_form', models.CharField(default='', max_length=200, verbose_name='Lien pour soumettre une activité')),
('discord_link', models.CharField(blank=True, max_length=200, null=True, verbose_name='Lien du serveur discord')),
('allow_mass_mail', models.BooleanField(default=False, help_text="Par sécurité, n'activez ceci qu'au moment d'envoyer les emails et désactivez le après", verbose_name="Permettre l'envoi de mails collectifs (aux utilisateurs et orgas)")),
('user_notified', models.BooleanField(default=False, help_text="Ce champ existe pour éviter l'envoie de plusieurs mails successifs. Le decocher permet de renvoyer tous les mails", verbose_name="L'email de répartition des activités a été envoyé")),
('orga_notified', models.BooleanField(default=False, help_text="Ce champ existe pour éviter l'envoie de plusieurs mails successifs. Le decocher permet de renvoyer tous les mails", verbose_name="L'email de liste des participants a été envoyé")),
('global_message', models.TextField(blank=True, help_text='Message affiché en haut de chaque page (si non vide)', null=True, verbose_name='Message global')),
('global_message_as_html', 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')),
('caption_red', models.CharField(blank=True, default='Jeux de rôle grandeur nature', max_length=200, null=True, verbose_name='Légende planning (rouge)')),
('caption_orange', models.CharField(blank=True, default='Jeux de rôle sur table', max_length=200, null=True, verbose_name='Légende planning (orange)')),
('caption_yellow', models.CharField(blank=True, default='Activités libres', max_length=200, null=True, verbose_name='Légende planning (jaune)')),
('caption_green', models.CharField(blank=True, default='Tournois', max_length=200, null=True, verbose_name='Légende planning (vert)')),
('caption_blue', models.CharField(blank=True, default='Événements de début et fin', max_length=200, null=True, verbose_name='Légende planning (bleu)')),
('caption_dark_blue', models.CharField(blank=True, default='Jeux vidéos', max_length=200, null=True, verbose_name='Légende planning (bleu foncé)')),
('caption_black', models.CharField(blank=True, default='Autre', max_length=200, null=True, verbose_name='Légende planning (noir)')),
],
options={
'verbose_name': 'paramètres',
......
# 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
......@@ -10,9 +10,9 @@ class Migration(migrations.Migration):
]
operations = [
migrations.AlterField(
migrations.AddField(
model_name='sitesettings',
name='activity_submission_form',
field=models.CharField(blank=True, default='', max_length=200, null=True, verbose_name='Lien pour soumettre une activité'),
name='hosting_school',
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.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'),
),
]
# Generated by Django 3.0.8 on 2021-04-28 12:46
from django.db import migrations, models
import site_settings.models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0005_auto_20210425_1732'),
]
operations = [
migrations.AlterField(
model_name='sitesettings',
name='planning_file',
field=models.FileField(blank=True, null=True, storage=site_settings.models.OverwriteStorage(), upload_to='', verbose_name='Version PDF du planning'),
),
]
# Generated by Django 3.0.14 on 2021-09-11 15:32
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('site_settings', '0006_auto_20210428_1446'),
]
operations = [
migrations.AddField(
model_name='sitesettings',
name='caption_black',
field=models.CharField(blank=True, default='Autre', max_length=200, null=True, verbose_name='Légende planning (noir)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_blue',
field=models.CharField(blank=True, default='Événements de début et fin', max_length=200, null=True, verbose_name='Légende planning (bleu)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_dark_blue',
field=models.CharField(blank=True, default='Jeux vidéos', max_length=200, null=True, verbose_name='Légende planning (bleu foncé)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_green',
field=models.CharField(blank=True, default='Tournois', max_length=200, null=True, verbose_name='Légende planning (vert)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_orange',
field=models.CharField(blank=True, default='Jeux de rôle sur table', max_length=200, null=True, verbose_name='Légende planning (orange)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_red',
field=models.CharField(blank=True, default='Jeux de rôle grandeur nature', max_length=200, null=True, verbose_name='Légende planning (rouge)'),
),
migrations.AddField(
model_name='sitesettings',
name='caption_yellow',
field=models.CharField(blank=True, default='Activités libres', max_length=200, null=True, verbose_name='Légende planning (jaune)'),
),
]
......@@ -9,7 +9,8 @@ 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"."""
Leur code HTML est hardcodé dans la template '_planning.html'."""
RED = "a", "Rouge"
ORANGE = "b", "Orange"
YELLOW = "c", "Jaune"
......@@ -67,12 +68,26 @@ class SingletonModel(models.Model):
class SiteSettings(SingletonModel):
"""Réglages globaux du site"""
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_end = models.DateField("Date de fin", blank=True, null=True)
registrations_open = models.BooleanField("Ouvrir la création de compte", default=False)
registrations_open = models.BooleanField("Ouvrir la création de compte", default=True)
inscriptions_open = models.BooleanField("Ouvrir les inscriptions", default=False)
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",
)
inscriptions_start = models.DateTimeField("Ouverture des inscriptions",
blank=True, null=True,
......@@ -94,10 +109,6 @@ class SiteSettings(SingletonModel):
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(
"Lien du serveur discord", max_length=200, blank=True, null=True
)
......