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

# -*- 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')