diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2015-05-24 16:57:33 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2015-05-27 10:26:41 +0800 |
commit | ad2762cf775a8dde508de47164d6429f3fd724f1 (patch) | |
tree | e63015a468cfe32c961908f0338d423227799815 /apps/patchwork/views/user.py | |
parent | f09e982f58384946111d4157fd2b7c2b31b78612 (diff) | |
download | patchwork-ad2762cf775a8dde508de47164d6429f3fd724f1.tar.bz2 patchwork-ad2762cf775a8dde508de47164d6429f3fd724f1.tar.xz |
Move to a more recent django project structure
This change updates patchwor to the newer project struture: we've moved
the actual application out of the apps/ directory, and the
patchwork-specific templates to under the patchwork application.
This gives us the manage.py script in the top-level now.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/patchwork/views/user.py')
-rw-r--r-- | apps/patchwork/views/user.py | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/apps/patchwork/views/user.py b/apps/patchwork/views/user.py deleted file mode 100644 index 126ecc9..0000000 --- a/apps/patchwork/views/user.py +++ /dev/null @@ -1,216 +0,0 @@ -# Patchwork - automated patch tracking system -# Copyright (C) 2008 Jeremy Kerr <jk@ozlabs.org> -# -# This file is part of the Patchwork package. -# -# Patchwork is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# Patchwork is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Patchwork; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -from django.contrib.auth.decorators import login_required -from patchwork.requestcontext import PatchworkRequestContext -from django.shortcuts import render_to_response, get_object_or_404 -from django.contrib import auth -from django.contrib.sites.models import Site -from django.http import HttpResponseRedirect -from patchwork.models import Project, Bundle, Person, EmailConfirmation, \ - State, EmailOptout -from patchwork.forms import UserProfileForm, UserPersonLinkForm, \ - RegistrationForm -from patchwork.filters import DelegateFilter -from patchwork.views import generic_list -from django.template.loader import render_to_string -from django.conf import settings -from django.core.mail import send_mail -import django.core.urlresolvers - -def register(request): - context = PatchworkRequestContext(request) - if request.method == 'POST': - form = RegistrationForm(request.POST) - if form.is_valid(): - data = form.cleaned_data - # create inactive user - user = auth.models.User.objects.create_user(data['username'], - data['email'], - data['password']) - user.is_active = False; - user.first_name = data.get('first_name', '') - user.last_name = data.get('last_name', '') - user.save() - - # create confirmation - conf = EmailConfirmation(type = 'registration', user = user, - email = user.email) - conf.save() - - # send email - mail_ctx = {'site': Site.objects.get_current(), - 'confirmation': conf} - - subject = render_to_string('patchwork/activation_email_subject.txt', - mail_ctx).replace('\n', ' ').strip() - - message = render_to_string('patchwork/activation_email.txt', - mail_ctx) - - send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, - [conf.email]) - - # setting 'confirmation' in the template indicates success - context['confirmation'] = conf - - else: - form = RegistrationForm() - - return render_to_response('patchwork/registration_form.html', - { 'form': form }, - context_instance=context) - -def register_confirm(request, conf): - conf.user.is_active = True - conf.user.save() - conf.deactivate() - try: - person = Person.objects.get(email__iexact = conf.user.email) - except Person.DoesNotExist: - person = Person(email = conf.user.email, - name = conf.user.profile.name()) - person.user = conf.user - person.save() - - return render_to_response('patchwork/registration-confirm.html') - -@login_required -def profile(request): - context = PatchworkRequestContext(request) - - if request.method == 'POST': - form = UserProfileForm(instance = request.user.profile, - data = request.POST) - if form.is_valid(): - form.save() - else: - form = UserProfileForm(instance = request.user.profile) - - context.project = request.user.profile.primary_project - context['bundles'] = Bundle.objects.filter(owner = request.user) - context['profileform'] = form - - optout_query = '%s.%s IN (SELECT %s FROM %s)' % ( - Person._meta.db_table, - Person._meta.get_field('email').column, - EmailOptout._meta.get_field('email').column, - EmailOptout._meta.db_table) - people = Person.objects.filter(user = request.user) \ - .extra(select = {'is_optout': optout_query}) - context['linked_emails'] = people - context['linkform'] = UserPersonLinkForm() - - return render_to_response('patchwork/profile.html', context) - -@login_required -def link(request): - context = PatchworkRequestContext(request) - - if request.method == 'POST': - form = UserPersonLinkForm(request.POST) - if form.is_valid(): - conf = EmailConfirmation(type = 'userperson', - user = request.user, - email = form.cleaned_data['email']) - conf.save() - context['confirmation'] = conf - - try: - send_mail('Patchwork email address confirmation', - render_to_string('patchwork/user-link.mail', - context), - settings.DEFAULT_FROM_EMAIL, - [form.cleaned_data['email']]) - except Exception: - context['confirmation'] = None - context['error'] = 'An error occurred during confirmation. ' + \ - 'Please try again later' - else: - form = UserPersonLinkForm() - context['linkform'] = form - - return render_to_response('patchwork/user-link.html', context) - -@login_required -def link_confirm(request, conf): - context = PatchworkRequestContext(request) - - try: - person = Person.objects.get(email__iexact = conf.email) - except Person.DoesNotExist: - person = Person(email = conf.email) - - person.link_to_user(conf.user) - person.save() - conf.deactivate() - - context['person'] = person - - return render_to_response('patchwork/user-link-confirm.html', context) - -@login_required -def unlink(request, person_id): - person = get_object_or_404(Person, id = person_id) - - if request.method == 'POST': - if person.email != request.user.email: - person.user = None - person.save() - - url = django.core.urlresolvers.reverse('patchwork.views.user.profile') - return HttpResponseRedirect(url) - - -@login_required -def todo_lists(request): - todo_lists = [] - - for project in Project.objects.all(): - patches = request.user.profile.todo_patches(project = project) - if not patches.count(): - continue - - todo_lists.append({'project': project, 'n_patches': patches.count()}) - - if len(todo_lists) == 1: - return todo_list(request, todo_lists[0]['project'].linkname) - - context = PatchworkRequestContext(request) - context['todo_lists'] = todo_lists - context.project = request.user.profile.primary_project - return render_to_response('patchwork/todo-lists.html', context) - -@login_required -def todo_list(request, project_id): - project = get_object_or_404(Project, linkname = project_id) - patches = request.user.profile.todo_patches(project = project) - filter_settings = [(DelegateFilter, - {'delegate': request.user})] - - context = generic_list(request, project, - 'patchwork.views.user.todo_list', - view_args = {'project_id': project.linkname}, - filter_settings = filter_settings, - patches = patches) - - context['action_required_states'] = \ - State.objects.filter(action_required = True).all() - return render_to_response('patchwork/todo-list.html', context) |