view: factorize common code in inbox_by_document, outbox_by_document

fixes #3947
This commit is contained in:
Benjamin Dauvergne 2013-11-15 10:36:53 +01:00
parent 5b9105af21
commit a3b8fa44ea
1 changed files with 12 additions and 13 deletions

View File

@ -410,6 +410,7 @@ def delete(request, mailbox_id, back='inbox'):
mailbox=m, user=m.owner, delegate=request.user, document=m.document)
return redirect(back_pair[0])
def get_free_delegation_number(user):
'''Allocate a new delegation username'''
for i in count(1):
@ -423,35 +424,33 @@ def get_free_delegation_number(user):
@login_required
@never_cache
def inbox_by_document(request, document_id):
mboxes = mailboxes(request).filter(document=document_id, outbox=False)
if not mailboxes:
raise Http404('No document found')
for mbox in mboxes:
if mbox.owner == request.user:
break
else:
mbox = mboxes[0]
return redirect('inbox-message', mbox.id)
return box_by_document(request, document_id, outbox=False,
redirect_to='inbox-messages')
@login_required
@never_cache
def outbox_by_document(request, document_id):
mboxes = mailboxes(request).filter(document=document_id, outbox=True)
if not mailboxes:
return box_by_document(request, document_id, outbox=True,
redirect_to='outbox-messages')
def box_by_document(request, document_id, outbox, redirect_to):
mboxes = mailboxes(request).filter(document=document_id, outbox=outbox)
if not mboxes:
raise Http404('No document found')
for mbox in mboxes:
if mbox.owner == request.user:
break
else:
mbox = mboxes[0]
return redirect('outbox-message', mbox.id)
return redirect(redirect_to, mbox.id)
from django.contrib.auth import SESSION_KEY, BACKEND_SESSION_KEY
from django import http
def su(request, username, redirect_url='/'):
'''Allows changing user for super-users. Super-user status is kept using a
flag on the session.