Revision c630fee6 snf-astakos-app/astakos/im/views.py
b/snf-astakos-app/astakos/im/views.py | ||
---|---|---|
41 | 41 |
from functools import wraps |
42 | 42 |
from datetime import datetime |
43 | 43 |
|
44 |
from django.shortcuts import get_object_or_404 |
|
44 | 45 |
from django.contrib import messages |
45 | 46 |
from django.contrib.auth.decorators import login_required |
46 | 47 |
from django.core.urlresolvers import reverse |
... | ... | |
62 | 63 |
from django.views.decorators.http import require_http_methods |
63 | 64 |
from django.db.models import Q |
64 | 65 |
|
66 |
import astakos.im.messages as astakos_messages |
|
67 |
|
|
65 | 68 |
from astakos.im.activation_backends import get_backend, SimpleBackend |
66 | 69 |
from astakos.im.models import (AstakosUser, ApprovalTerms, AstakosGroup, |
67 | 70 |
EmailChange, GroupKind, Membership, |
68 |
RESOURCE_SEPARATOR, AstakosUserAuthProvider) |
|
71 |
RESOURCE_SEPARATOR, AstakosUserAuthProvider, |
|
72 |
PendingThirdPartyUser) |
|
69 | 73 |
from astakos.im.util import get_context, prepare_response, get_query, restrict_next |
70 | 74 |
from astakos.im.forms import (LoginForm, InvitationForm, ProfileForm, |
71 | 75 |
FeedbackForm, SignApprovalTermsForm, |
... | ... | |
87 | 91 |
#from astakos.im.tasks import request_billing |
88 | 92 |
from astakos.im.api.callpoint import AstakosCallpoint |
89 | 93 |
|
90 |
import astakos.im.messages as astakos_messages |
|
91 | 94 |
from astakos.im import settings |
92 | 95 |
from astakos.im import auth_providers |
93 | 96 |
|
... | ... | |
124 | 127 |
for pkey, value in perms.iteritems(): |
125 | 128 |
attr = 'is_available_for_%s' % pkey.lower() |
126 | 129 |
if getattr(provider, attr)() != value: |
127 |
raise PermissionDenied |
|
130 |
#TODO: add session message |
|
131 |
return HttpResponseRedirect(reverse('login')) |
|
128 | 132 |
return func(request, *args) |
129 | 133 |
return wrapper |
130 | 134 |
return decorator |
... | ... | |
408 | 412 |
instance = None |
409 | 413 |
|
410 | 414 |
third_party_token = request.REQUEST.get('third_party_token', None) |
415 |
if third_party_token: |
|
416 |
pending = get_object_or_404(PendingThirdPartyUser, |
|
417 |
token=third_party_token) |
|
418 |
provider = pending.provider |
|
419 |
instance = pending.get_user_instance() |
|
411 | 420 |
|
412 | 421 |
try: |
413 | 422 |
if not backend: |
... | ... | |
531 | 540 |
if request.user.is_authenticated(): |
532 | 541 |
email = request.user.email |
533 | 542 |
auth_logout(request) |
543 |
else: |
|
544 |
response['Location'] = reverse('index') |
|
545 |
response.status_code = 301 |
|
546 |
return response |
|
547 |
|
|
534 | 548 |
next = restrict_next( |
535 | 549 |
request.GET.get('next'), |
536 | 550 |
domain=COOKIE_DOMAIN |
537 | 551 |
) |
552 |
|
|
538 | 553 |
if next: |
539 | 554 |
response['Location'] = next |
540 | 555 |
response.status_code = 302 |
... | ... | |
543 | 558 |
response.status_code = 301 |
544 | 559 |
else: |
545 | 560 |
messages.add_message(request, messages.SUCCESS, _(astakos_messages.LOGOUT_SUCCESS)) |
546 |
context = get_context(request, extra_context)
|
|
547 |
response.write(render_to_string(template, context_instance=context))
|
|
561 |
response['Location'] = reverse('index')
|
|
562 |
response.status_code = 301
|
|
548 | 563 |
return response |
549 | 564 |
|
550 | 565 |
|
... | ... | |
946 | 961 |
if sort_form.is_valid(): |
947 | 962 |
sorting = sort_form.cleaned_data.get('sorting') |
948 | 963 |
query = query+" ORDER BY %s ASC" %sorting |
949 |
|
|
964 |
|
|
950 | 965 |
q = AstakosGroup.objects.raw(query) |
951 |
|
|
966 |
|
|
952 | 967 |
# Create the template, context, response |
953 | 968 |
template_name = "%s/%s_list.html" % ( |
954 | 969 |
q.model._meta.app_label, |
... | ... | |
1034 | 1049 |
form = MembersSortForm(request.GET) |
1035 | 1050 |
if form.is_valid(): |
1036 | 1051 |
sorting = form.cleaned_data.get('sorting') |
1037 |
|
|
1052 |
|
|
1038 | 1053 |
result = callpoint.list_resources() |
1039 | 1054 |
resource_catalog = ResourcePresentation(RESOURCES_PRESENTATION_DATA) |
1040 | 1055 |
resource_catalog.update_from_result(result) |
... | ... | |
1074 | 1089 |
form = AstakosGroupSearchForm(get_query(request)) |
1075 | 1090 |
if form.is_valid(): |
1076 | 1091 |
q = form.cleaned_data['q'].strip() |
1077 |
|
|
1092 |
|
|
1078 | 1093 |
sorting = 'groupname' |
1079 | 1094 |
if q: |
1080 | 1095 |
queryset = AstakosGroup.objects.select_related() |
... | ... | |
1110 | 1125 |
AND astakosuser_id = %s) |
1111 | 1126 |
THEN 1 ELSE 0 END""" % request.user.id, |
1112 | 1127 |
}) |
1113 |
|
|
1128 |
|
|
1114 | 1129 |
# validate sorting |
1115 | 1130 |
sort_form = AstakosGroupSortForm(request.GET) |
1116 | 1131 |
if sort_form.is_valid(): |
... | ... | |
1160 | 1175 |
WHERE astakosgroup_id = im_astakosgroup.group_ptr_id |
1161 | 1176 |
AND astakosuser_id = %s) |
1162 | 1177 |
THEN 1 ELSE 0 END""" % request.user.id, }) |
1163 |
|
|
1178 |
|
|
1164 | 1179 |
# validate sorting |
1165 | 1180 |
sorting = 'groupname' |
1166 | 1181 |
sort_form = AstakosGroupSortForm(request.GET) |
1167 | 1182 |
if sort_form.is_valid(): |
1168 | 1183 |
sorting = sort_form.cleaned_data.get('sorting') |
1169 | 1184 |
q = q.order_by(sorting) |
1170 |
|
|
1185 |
|
|
1171 | 1186 |
return object_list( |
1172 | 1187 |
request, |
1173 | 1188 |
q, |
... | ... | |
1299 | 1314 |
entry['ratio_limited'] = 100 |
1300 | 1315 |
else: |
1301 | 1316 |
entry['ratio_limited'] = entry['ratio'] |
1302 |
|
|
1317 |
|
|
1303 | 1318 |
return entry |
1304 | 1319 |
|
1305 | 1320 |
def pluralize(entry): |
... | ... | |
1441 | 1456 |
return render_response( |
1442 | 1457 |
template='im/how_it_works.html', |
1443 | 1458 |
context_instance=get_context(request),) |
1444 |
|
|
1459 |
|
Also available in: Unified diff