1 from django
.http
import HttpResponse
, HttpResponseRedirect
2 from django
.shortcuts
import get_object_or_404
3 from django
.contrib
.auth
.decorators
import login_required
, user_passes_test
4 from django
.contrib
.auth
.models
import User
5 from archlinux
.utils
import render_template
6 from archlinux
.todolists
.models
import Todolist
, TodolistPkg
7 from archlinux
.packages
.models
import Package
9 # FIXME: ugly hackery. http://code.djangoproject.com/ticket/3450
11 IntegrityError
= django
.db
.backend
.Database
.IntegrityError
15 def flag(request
, listid
, pkgid
):
16 list = get_object_or_404(Todolist
, id=listid
)
17 pkg
= get_object_or_404(TodolistPkg
, id=pkgid
)
18 pkg
.complete
= not pkg
.complete
20 return HttpResponseRedirect('/todo/%s/' % (listid
))
23 def view(request
, listid
):
24 list = get_object_or_404(Todolist
, id=listid
)
25 pkgs
= TodolistPkg
.objects
.filter(list=list.id).order_by('pkg')
26 return render_template('todolists/view.html', request
, {'list':list,'pkgs':pkgs
})
30 lists
= Todolist
.objects
.order_by('-date_added')
32 l
.complete
= TodolistPkg
.objects
.filter(list=l
.id,complete
=False).count() == 0
33 return render_template('todolists/list.html', request
, {'lists':lists
})
37 @user_passes_test(lambda u
: u
.has_perm('todolists.add_todolist'))
41 m
= User
.objects
.get(username
=request
.user
.username
)
42 except User
.DoesNotExist
:
43 return render_template('error_page.html', request
,
44 {'errmsg': 'Cannot find a maintainer record for you!'})
48 name
= request
.POST
.get('name'),
49 description
= request
.POST
.get('description'))
51 # now link in packages
52 for p
in request
.POST
.get('packages').split("\n"):
53 for pkg
in Package
.objects
.filter(pkgname
=p
.strip()):
54 todopkg
= TodolistPkg(
59 except IntegrityError
, (num
, desc
):
60 if num
== 1062: # duplicate entry aka dupe package on list
62 return HttpResponseRedirect('/todo/')
64 return render_template('todolists/add.html', request
)