diff --git a/cof/forms.py b/cof/forms.py
index 4149c507..7c5e8658 100644
--- a/cof/forms.py
+++ b/cof/forms.py
@@ -1,6 +1,7 @@
from django import forms
from django.forms.widgets import RadioSelect, CheckboxSelectMultiple
from django.forms.formsets import BaseFormSet, formset_factory
+from django.utils.translation import ugettext_lazy as _
from bda.models import Spectacle
@@ -165,6 +166,23 @@ class EventStatusFilterForm(forms.Form):
yield ("has_paid", None, value)
+class COFProfileRegistrationForm(forms.ModelForm):
+ member = forms.BooleanField(
+ label=_("Membre du COF"),
+ required=False,
+ )
+
+ def save(self, **kwargs):
+ super().save()
+ self.instance.is_cof = True
+
+ class Meta:
+ model = CofProfile
+ fields = [
+ "type_cotiz", "mailing", "mailing_bda", "mailing_bda_revente",
+ ]
+
+
STATUS_CHOICES = (('no', 'Non'),
('wait', 'Oui mais attente paiement'),
('paid', 'Oui payé'),)
diff --git a/cof/templates/cof/autocomplete_user.html b/cof/templates/cof/autocomplete_user.html
index c8e0a6bc..ea56fb41 100644
--- a/cof/templates/cof/autocomplete_user.html
+++ b/cof/templates/cof/autocomplete_user.html
@@ -6,7 +6,7 @@
{% for member in members %}
{% if forloop.counter < 5 %}
-
+
{{ member|highlight_user:q }}
@@ -22,7 +22,7 @@
{% for user in users %}
{% if forloop.counter < 5 %}
-
+
{{ user|highlight_user:q }}
@@ -38,7 +38,7 @@
{% for clipper in clippers %}
{% if forloop.counter < 5 %}
-
+
{{ clipper|highlight_clipper:q }}
@@ -53,5 +53,5 @@
{% else %}
{% endif %}
- Créer un compte
+ Créer un compte
diff --git a/cof/templates/home.html b/cof/templates/home.html
index 7574e06e..f76c08ad 100644
--- a/cof/templates/home.html
+++ b/cof/templates/home.html
@@ -71,7 +71,7 @@
Général
Administration générale
Demandes de petits cours
- Inscription d'un nouveau membre
+ Inscription d'un nouveau membre
Évènements & Sondages
diff --git a/cof/urls.py b/cof/urls.py
index 91a73665..11bb4b01 100644
--- a/cof/urls.py
+++ b/cof/urls.py
@@ -6,6 +6,17 @@ from .decorators import buro_required
from . import views, petits_cours_views
+app_name = "cof"
+urlpatterns = [
+ # User registration
+ url(r'^registration$',
+ views.COFRegistrationView.as_view(),
+ name="registration"),
+ url(r'^registration/form/(?P[\w-]*)$',
+ views.COFRegistrationView.as_view(form_only=True),
+ name="registration-form"),
+]
+
export_patterns = [
url(r'^members$',
views.export_members,
diff --git a/cof/views.py b/cof/views.py
index 1d87ee21..54d9af67 100644
--- a/cof/views.py
+++ b/cof/views.py
@@ -5,20 +5,23 @@ import uuid
from datetime import timedelta
from icalendar import Calendar, Event as Vevent
+import django.utils.six as six
from django.contrib import messages
from django.contrib.auth.decorators import login_required
+from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.sites.models import Site
from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404, render
+from django.urls import reverse_lazy
from django.utils import timezone
-import django.utils.six as six
from bda.models import Tirage, Spectacle
+from gestion.views import RegistrationView
from .decorators import buro_required, cof_required
from .forms import (
EventStatusFilterForm, SurveyForm, SurveyStatusFilterForm, EventForm,
- CalendarForm
+ CalendarForm, COFProfileRegistrationForm
)
from .models import (
Survey, SurveyAnswer, SurveyQuestion, SurveyQuestionAnswer, Event,
@@ -43,6 +46,17 @@ def home(request):
return render(request, "home.html", data)
+class COFRegistrationView(PermissionRequiredMixin, RegistrationView):
+ permission_required = "cof.buro"
+ form_class = COFProfileRegistrationForm
+ page_url = reverse_lazy("cof:registration")
+
+ def get_form_kwargs(self, **kwargs):
+ if self.user:
+ kwargs["instance"] = getattr(self.user.profile, "cof", None)
+ return kwargs
+
+
@login_required
def survey(request, survey_id):
survey = get_object_or_404(Survey, id=survey_id)
diff --git a/gestioCOF/urls.py b/gestioCOF/urls.py
index 6fd68aeb..8fabaeff 100644
--- a/gestioCOF/urls.py
+++ b/gestioCOF/urls.py
@@ -7,6 +7,7 @@ Fichier principal de configuration des urls du projet GestioCOF
import gestion.urls
import kfet.urls
import bda.urls
+import cof.urls
from django.conf import settings
from django.conf.urls import include, url
@@ -32,6 +33,8 @@ urlpatterns = [
url(r'^admin/logout/', gestion_views.logout),
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', admin.site.urls),
+ # COF
+ url(r"^cof/", include(cof.urls)),
# Le BdA
url(r'^bda/', include(bda.urls)),
# Les exports