Revision aab4d540 snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
32 32
# or implied, of GRNET S.A.
33 33

  
34 34
import logging
35
import socket
36 35

  
37
from smtplib import SMTPException
38 36
from urllib import quote
39 37
from functools import wraps
38
from datetime import datetime, timedelta
40 39

  
41 40
from django.contrib import messages
42 41
from django.contrib.auth.decorators import login_required
43 42
from django.contrib.auth.views import password_change
44
from django.core.exceptions import ValidationError
45
from django.core.mail import send_mail
46 43
from django.core.urlresolvers import reverse
47 44
from django.db import transaction
48 45
from django.db.models import Q
......
51 48
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, \
52 49
    HttpResponseRedirect, HttpResponseBadRequest
53 50
from django.shortcuts import redirect
54
from django.template.loader import render_to_string
51
from django.template import RequestContext, loader
55 52
from django.utils.http import urlencode
56 53
from django.utils.translation import ugettext as _
57
from django.views.generic.create_update import *
58
from django.views.generic.list_detail import *
54
from django.views.generic.create_update import (create_object, delete_object,
55
    get_model_and_form_class
56
)
57
from django.views.generic.list_detail import object_list, object_detail
59 58

  
60
from astakos.im.models import AstakosUser, Invitation, ApprovalTerms, AstakosGroup, Resource
59
from astakos.im.models import (AstakosUser, ApprovalTerms, AstakosGroup, Resource,
60
    EmailChange, GroupKind, Membership)
61 61
from astakos.im.activation_backends import get_backend, SimpleBackend
62 62
from astakos.im.util import get_context, prepare_response, set_cookie, get_query
63
from astakos.im.forms import *
64
from astakos.im.functions import send_greeting, send_feedback, SendMailError, \
65
    invite as invite_func, logout as auth_logout, activate as activate_func, \
63
from astakos.im.forms import (LoginForm, InvitationForm, ProfileForm, FeedbackForm,
64
    SignApprovalTermsForm, ExtendedPasswordChangeForm, EmailChangeForm,
65
    AstakosGroupCreationForm, AstakosGroupSearchForm
66
)
67
from astakos.im.functions import (send_feedback, SendMailError,
68
    invite as invite_func, logout as auth_logout, activate as activate_func,
66 69
    switch_account_to_shibboleth, send_admin_notification, SendNotificationError
67
from astakos.im.settings import DEFAULT_CONTACT_EMAIL, DEFAULT_FROM_EMAIL, COOKIE_NAME, COOKIE_DOMAIN, IM_MODULES, SITENAME, LOGOUT_NEXT, LOGGING_LEVEL
70
)
71
from astakos.im.settings import (COOKIE_NAME, COOKIE_DOMAIN, SITENAME, LOGOUT_NEXT,
72
    LOGGING_LEVEL
73
)
68 74

  
69 75
logger = logging.getLogger(__name__)
70 76

  
......
77 83
    if tab is None:
78 84
        tab = template.partition('_')[0].partition('.html')[0]
79 85
    kwargs.setdefault('tab', tab)
80
    html = render_to_string(template, kwargs, context_instance=context_instance)
86
    html = loader.render_to_string(template, kwargs, context_instance=context_instance)
81 87
    response = HttpResponse(html, status=status)
82 88
    if reset_cookie:
83 89
        set_cookie(response, context_instance['request'].user)
......
114 120
    return wrapper
115 121

  
116 122
@signed_terms_required
117
def index(request, login_template_name='im/login.html', profile_template_name='im/profile.html', extra_context={}):
123
def index(request, login_template_name='im/login.html', extra_context=None):
118 124
    """
119 125
    If there is logged on user renders the profile page otherwise renders login page.
120 126

  
......
146 152
@login_required
147 153
@signed_terms_required
148 154
@transaction.commit_manually
149
def invite(request, template_name='im/invitations.html', extra_context={}):
155
def invite(request, template_name='im/invitations.html', extra_context=None):
150 156
    """
151 157
    Allows a user to invite somebody else.
152 158

  
......
222 228

  
223 229
@login_required
224 230
@signed_terms_required
225
def edit_profile(request, template_name='im/profile.html', extra_context={}):
231
def edit_profile(request, template_name='im/profile.html', extra_context=None):
226 232
    """
227 233
    Allows a user to edit his/her profile.
228 234

  
......
251 257

  
252 258
    * LOGIN_URL: login uri
253 259
    """
260
    extra_context = extra_context or {}
