Revision 3e0a032d

b/snf-astakos-app/astakos/im/activation_backends.py
36 36
from django.utils.translation import ugettext as _
37 37

  
38 38
from astakos.im.models import AstakosUser
39
from astakos.im.util import get_invitation
40 39
from astakos.im import functions
41 40
from astakos.im import settings
42 41
from astakos.im import forms
b/snf-astakos-app/astakos/im/forms.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33
from random import random
34
from datetime import datetime, timedelta
34
from datetime import datetime
35 35

  
36 36
from django import forms
37 37
from django.utils.translation import ugettext as _
38
from django.contrib.auth.forms import (
39
    UserCreationForm, AuthenticationForm,
40
    PasswordResetForm, PasswordChangeForm,
41
    SetPasswordForm)
38
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, \
39
    PasswordResetForm, PasswordChangeForm, SetPasswordForm
42 40
from django.core.mail import send_mail, get_connection
43 41
from django.contrib.auth.tokens import default_token_generator
44
from django.template import Context, loader
45
from django.utils.http import int_to_base36
46 42
from django.core.urlresolvers import reverse
47 43
from django.utils.safestring import mark_safe
48 44
from django.utils.encoding import smart_str
49 45
from django.conf import settings
50
from django.forms.models import fields_for_model
51 46
from django.db import transaction
52
from django.utils.encoding import smart_unicode
53 47
from django.core import validators
54
from django.contrib.auth.models import AnonymousUser
55 48
from django.core.exceptions import PermissionDenied
56 49

  
57 50
from synnefo_branding.utils import render_to_string
58 51
from synnefo.lib import join_urls
59
from astakos.im.models import (
60
    AstakosUser, EmailChange, Invitation,
61
    Resource, PendingThirdPartyUser, get_latest_terms,
62
    ProjectApplication, Project)
63
from astakos.im.settings import (
64
    INVITATIONS_PER_LEVEL, BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY,
65
    RECAPTCHA_ENABLED, CONTACT_EMAIL, LOGGING_LEVEL,
66
    PASSWORD_RESET_EMAIL_SUBJECT, NEWPASSWD_INVALIDATE_TOKEN,
67
    MODERATION_ENABLED, EMAILCHANGE_ENABLED,
68
    )
52
from astakos.im.models import AstakosUser, EmailChange, Invitation, Resource, \
53
    PendingThirdPartyUser, get_latest_terms, ProjectApplication, Project
54
from astakos.im.settings import BASEURL, SITENAME, RECAPTCHA_PRIVATE_KEY, \
55
    RECAPTCHA_ENABLED, CONTACT_EMAIL, PASSWORD_RESET_EMAIL_SUBJECT, \
56
    NEWPASSWD_INVALIDATE_TOKEN, EMAILCHANGE_ENABLED
69 57
from astakos.im import presentation
70 58
from astakos.im.widgets import DummyWidget, RecaptchaWidget
71
from astakos.im.functions import (
72
    send_change_email, submit_application, accept_membership_checks)
59
from astakos.im.functions import send_change_email, submit_application, \
60
    accept_membership_checks
73 61

  
74
from astakos.im.util import reserved_email, reserved_verified_email, \
75
                            get_query, model_to_dict
62
from astakos.im.util import reserved_verified_email, model_to_dict
76 63
from astakos.im import auth_providers
77 64

  
78 65
import astakos.im.messages as astakos_messages
b/snf-astakos-app/astakos/im/functions.py
32 32
# or implied, of GRNET S.A.
33 33

  
34 34
import logging
35
import socket
36 35

  
37 36
from django.utils.translation import ugettext as _
38 37
from django.core.mail import send_mail, get_connection
39 38
from django.core.urlresolvers import reverse
40
from django.template import Context, loader
41 39
from django.contrib.auth import (
42 40
    login as auth_login,
43 41
    logout as auth_logout)
44
from django.contrib.auth.models import AnonymousUser
45 42
from django.core.exceptions import PermissionDenied
46
from django.db import IntegrityError
47 43
from django.db.models import Q
48 44
from django.http import Http404
49 45

  
50 46
from synnefo_branding.utils import render_to_string
51 47

  
52
from urllib import quote
53
from smtplib import SMTPException
54
from datetime import datetime
55
from functools import wraps
56

  
57 48
from synnefo.lib import join_urls
58 49
from astakos.im.settings import (
59 50
    CONTACT_EMAIL, SITENAME, BASEURL, LOGGING_LEVEL,
60 51
    VERIFICATION_EMAIL_SUBJECT, ACCOUNT_CREATION_SUBJECT,
61
    GROUP_CREATION_SUBJECT, HELPDESK_NOTIFICATION_EMAIL_SUBJECT,
52
    HELPDESK_NOTIFICATION_EMAIL_SUBJECT,
62 53
    INVITATION_EMAIL_SUBJECT, GREETING_EMAIL_SUBJECT, FEEDBACK_EMAIL_SUBJECT,
63 54
    EMAIL_CHANGE_EMAIL_SUBJECT,
64 55
    )
