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