254 261
    form = ProfileForm(instance=request.user)
255 262
    extra_context['next'] = request.GET.get('next')
256 263
    reset_cookie = False
......
279 286
                           context_instance = get_context(request,
280 287
                                                          extra_context))
281 288

  
282
def signup(request, template_name='im/signup.html', on_success='im/signup_complete.html', extra_context={}, backend=None):
289
def signup(request, template_name='im/signup.html', on_success='im/signup_complete.html', extra_context=None, backend=None):
283 290
    """
284 291
    Allows a user to create a local account.
285 292

  
......
338 345
                    if additional_email != user.email:
339 346
                        user.additionalmail_set.create(email=additional_email)
340 347
                        msg = 'Additional email: %s saved for user %s.' % (additional_email, user.email)
341
                        logger._log(LOGGING_LEVEL, msg, [])
348
                        logger.log(LOGGING_LEVEL, msg)
342 349
                if user and user.is_active:
343 350
                    next = request.POST.get('next', '')
344 351
                    return prepare_response(request, user, next=next)
......
359 366

  
360 367
@login_required
361 368
@signed_terms_required
362
def feedback(request, template_name='im/feedback.html', email_template_name='im/feedback_mail.txt', extra_context={}):
369
def feedback(request, template_name='im/feedback.html', email_template_name='im/feedback_mail.txt', extra_context=None):
363 370
    """
364 371
    Allows a user to send feedback.
365 372

  
......
399 406
            try:
400 407
                send_feedback(msg, data, request.user, email_template_name)
401 408
            except SendMailError, e:
402
                status = messages.ERROR
403 409
                messages.error(request, message)
404 410
            else:
405 411
                message = _('Feedback successfully sent')
406
                messages.succeess(request, message)
412
                messages.success(request, message)
407 413
    return render_response(template_name,
408 414
                           feedback_form = form,
409 415
                           context_instance = get_context(request, extra_context))
410 416

  
411 417
@signed_terms_required
412
def logout(request, template='registration/logged_out.html', extra_context={}):
418
def logout(request, template='registration/logged_out.html', extra_context=None):
413 419
    """
414 420
    Wraps `django.contrib.auth.logout` and delete the cookie.
415 421
    """
......
419 425
        auth_logout(request)
420 426
        response.delete_cookie(COOKIE_NAME, path='/', domain=COOKIE_DOMAIN)
421 427
        msg = 'Cookie deleted for %s' % email
422
        logger._log(LOGGING_LEVEL, msg, [])
428
        logger.log(LOGGING_LEVEL, msg)
423 429
    next = request.GET.get('next')
424 430
    if next:
425 431
        response['Location'] = next
......
431 437
        return response
432 438
    messages.success(request, _('You have successfully logged out.'))
433 439
    context = get_context(request, extra_context)
434
    response.write(render_to_string(template, context_instance=context))
440
    response.write(loader.render_to_string(template, context_instance=context))
435 441
    return response
436 442

  
437 443
@transaction.commit_manually
......
505 511
            transaction.rollback()
506 512
            return index(request)
507 513

  
508
def approval_terms(request, term_id=None, template_name='im/approval_terms.html', extra_context={}):
514
def approval_terms(request, term_id=None, template_name='im/approval_terms.html', extra_context=None):
509 515
    term = None
510 516
    terms = None
511 517
    if not term_id:
......
515 521
            pass
516 522
    else:
517 523
        try:
518
             term = ApprovalTerms.objects.get(id=term_id)
519
        except ApprovalTermDoesNotExist, e:
524
            term = ApprovalTerms.objects.get(id=term_id)
525
        except ApprovalTerms.DoesNotExist, e:
520 526
            pass
521 527

  
522 528
    if not term:
......
558 564
                 email_template_name='registration/email_change_email.txt',
559 565
                 form_template_name='registration/email_change_form.html',
560 566
                 confirm_template_name='registration/email_change_done.html',
561
                 extra_context={}):
567
                 extra_context=None):
562 568
    if activation_key:
563 569
        try:
564 570
            user = EmailChange.objects.change_email(activation_key)
......
657 663
                )
658 664
            except SendNotificationError, e:
659 665
                messages.error(request, e, fail_silently=True)
660
            return redirect(post_save_redirect, new_object)
666
            return HttpResponseRedirect(post_save_redirect % new_object.__dict__)
661 667
    else:
662 668
        now = datetime.now()
663 669
        data = {

Also available in: Unified diff