65
from astakos.im.notifications import build_notification, NotificationError
66 56
from astakos.im.models import (
67 57
    AstakosUser, Invitation, ProjectMembership, ProjectApplication, Project,
68 58
    Chain, new_chain)
b/snf-astakos-app/astakos/im/models.py
41 41
from time import asctime
42 42
from datetime import datetime, timedelta
43 43
from base64 import b64encode
44
from urlparse import urlparse
45 44
from urllib import quote
46 45
from random import randint
47 46

  
48 47
from django.db import models, IntegrityError, transaction
49 48
from django.contrib.auth.models import User, UserManager, Group, Permission
50 49
from django.utils.translation import ugettext as _
51
from django.core.exceptions import ValidationError
52
from django.db.models.signals import (
53
    pre_save, post_save, post_syncdb, post_delete)
50
from django.db.models.signals import pre_save, post_save
54 51
from django.contrib.contenttypes.models import ContentType
55 52

  
56
from django.dispatch import Signal
57 53
from django.db.models import Q, Max
58 54
from django.core.urlresolvers import reverse
59 55
from django.utils.http import int_to_base36
......
61 57
from django.conf import settings
62 58
from django.utils.importlib import import_module
63 59
from django.utils.safestring import mark_safe
64
from django.core.validators import email_re
65
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
66 60

  
67 61
from synnefo.lib.utils import dict_merge
68 62

  
69
from astakos.im.settings import (
70
    DEFAULT_USER_LEVEL, INVITATIONS_PER_LEVEL,
71
    AUTH_TOKEN_DURATION, EMAILCHANGE_ACTIVATION_DAYS, LOGGING_LEVEL,
72
    SITENAME, MODERATION_ENABLED,
73
    )
63
from astakos.im.settings import DEFAULT_USER_LEVEL, INVITATIONS_PER_LEVEL, \
64
    AUTH_TOKEN_DURATION, EMAILCHANGE_ACTIVATION_DAYS, LOGGING_LEVEL
74 65
from astakos.im import settings as astakos_settings
75 66
from astakos.im import auth_providers as auth
76 67

  
b/snf-astakos-app/astakos/im/notifications.py
36 36

  
37 37
from smtplib import SMTPException
38 38

  
39
from django.conf import settings
40 39
from django.core.mail import send_mail, get_connection
41 40
from django.utils.translation import ugettext as _
42 41
from synnefo_branding.utils import render_to_string
b/snf-astakos-app/astakos/im/tables.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
from collections import defaultdict
35

  
36 34
from django.utils.translation import ugettext as _
37 35
from django.utils.safestring import mark_safe
38 36
from django.template import Context, Template
......
44 42

  
45 43
from astakos.im.models import *
46 44
from astakos.im.templatetags.filters import truncatename
47
from astakos.im.functions import (join_project_checks,
48
                                  can_leave_request,
49
                                  cancel_membership_checks)
45
from astakos.im.functions import join_project_checks, can_leave_request, \
46
    cancel_membership_checks
50 47

  
51 48
DEFAULT_DATE_FORMAT = "d/m/Y"
52 49

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

  
34 34
import logging
35
import calendar
36 35
import inflect
37 36

  
38 37
engine = inflect.engine()
39 38

  
40 39
from urllib import quote
41
from functools import wraps
42
from datetime import datetime
43
from synnefo.lib.ordereddict import OrderedDict
44

  
45
from django_tables2 import RequestConfig
46 40

  
47 41
from django.shortcuts import get_object_or_404
48 42
from django.contrib import messages
49 43
from django.contrib.auth.decorators import login_required
50 44
from django.core.urlresolvers import reverse
51 45
from django.db import transaction
52
from django.db.utils import IntegrityError
53
from django.http import (
54
    HttpResponse, HttpResponseBadRequest,
55
    HttpResponseForbidden, HttpResponseRedirect,
56
    HttpResponseBadRequest, Http404)
