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.
135 lines
3.7 KiB
135 lines
3.7 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.contrib.auth.decorators import login_required
|
|
#models and forms
|
|
from models import User
|
|
from forms import UserForm, UserCreationForm, TranslatorForm
|
|
#custom views
|
|
from functions.custom_views import objects_list, filtered_list
|
|
|
|
from hashlib import md5
|
|
|
|
|
|
def user_all(request):
|
|
"""
|
|
Return list of all users with pagination
|
|
"""
|
|
return objects_list(request, User, 'user_all.html')
|
|
|
|
def translators(request):
|
|
"""
|
|
Return list of user filtered by "is_translator" field (list of translators)
|
|
"""
|
|
user_list = User.objects.filter(is_translator='True')
|
|
return filtered_list(request, user_list, 'translators.html')
|
|
|
|
|
|
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') |