| 1 | # -*- coding: utf-8 -*- |
|---|
| 2 | from django.http import HttpResponseRedirect, Http404 |
|---|
| 3 | from django.contrib.auth.decorators import login_required |
|---|
| 4 | from django.shortcuts import get_object_or_404 |
|---|
| 5 | from django.conf import settings |
|---|
| 6 | from django.template import loader, Context, RequestContext |
|---|
| 7 | from django.core.mail import mail_admins |
|---|
| 8 | |
|---|
| 9 | from apps.accounts.views import redirect |
|---|
| 10 | from apps.lib.decorators import render_to |
|---|
| 11 | from apps.lib.exceptions import RedirectException |
|---|
| 12 | from apps.lib.helpers import reverse |
|---|
| 13 | from plesonet_wishlist.models import Feedback, FeedbackVote |
|---|
| 14 | from plesonet_wishlist.forms import FeedbackForm |
|---|
| 15 | |
|---|
| 16 | @login_required |
|---|
| 17 | def feedback_vote(request, feedback_id): |
|---|
| 18 | feedback = get_object_or_404(Feedback, pk=feedback_id) |
|---|
| 19 | next = request.GET.get('next', reverse("wishlist")) |
|---|
| 20 | if len(next) == 0: |
|---|
| 21 | next = "/" |
|---|
| 22 | if feedback.user != request.user: |
|---|
| 23 | vote, created = FeedbackVote.objects.get_or_create(user=request.user, feedback=feedback) |
|---|
| 24 | if created: |
|---|
| 25 | raise RedirectException(next, notice_message='Vote accepted.') |
|---|
| 26 | else: |
|---|
| 27 | raise RedirectException(next, error_message='You already voted for this feedback.') |
|---|
| 28 | else: |
|---|
| 29 | raise RedirectException(next, error_message='You cant vote for own feedback.') |
|---|
| 30 | |
|---|
| 31 | @render_to('plesonet_wishlist/view_wishlist.html') |
|---|
| 32 | def view_wishlist(request, order_by="-pub_date"): |
|---|
| 33 | if request.user.is_anonymous(): |
|---|
| 34 | form = None |
|---|
| 35 | else: |
|---|
| 36 | if request.method == "POST": |
|---|
| 37 | form = FeedbackForm(instance=Feedback(user=request.user), data=request.POST) |
|---|
| 38 | if form.is_valid(): |
|---|
| 39 | feedback = form.save() |
|---|
| 40 | |
|---|
| 41 | #send email to admins at least |
|---|
| 42 | site_url = hasattr(settings, 'SITE_URL') and settings.SITE_URL or 'http://www.extmem.com' |
|---|
| 43 | t = loader.get_template('plesonet_wishlist/email_form.txt') |
|---|
| 44 | form.cleaned_data['ip_address'] = request.META['REMOTE_ADDR'] |
|---|
| 45 | mail_admins('New wish on site %s' % site_url, |
|---|
| 46 | t.render(Context({'f': feedback, 'site_url': site_url})), |
|---|
| 47 | fail_silently = True) |
|---|
| 48 | |
|---|
| 49 | form = FeedbackForm() |
|---|
| 50 | else: |
|---|
| 51 | form = FeedbackForm() |
|---|
| 52 | |
|---|
| 53 | objects = Feedback.objects.all().order_by(order_by) |
|---|
| 54 | |
|---|
| 55 | return {'objects': objects, |
|---|
| 56 | 'form': form} |
|---|