-
Notifications
You must be signed in to change notification settings - Fork 530
/
helpers.py
97 lines (73 loc) 路 3.01 KB
/
helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import jinja2
import jingo
from tower import ugettext as _
from access import acl
from reviews.models import ReviewFlag
from . import forms
@jingo.register.filter
def stars(num, large=False):
# check for 0.0 incase None was cast to a float. Should
# be safe since lowest rating you can give is 1.0
if num is None or num == 0.0:
return _('Not yet rated')
else:
num = min(5, int(round(num)))
t = jingo.env.get_template('reviews/impala/reviews_rating.html')
# These are getting renamed for contextual sense in the template.
return jinja2.Markup(t.render({'rating': num, 'detailpage': large}))
@jingo.register.function
def reviews_link(addon, collection_uuid=None, link_to_list=False):
t = jingo.env.get_template('reviews/reviews_link.html')
return jinja2.Markup(t.render({'addon': addon,
'link_to_list': link_to_list,
'collection_uuid': collection_uuid}))
@jingo.register.function
def impala_reviews_link(addon, collection_uuid=None, link_to_list=False):
t = jingo.env.get_template('reviews/impala/reviews_link.html')
return jinja2.Markup(t.render({'addon': addon,
'link_to_list': link_to_list,
'collection_uuid': collection_uuid}))
@jingo.register.inclusion_tag('reviews/mobile/reviews_link.html')
@jinja2.contextfunction
def mobile_reviews_link(context, addon):
c = dict(context.items())
c.update(addon=addon)
return c
@jingo.register.inclusion_tag('reviews/report_review.html')
@jinja2.contextfunction
def report_review_popup(context):
c = dict(context.items())
c.update(ReviewFlag=ReviewFlag, flag_form=forms.ReviewFlagForm())
return c
@jingo.register.inclusion_tag('reviews/edit_review.html')
@jinja2.contextfunction
def edit_review_form(context):
c = dict(context.items())
c.update(form=forms.ReviewForm())
return c
@jingo.register.inclusion_tag('reviews/edit_review.html')
@jinja2.contextfunction
def edit_review_reply_form(context):
c = dict(context.items())
c.update(form=forms.ReviewReplyForm())
return c
def user_can_delete_review(request, review):
"""Return whether or not the request.user can delete reviews.
People who can delete reviews:
* The original review author.
* Editors, but only if they aren't listed as an author of the add-on.
* Users in a group with "Users:Edit" privileges.
* Users in a group with "Addons:Edit" privileges.
Persona editors can't delete addons reviews.
"""
is_author = review.addon.has_author(request.user)
return (
review.user_id == request.user.id or
not is_author and (
acl.is_editor(request, review.addon) or
acl.action_allowed(request, 'Users', 'Edit') or
acl.action_allowed(request, 'Addons', 'Edit')))
@jingo.register.function
@jinja2.contextfunction
def check_review_delete(context, review):
return user_can_delete_review(context['request'], review)