Merge branch 'supportBDS' into michele.orru/gestioCOF-supportBDS

This commit is contained in:
Qwann 2017-02-11 19:21:23 +01:00
commit f53ced6a33
13 changed files with 49 additions and 39 deletions

View file

@ -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,

View file

@ -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'))

View file

@ -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

View file

@ -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):

View file

@ -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

View file

@ -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 %}

View file

@ -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">

View file

@ -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",

View file

@ -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()

View file

@ -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

View file

@ -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>

View file

@ -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"),
] ]

View file

@ -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