46
from django.http import HttpResponse, HttpResponseRedirect, Http404
57 47
from django.shortcuts import redirect
58
from django.template import RequestContext, loader as template_loader
59
from django.utils.http import urlencode
60
from django.utils.html import escape
61
from django.utils.safestring import mark_safe
62 48
from django.utils.translation import ugettext as _
63
from django.views.generic.create_update import (
64
    apply_extra_context, lookup_object, delete_object, get_model_and_form_class)
65
from django.views.generic.list_detail import object_list, object_detail
66
from django.core.xheaders import populate_xheaders
67
from django.core.exceptions import ValidationError, PermissionDenied
49
from django.core.exceptions import PermissionDenied
68 50
from django.views.decorators.http import require_http_methods
69
from django.db.models import Q
70 51
from django.utils import simplejson as json
71
from django.contrib.auth.views import redirect_to_login
72

  
73
from synnefo_branding.utils import render_to_string
74 52

  
75 53
import astakos.im.messages as astakos_messages
76 54

  
77 55
from astakos.im import activation_backends
78
from astakos.im import tables
79
from astakos.im.models import (
80
    AstakosUser, ApprovalTerms,
81
    EmailChange, AstakosUserAuthProvider, PendingThirdPartyUser,
82
    ProjectApplication, ProjectMembership, Project, Service, Resource)
83
from astakos.im.util import (
84
    get_context, prepare_response, get_query, restrict_next, model_to_dict)
85
from astakos.im.forms import (
86
    LoginForm, InvitationForm,
87
    FeedbackForm, SignApprovalTermsForm,
88
    EmailChangeForm,
89
    ProjectApplicationForm, ProjectSortForm,
90
    AddProjectMembersForm, ProjectSearchForm,
91
    ProjectMembersSortForm)
56
from astakos.im.models import AstakosUser, ApprovalTerms, EmailChange, \
57
    AstakosUserAuthProvider, PendingThirdPartyUser, Service
58
from astakos.im.util import get_context, prepare_response, get_query, \
59
    restrict_next
60
from astakos.im.forms import LoginForm, InvitationForm, FeedbackForm, \
61
    SignApprovalTermsForm, EmailChangeForm
92 62
from astakos.im.forms import ExtendedProfileForm as ProfileForm
93
from astakos.im.functions import (
94
    send_feedback,
95
    logout as auth_logout,
96
    invite as invite_func,
97
    check_pending_app_quota,
98
    accept_membership, reject_membership, remove_membership, cancel_membership,
99
    leave_project, join_project, enroll_member, can_join_request,
100
    can_leave_request,
101
    get_related_project_id, get_by_chain_or_404,
102
    approve_application, deny_application,
103
    cancel_application, dismiss_application)
104
from astakos.im.settings import (
105
    COOKIE_DOMAIN, LOGOUT_NEXT,
106
    LOGGING_LEVEL, PAGINATE_BY,
107
    PAGINATE_BY_ALL,
108
    ACTIVATION_REDIRECT_URL,
109
    MODERATION_ENABLED)
63
from astakos.im.functions import send_feedback, logout as auth_logout, \
64
    invite as invite_func
65
from astakos.im.settings import COOKIE_DOMAIN, LOGOUT_NEXT, \
66
    ACTIVATION_REDIRECT_URL
110 67
from astakos.im import presentation
111 68
from astakos.im import settings
112 69
from astakos.im import auth_providers as auth
113
from snf_django.lib.db.transaction import commit_on_success_strict
114
from astakos.im.ctx import ExceptionHandler
115 70
from astakos.im import quotas
116 71
from astakos.im.views.util import render_response, _resources_catalog
117 72
from astakos.im.views.decorators import cookie_fix, signed_terms_required,\
b/snf-astakos-app/astakos/im/views/projects.py
32 32
# or implied, of GRNET S.A.
33 33

  
34 34
import logging
35
import calendar
36 35
import inflect
37 36

  
38 37
engine = inflect.engine()
39 38

  
40
from urllib import quote
41
from functools import wraps
42
from datetime import datetime
43
from synnefo.lib.ordereddict import OrderedDict
44

  
45 39
from django_tables2 import RequestConfig
46 40

  
47 41
from django.shortcuts import get_object_or_404
48 42
from django.contrib import messages
49 43
from django.contrib.auth.decorators import login_required
50 44
from django.core.urlresolvers import reverse
51
from django.db import transaction
52
from django.db.utils import IntegrityError
53
from django.http import (
54
    HttpResponse, HttpResponseBadRequest,
55
    HttpResponseForbidden, HttpResponseRedirect,
56
    HttpResponseBadRequest, Http404)
