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