PEP8
authorEric Mc Sween <eric.mcsween@auf.org>
Wed, 23 May 2012 15:44:15 +0000 (11:44 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Wed, 23 May 2012 16:42:23 +0000 (12:42 -0400)
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/savoirs/forms.py

index f70662a..8f7f74f 100644 (file)
@@ -1,34 +1,40 @@
 # -*- encoding: utf-8 -*-
 import re
 
-from chercheurs.decorators import chercheur_required
-from chercheurs.forms import ChercheurSearchForm, SetPasswordForm, ChercheurFormGroup, AuthenticationForm, GroupeSearchForm, MessageForm
-from chercheurs.models import Chercheur, Groupe, Message, AdhesionGroupe, AuthLDAP
-from chercheurs.utils import get_django_user_for_email, create_ldap_hash, check_ldap_hash
-from auf.django.references.models import Etablissement, Region
+from auf.django.references.models import Etablissement
 from django.conf import settings
-from django.shortcuts import render_to_response
-from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, HttpResponseNotFound
-from django.template import Context, RequestContext
-from django.template.loader import get_template
-from django.core.urlresolvers import reverse as url
-from django.core.mail import send_mail
 from django.contrib.auth import REDIRECT_FIELD_NAME
 from django.contrib.auth import login as auth_login
+from django.contrib.auth import authenticate
 from django.contrib.auth.decorators import login_required
+from django.contrib.auth.forms import PasswordChangeForm
 from django.contrib.sites.models import RequestSite, Site
+from django.core.urlresolvers import reverse as url
+from django.core.mail import send_mail
+from django.http import HttpResponse
+from django.shortcuts import render, get_object_or_404, redirect
+from django.template import Context
+from django.template.loader import get_template
 from django.utils import simplejson
 from django.utils.http import int_to_base36, base36_to_int
 from django.views.decorators.cache import never_cache
-from django.contrib.auth import authenticate
-from django.shortcuts import get_object_or_404
 from django.views.decorators.csrf import csrf_protect
-from django.contrib.auth.forms import PasswordChangeForm
-from savoirs.models import PageStatique, Discipline
+
+from chercheurs.decorators import chercheur_required
+from chercheurs.forms import \
+        ChercheurSearchForm, SetPasswordForm, ChercheurFormGroup, \
+        AuthenticationForm, GroupeSearchForm, MessageForm
+from chercheurs.models import \
+        Chercheur, Groupe, Message, AdhesionGroupe, AuthLDAP
+from chercheurs.utils import \
+        get_django_user_for_email, create_ldap_hash, check_ldap_hash
+from savoirs.models import PageStatique
 
 
 def index(request):
-    """Répertoire des chercheurs"""
+    """
+    Répertoire des chercheurs
+    """
     search_form = ChercheurSearchForm(request.GET)
     search = search_form.save(commit=False)
     chercheurs = search.run().select_related('etablissement')
@@ -46,7 +52,7 @@ def index(request):
         chercheurs = chercheurs.order_by_pays(direction)
     else:
         chercheurs = chercheurs.order_by('-date_modification')
-    
+
     try:
         p = PageStatique.objects.get(id='repertoire')
         entete = p.contenu
@@ -55,10 +61,13 @@ def index(request):
 
     nb_chercheurs = chercheurs.count()
 
-    return render_to_response("chercheurs/index.html",
-                              dict(chercheurs=chercheurs, nb_chercheurs=nb_chercheurs, 
-                                   search_form=search_form, entete=entete),
-                              context_instance=RequestContext(request))
+    return render(request, "chercheurs/index.html", {
+        'chercheurs': chercheurs,
+        'nb_chercheurs': nb_chercheurs,
+        'search_form': search_form,
+        'entete': entete
+    })
+
 
 def inscription(request):
     if request.method == 'POST':
@@ -69,15 +78,24 @@ def inscription(request):
             token = chercheur.activation_token()
             template = get_template('chercheurs/activation_email.txt')
             domain = RequestSite(request).domain
-            message = template.render(Context(dict(chercheur=chercheur, id_base36=id_base36, token=token, domain=domain)))
-            send_mail('Votre inscription à Savoirs en partage', message, None, [chercheur.courriel])
-            return HttpResponseRedirect(url('chercheurs-inscription-faite'))
+            message = template.render(Context({
+                'chercheur': chercheur,
+                'id_base36': id_base36,
+                'token': token,
+                'domain': domain
+            }))
+            send_mail(
+                'Votre inscription à Savoirs en partage',
+                message, None, [chercheur.courriel]
+            )
+            return redirect('chercheurs-inscription-faite')
     else:
         forms = ChercheurFormGroup()
-    
-    return render_to_response("chercheurs/inscription.html",
-                              dict(forms=forms),
-                              context_instance=RequestContext(request))
+
+    return render(request, "chercheurs/inscription.html", {
+        'forms': forms
+    })
+
 
 def activation(request, id_base36, token):
     """Activation d'un chercheur"""
@@ -98,22 +116,31 @@ def activation(request, id_base36, token):
                 chercheur.save()
 
                 # Auto-login
-                auth_login(request, authenticate(username=email, password=password))
-                return HttpResponseRedirect(url('chercheurs.views.perso'))
+                auth_login(
+                    request, authenticate(username=email, password=password)
+                )
+                return redirect('chercheurs.views.perso')
         else:
             form = SetPasswordForm()
     else:
         form = None
         validlink = False
-    return render_to_response('chercheurs/activation.html', dict(form=form, validlink=validlink),
-                              context_instance=RequestContext(request))
+    return render(request, 'chercheurs/activation.html', {
+        'form': form,
+        'validlink': validlink
+    })
+
 
 @csrf_protect
 @login_required
-def password_change(request, template_name='registration/password_change_form.html',
-                    post_change_redirect=None, password_change_form=PasswordChangeForm):
+def password_change(request,
+                    template_name='registration/password_change_form.html',
+                    post_change_redirect=None,
+                    password_change_form=PasswordChangeForm):
     if post_change_redirect is None:
-        post_change_redirect = url('django.contrib.auth.views.password_change_done')
+        post_change_redirect = url(
+            'django.contrib.auth.views.password_change_done'
+        )
     if request.method == "POST":
         form = password_change_form(user=request.user, data=request.POST)
         if form.is_valid():
@@ -121,17 +148,16 @@ def password_change(request, template_name='registration/password_change_form.ht
 
             # Mot de passe pour LDAP
             username = request.user.email
-            authldap, created = AuthLDAP.objects.get_or_create(username=username)
+            authldap, created = \
+                    AuthLDAP.objects.get_or_create(username=username)
             password = form.cleaned_data.get('new_password1')
             authldap.ldap_hash = create_ldap_hash(password)
             authldap.save()
 
-            return HttpResponseRedirect(post_change_redirect)
+            return redirect(post_change_redirect)
     else:
         form = password_change_form(user=request.user)
-    return render_to_response(template_name, {
-        'form': form,
-    }, context_instance=RequestContext(request))
+    return render(request, template_name, {'form': form})
 
 
 @chercheur_required
@@ -142,13 +168,14 @@ def desinscription(request):
         if request.POST.get('confirmer'):
             chercheur.actif = False
             chercheur.save()
-            request.flash['message'] = "Vous avez été désinscrit du répertoire des chercheurs."
-            return HttpResponseRedirect(url('django.contrib.auth.views.logout'))
+            request.flash['message'] = \
+                    "Vous avez été désinscrit du répertoire des chercheurs."
+            return redirect('django.contrib.auth.views.logout')
         else:
             request.flash['message'] = "Opération annulée."
-            return HttpResponseRedirect(url('chercheurs.views.perso'))
-    return render_to_response("chercheurs/desinscription.html", {},
-                              context_instance=RequestContext(request))
+            return redirect('chercheurs.views.perso')
+    return render(request, "chercheurs/desinscription.html")
+
 
 @chercheur_required
 @never_cache
@@ -160,33 +187,38 @@ def edit(request):
         if forms.is_valid():
             forms.save()
             request.flash['message'] = "Votre fiche a bien été enregistrée."
-            return HttpResponseRedirect(url('chercheurs.views.perso'))
+            return redirect('chercheurs.views.perso')
     else:
         forms = ChercheurFormGroup(chercheur=chercheur)
-        
-    return render_to_response("chercheurs/edit.html",
-                              dict(forms=forms, chercheur=chercheur),
-                              context_instance=RequestContext(request))
-            
+
+    return render(request, "chercheurs/edit.html", {
+        'forms': forms,
+        'chercheur': chercheur
+    })
+
+
 @chercheur_required
 def perso(request):
     """Espace chercheur (espace personnel du chercheur)"""
     chercheur = request.chercheur
     modification = request.GET.get('modification')
-    return render_to_response("chercheurs/perso.html",
-                              dict(chercheur=chercheur, modification=modification),
-                              context_instance=RequestContext(request))
-            
+    return render(request, "chercheurs/perso.html", {
+        'chercheur': chercheur,
+        'modification': modification
+    })
+
+
 def retrieve(request, id):
     """Fiche du chercheur"""
     chercheur = get_object_or_404(Chercheur, id=id)
-    return render_to_response("chercheurs/retrieve.html",
-                              dict(chercheur=chercheur),
-                              context_instance=RequestContext(request))
-            
+    return render(request, "chercheurs/retrieve.html", {
+        'chercheur': chercheur
+    })
+
+
 def conversion(request):
-    return render_to_response("chercheurs/conversion.html", {}, 
-                              context_instance=RequestContext(request))
+    return render(request, "chercheurs/conversion.html")
+
 
 def etablissements_autocomplete(request, pays=None):
     term = request.GET.get('term')
@@ -199,28 +231,31 @@ def etablissements_autocomplete(request, pays=None):
     json = simplejson.dumps(noms)
     return HttpResponse(json, mimetype='application/json')
 
-def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME):
+
+def login(request, template_name='registration/login.html',
+          redirect_field_name=REDIRECT_FIELD_NAME):
     "The Django login view, but using a custom form."
     redirect_to = request.REQUEST.get(redirect_field_name, '')
-    
+
     if request.method == "POST":
         form = AuthenticationForm(data=request.POST)
         if form.is_valid():
             # Light security check -- make sure redirect_to isn't garbage.
             if not redirect_to or ' ' in redirect_to:
                 redirect_to = settings.LOGIN_REDIRECT_URL
-            
-            # Heavier security check -- redirects to http://example.com should 
-            # not be allowed, but things like /view/?param=http://example.com 
-            # should be allowed. This regex checks if there is a '//' *before* a
-            # question mark.
+
+            # Heavier security check -- redirects to http://example.com
+            # should not be allowed, but things like
+            # /view/?param=http://example.com should be allowed. This regex
+            # checks if there is a '//' *before* a question mark.
             elif '//' in redirect_to and re.match(r'[^\?]*//', redirect_to):
                     redirect_to = settings.LOGIN_REDIRECT_URL
-            
+
             # Mot de passe pour LDAP
             username = form.cleaned_data.get('username')
             password = form.cleaned_data.get('password')
-            authldap, created = AuthLDAP.objects.get_or_create(username=username)
+            authldap, created = \
+                    AuthLDAP.objects.get_or_create(username=username)
             if created or not check_ldap_hash(authldap.ldap_hash, password):
                 authldap.ldap_hash = create_ldap_hash(password)
                 authldap.save()
@@ -231,25 +266,26 @@ def login(request, template_name='registration/login.html', redirect_field_name=
             if request.session.test_cookie_worked():
                 request.session.delete_test_cookie()
 
-            return HttpResponseRedirect(redirect_to)
+            return redirect(redirect_to)
 
     else:
         form = AuthenticationForm(request)
     request.session.set_test_cookie()
-    
+
     if Site._meta.installed:
         current_site = Site.objects.get_current()
     else:
         current_site = RequestSite(request)
-    
-    return render_to_response(template_name, {
+
+    return render(request, template_name, {
         'form': form,
         redirect_field_name: redirect_to,
         'site': current_site,
         'site_name': current_site.name,
-    }, context_instance=RequestContext(request))
+    })
 login = never_cache(login)
 
+
 # groupes
 def groupe_index(request):
     search_form = GroupeSearchForm(request.GET)
@@ -266,13 +302,15 @@ def groupe_index(request):
     if request.user.is_authenticated():
         try:
             chercheur = Chercheur.objects.get(courriel=request.user.email)
-            mesgroupes = chercheur.groupes.filter(membership__statut='accepte').filter(groupe_chercheur=True)
+            mesgroupes = chercheur.groupes.filter(
+                membership__statut='accepte', groupe_chercheur=True
+            )
             messages = Message.objects.all().filter(groupe__in=mesgroupes)[:10]
             est_chercheur = True
         except Chercheur.DoesNotExist:
             pass
 
-    return render_to_response("chercheurs/groupe_index.html", {
+    return render(request, "chercheurs/groupe_index.html", {
         'search_form': search_form,
         'groupes': groupes.order_by('nom'),
         'nb_resultats': nb_resultats,
@@ -280,24 +318,29 @@ def groupe_index(request):
         'mesgroupes': mesgroupes,
         'messages': messages,
         'est_chercheur': est_chercheur,
-    }, context_instance=RequestContext(request))
+    })
+
 
 def groupe_adhesion(request, id):
     try:
         groupe = get_object_or_404(Groupe, id=id)
         chercheur = Chercheur.objects.get(courriel=request.user.email)
-        adhesion, created = AdhesionGroupe.objects.get_or_create(chercheur=chercheur, groupe=groupe)
+        adhesion, created = AdhesionGroupe.objects.get_or_create(
+            chercheur=chercheur, groupe=groupe
+        )
         if created:
             adhesion.actif = 0
             adhesion.save()
     except:
         pass
 
-    return HttpResponseRedirect(url('groupe_retrieve', kwargs={'id': id}))
+    return redirect('groupe_retrieve', id=id)
+
 
 def groupe_retrieve(request, id):
     groupe = get_object_or_404(Groupe, id=id)
-    membres = groupe.membership.all().filter(statut='accepte').order_by('-date_modification')
+    membres = groupe.membership.all() \
+            .filter(statut='accepte').order_by('-date_modification')
     plus_que_20 = True if membres.count() > 20 else False
     membres_20 = membres[:20]
     messages = groupe.message_set.all()[:5]
@@ -308,35 +351,35 @@ def groupe_retrieve(request, id):
             chercheur = Chercheur.objects.get(courriel=request.user.email)
             est_chercheur = True
             est_membre = chercheur in groupe.membres.all()
-            est_membre_actif = bool(len(groupe.membership.filter(chercheur=chercheur, statut='accepte')))
+            est_membre_actif = bool(len(groupe.membership.filter(
+                chercheur=chercheur, statut='accepte'
+            )))
         except Chercheur.DoesNotExist:
             pass
 
-    return render_to_response(
-        "chercheurs/groupe_retrieve.html", {
-            'groupe': groupe,
-            'membres': membres_20,
-            'plus_que_20': plus_que_20,
-            'messages': messages,
-            'est_chercheur': est_chercheur,
-            'est_membre': est_membre,
-            'est_membre_actif': est_membre_actif,
-        }, context_instance=RequestContext(request)
-    )
+    return render(request, "chercheurs/groupe_retrieve.html", {
+        'groupe': groupe,
+        'membres': membres_20,
+        'plus_que_20': plus_que_20,
+        'messages': messages,
+        'est_chercheur': est_chercheur,
+        'est_membre': est_membre,
+        'est_membre_actif': est_membre_actif,
+    })
+
 
 def groupe_membres(request, id):
     groupe = get_object_or_404(Groupe, id=id)
-    membres = groupe.membership.all().filter(statut='accepte').order_by('chercheur__nom')
+    membres = groupe.membership.all() \
+            .filter(statut='accepte').order_by('chercheur__nom')
 
-    return render_to_response(
-        "chercheurs/groupe_membres.html", {
-            'groupe': groupe,
-            'membres': membres,
-        }, context_instance=RequestContext(request)
-    )
+    return render(request, "chercheurs/groupe_membres.html", {
+        'groupe': groupe,
+        'membres': membres,
+    })
 
-def groupe_messages(request, id):
 
+def groupe_messages(request, id):
     groupe = get_object_or_404(Groupe, id=id)
 
     est_chercheur, est_membre, est_membre_actif = False, False, False
@@ -345,7 +388,9 @@ def groupe_messages(request, id):
             chercheur = Chercheur.objects.get(courriel=request.user.email)
             est_chercheur = True
             est_membre = chercheur in groupe.membres.all()
-            est_membre_actif = bool(len(groupe.membership.filter(chercheur=chercheur, statut='accepte')))
+            est_membre_actif = bool(len(groupe.membership.filter(
+                chercheur=chercheur, statut='accepte'
+            )))
         except Chercheur.DoesNotExist:
             pass
 
@@ -364,13 +409,11 @@ def groupe_messages(request, id):
 
     messages = groupe.message_set.all()
 
-    return render_to_response(
-        "chercheurs/groupe_message.html", {
-            'groupe': groupe,
-            'messages': messages,
-            'form': form,
-            'est_chercheur': est_chercheur,
-            'est_membre': est_membre,
-            'est_membre_actif': est_membre_actif,
-        }, context_instance=RequestContext(request)
-    )
+    return render(request, "chercheurs/groupe_message.html", {
+        'groupe': groupe,
+        'messages': messages,
+        'form': form,
+        'est_chercheur': est_chercheur,
+        'est_membre': est_membre,
+        'est_membre_actif': est_membre_actif,
+    })
index ec65caa..434cb6c 100644 (file)
@@ -1,17 +1,14 @@
 # -*- encoding: utf-8 -*-
-import re, datetime
+
+from auf.django.references.models import Thematique, Pays, Region
 from django import forms
-from django import db
-from django.db.models import Q
-from django.db import models
-from django.contrib.admin import widgets
 from django.utils.safestring import mark_safe
-from auf.django.references.models import Thematique, Pays, Region
-from savoirs.models import Evenement, Discipline, Record, Actualite, RessourceSearch, ActualiteSearch, \
-                           AppelSearch, EvenementSearch, Search, RecordCategorie
-from savoirs.lib.recherche import build_search_regexp
+
+from savoirs.models import \
+        Evenement, Discipline, RessourceSearch, ActualiteSearch, \
+        AppelSearch, EvenementSearch, Search, RecordCategorie
 from savoirs.admin import EvenementAdminForm
-import settings
+
 
 # Modifications custom aux champs Django
 
@@ -27,13 +24,16 @@ class SEPDateField(forms.DateField):
         self.widget = forms.DateInput(attrs={'class': 'date'}, format=format)
         self.input_formats = [format]
 
+
 class SEPSplitDateTimeWidget(forms.MultiWidget):
-    
+
     def __init__(self):
         self.date_format = '%d/%m/%Y'
         self.time_format = '%H:%M'
-        widgets = (forms.DateInput(attrs={'class': 'date'}, format=self.date_format),
-                   forms.TimeInput(attrs={'class': 'time'}, format=self.time_format))
+        widgets = (
+            forms.DateInput(attrs={'class': 'date'}, format=self.date_format),
+            forms.TimeInput(attrs={'class': 'time'}, format=self.time_format)
+        )
         super(SEPSplitDateTimeWidget, self).__init__(widgets)
 
     def decompress(self, value):
@@ -42,13 +42,19 @@ class SEPSplitDateTimeWidget(forms.MultiWidget):
         return [None, None]
 
     def format_output(self, rendered_widgets):
-        return mark_safe(u'Date: %s Heure: %s' % (rendered_widgets[0], rendered_widgets[1]))
+        return mark_safe(
+            u'Date: %s Heure: %s' % (rendered_widgets[0], rendered_widgets[1])
+        )
+
 
 class SEPDateTimeField(forms.DateTimeField):
     widget = SEPSplitDateTimeWidget
 
     def __init__(self, *args, **kwargs):
-        super(SEPDateTimeField, self).__init__(input_formats=['%d/%m/%Y %H:%M'])
+        super(SEPDateTimeField, self).__init__(
+            input_formats=['%d/%m/%Y %H:%M']
+        )
+
 
 # Formulaires de recherche
 
@@ -57,7 +63,9 @@ class RessourceSearchForm(forms.ModelForm):
 
     class Meta:
         model = RessourceSearch
-        fields = ['q', 'auteur', 'titre', 'sujet', 'publisher', 'categorie', 'discipline', 'region']
+        fields = ['q', 'auteur', 'titre', 'sujet', 'publisher', 'categorie',
+                  'discipline', 'region']
+
 
 class RessourceSearchEditForm(RessourceSearchForm):
     """Formulaire d'édition de recherche sauvegardée."""
@@ -65,53 +73,61 @@ class RessourceSearchEditForm(RessourceSearchForm):
     class Meta(RessourceSearchForm.Meta):
         fields = ['nom', 'alerte_courriel'] + RessourceSearchForm.Meta.fields
 
+
 class ActualiteSearchForm(forms.ModelForm):
     """Formulaire de recherche pour les actualités."""
-    date_min = SEPDateField(required=False, label="Depuis le") 
-    date_max = SEPDateField(required=False, label="Jusqu'au") 
+    date_min = SEPDateField(required=False, label="Depuis le")
+    date_max = SEPDateField(required=False, label="Jusqu'au")
 
     class Meta:
         model = ActualiteSearch
         fields = ['q', 'date_min', 'date_max', 'discipline', 'region']
-    
+
+
 class ActualiteSearchEditForm(ActualiteSearchForm):
 
     class Meta(ActualiteSearchForm.Meta):
         fields = ['nom', 'alerte_courriel'] + ActualiteSearchForm.Meta.fields
 
+
 class AppelSearchForm(forms.ModelForm):
     """Formulaire de recherche pour les actualités."""
-    date_min = SEPDateField(required=False, label="Depuis le") 
-    date_max = SEPDateField(required=False, label="Jusqu'au") 
+    date_min = SEPDateField(required=False, label="Depuis le")
+    date_max = SEPDateField(required=False, label="Jusqu'au")
 
     class Meta:
         model = AppelSearch
         fields = ['q', 'date_min', 'date_max', 'discipline', 'region']
-    
+
+
 class AppelSearchEditForm(AppelSearchForm):
 
     class Meta(AppelSearchForm.Meta):
         fields = ['nom', 'alerte_courriel'] + AppelSearchForm.Meta.fields
 
+
 class EvenementSearchForm(forms.ModelForm):
     """Formulaire de recherche pour les évènements."""
-    date_min = SEPDateField(required=False, label="Depuis le") 
-    date_max = SEPDateField(required=False, label="Jusqu'au") 
+    date_min = SEPDateField(required=False, label="Depuis le")
+    date_max = SEPDateField(required=False, label="Jusqu'au")
 
     class Meta:
         model = EvenementSearch
         fields = ['q', 'type', 'date_min', 'date_max', 'discipline', 'region']
 
+
 class EvenementSearchEditForm(EvenementSearchForm):
 
     class Meta(EvenementSearchForm.Meta):
         fields = ['nom', 'alerte_courriel'] + EvenementSearchForm.Meta.fields
 
+
 class SearchEditForm(forms.ModelForm):
 
     class Meta:
         model = Search
 
+
 ###
 
 class EvenementForm(EvenementAdminForm):
@@ -119,35 +135,50 @@ class EvenementForm(EvenementAdminForm):
     fin = SEPDateTimeField()
     description = forms.CharField(
         label='Description', required=True,
-        help_text="Présenter les thématiques de l'évènement et donner toutes les informations utiles aux futurs participants.",
+        help_text=(
+            "Présenter les thématiques de l'évènement et donner "
+            "toutes les informations utiles aux futurs participants."
+        ),
         widget=forms.Textarea
     )
     pays = forms.ModelChoiceField(
         queryset=Pays.objects.all(), required=True, label='Pays',
-        help_text="La sélection du pays entraine la saisie automatique du fuseau horaire."
+        help_text=(
+            "La sélection du pays entraine la saisie automatique "
+            "du fuseau horaire."
+        )
     )
 
     class Meta:
         model = Evenement
         exclude = ('contact', 'approuve', 'uid', 'regions')
 
+
 # Admin views pour les associations par lots
 
 class CategorieForm(forms.Form):
     categorie = forms.ModelChoiceField(queryset=RecordCategorie.objects.all())
 
+
 class PaysForm(forms.Form):
     pays = forms.ModelMultipleChoiceField(queryset=Pays.objects.all())
 
+
 class RegionsForm(forms.Form):
     regions = forms.ModelMultipleChoiceField(queryset=Region.objects.all())
 
+
 class ThematiquesForm(forms.Form):
-    thematiques = forms.ModelMultipleChoiceField(queryset=Thematique.objects.all())
+    thematiques = forms.ModelMultipleChoiceField(
+        queryset=Thematique.objects.all()
+    )
+
 
 class DisciplinesForm(forms.Form):
-    disciplines = forms.ModelMultipleChoiceField(queryset=Discipline.objects.all())
+    disciplines = forms.ModelMultipleChoiceField(
+        queryset=Discipline.objects.all()
+    )
+
 
 class ConfirmationForm(forms.Form):
     pass
-