45
from django.http import Http404
57 46
from django.shortcuts import redirect
58
from django.template import RequestContext, loader as template_loader
59
from django.utils.http import urlencode
60 47
from django.utils.html import escape
61
from django.utils.safestring import mark_safe
62 48
from django.utils.translation import ugettext as _
63
from django.views.generic.create_update import (
64
    apply_extra_context, lookup_object, delete_object, get_model_and_form_class)
65 49
from django.views.generic.list_detail import object_list, object_detail
66
from django.core.xheaders import populate_xheaders
67
from django.core.exceptions import ValidationError, PermissionDenied
50
from django.core.exceptions import PermissionDenied
68 51
from django.views.decorators.http import require_http_methods
69 52
from django.db.models import Q
70
from django.utils import simplejson as json
71
from django.contrib.auth.views import redirect_to_login
72 53

  
73
from synnefo_branding.utils import render_to_string
74 54
from snf_django.lib.db.transaction import commit_on_success_strict
75 55

  
76 56
import astakos.im.messages as astakos_messages
77 57

  
78
from astakos.im import activation_backends
79 58
from astakos.im import tables
80
from astakos.im.models import (
81
    AstakosUser, ApprovalTerms,
82
    EmailChange, AstakosUserAuthProvider, PendingThirdPartyUser,
83
    ProjectApplication, ProjectMembership, Project, Service, Resource)
84
from astakos.im.util import (
85
    get_context, prepare_response, get_query, restrict_next, model_to_dict)
86
from astakos.im.forms import (
87
    LoginForm, InvitationForm,
88
    FeedbackForm, SignApprovalTermsForm,
89
    EmailChangeForm,
90
    ProjectApplicationForm, ProjectSortForm,
91
    AddProjectMembersForm, ProjectSearchForm,
92
    ProjectMembersSortForm)
93
from astakos.im.forms import ExtendedProfileForm as ProfileForm
94
from astakos.im.functions import (
95
    send_feedback,
96
    logout as auth_logout,
97
    invite as invite_func,
98
    check_pending_app_quota,
99
    accept_membership, reject_membership, remove_membership, cancel_membership,
100
    leave_project, join_project, enroll_member, can_join_request,
101
    can_leave_request,
102
    get_related_project_id, get_by_chain_or_404,
103
    approve_application, deny_application,
104
    cancel_application, dismiss_application)
105
from astakos.im.settings import (
106
    COOKIE_DOMAIN, LOGOUT_NEXT,
107
    LOGGING_LEVEL, PAGINATE_BY,
108
    PAGINATE_BY_ALL,
109
    ACTIVATION_REDIRECT_URL,
110
    MODERATION_ENABLED)
111
from astakos.im import presentation
112
from astakos.im import settings
113
from astakos.im import auth_providers as auth
114
from snf_django.lib.db.transaction import commit_on_success_strict
59
from astakos.im.models import ProjectApplication
60
from astakos.im.util import get_context, restrict_next
61
from astakos.im.forms import ProjectApplicationForm, AddProjectMembersForm, \
62
    ProjectSearchForm
63
from astakos.im.functions import check_pending_app_quota, accept_membership, \
64
    reject_membership, remove_membership, cancel_membership, leave_project, \
65
    join_project, enroll_member, can_join_request, can_leave_request, \
66
    get_related_project_id, get_by_chain_or_404, approve_application, \
67
    deny_application, cancel_application, dismiss_application
68
from astakos.im.settings import COOKIE_DOMAIN, PAGINATE_BY
115 69
from astakos.im.ctx import ExceptionHandler
116
from astakos.im import quotas
117 70
from astakos.im.views.util import render_response, _create_object, \
118 71
    _update_object, _resources_catalog
119 72
from astakos.im.views.decorators import cookie_fix, signed_terms_required,\
120
    required_auth_methods_assigned, valid_astakos_user_required
73
    valid_astakos_user_required
