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

résol conl

parents e72092b7 090bafdb
No preview for this file type
File added
......@@ -30,11 +30,15 @@ Voir une illustration : https://seafile.unistra.fr/f/163d60a568e2482092e3/
12. contrôles d'authentification,
13. paramétrage des motifs de dérogation,
14. administration des cas de fiches défectueuses,
15. prise en charge multilingue (français, anglais, allemand ; possibilité d'étendre à d'autres langues),
15. internationalisation (anglais et allemand en cours, extension possible à d'autres langues),
16. formulaires de contact de l'administrateur de l'instance et du développeur,
17. possibilité d'exporter les principales listes au format csv,
18. gestion autonome du mot de passe.
# Démo :
https://seafile.unistra.fr/f/c2e9ec44798f490087f7/
# Autres services :
* Outil de suivi des bugs (Launchpad) : https://bugs.launchpad.net/eplouribousse
......
......@@ -28,11 +28,15 @@ See illustration here : https://seafile.unistra.fr/f/163d60a568e2482092e3/
12. authentication controls,
13. parameterization of derogation reasons,
14. administration of faulty card cases,
15. multilingual support (French, English, German, extensible to other languages),
15. internationalization (English and German in progress, possible extension to other languages),
16. contact forms : to contact either the webmaster(s) or the developer(s),
17. csv export for the main lists,
18. autonomous password management.
# Démo :
https://seafile.unistra.fr/f/c2e9ec44798f490087f7/
# Other services :
* Bug tracking tool (Launchpad) : https://bugs.launchpad.net/eplouribousse
......
......@@ -26,6 +26,9 @@ Version 1.19 (~Nantechilde) beta
Version 1.20 (Wulfégonde) 2021.03.23
Version 1.21 (~Berchilde) beta
Version 2.00 (Chimnechilde) 2021.07.09
Version 2.01 (~Bathilde) beta
(Next names following https://fr.wikipedia.org/wiki/Liste_des_reines_et_imp%C3%A9ratrices_de_France from Basina)
......@@ -37,3 +40,5 @@ Nouveautés de la dernière version master (* = important) :
* routage de retour aux listes
* mise à jour du manuel utilisateur
Version 2 : Version multi-projets (beta tant qu'elle n'est pas testée grandeur nature ...)
from django.contrib import admin
# Register your models here.
from .models import Project, Library, ItemRecord, Instruction, Feature, Exclusion, BddAdmin, ReplyMail
from .models import ReplyMail #there was but not any more : Project, Library, ItemRecord, Instruction, Feature, Exclusion, BddAdmin,
admin.site.register(Project)
admin.site.register(Library)
admin.site.register(ItemRecord)
admin.site.register(Instruction)
admin.site.register(Feature)
admin.site.register(Exclusion)
admin.site.register(BddAdmin)
# admin.site.register(Project)
# admin.site.register(Library)
# admin.site.register(ItemRecord)
# admin.site.register(Instruction)
# admin.site.register(Feature)
# admin.site.register(Exclusion)
# admin.site.register(BddAdmin)
admin.site.register(ReplyMail)
from django import forms
from .models import ItemRecord, Instruction, Library, EXCLUSION_CHOICES, Feature, LIBRARY_CHOICES, FEATURE_CHOICES, CHECKING_CHOICES, Check, Flag, PHASE_CHOICES
from .models import *
from django.utils.translation import ugettext_lazy as _
class PositionForm(forms.ModelForm):
class Meta:
model = ItemRecord
fields = ('rank', 'excl', 'comm',)
widgets = {
'rank' : forms.Select(attrs={'title': _("Choisissez 1 pour la collection mère ; 2, 3 ou 4 selon l'importance de votre collection ou d'autres raisons ...")}),
'excl' : forms.Select(choices=EXCLUSION_CHOICES),
'comm' : forms.Textarea(attrs={'placeholder': _("Commentaire éventuel pour expliquer votre choix (max. 250 caractères)")}),
}
# LIBRARY_CHOICES = ('checker','checker'),
# if Library.objects.using(bdd).all().exclude(name ='checker'):
# for l in Library.objects.using(bdd).all().exclude(name ='checker').order_by('name'):
# LIBRARY_CHOICES += (l.name, l.name),
class InstructionForm(forms.ModelForm):
class Meta:
REM_CHOICES =('',''),
if Library.objects.all().exclude(name ='checker'):
for l in Library.objects.all().exclude(name ='checker').order_by('name'):
REM_CHOICES += (l.name, l.name),
model = Instruction
exclude = ('sid', 'name', 'bound',)
widgets = {
'oname' : forms.Select(choices=REM_CHOICES, attrs={'title': _("Intitulé de la bibliothèque ayant précédemment déclaré une 'exception' ou un 'améliorable'")}),
'descr' : forms.TextInput(attrs={'placeholder': _("1990(2)-1998(12) par ex."), 'title': _("Suite ininterrompue chronologiquement ; le n° de ligne est à déterminer selon l'ordre chronologique de ce champ")}),
'exc' : forms.TextInput(attrs={'placeholder': _("1991(5) par ex."), 'title': \
_("éléments manquants dans le segment pour la forme considérée (pas forcément des lacunes si l'on considère la forme reliée)")}),
'degr' : forms.TextInput(attrs={'placeholder': _("1995(4) par ex."), 'title': \
_("éléments dégradés (un volume relié dégradé peut être remplacé par les fascicules correspondants en bon état)")}),
}
# EXCLUSION_CHOICES = ('', ''),
# for e in Exclusion.objects.using(bdd).all().order_by('label'):
# EXCLUSION_CHOICES += (e.label, e.label),
# EXCLUSION_CHOICES += ("Autre (Commenter)", _("Autre (Commenter)")),
#
#
# class PositionForm(forms.ModelForm):
# class Meta:
# model = ItemRecord
# fields = ('rank', 'excl', 'comm',)
# widgets = {
# 'rank' : forms.Select(attrs={'title': _("Choisissez 1 pour la collection mère ; 2, 3 ou 4 selon l'importance de votre collection ou d'autres raisons ...")}),
# 'excl' : forms.Select(choices=EXCLUSION_CHOICES),
# 'comm' : forms.Textarea(attrs={'placeholder': _("Commentaire éventuel pour expliquer votre choix (max. 250 caractères)")}),
# }
class FeatureForm(forms.ModelForm):
# class InstructionForm(forms.ModelForm):
# class Meta:
# REM_CHOICES =('',''),
# if Library.objects.using(bdd).all().exclude(name ='checker'):
# for l in Library.objects.using(bdd).all().exclude(name ='checker').order_by('name'):
# REM_CHOICES += (l.name, l.name),
# model = Instruction
# exclude = ('sid', 'name', 'bound',)
# widgets = {
# 'oname' : forms.Select(choices=REM_CHOICES, attrs={'title': _("Intitulé de la bibliothèque ayant précédemment déclaré une 'exception' ou un 'améliorable'")}),
# 'descr' : forms.TextInput(attrs={'placeholder': _("1990(2)-1998(12) par ex."), 'title': _("Suite ininterrompue chronologiquement ; le n° de ligne est à déterminer selon l'ordre chronologique de ce champ")}),
# 'exc' : forms.TextInput(attrs={'placeholder': _("1991(5) par ex."), 'title': \
# _("éléments manquants dans le segment pour la forme considérée (pas forcément des lacunes si l'on considère la forme reliée)")}),
# 'degr' : forms.TextInput(attrs={'placeholder': _("1995(4) par ex."), 'title': \
# _("éléments dégradés (un volume relié dégradé peut être remplacé par les fascicules correspondants en bon état)")}),
# }
# class FeatureForm(forms.ModelForm):
# class Meta:
# model = Feature
# fields = ('libname', 'feaname',)
# widgets = {
# 'libname' : forms.Select(choices=LIBRARY_CHOICES),
# 'feaname' : forms.RadioSelect(choices=FEATURE_CHOICES),
# }
class BddAdminForm(forms.ModelForm):
class Meta:
model = Feature
fields = ('libname', 'feaname',)
widgets = {
'libname' : forms.Select(choices=LIBRARY_CHOICES),
'feaname' : forms.RadioSelect(choices=FEATURE_CHOICES),
}
model = BddAdmin
fields = ('contact',)
# widgets = {
# 'contact' : forms.EmailInput(),
# 'active' : forms.CheckBoxInput(),
# }
class CheckForm(forms.ModelForm):
......@@ -58,6 +80,6 @@ class AdminCheckForm(forms.ModelForm):
}
class InstructionCheckerFilter(forms.Form):
name = forms.MultipleChoiceField(required = True, widget=forms.CheckboxSelectMultiple, choices=LIBRARY_CHOICES[1:], label =_("Bibliothèques impliquées (opérateur 'ou')"))
phase = forms.MultipleChoiceField(required = True, widget=forms.CheckboxSelectMultiple, choices=PHASE_CHOICES, label =_("Phase d'instruction"))
# class InstructionCheckerFilter(forms.Form):
# name = forms.MultipleChoiceField(required = True, widget=forms.CheckboxSelectMultiple, choices=LIBRARY_CHOICES[1:], label =_("Bibliothèques impliquées (opérateur 'ou')"))
# phase = forms.MultipleChoiceField(required = True, widget=forms.CheckboxSelectMultiple, choices=PHASE_CHOICES, label =_("Phase d'instruction"))
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Project(models.Model):
"""Model for project."""
name = models.CharField('project code name', max_length=30, blank =True)
......@@ -21,11 +20,6 @@ class Library(models.Model):
def __str__(self):
return self.name
LIBRARY_CHOICES = ('checker','checker'),
if Library.objects.all().exclude(name ='checker'):
for l in Library.objects.all().exclude(name ='checker').order_by('name'):
LIBRARY_CHOICES += (l.name, l.name),
#Reasons to exclude an item record (see under ; class : ItemRecord,
#field : excl) :
class Exclusion(models.Model):
......@@ -34,11 +28,6 @@ class Exclusion(models.Model):
def __str__(self):
return self.label
EXCLUSION_CHOICES = ('', ''),
for e in Exclusion.objects.all().order_by('label'):
EXCLUSION_CHOICES += (e.label, e.label),
EXCLUSION_CHOICES += ("Autre (Commenter)", _("Autre (Commenter)")),
#Ranking choices :
RANKING_CHOICES = ((4, 4), (3, 3), (2, 2), (1, 1),)
......@@ -57,8 +46,7 @@ class ItemRecord(models.Model):
#Ranking is used to order the libraries for treatment based on holdings
#statement or other criteria ; 1 shall be used by the library claiming
#to be the repository for the publication. 0 is used in case of exclusion :
excl = models.CharField("exclusion ?", max_length=100, \
choices=EXCLUSION_CHOICES, blank=True)
excl = models.CharField("exclusion ?", max_length=100, blank=True)
#To let a library declaring that its item must not be taken into account
#for one of the EXCLUSION_CHOICES reasons.
comm = models.CharField('comment', max_length=250, blank=True)
......@@ -119,18 +107,17 @@ FEATURE_CHOICES = (
class Feature(models.Model):
"""Model for features."""
libname = models.CharField('library', max_length=30, blank=False, choices=LIBRARY_CHOICES)
feaname = models.CharField('feature', max_length=120, default="ranking", blank=False, choices=FEATURE_CHOICES)
libname = models.CharField('library', max_length=30, blank=False)
feaname = models.CharField('feature', max_length=120, default="ranking", blank=False)
def __str__(self):
info = self.libname + ' | ' + self.feaname
return info
class BddAdmin(models.Model):
"""Model for BDD administrator(s)"""
name = models.CharField('name', max_length=30, unique=True)
contact = models.EmailField('email')
def __str__(self):
return self.name
return self.contact
#Checking choices :
CHECKING_CHOICES = (('Visa', _("Visa OK (La fiche est conforme)")), ('Notify', _("Anomalie (L'administrateur de la base sera informé)")),)
......@@ -158,3 +145,11 @@ class ReplyMail(models.Model):
sendermail = models.EmailField('email')
def __str__(self):
return self.sendermail
class Utilisateur(models.Model):
"""Model for users"""
username = models.CharField('username', max_length=30, unique =True, blank=False) #Attention : Unique
mail = models.EmailField('user email', unique =True, blank=False) #Attention : Unique
def __str__(self):
info = self.mail + ' | ' + self.username
return info
......@@ -9,7 +9,12 @@
<meta charset="utf-8" />
{% load static %}
<<<<<<< HEAD
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}"> <link rel="shortcut icon" type="image/x-icon" href="{% static './favicon.ico' %}">
=======
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
<link rel="shortcut icon" type="image/x-icon" href="{% static './favicon.ico' %}">
>>>>>>> multi
......@@ -20,33 +25,34 @@
<div id="logo"><img src="{% static "pictures/signature_eplouribousse.svg" %}" alt="Logo eplouribousse Unistra"/></div>
<div id="content">
{% if k != 0 %}
<p style="text-align:right;"><b><font color= #017a04 >@ </font></b>{{ k }} (<a href="/./disconnect">{% trans "Déconnexion" %}</a>)</p>
{% else %}
<!-- {% if k != 0 %}
<p style="text-align:right;"><b><font color= #017a04 >@ </font></b>{{ k }} (<a href="/./default/disconnect">{% trans "Déconnexion" %}</a>)</p>
{% else %} -->
<!-- <b><font color= #ff0004 >(User : Anonymous)</font></b> -->
<!-- (User : Anonymous) -->
{% endif %}
<!-- {% endif %} -->
</div>
<p></p>
<center>
<p>***eplouribousse est une application web destinée à faciliter la gestion du dédoublonnement des périodiques dans les bibliothèques.***</p>
<p>*** eplouribousse est une application web destinée à faciliter la gestion du dédoublonnement des périodiques dans les bibliothèques ***</p>
<p>Licence : <a target="_blank" href="https://www.gnu.org/licenses/gpl-3.0.txt">GPLv3</a></p>
<p>Version : {{ version }} - Date : {{ date }}</p>
<p>Serveur : {{ host }}</p>
<p>Version : {{ version }}</p>
<p>{{ date }}</p>
<p>Licence : <a target="_blank" href="https://www.gnu.org/licenses/gpl-3.0.txt">GPLv3</a></p>
<p>Développée avec Django 2.2.12 (LTS) et Python 3.5.2, ReportLab open-source [3.5.42], HTML5, CSS3.</p>
<p>Développée avec : Django 2.2.12 (LTS), Python 3.5.2, ReportLab open-source [3.5.42], HTML5, CSS3.</p>
<p>Code en accès libre sur le <a target="_blank" href="https://git.unistra.fr/gressot/yellow"> GitLab</a> de l'Université de Strasbourg et sur les miroirs suivants :</p>
<p>
<a target="_blank" href="https://github.com/abes-esr/eplouribousse">GitHub</a> de l'Abes
·
<a target="_blank" href="https://sourcesup.renater.fr/projects/eplouribousse/">SourceSup</a> (accès Renater)
·
<a target="_blank" href="https://code.launchpad.net/eplouribousse">Launchpad</a> (Help by Canonical Ltd)
<a target="_blank" href="https://code.launchpad.net/eplouribousse">Launchpad</a> (by Canonical Ltd)
</p>
<p>Pour demander une information, signaler un bug, faire une réclamation, faire une suggestion, donner un avis ou pour toute autre raison : contacter le <a target="_blank" href="/contact">développeur</a> de l'application.</p>
<p><a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse-newsletter">{% trans "Me tenir au courant" %}</a> · <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse">{% trans "Forum des utilisateurs" %}</a> · <a target="_blank" href="https://bugs.launchpad.net/eplouribousse">{% trans "Suivi des bugs" %}</a>{% if webmaster != "" %} · Contacter l'<a target="_blank" href="/webmaster">{% trans "administrateur" %}</a> du site{% endif %}</p>
<p>Pour demander une information, signaler un bug, faire une réclamation, faire une suggestion, donner un avis ou pour toute autre raison : contacter le <a target="_blank" href="/default/contact">développeur</a> de l'application.</p>
<p><a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse-newsletter">{% trans "Me tenir au courant" %}</a> · <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse">{% trans "Forum des utilisateurs" %}</a> · <a target="_blank" href="https://bugs.launchpad.net/eplouribousse">{% trans "Suivi des bugs" %}</a>{% if webmaster != "" %} · Contacter l'<a target="_blank" href="/default/webmaster">{% trans "administrateur" %}</a> du site{% endif %}</p>
<p>Crédits : eplouribousse utilise des données sous <a target="_blank" href="http://www.abes.fr/Media/Fichiers/Footer/Presentation-de-l-ABES/licence-Etalab-francais">licence etalab</a> fournies par l'<a target="_blank" href="https://abes.fr/l-abes/presentation/">Abes</a>.</p>
<p>Copyright (C) 2018-{% now 'Y' %} : Georges Gressot, Conservation et valorisation des collections · Service des bibliothèques de l'Université de Strasbourg.</p></center>
<p>Copyright (C) 2018-{% now 'Y' %} : G. Gressot, Service des bibliothèques de l'Université de Strasbourg.</p></center>
</body>
......
......@@ -16,16 +16,17 @@
</head>
<div id="sticky-section">
<nav id="sticky-menu">
<a href="/router/{{ lid }}">{% trans "Retour à la liste" %}</a>
<a href="/">{% trans "Accueil" %}</a>
<a href="/dashboard">{% trans "Supervision" %}</a>
<a href="/search">{% trans "Recherche (bêta)" %}</a>
<a href="/{{ bdd }}/router/{{ lid }}">{% trans "Retour à la liste" %}</a>
<a href="/{{ bdd }}">{% trans "Accueil" %}</a>
<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="/about">{% trans "A propos" %}</a>
<a target="_blank" href="/./{{ bdd }}/projectmaster">{% trans "Contact du projet" %}</a>
<a target="_blank" href="/./default/about">{% trans "A propos" %}</a>
</nav>
{% if k != 0 %}
<p style="text-align:right;"><b><font color= #017a04 >@ </font></b>{{ k }} (<a href="/./disconnect">{% trans "Déconnexion" %}</a>)</p>
<p style="text-align:right;"><b><font color= #017a04 >@ </font></b>{{ k }} (<a href="/./default/disconnect">{% trans "Déconnexion" %}</a>)</p>
{% else %}
<!-- <b><font color= #ff0004 >(User : Anonymous)</font></b> -->
<!-- (User : Anonymous) -->
......@@ -97,7 +98,7 @@
<p>{% trans "[Segment] = Suite ininterrompue chronologiquement, [Exceptions] = éléments manquant dans le segment pour la forme considérée" %}.</p>
<div id="menucontextuel">
<button><b><a href="/add/{{ sid }}/{{ lid }}">{% trans "Vider le formulaire ci-dessous" %}</a></b></button>
<button><b><a href="/{{ bdd }}/add/{{ sid }}/{{ lid }}">{% trans "Vider le formulaire ci-dessous" %}</a></b></button>
</div>
<form method="post">{% csrf_token %}
......@@ -149,12 +150,12 @@
<div id="menucontextuel">
<p><button><b><a href="/end/{{ sid }}/{{ library.lid }}">{% trans "J'ai fini pour la forme courante" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/del/{{ sid }}/{{ library.lid }}">{% trans "Supprimer une ligne erronée" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/sel/{{ sid }}/{{ library.lid }}">{% trans "Modifier une ligne erronée" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/router/{{ lid }}">{% trans "Reprendre plus tard" %}</a></b></button></p>
<p><button><b><a href="/{{ bdd }}/end/{{ sid }}/{{ library.lid }}">{% trans "J'ai fini pour la forme courante" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/{{ bdd }}/del/{{ sid }}/{{ library.lid }}">{% trans "Supprimer une ligne erronée" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/{{ bdd }}/sel/{{ sid }}/{{ library.lid }}">{% trans "Modifier une ligne erronée" %}</a></b></button> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button><b><a href="/{{ bdd }}/router/{{ lid }}">{% trans "Reprendre plus tard" %}</a></b></button></p>
</div>
<div id="credits">
<p>Conservation et valorisation des collections · Service des bibliothèques de l'Université de Strasbourg · <a target="_blank" href="/about">{% trans "A propos" %}</a> . <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse-newsletter">{% trans "Me tenir au courant" %}</a> · <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse">{% trans "Forum des utilisateurs" %}</a> · <a target="_blank" href="https://bugs.launchpad.net/eplouribousse">{% trans "Suivi des bugs" %}</a>{% if webmaster != "" %} · <a target="_blank" href="/webmaster">{% trans "Administrateur du site" %}</a>{% endif %}</p>
<p>Service des bibliothèques de l'Université de Strasbourg · <a target="_blank" href="/./default/about">{% trans "A propos" %}</a> . <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse-newsletter">{% trans "Me tenir au courant" %}</a> · <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse">{% trans "Forum des utilisateurs" %}</a> · <a target="_blank" href="https://bugs.launchpad.net/eplouribousse">{% trans "Suivi des bugs" %}</a>{% if webmaster != "" %} · <a target="_blank" href="/default/webmaster">{% trans "Administrateur du site" %}</a>{% endif %}</p>
<p>eplouribousse utilise des données sous <a target="_blank" href="http://www.abes.fr/Media/Fichiers/Footer/Presentation-de-l-ABES/licence-Etalab-francais">licence etalab</a> fournies par l'<a target="_blank" href="https://abes.fr/l-abes/presentation/">Abes</a>.</p><p>Version : {{ version }}</p>
......
{% load i18n %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
<link rel="shortcut icon" type="image/x-icon" href="{% static './favicon.ico' %}">
</head>
<div id="sticky-section">
<nav id="sticky-menu">
<a href="/{{ bdd }}">{% trans "Accueil" %}</a>
<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>
{% if k != 0 %}
<p style="text-align:right;"><b><font color= #017a04 >@ </font></b>{{ k }} (<a href="/./default/disconnect">{% trans "Déconnexion" %}</a>)</p>
{% else %}
<!-- <b><font color= #ff0004 >(User : Anonymous)</font></b> -->
<!-- (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>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<center><font color= #0000FF ><p{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</p></font></center>
{% endfor %}
</ul>
{% endif %}
<!-- <p><center><font color= #FF0000 >{% trans "Attention : Une seule validation à la fois" %}.</font></center></p> -->
<HR>
</div>
<div id="content">
<p><b>{% trans "Gestion des motifs d'exlusion" %} :</b></p>
<p>{% trans "Motifs actuels" %} ({{ exclnbr }}) : {% for ex in EXCLUSION_CHOICES %} {{ ex.0 }} - {% endfor %} </p>
<p><form method="post">{% csrf_token %} {% trans "Le cas échéant, motif à ajouter" %} {{ exclform.exclusup }} <input type="submit" value="{% trans "Valider" %}"></form></p>
<p><form method="post">{% csrf_token %} {% trans "Le cas échéant, motif à modifier" %} {{ exclsupprform.exclreason }} &nbsp;&nbsp;&nbsp;&nbsp;
{% 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>
<table border="1">
{% for l in libtuple %}
<thead>
<th>{% trans "Propriété" %}</th>
<th>{% trans "Valeur actuelle" %}</th>
<th>{% trans "Identifiant" %}</th>
<!-- <th>{% trans "Le cas échéant, nouvelle valeur" %}</th> -->
</thead>
<tbody>
<tr>
<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 }}
&nbsp;&nbsp;&nbsp;&nbsp;
{% trans "Nouveau nom de la bibliothèque" %} {{ formnewlibname.newlibrname }}
<input type="submit" value="{% trans "Valider" %}"> </form></p>
<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>
<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">
<thead>
<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>
<tbody>
{% for adm in admintup %}
<tr>
<td>{{ adm.0 }}</td>
<td>{{ adm.1.username }}</td>
</tr>
</tbody>
{% endfor %}
</table>
<p><form method="post">{% csrf_token %}{% trans "Ajouter un administrateur pour ce projet" %} : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email {{ projajadmform.contactajadm }} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {% trans "Identifiant" %} {{ projajadmform.identajadm }} <input type="submit" value="{% trans "Valider" %}"></form></p>
<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><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 informations projet" %} :</b></p>
<table border="1">
<thead>
<th>{% trans "Propriété" %}</th>
<th>{% trans "Valeur actuelle" %}</th>
<th>{% trans "Le cas échéant, nouvelle valeur" %}</th>
</thead>
<tbody>
<tr>
<td>{% trans "Nom du projet" %}</td>
<td>{{ project }}</td>
<td><form method="post">{% csrf_token %}{{ projnamform.projname }} <input type="submit" value="{% trans "Valider" %}"></form></td>
</tr>
<tr>
<td>{% trans "Résumé" %}</td>
<td>{{ abstract }}</td>
<td><form method="post">{% csrf_token %}{{ projdescform.projdescr }} <input type="submit" value="{% trans "Valider" %}"></form></td>
</tr>
<tr>
<td>{% trans "Date d'extraction de la base" %}</td>
<td>{{ extractdate }}</td>
<td><form method="post">{% csrf_token %}{{ projdateform.projdate }} <input type="submit" value="{% trans "Valider" %}"></form></td>
</tr>
</tbody>
</table>
<center><a href="/{{ bdd }}">{% trans "Retour à l'accueil" %}</a></center>
</div>
<div id="credits">
<p>Service des bibliothèques de l'Université de Strasbourg · <a target="_blank" href="/./default/about">{% trans "A propos" %}</a> . <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse-newsletter">{% trans "Me tenir au courant" %}</a> · <a target="_blank" href="https://groupes.renater.fr/sympa/info/eplouribousse">{% trans "Forum des utilisateurs" %}</a> · <a target="_blank" href="https://bugs.launchpad.net/eplouribousse">{% trans "Suivi des bugs" %}</a>{% if webmaster != "" %} · <a target="_blank" href="/default/webmaster">{% trans "Administrateur du site" %}</a>{% endif %}</p>
<p>eplouribousse utilise des données sous <a target="_blank" href="http://www.abes.fr/Media/Fichiers/Footer/Presentation-de-l-ABES/licence-Etalab-francais">licence etalab</a> fournies par l'<a target="_blank" href="https://abes.fr/l-abes/presentation/">Abes</a>.</p>
<p>Version : {{ version }}</p>
</div>
</body>
</html>
......@@ -15,14 +15,15 @@
<div id="sticky-section">
<nav id="sticky-menu">
<a href="/">{% trans "Accueil" %}</a>
<a href="/dashboard">{% trans "Supervision" %}</a>
<a href="/search">{% trans "Recherche (bêta)" %}</a>
<a href="/{{ bdd }}">{% trans "Accueil" %}</a>
<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>