Revision 8e45d6fd snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
53 53
from django.contrib.auth.views import password_change
54 54
from django.core.exceptions import ValidationError
55 55
from django.db.models import Q
56
from django.forms.models import inlineformset_factory
57
from django.forms.models import inlineformset_factory
58
from django.views.generic.create_update import *
59
from django.views.generic.list_detail import *
56 60

  
57
from astakos.im.models import AstakosUser, Invitation, ApprovalTerms
61
from astakos.im.models import AstakosUser, Invitation, ApprovalTerms, AstakosGroup
58 62
from astakos.im.activation_backends import get_backend, SimpleBackend
59 63
from astakos.im.util import get_context, prepare_response, set_cookie, get_query
60 64
from astakos.im.forms import *
......
407 411
                           feedback_form = form,
408 412
                           context_instance = get_context(request, extra_context))
409 413

  
414
@signed_terms_required
410 415
def logout(request, template='registration/logged_out.html', extra_context={}):
411 416
    """
412 417
    Wraps `django.contrib.auth.logout` and delete the cookie.
413 418
    """
414
    msg = 'Cookie deleted for %s' % (request.user.email)
415
    auth_logout(request)
416 419
    response = HttpResponse()
417
    response.delete_cookie(COOKIE_NAME, path='/', domain=COOKIE_DOMAIN)
418
    logger._log(LOGGING_LEVEL, msg, [])
420
    if request.user.is_authenticated():
421
        email = request.user.email
422
        auth_logout(request)
423
        response.delete_cookie(COOKIE_NAME, path='/', domain=COOKIE_DOMAIN)
424
        msg = 'Cookie deleted for %s' % email
425
        logger._log(LOGGING_LEVEL, msg, [])
419 426
    next = request.GET.get('next')
420 427
    if next:
421 428
        response['Location'] = next
......
450 457
        message = _('Account already active.')
451 458
        messages.add_message(request, messages.ERROR, message)
452 459
        return index(request)
453
    
460
        
454 461
    try:
455 462
        local_user = AstakosUser.objects.get(~Q(id = user.id), email=user.email, is_active=True)
456 463
    except AstakosUser.DoesNotExist:
......
536 543
                            post_change_redirect=reverse('astakos.im.views.edit_profile'),
537 544
                            password_change_form=ExtendedPasswordChangeForm)
538 545

  
546
@signed_terms_required
547
@login_required
539 548
@transaction.commit_manually
540 549
def change_email(request, activation_key=None,
541 550
                 email_template_name='registration/email_change_email.txt',
......
583 592
    return render_response(form_template_name,
584 593
                           form = form,
585 594
                           context_instance = get_context(request,
586
                                                          extra_context))
595
                                                          extra_context))
596

  
597
@signed_terms_required
598
def group_add(request):
599
    return create_object(request,
600
                            form_class=get_astakos_group_creation_form(request),
601
                            login_required = True,
602
                            post_save_redirect = '/im/group/%(id)s/policies/add')
603

  
604
@signed_terms_required
605
@login_required
606
def user_group_list(request):
607
    list = AstakosGroup.objects.filter(membership__person=request.user)
608
    return object_list(request, queryset=list)
609

  
610
@signed_terms_required
611
@login_required
612
def owner_group_list(request):
613
    list = AstakosGroup.objects.filter(owner__id=request.user.id)
614
    return object_list(request, queryset=list)
615

  
616
@signed_terms_required
617
@login_required
618
def group_detail(request, group_id):
619
    try:
620
        group = AstakosGroup.objects.select_related().get(id=group_id)
621
    except AstakosGroup.DoesNotExist:
622
        raise HttpResponseBadRequest(_('Invalid group.'))
623
    d = {}
624
    for resource in group.policy.all():
625
        d[resource.name] = group.policy.through.objects.get(resource__id=resource.id,
626
                                                            group__id=group_id).limit  
627
    return object_detail(request,
628
                            AstakosGroup.objects.all(),
629
                            object_id=group_id,
630
                            extra_context = {'quota':d})
631

  
632
@signed_terms_required
633
@login_required
634
def group_policies_list(request, group_id):
635
    list = AstakosGroupQuota.objects.filter(group__id=group_id)
636
    return object_list(request, queryset=list)
637

  
638
@signed_terms_required
639
def group_policies_add(request, group_id):
640
    try:
641
        group = AstakosGroup.objects.select_related().get(id=group_id)
642
    except AstakosGroup.DoesNotExist:
643
        raise HttpResponseBadRequest(_('Invalid group.'))
644
    d = {}
645
    for resource in group.policy.all():
646
        d[resource.name] = group.policy.through.objects.get(resource__id=resource.id,
647
                                                            group__id=group_id).limit
648
    return create_object(request,
649
                            form_class=get_astakos_group_policy_creation_form(group),
650
                            login_required=True,
651
                            post_save_redirect = reverse('group_policies_add', kwargs=dict(group_id=group_id)),
652
                            extra_context = {'group':group,
653
                                             'quota':d})
654
@signed_terms_required
655
@login_required
656
def group_approval_request(request, group_id):
657
    return HttpResponse()
658
    

Also available in: Unified diff