121 74

  
122 75
logger = logging.getLogger(__name__)
123 76

  
b/snf-astakos-app/astakos/im/views/target/__init__.py
34 34
import json
35 35

  
36 36
from django.contrib import messages
37
from django.utils.translation import ugettext as _
38 37
from django.http import HttpResponseRedirect
39 38
from django.core.urlresolvers import reverse
40 39
from django.db import transaction
......
43 42
from astakos.im.util import get_query, login_url
44 43
from astakos.im import messages as astakos_messages
45 44
from astakos.im import auth_providers as auth
46
from astakos.im.util import prepare_response, get_context
47
from astakos.im.views.util import render_response
48
from astakos.im.views.decorators import requires_anonymous
45
from astakos.im.util import prepare_response
46

  
49 47
import logging
50 48

  
51 49
logger = logging.getLogger(__name__)
b/snf-astakos-app/astakos/im/views/target/google.py
33 33

  
34 34
import json
35 35

  
36
from django.http import HttpResponseBadRequest
37 36
from django.utils.translation import ugettext as _
38 37
from django.contrib import messages
39
from django.template import RequestContext
40 38
from django.views.decorators.http import require_http_methods
41 39
from django.http import HttpResponseRedirect
42 40
from django.core.urlresolvers import reverse
43
from django.core.exceptions import ImproperlyConfigured
44
from django.shortcuts import get_object_or_404
45 41

  
46
from urlparse import urlunsplit, urlsplit
47

  
48
from astakos.im.util import prepare_response, get_context, login_url
49
from astakos.im.settings import ENABLE_LOCAL_ACCOUNT_MIGRATION, BASEURL
50
from astakos.im.models import AstakosUser, PendingThirdPartyUser
51
from astakos.im.forms import LoginForm
52
from astakos.im.activation_backends import get_backend, SimpleBackend
42
from astakos.im.models import AstakosUser
53 43
from astakos.im import settings
54
from astakos.im import auth_providers
55
from astakos.im.views.target import add_pending_auth_provider, get_pending_key, \
44
from astakos.im.views.target import get_pending_key, \
56 45
    handle_third_party_signup, handle_third_party_login, init_third_party_session
57
from astakos.im.views.util import render_response
58
from astakos.im.views.decorators import cookie_fix, requires_anonymous, \
59
    requires_auth_provider
46
from astakos.im.views.decorators import cookie_fix, requires_auth_provider
60 47

  
61 48
import logging
62
import time
63
import astakos.im.messages as astakos_messages
64
import urlparse
65 49
import urllib
66 50

  
67 51
logger = logging.getLogger(__name__)
68 52

  
69 53
import oauth2 as oauth
70
import cgi
71 54

  
72 55
signature_method = oauth.SignatureMethod_HMAC_SHA1()
73 56

  
b/snf-astakos-app/astakos/im/views/target/linkedin.py
33 33

  
34 34
import json
35 35

  
36
from django.http import HttpResponseBadRequest
37
from django.utils.translation import ugettext as _
38 36
from django.contrib import messages
39
from django.template import RequestContext
40 37
from django.views.decorators.http import require_http_methods
41 38
from django.http import HttpResponseRedirect
42 39
from django.core.urlresolvers import reverse
43
from django.core.exceptions import ImproperlyConfigured
44
from django.shortcuts import get_object_or_404
45 40

  
46
from urlparse import urlunsplit, urlsplit
47

  
48
from astakos.im.util import prepare_response, get_context, login_url
49
from astakos.im.settings import ENABLE_LOCAL_ACCOUNT_MIGRATION, BASEURL
50
from astakos.im.models import AstakosUser, PendingThirdPartyUser
51
from astakos.im.forms import LoginForm
52
from astakos.im.activation_backends import get_backend, SimpleBackend
41
from astakos.im.models import AstakosUser
53 42
from astakos.im import settings
54
from astakos.im import auth_providers
55
from astakos.im.views.target import add_pending_auth_provider, get_pending_key, \
43
from astakos.im.views.target import get_pending_key, \
56 44
    handle_third_party_signup, handle_third_party_login, init_third_party_session
57
from astakos.im.views.util import render_response
58
from astakos.im.views.decorators import cookie_fix, requires_anonymous, \
45
from astakos.im.views.decorators import cookie_fix, \
59 46
    requires_auth_provider
60 47

  
61
import astakos.im.messages as astakos_messages
62

  
63 48
import logging
64 49

  
65 50
logger = logging.getLogger(__name__)
b/snf-astakos-app/astakos/im/views/target/local.py
44 44
import django.contrib.auth.views as django_auth_views
45 45

  
46 46
from astakos.im.util import prepare_response, get_query
47
from astakos.im.views.decorators import requires_anonymous, \
48
    signed_terms_required, requires_auth_provider
49 47
from astakos.im.models import PendingThirdPartyUser
50 48
from astakos.im.forms import LoginForm, ExtendedPasswordChangeForm, \
51 49
                             ExtendedSetPasswordForm
