1 from django
.http
import HttpResponse
, HttpResponseRedirect
2 from django
.contrib
.auth
.decorators
import login_required
3 from django
.contrib
.auth
.models
import User
4 from django
.core
import validators
5 from archweb_dev
.lib
.utils
import render_response
6 from archweb_dev
.packages
.models
import Package
, Repo
7 from archweb_dev
.todolists
.models
import Todolist
, TodolistPkg
8 from archweb_dev
.settings
import DATA_DIR
9 from archweb_dev
.lib
.utils
import validate
10 from archweb_dev
.devel
.models
import UserProfile
11 from archweb_dev
.news
.models
import News
12 from archweb_dev
.settings
import DATA_DIR
13 from archweb_dev
.devel
.models
import Donator
, Mirror
19 thismaint
= User
.objects
.get(username
=request
.user
.username
)
20 except User
.DoesNotExist
:
21 # weird, we don't have a maintainer record for this logged-in user
24 # get a list of incomplete package todo lists
25 todos
= Todolist
.objects
.get_incomplete()
26 # get flagged-package stats for all maintainers
27 stats
= Package
.objects
.get_flag_stats()
29 # get list of flagged packages for this maintainer
30 pkgs
= Package
.objects
.filter(maintainer
=thismaint
.id).filter(needupdate
=True).order_by('repo', 'pkgname')
34 return render_response(request
, 'devel/index.html',
35 {'stats':stats
, 'pkgs':pkgs
, 'todos':todos
, 'maint':thismaint
})
39 def change_notify(request
):
40 maint
= User
.objects
.get(username
=request
.user
.username
)
41 notify
= request
.POST
.get('notify', 'no')
43 maint
.get_profile().notify
= notify
== 'yes'
44 except UserProfile
.DoesNotExist
:
45 UserProfile(user_id
=maint
.id ,notify
=notify
== 'yes').save()
46 maint
.get_profile().save()
47 return HttpResponseRedirect('/devel/')
50 def change_profile(request
):
53 passwd1
, passwd2
= request
.POST
['passwd'], request
.POST
['passwd2']
54 email
= request
.POST
['email']
56 if passwd1
!= passwd2
:
57 errors
['password'] = [' Passwords do not match. ']
58 validate(errors
, 'Email', email
, validators
.isValidEmail
, False, request
)
61 request
.user
.email
= email
63 request
.user
.set_password(passwd1
)
65 return HttpResponseRedirect('/devel/')
66 return render_response(request
, 'devel/profile.html', {'errors':errors
,'email':request
.user
.email
})
70 return render_response(request
, 'devel/pkgmaint_guide.txt',
71 mimetype
='text/plain')
73 def siteindex(request
):
74 # get the most recent 10 news items
75 news
= News
.objects
.order_by('-postdate', '-id')[:10]
76 pkgs
= Package
.objects
.exclude(repo__name__exact
='Testing').order_by('-last_update')[:15]
77 repos
= Repo
.objects
.order_by('name')
78 return render_response(request
, 'public/index.html', {'news_updates':news
,'pkg_updates':pkgs
,'repos':repos
})
81 return render_response(request
, 'public/about.html')
84 return render_response(request
, 'public/art.html')
87 return render_response(request
, 'public/cvs.html')
89 def developers(request
):
90 devs
= User
.objects
.order_by('username')
91 return render_response(request
, 'public/developers.html', {'devs':devs
})
94 donor_count
= Donator
.objects
.count()
95 splitval
= donor_count
/ 4
96 slice1
= Donator
.objects
.all()[:splitval
]
97 slice2
= Donator
.objects
.all()[(splitval
):(splitval
*2)]
98 slice3
= Donator
.objects
.all()[(splitval
*2):(donor_count
-splitval
)]
99 slice4
= Donator
.objects
.all()[(donor_count
-splitval
):donor_count
]
100 return render_response(request
, 'public/donate.html',
101 {'slice1':slice1
,'slice2':slice2
,'slice3':slice3
,'slice4':slice4
})
103 def download(request
):
104 mirrors
= Mirror
.objects
.order_by('country', 'domain')
105 return render_response(request
, 'public/download.html', {'mirrors':mirrors
})
108 return render_response(request
, 'public/irc.html')
110 def moreforums(request
):
111 return render_response(request
, 'public/moreforums.html')
114 return render_response(request
, 'public/press.html')
116 def projects(request
):
117 return render_response(request
, 'public/projects.html')
120 return HttpResponse("User-agent: *\nDisallow: /\n", mimetype
="text/plain")
123 return render_response(request
, 'public/denied.html')
125 # vim: set ts=4 sw=4 et: