diff --git a/bda/admin.py b/bda/admin.py
index fc10c326..26f6042f 100644
--- a/bda/admin.py
+++ b/bda/admin.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-import autocomplete_light
from datetime import timedelta
from custommail.shortcuts import send_mass_custom_mail
@@ -119,8 +118,6 @@ class AttributionAdmin(admin.ModelAdmin):
class ChoixSpectacleAdmin(admin.ModelAdmin):
- form = autocomplete_light.modelform_factory(ChoixSpectacle, exclude=[])
-
def tirage(self, obj):
return obj.participant.tirage
list_display = ("participant", "tirage", "spectacle", "priority",
diff --git a/bda/apps.py b/bda/apps.py
new file mode 100644
index 00000000..583936c7
--- /dev/null
+++ b/bda/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class BdAConfig(AppConfig):
+ name = "bda"
+ verbose_name = "Gestion des tirages du BdA"
diff --git a/bda/autocomplete_light_registry.py b/bda/autocomplete_light_registry.py
deleted file mode 100644
index 6c2f3ea6..00000000
--- a/bda/autocomplete_light_registry.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from __future__ import division
-from __future__ import print_function
-from __future__ import unicode_literals
-
-import autocomplete_light
-
-from bda.models import Participant, Spectacle
-
-autocomplete_light.register(
- Participant, search_fields=('user__username', 'user__first_name',
- 'user__last_name'),
- autocomplete_js_attributes={'placeholder': 'participant...'})
-
-autocomplete_light.register(
- Spectacle, search_fields=('title', ),
- autocomplete_js_attributes={'placeholder': 'spectacle...'})
diff --git a/bda/migrations/0001_initial.py b/bda/migrations/0001_initial.py
index aa2cb252..da447b9d 100644
--- a/bda/migrations/0001_initial.py
+++ b/bda/migrations/0001_initial.py
@@ -59,7 +59,9 @@ class Migration(migrations.Migration):
('price', models.FloatField(verbose_name=b"Prix d'une place", blank=True)),
('slots', models.IntegerField(verbose_name=b'Places')),
('priority', models.IntegerField(default=1000, verbose_name=b'Priorit\xc3\xa9')),
- ('location', models.ForeignKey(to='bda.Salle')),
+ ('location', models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Salle')),
],
options={
'ordering': ('priority', 'date', 'title'),
@@ -79,27 +81,39 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='participant',
name='user',
- field=models.OneToOneField(to=settings.AUTH_USER_MODEL),
+ field=models.OneToOneField(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='choixspectacle',
name='participant',
- field=models.ForeignKey(to='bda.Participant'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Participant'),
),
migrations.AddField(
model_name='choixspectacle',
name='spectacle',
- field=models.ForeignKey(related_name='participants', to='bda.Spectacle'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ related_name='participants',
+ to='bda.Spectacle'),
),
migrations.AddField(
model_name='attribution',
name='participant',
- field=models.ForeignKey(to='bda.Participant'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Participant'),
),
migrations.AddField(
model_name='attribution',
name='spectacle',
- field=models.ForeignKey(related_name='attribues', to='bda.Spectacle'),
+ field=models.ForeignKey(
+ related_name='attribues',
+ on_delete=models.CASCADE,
+ to='bda.Spectacle'),
),
migrations.AlterUniqueTogether(
name='choixspectacle',
diff --git a/bda/migrations/0002_add_tirage.py b/bda/migrations/0002_add_tirage.py
index 1956a4a4..3b5c5a0b 100644
--- a/bda/migrations/0002_add_tirage.py
+++ b/bda/migrations/0002_add_tirage.py
@@ -39,18 +39,26 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='participant',
name='user',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='participant',
name='tirage',
- field=models.ForeignKey(default=1, to='bda.Tirage'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ default=1,
+ to='bda.Tirage'),
preserve_default=False,
),
migrations.AddField(
model_name='spectacle',
name='tirage',
- field=models.ForeignKey(default=1, to='bda.Tirage'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ default=1,
+ to='bda.Tirage'),
preserve_default=False,
),
]
diff --git a/bda/migrations/0007_extends_spectacle.py b/bda/migrations/0007_extends_spectacle.py
index b95c18de..f6e1834f 100644
--- a/bda/migrations/0007_extends_spectacle.py
+++ b/bda/migrations/0007_extends_spectacle.py
@@ -72,8 +72,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='spectacle',
name='category',
- field=models.ForeignKey(blank=True, to='bda.CategorieSpectacle',
- null=True),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ blank=True,
+ to='bda.CategorieSpectacle',
+ null=True),
),
migrations.AddField(
model_name='spectacle',
@@ -84,6 +87,8 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='quote',
name='spectacle',
- field=models.ForeignKey(to='bda.Spectacle'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Spectacle'),
),
]
diff --git a/bda/migrations/0009_revente.py b/bda/migrations/0009_revente.py
index 1cca4e86..223a2ed7 100644
--- a/bda/migrations/0009_revente.py
+++ b/bda/migrations/0009_revente.py
@@ -46,21 +46,28 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='spectaclerevente',
name='attribution',
- field=models.OneToOneField(to='bda.Attribution',
- related_name='revente'),
+ field=models.OneToOneField(
+ to='bda.Attribution',
+ on_delete=models.CASCADE,
+ related_name='revente'),
),
migrations.AddField(
model_name='spectaclerevente',
name='seller',
- field=models.ForeignKey(to='bda.Participant',
- verbose_name='Vendeur',
- related_name='original_shows'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Participant',
+ verbose_name='Vendeur',
+ related_name='original_shows'),
),
migrations.AddField(
model_name='spectaclerevente',
name='soldTo',
- field=models.ForeignKey(to='bda.Participant',
- verbose_name='Vendue à', null=True,
- blank=True),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='bda.Participant',
+ verbose_name='Vendue à',
+ null=True,
+ blank=True),
),
]
diff --git a/bda/models.py b/bda/models.py
index a405a665..008f55f5 100644
--- a/bda/models.py
+++ b/bda/models.py
@@ -46,9 +46,14 @@ class CategorieSpectacle(models.Model):
class Spectacle(models.Model):
title = models.CharField("Titre", max_length=300)
- category = models.ForeignKey(CategorieSpectacle, blank=True, null=True)
+ category = models.ForeignKey(
+ CategorieSpectacle,
+ on_delete=models.CASCADE,
+ blank=True,
+ null=True
+ )
date = models.DateTimeField("Date & heure")
- location = models.ForeignKey(Salle)
+ location = models.ForeignKey(Salle, on_delete=models.CASCADE)
vips = models.TextField('Personnalités', blank=True)
description = models.TextField("Description", blank=True)
slots_description = models.TextField("Description des places", blank=True)
@@ -58,7 +63,7 @@ class Spectacle(models.Model):
max_length=500)
price = models.FloatField("Prix d'une place")
slots = models.IntegerField("Places")
- tirage = models.ForeignKey(Tirage)
+ tirage = models.ForeignKey(Tirage, on_delete=models.CASCADE)
listing = models.BooleanField("Les places sont sur listing")
rappel_sent = models.DateTimeField("Mail de rappel envoyé", blank=True,
null=True)
@@ -116,7 +121,7 @@ class Spectacle(models.Model):
class Quote(models.Model):
- spectacle = models.ForeignKey(Spectacle)
+ spectacle = models.ForeignKey(Spectacle, on_delete=models.CASCADE)
text = models.TextField('Citation')
author = models.CharField('Auteur', max_length=200)
@@ -130,7 +135,7 @@ PAYMENT_TYPES = (
class Participant(models.Model):
- user = models.ForeignKey(User)
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
choices = models.ManyToManyField(Spectacle,
through="ChoixSpectacle",
related_name="chosen_by")
@@ -141,7 +146,7 @@ class Participant(models.Model):
paymenttype = models.CharField("Moyen de paiement",
max_length=6, choices=PAYMENT_TYPES,
blank=True)
- tirage = models.ForeignKey(Tirage)
+ tirage = models.ForeignKey(Tirage, on_delete=models.CASCADE)
choicesrevente = models.ManyToManyField(Spectacle,
related_name="subscribed",
blank=True)
@@ -157,8 +162,15 @@ DOUBLE_CHOICES = (
class ChoixSpectacle(models.Model):
- participant = models.ForeignKey(Participant)
- spectacle = models.ForeignKey(Spectacle, related_name="participants")
+ participant = models.ForeignKey(
+ Participant,
+ on_delete=models.CASCADE
+ )
+ spectacle = models.ForeignKey(
+ Spectacle,
+ on_delete=models.CASCADE,
+ related_name="participants"
+ )
priority = models.PositiveIntegerField("Priorité")
double_choice = models.CharField("Nombre de places",
default="1", choices=DOUBLE_CHOICES,
@@ -185,8 +197,15 @@ class ChoixSpectacle(models.Model):
class Attribution(models.Model):
- participant = models.ForeignKey(Participant)
- spectacle = models.ForeignKey(Spectacle, related_name="attribues")
+ participant = models.ForeignKey(
+ Participant,
+ on_delete=models.CASCADE
+ )
+ spectacle = models.ForeignKey(
+ Spectacle,
+ on_delete=models.CASCADE,
+ related_name="attribues"
+ )
given = models.BooleanField("Donnée", default=False)
def __str__(self):
@@ -195,19 +214,29 @@ class Attribution(models.Model):
class SpectacleRevente(models.Model):
- attribution = models.OneToOneField(Attribution,
- related_name="revente")
+ attribution = models.OneToOneField(
+ Attribution,
+ on_delete=models.CASCADE,
+ related_name="revente"
+ )
date = models.DateTimeField("Date de mise en vente",
default=timezone.now)
answered_mail = models.ManyToManyField(Participant,
related_name="wanted",
blank=True)
- seller = models.ForeignKey(Participant,
- related_name="original_shows",
- verbose_name="Vendeur")
- soldTo = models.ForeignKey(Participant, blank=True, null=True,
- verbose_name="Vendue à")
-
+ seller = models.ForeignKey(
+ Participant,
+ on_delete=models.CASCADE,
+ related_name="original_shows",
+ verbose_name="Vendeur"
+ )
+ soldTo = models.ForeignKey(
+ Participant,
+ on_delete=models.CASCADE,
+ blank=True,
+ null=True,
+ verbose_name="Vendue à"
+ )
notif_sent = models.BooleanField("Notification envoyée",
default=False)
tirage_done = models.BooleanField("Tirage effectué",
diff --git a/bda/templates/bda/resume_places.html b/bda/templates/bda/resume_places.html
index 226e697a..7cbd06ea 100644
--- a/bda/templates/bda/resume_places.html
+++ b/bda/templates/bda/resume_places.html
@@ -16,7 +16,7 @@
Total à payer : {{ total|floatformat }}€
Ne manque pas un spectacle avec le
- calendrier
+ calendrier
automatique !
{% else %}
Vous n'avez aucune place :(
diff --git a/bds/apps.py b/bds/apps.py
new file mode 100644
index 00000000..7c08d34e
--- /dev/null
+++ b/bds/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class BDSConfig(AppConfig):
+ name = "bds"
+ verbose_name = "Application de gestion du BDS"
diff --git a/bds/migrations/0001_initial.py b/bds/migrations/0001_initial.py
index e0d3ddd9..3d6f5218 100644
--- a/bds/migrations/0001_initial.py
+++ b/bds/migrations/0001_initial.py
@@ -23,7 +23,10 @@ class Migration(migrations.Migration):
('cotisation_period', models.CharField(choices=[('ANN', 'Année'), ('SE1', 'Premier semestre'), ('SE2', 'Deuxième semestre')], verbose_name='Inscription', max_length=3, default='ANN')),
('registration_date', models.DateField(verbose_name="Date d'inscription", auto_now_add=True)),
('payment_method', models.CharField(choices=[('CASH', 'Liquide'), ('BANK', 'Transfer bancaire'), ('CHEQUE', 'Cheque'), ('OTHER', 'Autre')], verbose_name='Methode de paiement', max_length=6, default='CASH')),
- ('profile', models.OneToOneField(related_name='bds', to='gestion.Profile')),
+ ('profile', models.OneToOneField(
+ related_name='bds',
+ on_delete=models.CASCADE,
+ to='gestion.Profile')),
],
),
]
diff --git a/bds/migrations/0002_add_BDS_groups.py b/bds/migrations/0002_add_BDS_groups.py
new file mode 100644
index 00000000..45510e59
--- /dev/null
+++ b/bds/migrations/0002_add_BDS_groups.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+def create_groups(apps, schema_editor):
+ """
+ Creates the groups for BDS members and staff
+ """
+ Group = apps.get_model("auth", "Group")
+ Group.objects.get_or_create(name="bds_members")
+ Group.objects.get_or_create(name="bds_buro")
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('bds', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='bdsprofile',
+ options={
+ 'permissions': [
+ ('member', 'Is a BDS member'),
+ ('buro', 'Is part of the BDS staff')
+ ],
+ 'verbose_name': 'Profil BDS',
+ 'verbose_name_plural': 'Profils BDS'
+ },
+ ),
+ migrations.RunPython(create_groups, migrations.RunPython.noop),
+ ]
diff --git a/bds/models.py b/bds/models.py
index ecfbb3db..da80dd77 100644
--- a/bds/models.py
+++ b/bds/models.py
@@ -55,3 +55,11 @@ class BdsProfile(models.Model):
default='CASH',
choices=PAYMENT_METHOD_CHOICES,
max_length=6)
+
+ class Meta:
+ verbose_name = "Profil BDS"
+ verbose_name_plural = "Profils BDS"
+ permissions = [
+ ("member", "Is a BDS member"),
+ ("buro", "Is part of the BDS staff")
+ ]
diff --git a/cof/admin.py b/cof/admin.py
index 177a5adf..fc6fe515 100644
--- a/cof/admin.py
+++ b/cof/admin.py
@@ -1,19 +1,16 @@
# -*- coding: utf-8 -*-
-from django import forms
from django.contrib import admin
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
import django.utils.six as six
-import autocomplete_light
-
from .petits_cours_models import PetitCoursDemande, \
PetitCoursSubject, PetitCoursAbility, PetitCoursAttribution, \
PetitCoursAttributionCounter
from .models import (
SurveyQuestionAnswer, SurveyQuestion, CofProfile, EventOption,
- EventOptionChoice, Event, Club, EventCommentField, EventRegistration,
+ EventOptionChoice, Event, EventCommentField, EventRegistration,
Survey
)
@@ -95,7 +92,6 @@ class EventAdmin(admin.ModelAdmin):
class EventRegistrationAdmin(admin.ModelAdmin):
- form = autocomplete_light.modelform_factory(EventRegistration, exclude=[])
list_display = ('__unicode__' if six.PY2 else '__str__', 'event', 'user',
'paid')
list_filter = ('paid',)
@@ -135,30 +131,11 @@ class PetitCoursDemandeAdmin(admin.ModelAdmin):
search_fields = ('name', 'email', 'phone', 'lieu', 'remarques')
-class ClubAdminForm(forms.ModelForm):
- def clean(self):
- cleaned_data = super(ClubAdminForm, self).clean()
- respos = cleaned_data.get('respos')
- members = cleaned_data.get('membres')
- for respo in respos.all():
- if respo not in members:
- raise forms.ValidationError(
- "Erreur : le respo %s n'est pas membre du club."
- % respo.get_full_name())
- return cleaned_data
-
-
-class ClubAdmin(admin.ModelAdmin):
- list_display = ['name']
- form = ClubAdminForm
-
-
admin.site.register(Survey, SurveyAdmin)
admin.site.register(SurveyQuestion, SurveyQuestionAdmin)
admin.site.register(Event, EventAdmin)
admin.site.register(EventOption, EventOptionAdmin)
admin.site.register(CofProfile)
-admin.site.register(Club, ClubAdmin)
admin.site.register(PetitCoursSubject)
admin.site.register(PetitCoursAbility, PetitCoursAbilityAdmin)
admin.site.register(PetitCoursAttribution, PetitCoursAttributionAdmin)
diff --git a/cof/apps.py b/cof/apps.py
new file mode 100644
index 00000000..f981ee91
--- /dev/null
+++ b/cof/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class COFConfig(AppConfig):
+ name = "cof"
+ verbose_name = "Application de gestion du COF"
diff --git a/cof/autocomplete_light_registry.py b/cof/autocomplete_light_registry.py
deleted file mode 100644
index 4c62d995..00000000
--- a/cof/autocomplete_light_registry.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import autocomplete_light
-
-from django.contrib.auth.models import User
-
-autocomplete_light.register(
- User, search_fields=('username', 'first_name', 'last_name'),
- attrs={'placeholder': 'membre...'}
-)
diff --git a/cof/forms.py b/cof/forms.py
index 6ab88210..7f3a0614 100644
--- a/cof/forms.py
+++ b/cof/forms.py
@@ -12,8 +12,7 @@ from django.forms.formsets import BaseFormSet, formset_factory
from django.db.models import Max
from django.core.validators import MinLengthValidator
-from .models import CofProfile, EventCommentValue, \
- CalendarSubscription, Club
+from .models import CofProfile, EventCommentValue, CalendarSubscription
from .widgets import TriStateCheckbox
from gestion.models import Profile
@@ -362,14 +361,3 @@ class CalendarForm(forms.ModelForm):
model = CalendarSubscription
fields = ['subscribe_to_events', 'subscribe_to_my_shows',
'other_shows']
-
-
-class ClubsForm(forms.Form):
- """
- Formulaire d'inscription d'un membre à plusieurs clubs du COF.
- """
- clubs = forms.ModelMultipleChoiceField(
- label="Inscriptions aux clubs du COF",
- queryset=Club.objects.all(),
- widget=forms.CheckboxSelectMultiple,
- required=False)
diff --git a/cof/migrations/0001_initial.py b/cof/migrations/0001_initial.py
index 0540e689..1ba71322 100644
--- a/cof/migrations/0001_initial.py
+++ b/cof/migrations/0001_initial.py
@@ -48,7 +48,10 @@ class Migration(migrations.Migration):
('is_buro', models.BooleanField(default=False, verbose_name=b'Membre du Bur\xc3\xb4')),
('petits_cours_accept', models.BooleanField(default=False, verbose_name=b'Recevoir des petits cours')),
('petits_cours_remarques', models.TextField(default=b'', verbose_name='Remarques et pr\xe9cisions pour les petits cours', blank=True)),
- ('user', models.OneToOneField(related_name='profile', to=settings.AUTH_USER_MODEL)),
+ ('user', models.OneToOneField(
+ related_name='profile',
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'Profil COF',
@@ -91,7 +94,10 @@ class Migration(migrations.Migration):
('name', models.CharField(max_length=200, verbose_name=b'Champ')),
('fieldtype', models.CharField(default=b'text', max_length=10, verbose_name=b'Type', choices=[(b'text', 'Texte long'), (b'char', 'Texte court')])),
('default', models.TextField(verbose_name=b'Valeur par d\xc3\xa9faut', blank=True)),
- ('event', models.ForeignKey(related_name='commentfields', to='cof.Event')),
+ ('event', models.ForeignKey(
+ related_name='commentfields',
+ on_delete=models.CASCADE,
+ to='cof.Event')),
],
options={
'verbose_name': 'Champ',
@@ -102,7 +108,10 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('content', models.TextField(null=True, verbose_name=b'Contenu', blank=True)),
- ('commentfield', models.ForeignKey(related_name='values', to='cof.EventCommentField')),
+ ('commentfield', models.ForeignKey(
+ related_name='values',
+ on_delete=models.CASCADE,
+ to='cof.EventCommentField')),
],
),
migrations.CreateModel(
@@ -111,7 +120,10 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=200, verbose_name=b'Option')),
('multi_choices', models.BooleanField(default=False, verbose_name=b'Choix multiples')),
- ('event', models.ForeignKey(related_name='options', to='cof.Event')),
+ ('event', models.ForeignKey(
+ related_name='options',
+ on_delete=models.CASCADE,
+ to='cof.Event')),
],
options={
'verbose_name': 'Option',
@@ -122,7 +134,10 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('value', models.CharField(max_length=200, verbose_name=b'Valeur')),
- ('event_option', models.ForeignKey(related_name='choices', to='cof.EventOption')),
+ ('event_option', models.ForeignKey(
+ related_name='choices',
+ on_delete=models.CASCADE,
+ to='cof.EventOption')),
],
options={
'verbose_name': 'Choix',
@@ -133,10 +148,14 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('paid', models.BooleanField(default=False, verbose_name=b'A pay\xc3\xa9')),
- ('event', models.ForeignKey(to='cof.Event')),
+ ('event', models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='cof.Event')),
('filledcomments', models.ManyToManyField(to='cof.EventCommentField', through='cof.EventCommentValue')),
('options', models.ManyToManyField(to='cof.EventOptionChoice')),
- ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
+ ('user', models.ForeignKey(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'Inscription',
@@ -240,7 +259,10 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('question', models.CharField(max_length=200, verbose_name=b'Question')),
('multi_answers', models.BooleanField(default=False, verbose_name=b'Choix multiples')),
- ('survey', models.ForeignKey(related_name='questions', to='cof.Survey')),
+ ('survey', models.ForeignKey(
+ on_delete=models.CASCADE,
+ related_name='questions',
+ to='cof.Survey')),
],
options={
'verbose_name': 'Question',
@@ -251,7 +273,10 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('answer', models.CharField(max_length=200, verbose_name=b'R\xc3\xa9ponse')),
- ('survey_question', models.ForeignKey(related_name='answers', to='cof.SurveyQuestion')),
+ ('survey_question', models.ForeignKey(
+ related_name='answers',
+ on_delete=models.CASCADE,
+ to='cof.SurveyQuestion')),
],
options={
'verbose_name': 'R\xe9ponse',
@@ -265,12 +290,16 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='surveyanswer',
name='survey',
- field=models.ForeignKey(to='cof.Survey'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to='cof.Survey'),
),
migrations.AddField(
model_name='surveyanswer',
name='user',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='petitcoursdemande',
@@ -280,47 +309,72 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='petitcoursdemande',
name='traitee_par',
- field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
+ field=models.ForeignKey(
+ on_delete=models.PROTECT,
+ blank=True,
+ to=settings.AUTH_USER_MODEL,
+ null=True),
),
migrations.AddField(
model_name='petitcoursattributioncounter',
name='matiere',
- field=models.ForeignKey(verbose_name='Matiere', to='cof.PetitCoursSubject'),
+ field=models.ForeignKey(
+ on_delete=models.PROTECT,
+ verbose_name='Matiere',
+ to='cof.PetitCoursSubject'),
),
migrations.AddField(
model_name='petitcoursattributioncounter',
name='user',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(
+ on_delete=models.PROTECT,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='petitcoursattribution',
name='demande',
- field=models.ForeignKey(verbose_name='Demande', to='cof.PetitCoursDemande'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ verbose_name='Demande',
+ to='cof.PetitCoursDemande'),
),
migrations.AddField(
model_name='petitcoursattribution',
name='matiere',
- field=models.ForeignKey(verbose_name='Mati\xe8re', to='cof.PetitCoursSubject'),
+ field=models.ForeignKey(
+ on_delete=models.PROTECT,
+ verbose_name='Mati\xe8re',
+ to='cof.PetitCoursSubject'),
),
migrations.AddField(
model_name='petitcoursattribution',
name='user',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='petitcoursability',
name='matiere',
- field=models.ForeignKey(verbose_name='Mati\xe8re', to='cof.PetitCoursSubject'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ verbose_name='Mati\xe8re',
+ to='cof.PetitCoursSubject'),
),
migrations.AddField(
model_name='petitcoursability',
name='user',
- field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='eventcommentvalue',
name='registration',
- field=models.ForeignKey(related_name='comments', to='cof.EventRegistration'),
+ field=models.ForeignKey(
+ on_delete=models.CASCADE,
+ related_name='comments',
+ to='cof.EventRegistration'),
),
migrations.AlterUniqueTogether(
name='surveyanswer',
diff --git a/cof/migrations/0006_add_calendar.py b/cof/migrations/0006_add_calendar.py
index 3009ac4d..f40ad39f 100644
--- a/cof/migrations/0006_add_calendar.py
+++ b/cof/migrations/0006_add_calendar.py
@@ -23,7 +23,9 @@ class Migration(migrations.Migration):
('subscribe_to_events', models.BooleanField(default=True)),
('subscribe_to_my_shows', models.BooleanField(default=True)),
('other_shows', models.ManyToManyField(to='bda.Spectacle')),
- ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)),
+ ('user', models.OneToOneField(
+ on_delete=models.CASCADE,
+ to=settings.AUTH_USER_MODEL)),
],
),
migrations.AlterModelOptions(
diff --git a/cof/migrations/0009_generic_profiles.py b/cof/migrations/0009_generic_profiles.py
index 673202b8..e24ebd2f 100644
--- a/cof/migrations/0009_generic_profiles.py
+++ b/cof/migrations/0009_generic_profiles.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.contrib.auth.models import Group, Permission
+from django.contrib.auth.models import Group
from django.db import migrations, models
@@ -23,23 +23,23 @@ def create_profile(apps, schema_editor):
def preserve_perms(apps, schema_editor):
- from django.contrib.auth.management import create_permissions
+ # from django.contrib.auth.management import create_permissions
- apps.models_module = True
- create_permissions(apps, verbosity=0)
- apps.models_module = None
+ # apps.models_module = True
+ # create_permissions(apps, verbosity=0)
+ # apps.models_module = None
CofProfile = apps.get_model("cof", "CofProfile")
- memberp = Permission.objects.get(codename='member')
- burop = Permission.objects.get(codename='buro')
+ # memberp = Permission.objects.get(codename='member')
+ # burop = Permission.objects.get(codename='buro')
# creates the groups for COF members and
member = Group.objects.create(name='cof_members')
buro = Group.objects.create(name='cof_buro')
# associate permissions to the respective groups.
- buro.permissions = [burop, memberp]
- member.permissions = [memberp]
+ # buro.permissions = [burop, memberp]
+ # member.permissions = [memberp]
for cofp in CofProfile.objects.filter(is_cof=True):
cofp.profile.user.groups.add(member)
@@ -70,6 +70,7 @@ class Migration(migrations.Migration):
model_name='cofprofile',
name='profile',
field=models.OneToOneField(
+ on_delete=models.CASCADE,
to='gestion.Profile',
null=True,
related_name='cof'
@@ -89,6 +90,7 @@ class Migration(migrations.Migration):
model_name='cofprofile',
name='profile',
field=models.OneToOneField(
+ on_delete=models.CASCADE,
to='gestion.Profile',
related_name='cof'
),
diff --git a/cof/migrations/0012_remove_club.py b/cof/migrations/0012_remove_club.py
new file mode 100644
index 00000000..ebc48d37
--- /dev/null
+++ b/cof/migrations/0012_remove_club.py
@@ -0,0 +1,23 @@
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('cof', '0011_delete_clipper_and_custommail'),
+ ('gestion', '0002_club_support')
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='club',
+ name='membres',
+ ),
+ migrations.RemoveField(
+ model_name='club',
+ name='respos',
+ ),
+ migrations.DeleteModel(
+ name='Club',
+ ),
+ ]
diff --git a/cof/models.py b/cof/models.py
index dafe9996..472937fd 100644
--- a/cof/models.py
+++ b/cof/models.py
@@ -79,18 +79,6 @@ class CofProfile(models.Model):
return self.profile.user.username
-@python_2_unicode_compatible
-class Club(models.Model):
- name = models.CharField("Nom", max_length=200, unique=True)
- description = models.TextField("Description", blank=True)
- respos = models.ManyToManyField(User, related_name="clubs_geres",
- blank=True)
- membres = models.ManyToManyField(User, related_name="clubs", blank=True)
-
- def __str__(self):
- return self.name
-
-
@python_2_unicode_compatible
class Event(models.Model):
title = models.CharField("Titre", max_length=200)
@@ -113,7 +101,11 @@ class Event(models.Model):
@python_2_unicode_compatible
class EventCommentField(models.Model):
- event = models.ForeignKey(Event, related_name="commentfields")
+ event = models.ForeignKey(
+ Event,
+ on_delete=models.CASCADE,
+ related_name="commentfields"
+ )
name = models.CharField("Champ", max_length=200)
fieldtype = models.CharField("Type", max_length=10,
choices=TYPE_COMMENT_FIELD, default="text")
@@ -128,9 +120,16 @@ class EventCommentField(models.Model):
@python_2_unicode_compatible
class EventCommentValue(models.Model):
- commentfield = models.ForeignKey(EventCommentField, related_name="values")
- registration = models.ForeignKey("EventRegistration",
- related_name="comments")
+ commentfield = models.ForeignKey(
+ EventCommentField,
+ on_delete=models.CASCADE,
+ related_name="values"
+ )
+ registration = models.ForeignKey(
+ "EventRegistration",
+ on_delete=models.CASCADE,
+ related_name="comments"
+ )
content = models.TextField("Contenu", blank=True, null=True)
def __str__(self):
@@ -139,7 +138,11 @@ class EventCommentValue(models.Model):
@python_2_unicode_compatible
class EventOption(models.Model):
- event = models.ForeignKey(Event, related_name="options")
+ event = models.ForeignKey(
+ Event,
+ on_delete=models.CASCADE,
+ related_name="options"
+ )
name = models.CharField("Option", max_length=200)
multi_choices = models.BooleanField("Choix multiples", default=False)
@@ -152,7 +155,11 @@ class EventOption(models.Model):
@python_2_unicode_compatible
class EventOptionChoice(models.Model):
- event_option = models.ForeignKey(EventOption, related_name="choices")
+ event_option = models.ForeignKey(
+ EventOption,
+ on_delete=models.CASCADE,
+ related_name="choices"
+ )
value = models.CharField("Valeur", max_length=200)
class Meta:
@@ -165,8 +172,14 @@ class EventOptionChoice(models.Model):
@python_2_unicode_compatible
class EventRegistration(models.Model):
- user = models.ForeignKey(User)
- event = models.ForeignKey(Event)
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ event = models.ForeignKey(
+ Event,
+ on_delete=models.CASCADE
+ )
options = models.ManyToManyField(EventOptionChoice)
filledcomments = models.ManyToManyField(EventCommentField,
through=EventCommentValue)
@@ -197,7 +210,11 @@ class Survey(models.Model):
@python_2_unicode_compatible
class SurveyQuestion(models.Model):
- survey = models.ForeignKey(Survey, related_name="questions")
+ survey = models.ForeignKey(
+ Survey,
+ on_delete=models.CASCADE,
+ related_name="questions"
+ )
question = models.CharField("Question", max_length=200)
multi_answers = models.BooleanField("Choix multiples", default=False)
@@ -210,7 +227,11 @@ class SurveyQuestion(models.Model):
@python_2_unicode_compatible
class SurveyQuestionAnswer(models.Model):
- survey_question = models.ForeignKey(SurveyQuestion, related_name="answers")
+ survey_question = models.ForeignKey(
+ SurveyQuestion,
+ on_delete=models.CASCADE,
+ related_name="answers"
+ )
answer = models.CharField("Réponse", max_length=200)
class Meta:
@@ -222,8 +243,14 @@ class SurveyQuestionAnswer(models.Model):
@python_2_unicode_compatible
class SurveyAnswer(models.Model):
- user = models.ForeignKey(User)
- survey = models.ForeignKey(Survey)
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ survey = models.ForeignKey(
+ Survey,
+ on_delete=models.CASCADE
+ )
answers = models.ManyToManyField(SurveyQuestionAnswer,
related_name="selected_by")
@@ -240,7 +267,10 @@ class SurveyAnswer(models.Model):
@python_2_unicode_compatible
class CalendarSubscription(models.Model):
token = models.UUIDField()
- user = models.OneToOneField(User)
+ user = models.OneToOneField(
+ User,
+ on_delete=models.CASCADE
+ )
other_shows = models.ManyToManyField(Spectacle)
subscribe_to_events = models.BooleanField(default=True)
subscribe_to_my_shows = models.BooleanField(default=True)
diff --git a/cof/petits_cours_models.py b/cof/petits_cours_models.py
index 753e8674..e67a20bf 100644
--- a/cof/petits_cours_models.py
+++ b/cof/petits_cours_models.py
@@ -35,8 +35,15 @@ class PetitCoursSubject(models.Model):
class PetitCoursAbility(models.Model):
- user = models.ForeignKey(User)
- matiere = models.ForeignKey(PetitCoursSubject, verbose_name=_("Matière"))
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ matiere = models.ForeignKey(
+ PetitCoursSubject,
+ on_delete=models.CASCADE,
+ verbose_name=_("Matière")
+ )
niveau = models.CharField(_("Niveau"),
choices=LEVELS_CHOICES,
max_length=choices_length(LEVELS_CHOICES))
@@ -84,7 +91,11 @@ class PetitCoursDemande(models.Model):
remarques = models.TextField(_("Remarques et précisions"), blank=True)
traitee = models.BooleanField(_("Traitée"), default=False)
- traitee_par = models.ForeignKey(User, blank=True, null=True)
+ traitee_par = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE,
+ blank=True, null=True
+ )
processed = models.DateTimeField(_("Date de traitement"),
blank=True, null=True)
created = models.DateTimeField(_("Date de création"), auto_now_add=True)
@@ -126,9 +137,20 @@ class PetitCoursDemande(models.Model):
class PetitCoursAttribution(models.Model):
- user = models.ForeignKey(User)
- demande = models.ForeignKey(PetitCoursDemande, verbose_name=_("Demande"))
- matiere = models.ForeignKey(PetitCoursSubject, verbose_name=_("Matière"))
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ demande = models.ForeignKey(
+ PetitCoursDemande,
+ on_delete=models.CASCADE,
+ verbose_name=_("Demande")
+ )
+ matiere = models.ForeignKey(
+ PetitCoursSubject,
+ on_delete=models.CASCADE,
+ verbose_name=_("Matière")
+ )
date = models.DateTimeField(_("Date d'attribution"), auto_now_add=True)
rank = models.IntegerField("Rang dans l'email")
selected = models.BooleanField(_("Sélectionné par le demandeur"),
@@ -145,8 +167,15 @@ class PetitCoursAttribution(models.Model):
class PetitCoursAttributionCounter(models.Model):
- user = models.ForeignKey(User)
- matiere = models.ForeignKey(PetitCoursSubject, verbose_name=_("Matiere"))
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ matiere = models.ForeignKey(
+ PetitCoursSubject,
+ on_delete=models.CASCADE,
+ verbose_name=_("Matiere")
+ )
count = models.IntegerField("Nombre d'envois", default=0)
@classmethod
diff --git a/cof/templates/cof/base_header.html b/cof/templates/cof/base_header.html
index 4713a286..dd9c1967 100644
--- a/cof/templates/cof/base_header.html
+++ b/cof/templates/cof/base_header.html
@@ -3,7 +3,7 @@
{% block content %}