52
from astakos.im.settings import (RATELIMIT_RETRIES_ALLOWED,
53
                                ENABLE_LOCAL_ACCOUNT_MIGRATION)
50
from astakos.im.settings import RATELIMIT_RETRIES_ALLOWED
54 51
import astakos.im.messages as astakos_messages
55
from astakos.im import settings
56 52
from astakos.im import auth_providers as auth
57
from astakos.im.views.decorators import cookie_fix, signed_terms_required
53
from astakos.im.views.decorators import cookie_fix, requires_anonymous, \
54
    signed_terms_required, requires_auth_provider
58 55

  
59 56
from ratelimit.decorators import ratelimit
60 57

  
b/snf-astakos-app/astakos/im/views/target/shibboleth.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
import json
35

  
36 34
from django.conf import settings as global_settings
37
from django.http import HttpResponseBadRequest
38 35
from django.utils.translation import ugettext as _
39 36
from django.contrib import messages
40
from django.template import RequestContext
41 37
from django.views.decorators.http import require_http_methods
42 38
from django.http import HttpResponseRedirect
43
from django.core.urlresolvers import reverse
44
from django.core.exceptions import ImproperlyConfigured
45
from django.shortcuts import get_object_or_404
46

  
47
from urlparse import urlunsplit, urlsplit
48

  
49
from astakos.im.util import prepare_response, get_context, login_url
50
from astakos.im.settings import ENABLE_LOCAL_ACCOUNT_MIGRATION, BASEURL
51
from astakos.im.models import AstakosUser, PendingThirdPartyUser
52
from astakos.im.forms import LoginForm
53
from astakos.im.activation_backends import get_backend, SimpleBackend
54
from astakos.im import auth_providers
39

  
40
from astakos.im.util import login_url
41
from astakos.im.models import AstakosUser
55 42
from astakos.im import settings
56
from astakos.im.views.target import add_pending_auth_provider, get_pending_key, \
57
    handle_third_party_signup, handle_third_party_login, init_third_party_session
58
from astakos.im.views.util import render_response
59
from astakos.im.views.decorators import cookie_fix, requires_anonymous, \
60
    requires_auth_provider
43
from astakos.im.views.target import get_pending_key, \
44
    handle_third_party_signup, handle_third_party_login, \
45
    init_third_party_session
46
from astakos.im.views.decorators import cookie_fix, requires_auth_provider
61 47

  
62 48
import astakos.im.messages as astakos_messages
63 49
import logging
b/snf-astakos-app/astakos/im/views/target/twitter.py
31 31
# interpreted as representing official policies, either expressed
32 32
# or implied, of GRNET S.A.
33 33

  
34
import json
35 34
import logging
36 35

  
37
from django.http import HttpResponseBadRequest
38
from django.utils.translation import ugettext as _
39 36
from django.contrib import messages
40
from django.template import RequestContext
41 37
from django.views.decorators.http import require_http_methods
42 38
from django.http import HttpResponseRedirect, urlencode
43 39
from django.core.urlresolvers import reverse
44
from django.core.exceptions import ImproperlyConfigured
45
from django.shortcuts import get_object_or_404
46 40

  
47 41
from urlparse import urlunsplit, urlsplit, parse_qsl
48 42

  
49
from astakos.im.util import prepare_response, get_context, login_url
50
from astakos.im.settings import ENABLE_LOCAL_ACCOUNT_MIGRATION, BASEURL
51
from astakos.im.models import AstakosUser, PendingThirdPartyUser
52
from astakos.im.forms import LoginForm
53
from astakos.im.activation_backends import get_backend, SimpleBackend
43
from astakos.im.models import AstakosUser
54 44
from astakos.im import settings
55
from astakos.im import auth_providers
56
from astakos.im.views.target import add_pending_auth_provider, get_pending_key, \
57
    handle_third_party_signup, handle_third_party_login, init_third_party_session
58
from astakos.im.views.util import render_response
59
from astakos.im.views.decorators import cookie_fix, requires_anonymous, \
60
        requires_auth_provider, required_auth_methods_assigned
61

  
62
import astakos.im.messages as astakos_messages
45
from astakos.im.views.target import get_pending_key, \
46
    handle_third_party_signup, handle_third_party_login, \
47
    init_third_party_session
48
from astakos.im.views.decorators import cookie_fix, requires_auth_provider
63 49

  
64 50

  
65 51
logger = logging.getLogger(__name__)

Also available in: Unified diff