]> git.openstreetmap.org Git - osqa.git/blob - forum/registry.py
changing the number of the data migration on the notification-config branch from...
[osqa.git] / forum / registry.py
1 from forum.modules import ui, get_modules_script
2 from django.utils.translation import ugettext as _
3 from django.core.urlresolvers import reverse
4 from django.template.defaultfilters import slugify
5 from django.template import get_templatetags_modules
6 from forum.templatetags.extra_tags import get_score_badge
7 from forum.utils.html import cleanup_urls
8 from forum import settings
9
10
11 modules_template_tags = get_modules_script('templatetags')
12 django_template_tags = get_templatetags_modules()
13
14 for m in modules_template_tags:
15     django_template_tags.append(m.__name__)
16
17 ui.register(ui.HEADER_LINKS,
18             ui.Link(_('faq'), ui.Url('faq'), weight=400),
19             ui.Link(_('about'), ui.Url('about'), weight=300),
20
21             ui.Link(
22                     text=lambda u, c: u.is_authenticated() and _('logout') or _('login'),
23                     url=lambda u, c: u.is_authenticated() and reverse('logout') or reverse('auth_signin'),
24                     weight=200),
25
26             ui.Link(
27                     visibility=ui.Visibility.AUTHENTICATED,
28                     text=lambda u, c: u.username,
29                     url=lambda u, c: u.get_profile_url(),
30                     post_code=lambda u, c: get_score_badge(u),
31                     weight=100),
32
33             ui.Link(
34                     visibility=ui.Visibility.SUPERUSER,
35                     text=_('administration'),
36                     url=lambda u, c: reverse('admin_index'),
37                     weight=0)
38
39 )
40
41 class SupportLink(ui.Link):
42     def can_render(self, context):
43         return bool(settings.SUPPORT_URL)
44
45
46 ui.register(ui.FOOTER_LINKS,
47             ui.Link(
48                     text=_('contact'),
49                     url=lambda u, c: settings.CONTACT_URL and settings.CONTACT_URL or "%s?next=%s" % (reverse('feedback'), cleanup_urls( c['request'].path)),
50                     weight=400),
51             SupportLink(_('support'), settings.SUPPORT_URL, attrs={'target': '_blank'}, weight=300),
52             ui.Link(_('privacy'), ui.Url('privacy'), weight=200),
53             ui.Link(_('faq'), ui.Url('faq'), weight=100),
54             ui.Link(_('about'), ui.Url('about'), weight=0),
55 )
56
57 class ModerationMenuGroup(ui.AjaxMenuGroup):
58     def can_render(self, context):
59         return context['user'] != context['viewer'] and super(ModerationMenuGroup, self).can_render(context)
60
61 class SuperUserSwitchMenuItem(ui.UserMenuItem):
62     def can_render(self, context):
63         return context['viewer'].is_siteowner or not context['user'].is_superuser
64
65 ui.register(ui.USER_MENU,
66             ui.UserMenuItem(
67                 label=_("edit profile"),
68                 url=lambda u, c: reverse('edit_user', kwargs={'id': c['user'].id}),
69                 span_attrs={'class': 'user-edit'},
70                 weight=0
71             ),
72             ui.UserMenuItem(
73                 label=_("authentication settings"),
74                 url=lambda u, c: reverse('user_authsettings', kwargs={'id': c['user'].id}),
75                 span_attrs={'class': 'user-auth'},
76                 weight=100
77             ),
78             ui.UserMenuItem(
79                 label=_("email notification settings"),
80                 url=lambda u, c: reverse('user_subscriptions', kwargs={'id': c['user'].id, 'slug': slugify(c['user'].username)}),
81                 span_attrs={'class': 'user-subscriptions'},
82                 weight=200
83             ),
84             ui.UserMenuItem(
85                 label=_("other preferences"),
86                 url=lambda u, c: reverse('user_preferences', kwargs={'id': c['user'].id, 'slug': slugify(c['user'].username)}),
87                 weight=200
88             ),
89             ModerationMenuGroup(_("Moderation tools"), items=(
90                 ui.UserMenuItem(
91                     label=lambda u, c: c['user'].is_suspended() and _("withdraw suspension") or _("suspend this user"),
92                     url=lambda u, c: reverse('user_suspend', kwargs={'id': c['user'].id}),
93                     a_attrs=lambda u, c: {'class': c['user'].is_suspended() and 'ajax-command confirm' or 'ajax-command withprompt'},
94                     render_to=lambda u: not u.is_superuser,
95                 ),
96                 ui.UserMenuItem(
97                     label=lambda u, c: _("give/take karma"),
98                     url=lambda u, c: reverse('user_award_points', kwargs={'id': c['user'].id}),
99                     a_attrs=lambda u, c: {'id': 'award-rep-points', 'class': 'ajax-command withprompt'},
100                     span_attrs={'class': 'user-award_rep'},
101                     render_to=lambda u: not u.is_suspended(),
102                 ),
103                 ui.UserMenuItem(
104                     label=lambda u, c: c['user'].is_staff and _("remove moderator status") or _("grant moderator status"),
105                     url=lambda u, c: reverse('user_powers', kwargs={'id': c['user'].id, 'action':c['user'].is_staff and 'remove' or 'grant', 'status': 'staff'}),
106                     a_attrs=lambda u, c: {'class': 'ajax-command confirm'},
107                     span_attrs={'class': 'user-moderator'},
108                 ),
109                 SuperUserSwitchMenuItem(
110                     label=lambda u, c: c['user'].is_superuser and _("remove super user status") or _("grant super user status"),
111                     url=lambda u, c: reverse('user_powers', kwargs={'id': c['user'].id, 'action':c['user'].is_superuser and 'remove' or 'grant', 'status': 'super'}),
112                     a_attrs=lambda u, c: {'class': 'ajax-command confirm'},
113                     span_attrs={'class': 'user-superuser'},
114                 ),
115             ), visibility=ui.Visibility.SUPERUSER, weight=500)
116 )