def get_social_autologin(request, discussion=None, next_view=None): """Look for a mandatory social login""" discussion = discussion or discussion_from_request(request) if discussion: preferences = discussion.preferences else: preferences = Preferences.get_default_preferences() auto_login_backend = preferences['authorization_server_backend'] landing_page = preferences['landing_page'] if not auto_login_backend: return None next_view = next_view or request.params.get('next', None) if discussion and not next_view: if landing_page: next_view = request.route_path('new_home', discussion_slug=discussion.slug) else: next_view = request.route_path('home', discussion_slug=discussion.slug) query = {"next": next_view} if ":" in auto_login_backend: auto_login_backend, provider = auto_login_backend.split(":", 1) query['idp'] = provider if discussion: return request.route_url( "contextual_social.auth", discussion_slug=discussion.slug, backend=auto_login_backend, _query=query) else: return request.route_url( "social.auth", backend=auto_login_backend, _query=query)
def default_preferences(request, test_session): from assembl.models import Preferences prefs = Preferences.get_default_preferences() test_session.add(prefs) test_session.flush() def fin(): print "finalizer default_preferences" test_session.delete(prefs) test_session.flush() request.addfinalizer(fin) return prefs
def default_preferences(request, test_session): """A Preference fixture with default settings""" from assembl.models import Preferences prefs = Preferences.get_default_preferences() test_session.add(prefs) test_session.flush() def fin(): print("finalizer default_preferences") test_session.delete(prefs) test_session.flush() request.addfinalizer(fin) return prefs
def default_preferences(request, test_session, base_registry): """A Preference fixture with default settings""" from assembl.models import Preferences from assembl.auth.social_auth import adjust_settings settings = base_registry.settings adjust_settings(settings) Preferences.init_from_settings(settings) prefs = Preferences.get_default_preferences() test_session.add(prefs) test_session.flush() def fin(): print "finalizer default_preferences" test_session.delete(prefs) test_session.flush() request.addfinalizer(fin) return prefs
def default_preferences(request, test_session, base_registry): """A Preference fixture with default settings""" from assembl.models import Preferences from assembl.auth.social_auth import adjust_settings settings = base_registry.settings adjust_settings(settings) Preferences.init_from_settings(settings) prefs = Preferences.get_default_preferences() test_session.add(prefs) test_session.flush() def fin(): print("finalizer default_preferences") test_session.delete(prefs) test_session.flush() request.addfinalizer(fin) return prefs
def get_social_autologin(request, discussion=None, next_view=None): """Look for a mandatory social login :param discussion: The discussion object :param next_view: None|Boolean|string The potential next_view to be appended """ discussion = discussion or discussion_from_request(request) if discussion: preferences = discussion.preferences else: preferences = Preferences.get_default_preferences() auto_login_backend = preferences['authorization_server_backend'] landing_page = preferences['landing_page'] if not auto_login_backend: return None use_next_view = True if next_view is False: use_next_view = False next_view = sanitize_next_view(next_view or request.params.get('next', None)) if discussion and not next_view and use_next_view: if landing_page: next_view = request.route_path('new_home', discussion_slug=discussion.slug) # TODO: This path should be removed else: next_view = request.route_path('home', discussion_slug=discussion.slug) if use_next_view: query = {"next": next_view} else: query = {} if ":" in auto_login_backend: auto_login_backend, provider = auto_login_backend.split(":", 1) query['idp'] = provider if discussion: return request.route_url("contextual_social.auth", discussion_slug=discussion.slug, backend=auto_login_backend, _query=query) else: return request.route_url("social.auth", backend=auto_login_backend, _query=query)
def get_social_autologin(request, discussion=None, next_view=None): """Look for a mandatory social login :param discussion: The discussion object :param next_view: None|Boolean|string The potential next_view to be appended """ discussion = discussion or discussion_from_request(request) if discussion: preferences = discussion.preferences else: preferences = Preferences.get_default_preferences() auto_login_backend = preferences['authorization_server_backend'] landing_page = preferences['landing_page'] if not auto_login_backend: return None use_next_view = True if next_view is False: use_next_view = False next_view = sanitize_next_view(next_view or request.params.get('next', None)) if discussion and not next_view and use_next_view: if landing_page: next_view = request.route_path('new_home', discussion_slug=discussion.slug) else: next_view = request.route_path('home', discussion_slug=discussion.slug) if use_next_view: query = {"next": next_view} else: query = {} if ":" in auto_login_backend: auto_login_backend, provider = auto_login_backend.split(":", 1) query['idp'] = provider if discussion: return request.route_url( "contextual_social.auth", discussion_slug=discussion.slug, backend=auto_login_backend, _query=query) else: return request.route_url( "social.auth", backend=auto_login_backend, _query=query)
def base_admin_view(request): """The Base admin view, for frontend urls""" user_id = authenticated_userid(request) or Everyone if user_id == Everyone: raise HTTPUnauthorized() context = get_default_context(request) session = Discussion.default_db preferences = Preferences.get_default_preferences(session) user = User.get(user_id) if '_LOCALE_' in request.cookies: locale = request.cookies['_LOCALE_'] process_locale(locale, user, session, LanguagePreferenceOrder.Cookie) elif '_LOCALE_' in request.params: locale = request.params['_LOCALE_'] process_locale(locale, user, session, LanguagePreferenceOrder.Parameter) else: locale = request.locale_name process_locale(locale, user, session, LanguagePreferenceOrder.OS_Default) target_locale = strip_country(locale) locale_labels = json.dumps( DummyGoogleTranslationService.target_locale_labels_cls(target_locale)) context['translation_locale_names_json'] = locale_labels role_names = [x for (x, ) in session.query(Role.name).all()] permission_names = [x for (x, ) in session.query(Permission.name).all()] context['role_names'] = json.dumps(role_names) context['permission_names'] = json.dumps(permission_names) context['discussion'] = PseudoDiscussion() response = render_to_response('../../templates/adminIndex.jinja2', context, request=request) # Prevent caching the home, especially for proper login/logout response.cache_control.max_age = 0 response.cache_control.prevent_auto = True return response
def get_preferences(self): discussion = discussion_from_request(self.request) if discussion: return discussion.preferences else: return Preferences.get_default_preferences()