def after_update(self, context, pkg_dict): is_suitable = twitter_helpers.twitter_pkg_suitable(context, pkg_dict['id']) if is_suitable: try: session.pop('twitter_is_suitable', '') session.setdefault('twitter_is_suitable', pkg_dict['id']) session.save() except TypeError: print "session not iterable"
def logged_in(self): # we need to set the language via a redirect lang = session.pop('lang', None) session.save() came_from = request.params.get('came_from', '') # we need to set the language explicitly here or the flash # messages will not be translated. i18n.set_lang(lang) if c.user: context = None data_dict = {'id': c.user} user_dict = get_action('user_show')(context, data_dict) h.flash_success( _("%s is now logged in") % user_dict['display_name']) if came_from: return h.redirect_to(str(came_from)) return self.me() else: err = _('Login failed. Bad username or password.') if g.openid_enabled: err += _(' (Or if using OpenID, it hasn\'t been associated ' 'with a user account.)') if h.asbool(config.get('ckan.legacy_templates', 'false')): h.flash_error(err) h.redirect_to(locale=lang, controller='user', action='login', came_from=came_from) else: return self.login(error=err)
def login(self, error=None): lang = session.pop('lang', None) if lang: session.save() return h.redirect_to(locale=str(lang), controller='user', action='login') # Do any plugin login stuff for item in p.PluginImplementations(p.IAuthenticator): item.login() if 'error' in request.params: h.flash_error(request.params['error']) if request.environ['SCRIPT_NAME'] and g.openid_enabled: # #1662 restriction log.warn('Cannot mount CKAN at a URL and login with OpenID.') g.openid_enabled = False if not c.user: came_from = request.params.get('came_from', '') c.login_handler = h.url_for( self._get_repoze_handler('login_handler_path'), came_from=came_from) if error: vars = {'error_summary': {'': error}} else: vars = {} return render('user/login.html', extra_vars=vars) else: return render('user/logout_first.html')
def logged_in(self): # we need to set the language via a redirect lang = session.pop('lang', None) session.save() came_from = request.params.get('came_from', '') # we need to set the language explicitly here or the flash # messages will not be translated. i18n.set_lang(lang) if c.user: context = None data_dict = {'id': c.user} user_dict = get_action('user_show')(context, data_dict) h.flash_success(_("%s is now logged in") % user_dict['display_name']) if came_from: return h.redirect_to(str(came_from)) return self.me() else: err = _('Login failed. Bad username or password.') if g.openid_enabled: err += _(' (Or if using OpenID, it hasn\'t been associated ' 'with a user account.)') if h.asbool(config.get('ckan.legacy_templates', 'false')): h.flash_error(err) h.redirect_to(locale=lang, controller='user', action='login', came_from=came_from) else: return self.login(error=err)
def login(self, error=None): lang = session.pop('lang', None) if lang: session.save() return h.redirect_to(locale=str(lang), controller='user', action='login') if 'error' in request.params: h.flash_error(request.params['error']) if request.environ['SCRIPT_NAME'] and g.openid_enabled: # #1662 restriction log.warn('Cannot mount CKAN at a URL and login with OpenID.') g.openid_enabled = False if not c.user: came_from = request.params.get('came_from', '') c.login_handler = h.url_for( self._get_repoze_handler('login_handler_path'), came_from=came_from) if error: vars = {'error_summary': {'': error}} else: vars = {} return render('user/login.html', extra_vars=vars) else: return render('user/logout_first.html')
def callback(): logger.info('callback(): user=%s request.params=%s', c.userobj, request.params) try: check_access('orcid_callback', _make_context()) except logic.NotAuthorized as ex: return Response('Not authorized', status=403, content_type='text/plain') if not ('orcid' in session) or not ('state' in session['orcid']): return Response('No state for this authorization request!', status=403, content_type='text/plain') now = long(time.time()) state, state_expires_at = session['orcid']['state'] if state_expires_at < now: return Response('The authorization request has expired!', status=400, content_type='text/plain') if request.params.get('state') != state: return Response('The request state is invalid', status=400, content_type='text/plain') authorization_code = request.params.get('code') r = _exchange_code_with_token(authorization_code) orcid_identifier = r['orcid'] access_token = r['access_token'] refresh_token = r['refresh_token'] access_expires_at = now + long(r['expires_in']) scope = r['scope'] logger.info( 'Acquired token for user %s: orcid_identifier=%s access_token=%s scope=%r', c.user, orcid_identifier, access_token, scope) # Assosicate user with ORCID information (identifier and access tokens) save_orcid_for_user(c.userobj.id, orcid_identifier, access_token, refresh_token, now, access_expires_at) # Fetch person info (invoke ORCID member API) person_info = get_person_info(orcid_identifier, access_token) # Redirect to return page return_url = None try: return_url = session.pop('return_to') except KeyError as ex: return_url = toolkit.url_for('user.read', id=c.user) logger.info("callback(): Redirecting to %s", return_url) return toolkit.redirect_to(return_url)
def tweet_ready(self, package_id): ''' Checks the session to see if the package has been marked as ready for tweeting via the update hook. Removes the 'twitter_is_suitable' key from the session if present. :param package_id: The package ID. :return: boolean ''' in_session = session.pop('twitter_is_suitable', '') == package_id return in_session