forked from DGNum/gestioCOF
Merge branch 'supportBDS' into michele.orru/gestioCOF-supportBDS
This commit is contained in:
commit
f53ced6a33
|
@ -77,7 +77,7 @@ class Command(MyBaseCommand):
|
||||||
self.stdout.write("Inscription des utilisateurs aux tirages")
|
self.stdout.write("Inscription des utilisateurs aux tirages")
|
||||||
ChoixSpectacle.objects.all().delete()
|
ChoixSpectacle.objects.all().delete()
|
||||||
choices = []
|
choices = []
|
||||||
for user in User.objects.filter(profile__is_cof=True):
|
for user in User.objects.filter(profile__cof__is_cof=True):
|
||||||
for tirage in tirages:
|
for tirage in tirages:
|
||||||
part, _ = Participant.objects.get_or_create(
|
part, _ = Participant.objects.get_or_create(
|
||||||
user=user,
|
user=user,
|
||||||
|
|
|
@ -26,14 +26,14 @@ def autocomplete(request):
|
||||||
bits = q.split()
|
bits = q.split()
|
||||||
|
|
||||||
queries['members'] = CofProfile.objects.filter(Q(is_cof=True))
|
queries['members'] = CofProfile.objects.filter(Q(is_cof=True))
|
||||||
queries['users'] = User.objects.filter(Q(profile__is_cof=False))
|
queries['users'] = User.objects.filter(Q(profile__cof__is_cof=False))
|
||||||
queries['clippers'] = Clipper.objects
|
queries['clippers'] = Clipper.objects
|
||||||
for bit in bits:
|
for bit in bits:
|
||||||
queries['members'] = queries['members'].filter(
|
queries['members'] = queries['members'].filter(
|
||||||
Q(user__first_name__icontains=bit)
|
Q(profile__user__first_name__icontains=bit)
|
||||||
| Q(user__last_name__icontains=bit)
|
| Q(profile__user__last_name__icontains=bit)
|
||||||
| Q(user__username__icontains=bit)
|
| Q(profile__user__username__icontains=bit)
|
||||||
| Q(login_clipper__icontains=bit))
|
| Q(profile__login_clipper__icontains=bit))
|
||||||
queries['users'] = queries['users'].filter(
|
queries['users'] = queries['users'].filter(
|
||||||
Q(first_name__icontains=bit)
|
Q(first_name__icontains=bit)
|
||||||
| Q(last_name__icontains=bit)
|
| Q(last_name__icontains=bit)
|
||||||
|
@ -43,7 +43,7 @@ def autocomplete(request):
|
||||||
| Q(username__icontains=bit))
|
| Q(username__icontains=bit))
|
||||||
queries['members'] = queries['members'].distinct()
|
queries['members'] = queries['members'].distinct()
|
||||||
queries['users'] = queries['users'].distinct()
|
queries['users'] = queries['users'].distinct()
|
||||||
usernames = list(queries['members'].values_list('login_clipper',
|
usernames = list(queries['members'].values_list('profile__login_clipper',
|
||||||
flat='True')) \
|
flat='True')) \
|
||||||
+ list(queries['users'].values_list('profile__login_clipper',
|
+ list(queries['users'].values_list('profile__login_clipper',
|
||||||
flat='True'))
|
flat='True'))
|
||||||
|
|
|
@ -9,8 +9,8 @@ from django_cas_ng.decorators import user_passes_test
|
||||||
|
|
||||||
def is_cof(user):
|
def is_cof(user):
|
||||||
try:
|
try:
|
||||||
profile = user.profile
|
cofprofile = user.profile.cof
|
||||||
return profile.is_cof
|
return cofprofile.is_cof
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@ cof_required_customdenied = user_passes_test(lambda u: is_cof(u),
|
||||||
|
|
||||||
def is_buro(user):
|
def is_buro(user):
|
||||||
try:
|
try:
|
||||||
profile = user.profile
|
cofprofile = user.profile.cof
|
||||||
return profile.is_buro
|
return cofprofile.is_buro
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -180,10 +180,6 @@ class EventStatusFilterForm(forms.Form):
|
||||||
|
|
||||||
|
|
||||||
class RegistrationUserForm(forms.ModelForm):
|
class RegistrationUserForm(forms.ModelForm):
|
||||||
def __init__(self, *args, **kw):
|
|
||||||
super(RegistrationUserForm, self).__init__(*args, **kw)
|
|
||||||
self.fields['username'].help_text = ""
|
|
||||||
|
|
||||||
def force_long_username(self):
|
def force_long_username(self):
|
||||||
self.fields['username'].validators = [MinLengthValidator(9)]
|
self.fields['username'].validators = [MinLengthValidator(9)]
|
||||||
|
|
||||||
|
@ -228,7 +224,6 @@ class RegistrationCofProfileForm(forms.ModelForm):
|
||||||
fields = [
|
fields = [
|
||||||
"num", "type_cotiz", "is_cof", "is_buro",
|
"num", "type_cotiz", "is_cof", "is_buro",
|
||||||
"mailing", "mailing_bda", "mailing_bda_revente",
|
"mailing", "mailing_bda", "mailing_bda_revente",
|
||||||
"petits_cours_accept", "petits_cours_remarques"
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def save(self, *args, **kw):
|
def save(self, *args, **kw):
|
||||||
|
|
|
@ -19,6 +19,8 @@ from cof.petits_cours_models import (
|
||||||
PetitCoursAttributionCounter
|
PetitCoursAttributionCounter
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from cof.models import CofProfile
|
||||||
|
|
||||||
# Où sont stockés les fichiers json
|
# Où sont stockés les fichiers json
|
||||||
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)),
|
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)),
|
||||||
'data')
|
'data')
|
||||||
|
@ -47,8 +49,10 @@ class Command(MyBaseCommand):
|
||||||
# Gaulois
|
# Gaulois
|
||||||
gaulois = self.from_json('gaulois.json', DATA_DIR, User)
|
gaulois = self.from_json('gaulois.json', DATA_DIR, User)
|
||||||
for user in gaulois:
|
for user in gaulois:
|
||||||
user.profile.is_cof = True
|
CofProfile.objects.create(
|
||||||
user.profile.save()
|
profile=user.profile,
|
||||||
|
is_cof=True
|
||||||
|
)
|
||||||
|
|
||||||
# Romains
|
# Romains
|
||||||
self.from_json('romains.json', DATA_DIR, User)
|
self.from_json('romains.json', DATA_DIR, User)
|
||||||
|
@ -65,10 +69,12 @@ class Command(MyBaseCommand):
|
||||||
root.set_password('root')
|
root.set_password('root')
|
||||||
root.is_staff = True
|
root.is_staff = True
|
||||||
root.is_superuser = True
|
root.is_superuser = True
|
||||||
root.profile.is_cof = True
|
|
||||||
root.profile.is_buro = True
|
|
||||||
root.profile.save()
|
|
||||||
root.save()
|
root.save()
|
||||||
|
CofProfile.objects.create(
|
||||||
|
profile=root.profile,
|
||||||
|
is_cof=True,
|
||||||
|
is_buro=True
|
||||||
|
)
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
# Petits cours
|
# Petits cours
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
{% if members %}
|
{% if members %}
|
||||||
<li class="autocomplete-header">Membres du COF</li>
|
<li class="autocomplete-header">Membres du COF</li>
|
||||||
{% for member in members %}{% if forloop.counter < 5 %}
|
{% for member in members %}{% if forloop.counter < 5 %}
|
||||||
<li class="autocomplete-value"><a href="{% url 'user-registration' member.user.username %}">{{ member.user|highlight_user:q }}</a></li>
|
<li class="autocomplete-value"><a href="{% url 'user-registration' member.profile.user.username %}">{{ member.profile.user|highlight_user:q }}</a></li>
|
||||||
{% elif forloop.counter == 5 %}<li class="autocomplete-more">...</a>{% endif %}{% endfor %}
|
{% elif forloop.counter == 5 %}<li class="autocomplete-more">...</a>{% endif %}{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if users %}
|
{% if users %}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div class="container hidden-xs espace"></div>
|
<div class="container hidden-xs espace"></div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="home-menu row">
|
<div class="home-menu row">
|
||||||
<div class="{% if user.profile.is_buro %}col-sm-6 {% else %}col-sm-8 col-sm-offset-2 col-xs-12 {%endif%}normal-user-hm">
|
<div class="{% if user.profile.cof.is_buro %}col-sm-6 {% else %}col-sm-8 col-sm-offset-2 col-xs-12 {%endif%}normal-user-hm">
|
||||||
<!-- {% if open_events %}
|
<!-- {% if open_events %}
|
||||||
<h3 class="block-title">Événements<span class="pull-right glyphicon glyphicon-calendar"></span></h3>
|
<h3 class="block-title">Événements<span class="pull-right glyphicon glyphicon-calendar"></span></h3>
|
||||||
<div class="hm-block">
|
<div class="hm-block">
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% if user.profile.is_cof %}
|
{% if user.profile.cof.is_cof %}
|
||||||
{% if open_tirages %}
|
{% if open_tirages %}
|
||||||
<h3 class="block-title">Tirages du BdA<span class="pull-right glyphicon glyphicon-th-list"></span></h3>
|
<h3 class="block-title">Tirages du BdA<span class="pull-right glyphicon glyphicon-th-list"></span></h3>
|
||||||
<div class="hm-block">
|
<div class="hm-block">
|
||||||
|
@ -55,15 +55,15 @@
|
||||||
<div class="hm-block">
|
<div class="hm-block">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{% url "cof.views.calendar" %}">Calendrier dynamique</a></li>
|
<li><a href="{% url "cof.views.calendar" %}">Calendrier dynamique</a></li>
|
||||||
{% if user.profile.is_cof %}<li><a href="{% url "petits-cours-inscription" %}">Inscription pour donner des petits cours</a></li>{% endif %}
|
{% if user.profile.cof.is_cof %}<li><a href="{% url "petits-cours-inscription" %}">Inscription pour donner des petits cours</a></li>{% endif %}
|
||||||
|
|
||||||
<li><a href="{% url "cof.views.profile" %}">Éditer mon profil</a></li>
|
<li><a href="{% url "gestion:profile" %}">Éditer mon profil</a></li>
|
||||||
{% if not user.profile.login_clipper %}<li><a href="{% url "django.contrib.auth.views.password_change" %}">Changer mon mot de passe</a></li>{% endif %}
|
{% if not user.profile.login_clipper %}<li><a href="{% url "django.contrib.auth.views.password_change" %}">Changer mon mot de passe</a></li>{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% if user.profile.is_buro %}
|
{% if user.profile.cof.is_buro %}
|
||||||
<div class="col-sm-6 buro-user-hm">
|
<div class="col-sm-6 buro-user-hm">
|
||||||
<h3 class="block-title">Administration<span class="pull-right glyphicon glyphicon-cog"></span></h3>
|
<h3 class="block-title">Administration<span class="pull-right glyphicon glyphicon-cog"></span></h3>
|
||||||
<div class="hm-block">
|
<div class="hm-block">
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div> <!-- /.row.home-menu -->
|
</div> <!-- /.row.home-menu -->
|
||||||
<div class="container hidden-xs espace"></div>
|
<div class="container hidden-xs espace"></div>
|
||||||
{% if not user.profile.is_buro %}
|
{% if not user.profile.cof.is_buro %}
|
||||||
<div class="home-menu row row-centered">
|
<div class="home-menu row row-centered">
|
||||||
<div class="col-sm-8 col-sm-offset-2 col-xs-12 normal-user-hm">
|
<div class="col-sm-8 col-sm-offset-2 col-xs-12 normal-user-hm">
|
||||||
<div class="foot-banner">
|
<div class="foot-banner">
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('input#search_autocomplete').yourlabsAutocomplete({
|
$('input#search_autocomplete').yourlabsAutocomplete({
|
||||||
url: '{% url 'cof.autocomplete.autocomplete' %}',
|
url: '{% url 'cof.autocomplete.autocomplete' %}',
|
||||||
minimumCharacters: 1,
|
minimumCharacters: 3,
|
||||||
id: 'search_autocomplete',
|
id: 'search_autocomplete',
|
||||||
choiceSelector: 'li:has(a)',
|
choiceSelector: 'li:has(a)',
|
||||||
placeholder: "Chercher un utilisateur par nom, prénom ou identifiant clipper",
|
placeholder: "Chercher un utilisateur par nom, prénom ou identifiant clipper",
|
||||||
|
|
12
cof/views.py
12
cof/views.py
|
@ -399,6 +399,7 @@ def registration(request):
|
||||||
else:
|
else:
|
||||||
user_form = RegistrationUserForm(request_dict)
|
user_form = RegistrationUserForm(request_dict)
|
||||||
profile_form = RegistrationProfileForm(request_dict)
|
profile_form = RegistrationProfileForm(request_dict)
|
||||||
|
cofprofile_form = RegistrationCofProfileForm(request_dict)
|
||||||
clubs_form = ClubsForm(request_dict)
|
clubs_form = ClubsForm(request_dict)
|
||||||
events = Event.objects.filter(old=False).all()
|
events = Event.objects.filter(old=False).all()
|
||||||
event_formset = EventFormset(events=events, data=request_dict,
|
event_formset = EventFormset(events=events, data=request_dict,
|
||||||
|
@ -423,7 +424,8 @@ def registration(request):
|
||||||
|
|
||||||
if user_form.is_valid():
|
if user_form.is_valid():
|
||||||
member = user_form.save()
|
member = user_form.save()
|
||||||
cofprofile, _ = CofProfile.objects.get_or_create(user=member)
|
cofprofile, _ = (CofProfile.objects
|
||||||
|
.get_or_create(profile=member.profile))
|
||||||
was_cof = cofprofile.is_cof
|
was_cof = cofprofile.is_cof
|
||||||
request_dict["num"] = cofprofile.num
|
request_dict["num"] = cofprofile.num
|
||||||
# Maintenant on remplit le formulaire de profil
|
# Maintenant on remplit le formulaire de profil
|
||||||
|
@ -431,12 +433,16 @@ def registration(request):
|
||||||
request_dict,
|
request_dict,
|
||||||
instance=cofprofile
|
instance=cofprofile
|
||||||
)
|
)
|
||||||
forms_are_valid = all(
|
profile_form = RegistrationProfileForm(
|
||||||
|
request_dict,
|
||||||
|
instance=member.profile
|
||||||
|
)
|
||||||
|
forms_are_valid = all((
|
||||||
profile_form.is_valid(),
|
profile_form.is_valid(),
|
||||||
cofprofile_form.is_valid(),
|
cofprofile_form.is_valid(),
|
||||||
event_formset.is_valid(),
|
event_formset.is_valid(),
|
||||||
clubs_form.is_valid()
|
clubs_form.is_valid()
|
||||||
)
|
))
|
||||||
if forms_are_valid:
|
if forms_are_valid:
|
||||||
# Enregistrement du profil
|
# Enregistrement du profil
|
||||||
profile_form.save()
|
profile_form.save()
|
||||||
|
|
|
@ -31,7 +31,7 @@ urlpatterns = [
|
||||||
# Page d'accueil
|
# Page d'accueil
|
||||||
url(r'^$', cof_views.home, name='home'),
|
url(r'^$', cof_views.home, name='home'),
|
||||||
# The common views
|
# The common views
|
||||||
url(r"^$", include("gestion.urls")),
|
url(r"^", include("gestion.urls", namespace='gestion')),
|
||||||
# Le BdA
|
# Le BdA
|
||||||
url(r'^bda/', include('bda.urls')),
|
url(r'^bda/', include('bda.urls')),
|
||||||
# Les exports
|
# Les exports
|
||||||
|
|
|
@ -8,11 +8,16 @@
|
||||||
{% if success %}
|
{% if success %}
|
||||||
<p class="success">Votre profil a été mis à jour avec succès !</p>
|
<p class="success">Votre profil a été mis à jour avec succès !</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form id="profile form-horizontal" method="post" action="{% url 'cof.views.profile' %}">
|
<form id="profile form-horizontal" method="post" action="{% url 'gestion:profile' %}">
|
||||||
<div class="row" style="margin: 0 15%;">
|
<div class="row" style="margin: 0 15%;">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<fieldset"center-block">
|
<fieldset"center-block">
|
||||||
{% for field in form %}
|
{% for field in user_form %}
|
||||||
|
{{ field | bootstrap }}
|
||||||
|
{% endfor %}
|
||||||
|
</fieldset>
|
||||||
|
<fieldset"center-block">
|
||||||
|
{% for field in profile_form %}
|
||||||
{{ field | bootstrap }}
|
{{ field | bootstrap }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -3,8 +3,6 @@ from django.conf.urls import url
|
||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
|
|
||||||
app_name = "gestion"
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r"^profile$", views.profile, name="profile"),
|
url(r"^profile/?$", views.profile, name="profile"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -11,7 +11,7 @@ def profile(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
user_form = UserForm(request.POST, instance=user)
|
user_form = UserForm(request.POST, instance=user)
|
||||||
profile_form = ProfileForm(request.POST, instance=user.profile)
|
profile_form = ProfileForm(request.POST, instance=user.profile)
|
||||||
if all(user_form.is_valid(), profile_form.is_valid()):
|
if all((user_form.is_valid(), profile_form.is_valid())):
|
||||||
user_form.save()
|
user_form.save()
|
||||||
profile_form.save()
|
profile_form.save()
|
||||||
success = True
|
success = True
|
||||||
|
|
Loading…
Reference in a new issue