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
|
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404
from postgresqleu.util.backendviews import backend_list_editor
from postgresqleu.util.auth import authenticate_backend_group
from postgresqleu.util.messaging import messaging_implementations, get_messaging_class
from postgresqleu.confreg.models import ConferenceTweetQueue, MessagingProvider
from postgresqleu.confreg.backendforms import BackendSeriesMessagingForm
from postgresqleu.newsevents.backendforms import BackendNewsForm, BackendAuthorForm
from postgresqleu.newsevents.backendforms import BackendPostQueueForm
def edit_news(request, rest):
authenticate_backend_group(request, 'News administrators')
return backend_list_editor(request,
None,
BackendNewsForm,
rest,
bypass_conference_filter=True,
topadmin='News',
return_url='/admin/',
)
def edit_author(request, rest):
# Require superuser to add new author profiles, since amongst other things it
# can browse all users.
if not request.user.is_superuser:
raise PermissionDenied("Access denied")
return backend_list_editor(request,
None,
BackendAuthorForm,
rest,
bypass_conference_filter=True,
topadmin='News',
return_url='/admin/',
)
def edit_postqueue(request, rest):
authenticate_backend_group(request, 'News administrators')
return backend_list_editor(request,
None,
BackendPostQueueForm,
rest,
bypass_conference_filter=True,
object_queryset=ConferenceTweetQueue.objects.filter(conference__isnull=True),
topadmin='News',
return_url='/admin/',
)
def edit_messagingproviders(request, rest):
if not request.user.is_superuser:
raise PermissionDenied("Access denied")
def _load_messaging_formclass(classname):
return getattr(get_messaging_class(classname), 'provider_form_class', BackendSeriesMessagingForm)
formclass = BackendSeriesMessagingForm
u = rest and rest.rstrip('/') or rest
if u and u != '' and u.isdigit():
# Editing an existing one, so pick the correct subclass!
provider = get_object_or_404(MessagingProvider, pk=u, series__isnull=True)
formclass = _load_messaging_formclass(provider.classname)
elif u == 'new':
if '_newformdata' in request.POST or 'classname' in request.POST:
if '_newformdata' in request.POST:
c = request.POST['_newformdata'].split(':')[0]
else:
c = request.POST['classname']
if c not in messaging_implementations:
raise PermissionDenied()
formclass = _load_messaging_formclass(c)
# Note! Sync with confreg/backendviews.py
formclass.no_incoming_processing = True
formclass.verbose_name = 'news messaging provider'
formclass.verbose_name_plural = 'news messaging providers'
return backend_list_editor(request,
None,
formclass,
rest,
bypass_conference_filter=True,
object_queryset=MessagingProvider.objects.filter(series__isnull=True),
topadmin='News',
return_url='/admin/',
)
|