Revision 0dadf7b2 pithos/im/views.py
b/pithos/im/views.py | ||
---|---|---|
34 | 34 |
import json |
35 | 35 |
import logging |
36 | 36 |
import socket |
37 |
import csv |
|
37 | 38 |
|
38 | 39 |
from datetime import datetime |
39 | 40 |
from functools import wraps |
... | ... | |
138 | 139 |
page=page, |
139 | 140 |
prev=prev, |
140 | 141 |
next=next) |
141 |
|
|
142 |
@requires_admin |
|
143 |
def users_create(request): |
|
144 |
if request.method == 'GET': |
|
145 |
return render_response('users_create.html') |
|
146 |
if request.method == 'POST': |
|
147 |
user = User() |
|
148 |
user.uniq = request.POST.get('uniq') |
|
149 |
user.realname = request.POST.get('realname') |
|
150 |
user.is_admin = True if request.POST.get('admin') else False |
|
151 |
user.affiliation = request.POST.get('affiliation') |
|
152 |
user.quota = int(request.POST.get('quota') or 0) * (1024 ** 3) # In GiB |
|
153 |
user.renew_token() |
|
154 |
user.save() |
|
155 |
return redirect(users_info, user.id) |
|
156 | 142 |
|
157 | 143 |
@requires_admin |
158 | 144 |
def users_info(request, user_id): |
... | ... | |
366 | 352 |
'status': status, |
367 | 353 |
'message': message}) |
368 | 354 |
return HttpResponse(html) |
355 |
|
|
356 |
@requires_admin |
|
357 |
def invitations_list(request): |
|
358 |
invitations = Invitation.objects.order_by('id') |
|
359 |
|
|
360 |
filter = request.GET.get('filter', '') |
|
361 |
if filter: |
|
362 |
if filter.startswith('-'): |
|
363 |
invitations = invitations.exclude(uniq__icontains=filter[1:]) |
|
364 |
else: |
|
365 |
invitations = invitations.filter(uniq__icontains=filter) |
|
366 |
|
|
367 |
try: |
|
368 |
page = int(request.GET.get('page', 1)) |
|
369 |
except ValueError: |
|
370 |
page = 1 |
|
371 |
offset = max(0, page - 1) * settings.ADMIN_PAGE_LIMIT |
|
372 |
limit = offset + settings.ADMIN_PAGE_LIMIT |
|
373 |
|
|
374 |
npages = int(ceil(1.0 * invitations.count() / settings.ADMIN_PAGE_LIMIT)) |
|
375 |
prev = page - 1 if page > 1 else None |
|
376 |
next = page + 1 if page < npages else None |
|
377 |
return render_response('invitations_list.html', |
|
378 |
invitations=invitations[offset:limit], |
|
379 |
filter=filter, |
|
380 |
pages=range(1, npages + 1), |
|
381 |
page=page, |
|
382 |
prev=prev, |
|
383 |
next=next) |
|
384 |
|
|
385 |
@requires_admin |
|
386 |
def invitations_export(request): |
|
387 |
# Create the HttpResponse object with the appropriate CSV header. |
|
388 |
response = HttpResponse(mimetype='text/csv') |
|
389 |
response['Content-Disposition'] = 'attachment; filename=invitations.csv' |
|
390 |
|
|
391 |
writer = csv.writer(response) |
|
392 |
writer.writerow(['ID', |
|
393 |
'Uniq', |
|
394 |
'Real Name', |
|
395 |
'Code', |
|
396 |
'Inviter Uniq', |
|
397 |
'Inviter Real Name', |
|
398 |
'Is_accepted', |
|
399 |
'Created', |
|
400 |
'Accepted',]) |
|
401 |
invitations = Invitation.objects.order_by('id') |
|
402 |
for inv in invitations: |
|
403 |
writer.writerow([inv.id, |
|
404 |
inv.uniq, |
|
405 |
inv.realname.encode("utf-8"), |
|
406 |
inv.code, |
|
407 |
inv.inviter.uniq, |
|
408 |
inv.inviter.realname.encode("utf-8"), |
|
409 |
inv.is_accepted, |
|
410 |
inv.created, |
|
411 |
inv.accepted, |
|
412 |
]) |
|
413 |
|
|
414 |
return response |
|
415 |
|
|
416 |
@requires_admin |
|
417 |
def users_create(request): |
|
418 |
if request.method == 'GET': |
|
419 |
return render_response('users_create.html') |
|
420 |
if request.method == 'POST': |
|
421 |
user = User() |
|
422 |
user.uniq = request.POST.get('uniq') |
|
423 |
user.realname = request.POST.get('realname') |
|
424 |
user.is_admin = True if request.POST.get('admin') else False |
|
425 |
user.affiliation = request.POST.get('affiliation') |
|
426 |
user.quota = int(request.POST.get('quota') or 0) * (1024 ** 3) # In GiB |
|
427 |
user.renew_token() |
|
428 |
user.save() |
|
429 |
return redirect(users_info, user.id) |
Also available in: Unified diff