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