diff options
author | Dan McGee <dan@archlinux.org> | 2011-12-08 22:02:28 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-12-08 22:02:28 +0100 |
commit | 5006da56476ebd3614cab68c574ab893e82d5aaf (patch) | |
tree | f240bb83230741579f8cf46f2e2bfd02c7b410d0 | |
parent | 3e094a548f409e4a87454764f6baf814464d9619 (diff) | |
download | archweb-5006da56476ebd3614cab68c574ab893e82d5aaf.tar.gz archweb-5006da56476ebd3614cab68c574ab893e82d5aaf.tar.xz |
Store flag requests in the database
This makes them persistent rather than the transient beings they
currently are. We attempt to capture all the metadata we need to be able
to do things with this later- aka IP address (for spam checking later),
fields that allow us to mark the request as spam or not an actual
out-of-date report, etc.
As a bonus, logged-in developers now get the email address field filled
in for free. Yay.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | packages/views/flag.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/packages/views/flag.py b/packages/views/flag.py index 7e9d87c..4132f9a 100644 --- a/packages/views/flag.py +++ b/packages/views/flag.py @@ -9,6 +9,7 @@ from django.template import loader, Context from django.views.generic.simple import direct_to_template from django.views.decorators.cache import never_cache +from ..models import FlagRequest from main.models import Package @@ -17,7 +18,7 @@ def flaghelp(request): class FlagForm(forms.Form): email = forms.EmailField(label='* E-mail Address') - usermessage = forms.CharField(label='Message To Dev', + message = forms.CharField(label='Message To Dev', widget=forms.Textarea, required=False) # The field below is used to filter out bots that blindly fill out all # input elements @@ -47,6 +48,16 @@ def flag(request, name, repo, arch): flagged_pkgs = list(pkgs) pkgs.update(flag_date=datetime.utcnow()) + # store our flag request + flag_request = FlagRequest(user_email=form.cleaned_data['email'], + ip_address=request.META.get('REMOTE_ADDR', '127.0.0.1'), + pkgbase=pkg.pkgbase, repo=pkg.repo, + num_packages=len(flagged_pkgs), + message=form.cleaned_data['message']) + if request.user.is_authenticated(): + flag_request.user = request.user + flag_request.save() + maints = pkg.maintainers if not maints: toemail = settings.NOTIFICATIONS @@ -65,7 +76,7 @@ def flag(request, name, repo, arch): tmpl = loader.get_template('packages/outofdate.txt') ctx = Context({ 'email': form.cleaned_data['email'], - 'message': form.cleaned_data['usermessage'], + 'message': form.cleaned_data['message'], 'pkg': pkg, 'packages': flagged_pkgs, }) @@ -78,7 +89,10 @@ def flag(request, name, repo, arch): return redirect('package-flag-confirmed', name=name, repo=repo, arch=arch) else: - form = FlagForm() + initial = {} + if request.user.is_authenticated(): + initial['email'] = request.user.email + form = FlagForm(initial=initial) context = { 'package': pkg, |