You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.6 KiB
157 lines
4.6 KiB
# -*- coding: utf-8 -*-
|
|
from django.shortcuts import render_to_response
|
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
from django.core.context_processors import csrf
|
|
from django.conf import settings
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.core.mail import send_mail
|
|
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
|
|
#models and forms
|
|
from models import User
|
|
from forms import UserForm, UserCreationForm, TranslatorForm
|
|
|
|
from hashlib import md5
|
|
|
|
@login_required
|
|
def user_all(request):
|
|
"""
|
|
Return list of all users with pagination
|
|
"""
|
|
user_list = User.objects.all()
|
|
paginator = Paginator(user_list, 10)#show 10 items per page
|
|
page = request.GET.get('page')
|
|
try:
|
|
users = paginator.page(page)
|
|
except PageNotAnInteger:
|
|
# If page is not an integer, deliver first page.
|
|
users = paginator.page(1)
|
|
except EmptyPage:
|
|
# If page is out of range (e.g. 9999), deliver last page of results.
|
|
users = paginator.page(paginator._num_pages)
|
|
return render_to_response('user_all.html', {'users': users})
|
|
|
|
def translators(request):
|
|
"""
|
|
Return list of user filtered by "is_translator" field (list of translators)
|
|
"""
|
|
user_list = User.objects.filter(is_translator='True')
|
|
paginator = Paginator(user_list, 10)#show 10 items per page
|
|
page = request.GET.get('page')
|
|
try:
|
|
users = paginator.page(page)
|
|
except PageNotAnInteger:
|
|
# If page is not an integer, deliver first page.
|
|
users = paginator.page(1)
|
|
except EmptyPage:
|
|
# If page is out of range (e.g. 9999), deliver last page of results.
|
|
users = paginator.page(paginator._num_pages)
|
|
return render_to_response('translators.html', {'users': users})
|
|
|
|
|
|
def translator_change(request, user_id):
|
|
"""
|
|
Return form of translator and post it on the server.
|
|
If form is posted redirect on the page of all translators.
|
|
"""
|
|
try:
|
|
user = User.objects.get(id=user_id)
|
|
#get translator information by reverse relation
|
|
#related_name="translator" in TranslatorProfile model
|
|
translator = user.translator.get(user=user)
|
|
except:
|
|
return HttpResponseRedirect('/accounts/translators/')
|
|
|
|
if request.POST:
|
|
form = TranslatorForm(request.POST, instance=translator)
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect('/accounts/translators')
|
|
else:
|
|
form = TranslatorForm(instance=translator)
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
|
|
return render_to_response('translator_change.html', args)
|
|
|
|
|
|
|
|
def user_change(request, user_id):
|
|
"""
|
|
Return form of user and post it on the server.
|
|
If form is posted redirect on the page of all users.
|
|
"""
|
|
try:
|
|
user = User.objects.get(id=user_id)
|
|
except:
|
|
return HttpResponseRedirect('/accounts/all')
|
|
|
|
if request.POST:
|
|
form = UserForm(request.POST, instance=user)
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect('/accounts/all')
|
|
else:
|
|
form = UserForm(instance=user)
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
|
|
return render_to_response('user_change.html', args)
|
|
|
|
def create_admin(request):
|
|
if request.POST:
|
|
form = UserCreationForm(request.POST)
|
|
if form.is_valid():
|
|
user = form.save(commit=False)
|
|
user.is_admin = False
|
|
user.save()
|
|
return HttpResponseRedirect('/accounts/all')
|
|
|
|
else:
|
|
form = UserCreationForm()
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
args['form'] = form
|
|
|
|
return render_to_response('create_admin.html', args)
|
|
|
|
def create_md5(request):
|
|
if request.POST:
|
|
form = UserCreationForm(request.POST)
|
|
if form.is_valid():
|
|
user = User()
|
|
user.email = request.POST['email']
|
|
user.first_name = request.POST['first_name']
|
|
user.last_name = request.POST['last_name']
|
|
user.password = md5(request.POST['password2']).hexdigest()
|
|
user.is_admin = True
|
|
user.save()
|
|
|
|
return HttpResponseRedirect('/accounts/all')
|
|
|
|
else:
|
|
form = UserCreationForm()
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
args['form'] = form
|
|
|
|
return render_to_response('create_admin.html', args)
|
|
|
|
def reset_password_email(request):
|
|
"""
|
|
|
|
"""
|
|
if request.GET:
|
|
user = User.objects.get(email=request.GET['email'])
|
|
user.set_password(u'qwerty')
|
|
user.save()
|
|
return HttpResponse('success')
|
|
else:
|
|
return HttpResponse('error') |