Commit 7f631aaa authored by Vincent Le gallic's avatar Vincent Le gallic

[impressions] On peut maintenant delete *ses* jobs dans la lpq de zamok.

    On peut supprimer n'importe lequel si on est imprimeur.
    Le recrédit se fait automatiquement.
parent 6985b4b4
......@@ -5,4 +5,5 @@ import views
urlpatterns = patterns('',
url('^$', views.view, name="view"),
url('^gestion/$', views.gestion, name="gestion"),
url('^gestion/delete/(?P<jid>[^/]*)/$', views.delete_job, name="delete"),
)
......@@ -12,6 +12,19 @@ from django.contrib import messages
from get_jobs_ended import get_jobs_ended
import printLib
def get_login(request):
"""Renvoie le login de l'utilisateur connecté"""
# Attention, un intranet dirty hack fait que les users LDAP sont en login@crans.org
login = request.user.username
login = login.split("@")[0]
return login
def is_imprimeur(request):
"""Renvoie True si l'utilisateur connecté à les droits imprimeurs"""
li = request.user.groups.filter(name="crans_imprimeur")
return len(li)!=0
@login_required
def view(request):
try:
......@@ -24,17 +37,14 @@ def view(request):
@login_required
def gestion(request):
try:
# Attention, un intranet dirty hack fait que les users LDAP sont en login@crans.org
login = request.user.username
login = login.split("@")[0]
login = get_login(request)
lpq_jobs = printLib.getJobs()
ended_jobs = get_jobs_ended()
if request.user.groups.filter(name="crans_imprimeur")==[]:
if not is_imprimeur(request):
# Si on n'est pas imprimeur, on ne garde que les taches de l'utilisateur courant
ended_jobs = [i for i in ended_jobs if i.login == login]
lpq_jobs = [i for i in lpq_jobs if i.login == login]
imprimante_jobs = []
# Si on est imprimeur…
return render_to_response("impressions/liste.html",
{"ended_jobs" : ended_jobs,
"lpq_jobs" : lpq_jobs,
......@@ -42,3 +52,24 @@ def gestion(request):
context_instance=RequestContext(request))
except ValueError:
raise Http404
@login_required
def delete_job(request, jid=-1):
lpq_jobs = printLib.getJobs()
# On récupère le job
try:
jid = int(jid)
except:
pass
lpq_jobs = [job for job in lpq_jobs if job.jid == jid]
if lpq_jobs == []:
messages.error(request, u"Cette tâche n'est plus dans la file d'attente du serveur.")
else:
job = lpq_jobs[0]
if job.login == get_login(request) or is_imprimeur(request):
job.cancel()
job.recrediter()
messages.success(request, u"La tâche %s a été annulée." % (job.file))
else:
messages.error(request, u"Vous n'êtes pas le propriétaire de cette tâche, vous ne pouvez pas l'annuler.")
return HttpResponseRedirect("/impressions/gestion/")
......@@ -177,3 +177,6 @@ table.liste_impression tr.impair td {
background-color: transparent;
}
table.liste_impression td.centre {
text-align: center;
}
......@@ -5,18 +5,19 @@
{% if lpq_jobs %}
<table class="liste_impression">
<caption>Listes des tâches dans la liste d'impressions de zamok</caption>
<tr><th>Rang</th> <th>Login</th> <th>Fichier</th></tr>
<caption>Listes des tâches dans la file d'attente du serveur</caption>
<tr><th>Rang</th> <th>Login</th> <th>Fichier</th> <th>Annuler</th></tr>
{% for job in lpq_jobs %}
<tr class="{% cycle 'pair' 'impair' %}">
<td>{{ job.ordre }}</td>
<td class="centre">{{ job.ordre }}</td>
<td>{{ job.login }}</td>
<td>{{ job.file }}</td>
<td class="centre"><a href="/impressions/gestion/delete/{{ job.jid }}">X</a></td>
</tr>
{% endfor %}
</table>
{% else %}
<p>Pas de tâche en attente dans la liste d'impressions sur zamok.</p>
<p>Pas de tâche dans la file d'attente du serveur.</p>
{% endif %}
......
Markdown is supported
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