Commit dedefa23 authored by Georges Gressot's avatar Georges Gressot 💬
Browse files

remise temporaire

parent d3f4829c
"""
Ici se trouvent les décorateurs que j'ai créés.
"""
from django.shortcuts import render
from .models import *
from .forms import *
from django.core.mail import send_mail
from django.db.models.functions import Now
from django.utils.translation import ugettext as _
from django.contrib.auth.models import User
from django.contrib.auth import logout
# , login, authenticate
from django.http import HttpResponseRedirect, HttpResponse
import os
from django.contrib import messages
#ce que j'ajoute :
from django.contrib.auth.decorators import login_required
# from .views import *
def edmode(func):
"""
Authentification requise si le mode consultation privée est activé.
"""
def mod_func(request, bdd, lid, sort):
suffixe = "@" + str(bdd)
if request.user.username and request.user.username[-3:] ==suffixe:
return HttpResponse("kjgamg")
else:
@login_required
def my_view(request):
return func(request, bdd, lid, sort)
return my_view
# return HttpResponseRedirect('/account/login')
# return HttpResponse(_("us is empty"))
return mod_func
......@@ -7,8 +7,9 @@ class Proj_setting(models.Model):
arb = models.BooleanField('mail when arbitration')
ins = models.BooleanField('mail when instruction')
edi = models.BooleanField('mail when edition')
prv = models.BooleanField('private displaying')
def __str__(self):
info = str(self.rkg) + ' | ' + str(self.arb) + ' | ' + str(self.ins) + ' | ' + str(self.edi)
info = str(self.rkg) + ' | ' + str(self.arb) + ' | ' + str(self.ins) + ' | ' + str(self.edi) + ' | ' + str(self.prv)
return info
class Project(models.Model):
......
......@@ -22,7 +22,6 @@
<a href="/{{ bdd }}/dashboard">{% trans "Supervision" %}</a>
<a href="/{{ bdd }}/search">{% trans "Recherche (bêta)" %}</a>
<a target="_blank" href="{% static 'doc/User_Documentation.pdf' %}">{% trans "Manuel de l'utilisateur" %}</a>
<!-- <a target="_blank" href="/./{{ bdd }}/projectmaster">{% trans "Contact du projet" %}</a> -->
<a target="_blank" href="/./default/about">{% trans "A propos" %}</a>
</nav>
......@@ -33,11 +32,9 @@
<!-- (User : Anonymous) -->
{% endif %}
<!-- </div> -->
<body>
<!-- <div id="content"> -->
<h2>{% trans "Administration du projet" %} : {{ project }}</h2>
<div align="right"><a href="/{{ bdd }}/adminbase">{% trans "Vider les formulaires ci-dessous" %}</a></div>
......@@ -48,7 +45,6 @@
{% endfor %}
</ul>
{% endif %}
<!-- <p><center><font color= #FF0000 >{% trans "Attention : Une seule validation à la fois" %}.</font></center></p> -->
<HR>
</div>
<div id="content">
......@@ -59,10 +55,6 @@
{% trans "Nouvel intitulé" %} {{ exclsupprform.exclmod }} &nbsp;&nbsp;&nbsp;&nbsp; {% trans "ou supprimer" %}{{ exclsupprform.suppr }} <input type="submit" value="{% trans "Valider" %}"> </form><p>
<HR>
<!-- </div> -->
<!-- <div id="content"> -->
<!-- <p><form method="post">{% csrf_token %}{% trans "Modification des propriétés d'une bibliothèque" %} : {{ libriform.librname }} <input type="submit" value="{% trans "Valider" %}"></form></p> -->
<p><b>{% trans "Gestion des bibliothèques" %} ({{ sizelib }}, {% trans "checker exclu" %}) :</b></p>
......@@ -73,7 +65,6 @@
<th>{% trans "Propriété" %}</th>
<th>{% trans "Valeur actuelle" %}</th>
<th>{% trans "Identifiant" %}</th>
<!-- <th>{% trans "Le cas échéant, nouvelle valeur" %}</th> -->
</thead>
......@@ -83,32 +74,27 @@
<td>{% trans "Nom de la bibliothèque" %}</td>
<td>{{ l.0.name }} {% if l.0.name == 'checker' %} ({% trans "Non modifiable" %}) {% endif %}</td>
<td></td>
<!-- <td>{% if l.name != 'checker' %}<form method="post">{% csrf_token %}{{ formlibname.newlibrname }} <input type="submit" value="{% trans "Valider" %}"> {% trans "Rétroactif (instructions)" %}</form>{% else %} ({% trans "Non modifiable" %}) {% endif %}</td> -->
</tr>
<tr>
<td>{% trans "Contact principal" %} ({% trans "Obligatoire" %})</td>
<td>{{ l.0.contact }}</td>
<td>{{ l.1.username }}</td>
<!-- <td><form method="post">{% csrf_token %}{{ formlibct1.contact1 }} <input type="submit" value="{% trans "Valider" %}"></form></td> -->
</tr>
<tr>
<td>{% trans "Second contact" %}</td>
<td>{% if l.0.contact_bis != None %} {{ l.0.contact_bis }} {% else %} ({% trans "Vacant" %}) {% endif %}</td>
<td>{% if l.2 != None %} {{ l.2.username }} {% endif %}</td>
<!-- <td><form method="post">{% csrf_token %}{{ formlibct2.contact2 }} <input type="submit" value="{% trans "Valider" %}"></form> {% if l.contact_bis != None %}<form method="post">{% csrf_token %} {% trans "ou supprimer" %} {{ formlibsu2.suppr2 }} <input type="submit" value="{% trans "Valider" %}"></form>{% else %}{% endif %}</td> -->
</tr>
<tr>
<td>{% trans "Troisième contact" %}</td>
<td>{% if l.0.contact_ter != None %} {{ l.0.contact_ter }} {% else %} ({% trans "Vacant" %}) {% endif %}</td>
<td>{% if l.3 != None %} {{ l.3.username }} {% endif %}</td>
<!-- <td><form method="post">{% csrf_token %}{{ formlibct3.contact3 }} <input type="submit" value="{% trans "Valider" %}"></form> {% if l.contact_ter != None %}<form method="post">{% csrf_token %} {% trans "ou supprimer" %} {{ formlibsu3.suppr3 }} <input type="submit" value="{% trans "Valider" %}"></form>{% else %}{% endif %}</td> -->
</tr>
</tbody>
{% endfor %}
</table>
<!-- <p><b><font color= #FF0000 >{% trans "Le nom courant est à indiquer dans tous les cas (drag & drop) ; une seule validation à la fois" %}</font></b></p> -->
<p><form method="post"> {% csrf_token %}
{{ formlibname.curname }}
......@@ -119,14 +105,12 @@
<p><form method="post"> {% csrf_token %}{{ formlibct.name }} &nbsp;&nbsp;&nbsp;&nbsp; {{ formlibct.contactnbr }}
&nbsp;&nbsp;&nbsp;&nbsp; {% trans "Supprimer" %} {{ formlibct.suppr }}<br />
{% trans "ou modifier (ou créer) la paire email / identifiant pour le contact choisi" %} {{ formlibct.contact }} / {{ formlibct.ident }}
<input type="submit" value="{% trans "Valider" %}"> </form>
</p>
<input type="submit" value="{% trans "Valider" %}"> </form></p>
<HR>
<!-- <p><b><center>{% trans "Attention : Le cas échéant, pensez à administrer les utilisateurs dans la base principale : à moins que .... !!! afficher ici les choses à régler !" %}. <a target="_blank" href="/./admin/">{% trans "OK j'y vais" %}</a></center></b></p>
<HR> -->
<p><b>{% trans "Gestion des administrateurs" %} ({{ sizeadm }}) :</b></p>
<table border="1">
......@@ -135,8 +119,6 @@
<th>{% trans "mail de l'admin" %}</th>
<th>{% trans "identifiant" %}</th>
<!-- <th>{% trans "Identifiant" %}</th> -->
<!-- <th>{% trans "Le cas échéant, nouvelle valeur" %}</th> -->
</thead>
......@@ -146,9 +128,9 @@
<td>{{ adm.0 }}</td>
<td>{{ adm.1.username }}</td>
</tr>
</tbody>
{% endfor %}
</tbody>
</table>
......@@ -158,17 +140,52 @@
<p><form method="post"> {% csrf_token %}{% trans "Supprimer un administrateur" %} : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ projsuppradmform.contactsuadm }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "êtes-vous sûr ?" %} {{ projsuppradmform.suppradm }} <input type="submit" value="{% trans "Supprimer" %}"> </form><p>
<HR>
<p><b>{% trans "Gestion des utilisateurs" %} ({{ sizeuters }}) :</b></p>
<p><b>{% trans "Gestion des instructeurs" %} ({{ sizeuters }}) :</b></p>
<p><form method="post">{% csrf_token %}{{ utermodform.uterxy }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "Modifier l'email" %} {{ utermodform.newutermail }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "ou l'identifiant" %} {{ utermodform.newuterid }} <input type="submit" value="{% trans "Valider" %}"></form></p>
<HR>
<p><b>{% trans "Gestion des alertes" %} :</b></p>
<p><b>{% trans "Gestion des alertes et du type d'accès" %} :</b></p>
<p>{% trans "Alertes activées" %} : {% if al == 1 %} {% for almt in current_alerts %} <b>{{ almt }}</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% endfor %}{% else %} <b>{% trans "aucune" %}</b> {% endif %}<br />{% trans "Mode édition restreint (usagers autorisés)" %} : <b>{{ priv_mode }}</b></p>
<p><form method="post">{% csrf_token %}
{{ projosetform }}
<input type="submit" value="{% trans "Valider" %}"></form></p>
<HR>
{% if private == 1 %}
<p><b>{% trans "Utilisateurs autorisés aux simples consultations" %} ({{ ft }}) :</b></p>
{% if ft != 0 %}
<table border="1">
<thead>
<th>{% trans "mail" %}</th>
<th>{% trans "identifiant" %}</th>
</thead>
<tbody>
{% for oth in otherauthtup %}
<tr>
<td>{{ oth.0 }}</td>
<td>{{ oth.1.username }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
<p><form method="post">{% csrf_token %}{% trans "Ajouter un utilisateur" %} : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email {{ othusajform.contactajoth }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "Identifiant" %} {{ othusajform.identajoth }} <input type="submit" value="{% trans "Valider" %}"></form></p>
{% if ft != 0 %}
<p><form method="post">{% csrf_token %}{% trans "Supprimer un utilisateur" %} : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ othussupprform.contactsuoth }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "êtes-vous sûr ?" %} {{ othussupprform.supproth }} <input type="submit" value="{% trans "Supprimer" %}"></form><p>
{% endif %}
<p><form method="post">{% csrf_token %}{% trans "Positionnements" %} : {{ projsetform.gkr }} |
{% trans "Arbitrages" %} : {{ projsetform.bra }} |
{% trans "Instructions" %} : {{ projsetform.sni }} |
{% trans "Résultantes" %} : {{ projsetform.ide }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" value="{% trans "Valider" %}"></form></p>
<HR>
{% endif %}
<p><b>{% trans "Gestion des informations projet" %} :</b></p>
<table border="1">
......
......@@ -27,6 +27,8 @@ import os
from django.contrib import messages
from .decorators import edmode
lastrked =None
webmaster =""
try:
......@@ -131,12 +133,12 @@ def home(request, bdd):
utermail_list.append(uter.mail)
diffa =set(email_list) - set(utermail_list)
diffb =set(utermail_list) - set(email_list)
# diffb =set(utermail_list) - set(email_list)
if diffa !=set():
messages.info(request, _("Anomalie détectée. Pas d'utilisateur associé aux mails suivants : ") + str(diffa) + ". " + "Veuillez alerter l'administrateur")
if diffb != set():
messages.info(request, _("Anomalie détectée. Les utilisateurs dont les mails suivent sont inutilisés : ") + str(diffb) + ". " + "Veuillez alerter l'administrateur")
# if diffb != set():
# messages.info(request, _("Anomalie détectée. Les utilisateurs dont les mails suivent sont inutilisés : ") + str(diffb) + ". " + "Veuillez alerter l'administrateur")
#La partie de code ci-dessous est reproduite dans la vue adminbase(request, bdd) = Synchronisation de la base locale (utilisateurs) avec la base générale (users)
for e in Utilisateur.objects.using(bdd).all():#1/2 création d'éventuels nouveaux users dans la base générale
......@@ -213,6 +215,10 @@ def home(request, bdd):
def adminbase(request, bdd):
#contrôle d'accès ici
suffixe = "@" + str(bdd)
if not request.user.username[-3:] ==suffixe:
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
if not len(BddAdmin.objects.using(bdd).filter(contact =request.user.email)):
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
......@@ -220,24 +226,79 @@ def adminbase(request, bdd):
k =logstatus(request)
version =epl_version
url ="/" + bdd + "/adminbase"
suffixe = "@" + str(bdd)
private =Proj_setting.objects.using(bdd)[0].prv
# gestion des alertes (début)
class AlertSettings(forms.Form):
gkr = forms.BooleanField(required=False, initial =Proj_setting.objects.using(bdd)[0].rkg)
bra = forms.BooleanField(required=False, initial =Proj_setting.objects.using(bdd)[0].arb)
sni = forms.BooleanField(required=False, initial =Proj_setting.objects.using(bdd)[0].ins)
ide = forms.BooleanField(required=False, initial =Proj_setting.objects.using(bdd)[0].edi)
projsetform = AlertSettings(request.POST or None)
if projsetform.is_valid():
settg =Proj_setting.objects.using(bdd).all().order_by('pk')[0]
settg.rkg =projsetform.cleaned_data['gkr']
settg.arb =projsetform.cleaned_data['bra']
settg.ins =projsetform.cleaned_data['sni']
settg.edi =projsetform.cleaned_data['ide']
settg.save(using =bdd)
messages.info(request, _("Les alertes ont été reconfigurées avec succès"))
current_alerts =[] #initialzing
if Proj_setting.objects.using(bdd)[0].rkg:
current_alerts.append(_("positionnement"))
if Proj_setting.objects.using(bdd)[0].arb:
current_alerts.append(_("arbitrages"))
if Proj_setting.objects.using(bdd)[0].ins:
current_alerts.append(_("instructions"))
if Proj_setting.objects.using(bdd)[0].edi:
current_alerts.append(_("résultantes"))
if len(current_alerts):
al =1
else:
al =0
if Proj_setting.objects.using(bdd)[0].prv:
priv_mode = _("activé")
else:
priv_mode = _("désactivé")
SETTING_CHOICES = (
('rkg', _("Alertes positionnement")),
('arb', _("Alertes arbitrages")),
('ins', _("Alertes instructions")),
('edi', _("Alertes résultantes")),
('prv', _("Mode édition restreint (usagers autorisés)")),
)
actu =[]
projsetlist =Proj_setting.objects.using(bdd).all().order_by('pk')
if Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk).rkg:
actu.append('rkg')
if Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk).arb:
actu.append('arb')
if Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk).ins:
actu.append('ins')
if Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk).edi:
actu.append('edi')
if Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk).prv:
actu.append('prv')
class ProjoSettings(forms.Form):
projsett = forms.MultipleChoiceField(required = False, widget=forms.CheckboxSelectMultiple(), choices=SETTING_CHOICES, initial =actu, label =_("Choisissez vos nouveaux réglages"))
projosetform = ProjoSettings(request.POST or None)
if projosetform.is_valid():
settinglist =projosetform.cleaned_data['projsett']
newprojset =Proj_setting()
if "rkg" in settinglist:
newprojset.rkg =1
else:
newprojset.rkg =0
if "arb" in settinglist:
newprojset.arb =1
else:
newprojset.arb =0
if "ins" in settinglist:
newprojset.ins =1
else:
newprojset.ins =0
if "edi" in settinglist:
newprojset.edi =1
else:
newprojset.edi =0
if "prv" in settinglist:
newprojset.prv =1
else:
newprojset.prv =0
newprojset.save(using =bdd)
projsetlist =Proj_setting.objects.using(bdd).all().order_by('pk')
oldprojset =Proj_setting.objects.using(bdd).get(pk = projsetlist[0].pk)
oldprojset.delete(using =bdd)
messages.info(request, _("Les alertes et le type d'accès ont été reconfigurés avec succès"))
# gestion des alertes (fin)
EXCLUSION_CHOICES = ('', ''),
......@@ -590,7 +651,7 @@ def adminbase(request, bdd):
suppradm.delete(using =bdd)
messages.info(request, _('Administrateur supprimé avec succès'))
#Stuff about utilisateurs :
#Stuff about instructors :
uterstuple =('', "Sélectionnez l'utilisateur"),
for u in Utilisateur.objects.using(bdd).all().order_by("username"):
uterstuple +=(u.mail, Utilisateur.objects.using(bdd).get(mail =u.mail)),
......@@ -656,7 +717,64 @@ def adminbase(request, bdd):
except:
pass
#Début stuff about other authorized users
otherauthtuple =('', "Sélectionnez l'utilisateur"),
ft =0
# for elmt in User.objects.all():
for elmt in Utilisateur.objects.using(bdd).all():
if not BddAdmin.objects.using(bdd).filter(contact =elmt.mail) and not \
Library.objects.using(bdd).filter(contact =elmt.mail) and not \
Library.objects.using(bdd).filter(contact_bis =elmt.mail) and not \
Library.objects.using(bdd).filter(contact_ter =elmt.mail):
if elmt.username[-3:] ==suffixe:
otherauthtuple +=(elmt.mail, Utilisateur.objects.using(bdd).get(mail =elmt.mail)),
ft +=1
sizeotherus =ft
otherauthtup =otherauthtuple[1:]
class OthUsAjForm(forms.Form):
contactajoth = forms.EmailField(required =True, label ='current email')
identajoth = forms.CharField(required =True, widget=forms.TextInput(attrs=\
{'placeholder': "Charles@" + bdd, 'title': _("Suffixe obligatoire") + \
' : ' + '@' + bdd + '. ' + \
"Saisissez un nom d'utilisateur valide. Il ne peut contenir que des lettres, des nombres ou les caractères « @ », « . », « + », « - » et « _ »."}), \
max_length=30, label =_("identifiant"))
othusajform =OthUsAjForm(request.POST or None)
class OthUsSupprForm(forms.Form):
contactsuoth = forms.ChoiceField(required = True, widget=forms.Select, choices=otherauthtuple, label =_("email courant"))
supproth = forms.BooleanField(required=True)
othussupprform =OthUsSupprForm(request.POST or None)
if othusajform.is_valid():
try:
newothus =Utilisateur.objects.using(bdd).get(contact =othusajform.cleaned_data['contactajoth'])
messages.info(request, _("(Utilisateur déjà enregistré avec des droits suffisants)"))
except:
try:
uter =Utilisateur.objects.using(bdd).get(username =othusajform.cleaned_data['identajoth'])
messages.info(request, _("Echec : L'identifiant saisi est déjà utilisé"))
except:
if str(othusajform.cleaned_data['identajoth'])[-3:] !=suffixe:
messages.info(request, _("Echec : L'identifiant doit se terminer en {}".format(suffixe)))
else:
try:
uter =Utilisateur(username =othusajform.cleaned_data['identajoth'], mail =othusajform.cleaned_data['contactajoth'])
user =User.objects.create_user(username =othusajform.cleaned_data['identajoth'], email =othusajform.cleaned_data['contactajoth'], password ="glass onion")
uter.save(using =bdd)
messages.info(request, _("Utilisateur créé avec succès"))
except:
messages.info(request, _("Echec : L'identifiant ne respecte pas le format prescrit"))
if othussupprform.is_valid():
user =User.objects.get(username =Utilisateur.objects.using(bdd).get(mail =othussupprform.cleaned_data['contactsuoth']).username)
uter =Utilisateur.objects.using(bdd).get(mail =othussupprform.cleaned_data['contactsuoth'])
user.delete()
uter.delete()
messages.info(request, _('Utilisateur supprimé avec succès'))
# Fin de stuff about other authorized users
# (la suppression éventuelle de l'utilisateur et du user est factorisée en fin de vue) ????
......@@ -2399,7 +2517,7 @@ def endinstr(request, bdd, sid, lid):
'lid' : lid, 'checkform' : z, 'checkerform' : u, 'expected' : expected, 'k' : k, \
'version' : version, 'itrec' : itrec, 'webmaster' : webmaster, 'answer' : answer, 'bdd' : bdd, })
@edmode
def ranktotake(request, bdd, lid, sort):
k =logstatus(request)
......@@ -3699,6 +3817,10 @@ def current_status(request, bdd, sid, lid):
def statadmin(request, bdd, id):
#contrôle ici
suffixe = "@" + str(bdd)
if not request.user.username[-3:] ==suffixe:
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
if not len(BddAdmin.objects.using(bdd).filter(contact =request.user.email)):
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
......@@ -3731,6 +3853,10 @@ def statadmin(request, bdd, id):
def instradmin(request, bdd, id):
#contrôle ici
suffixe = "@" + str(bdd)
if not request.user.username[-3:] ==suffixe:
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
if not len(BddAdmin.objects.using(bdd).filter(contact =request.user.email)):
messages.info(request, _("Vous avez été renvoyé à cette page parce que vous n'avez pas les droits d'accès à la page que vous demandiez"))
return home(request, bdd)
......
......@@ -122,7 +122,7 @@ def uters_csv(request):
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
writer = csv.writer(response)
writer.writerow(['#', _('bdd'), _('bddid'), _('centralid'), _('identifiant'), _("email"), _('admin'), _("checker"), \
writer.writerow(['#', _('bdd'), _('bddid'), _('centralid'), _('identifiant'), _("email"), _('admin projet'), _("checker"), \
_("contact bib (hors checker)"), _('contact pour')])
BDD_CHOICES =('', ''),
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment