def __init__(self, uid=None, force=False): """ Keeps information about user. """ def on_update(self): """ Changes own status when the user info is modified. """ self.modified = True self.modified = False self.uid = uid self.req = self._get_request_info() acc = {} if uid > 0: data = self._login(uid, force) acc = self._precache(data, force) else: data = self._create_guest() self.info = CallbackDict(data, on_update) #FIXME remove req after everybody start using flask request. CombinedMultiDict.__init__( self, [self.req, self.info, acc, dict(CFG_USER_DEFAULT_INFO)]) self.save()
def _get_mimetype_params(self): def on_update(d): self.headers["Content-Type"] = dump_options_header( self.mimetype, d) d = parse_options_header(self.headers.get("content-type", ""))[1] return CallbackDict(d, on_update)
def _get_mimetype_params(self): def on_update(d): self.headers['Content-Type'] = \ dump_options_header(self.mimetype, d) d = parse_options_header(self.headers.get('content-type', ''))[1] return CallbackDict(d, on_update)
def mimetype_params(self) -> Dict[str, str]: """Returns the params parsed from the Content-Type header.""" def _on_update(value: Dict[str, Any]) -> None: self.headers["Content-Type"] = dump_options_header( self.mimetype, value) value = parse_options_header(self.headers.get("Content-Type"))[1] return CallbackDict(value, _on_update)
def __init__( self, name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, login_url=None, authorized_url=None, storage=None, ): bp_kwargs = dict( name=name, import_name=import_name, static_folder=static_folder, static_url_path=static_url_path, template_folder=template_folder, url_prefix=url_prefix, subdomain=subdomain, url_defaults=url_defaults, root_path=root_path, ) # `root_path` didn't exist in 0.10, and will cause an error if it's # passed in that version. Only pass `root_path` if it's set. if bp_kwargs["root_path"] is None: del bp_kwargs["root_path"] flask.Blueprint.__init__(self, **bp_kwargs) login_url = login_url or "/{bp.name}" authorized_url = authorized_url or "/{bp.name}/authorized" self.add_url_rule(rule=login_url.format(bp=self), endpoint="login", view_func=self.login) self.add_url_rule( rule=authorized_url.format(bp=self), endpoint="authorized", view_func=self.authorized, ) if storage is None: self.storage = SessionStorage() elif callable(storage): self.storage = storage() else: self.storage = storage self.logged_in_funcs = [] self.from_config = {} invalidate_token = lambda d: invalidate_cached_property( self.session, "token") self.config = CallbackDict(on_update=invalidate_token) self.before_app_request(self.load_config)
def mimetype_params(self) -> t.Dict[str, str]: """The mimetype parameters as dict. For example if the content type is ``text/html; charset=utf-8`` the params would be ``{'charset': 'utf-8'}``. .. versionadded:: 0.5 """ def on_update(d): self.headers["Content-Type"] = dump_options_header( self.mimetype, d) d = parse_options_header(self.headers.get("content-type", ""))[1] return CallbackDict(d, on_update)
def propfunc(self): _prop = '_' + prop prop_f = prop + '_f' if hasattr(self, _prop): return getattr(self, _prop) def on_update(cd): setattr(self, prop_f, pickle.dumps(dict(cd))) d = {} try: d = pickle.loads(getattr(self, prop_f)) except: pass setattr(self, _prop, CallbackDict(d, on_update=on_update)) return getattr(self, _prop)
def __init__(self, name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, login_url=None, authorized_url=None, backend=None): bp_kwargs = dict( name=name, import_name=import_name, static_folder=static_folder, static_url_path=static_url_path, template_folder=template_folder, url_prefix=url_prefix, subdomain=subdomain, url_defaults=url_defaults, root_path=root_path, ) # `root_path` didn't exist until 1.0 if StrictVersion(flask.__version__) < StrictVersion('1.0'): del bp_kwargs["root_path"] flask.Blueprint.__init__(self, **bp_kwargs) login_url = login_url or "/{bp.name}" authorized_url = authorized_url or "/{bp.name}/authorized" self.add_url_rule( rule=login_url.format(bp=self), endpoint="login", view_func=self.login, ) self.add_url_rule( rule=authorized_url.format(bp=self), endpoint="authorized", view_func=self.authorized, ) if backend is None: self.backend = SessionBackend() elif callable(backend): self.backend = backend() else: self.backend = backend self.logged_in_funcs = [] self.from_config = {} invalidate_token = lambda d: lazy.invalidate(self.session, "token") self.config = CallbackDict(on_update=invalidate_token) self.before_app_request(self.load_config)
def extra(self): if hasattr(self, '_extra_f'): return self._extra_f def on_update(d): try: self.extra_f = json.dumps(d) except: pass _extra_fdict = {} try: _extra_fdict = json.loads(self.extra_f) except: pass self._extra_f = CallbackDict(_extra_fdict, on_update=on_update) return self._extra_f
def __init__( self, name, import_name, *, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, login_url=None, authorized_url=None, storage=None, rule_kwargs=None, ): bp_kwargs = dict( name=name, import_name=import_name, static_folder=static_folder, static_url_path=static_url_path, template_folder=template_folder, url_prefix=url_prefix, subdomain=subdomain, url_defaults=url_defaults, root_path=root_path, ) flask.Blueprint.__init__(self, **bp_kwargs) login_url = login_url or "/{bp.name}" authorized_url = authorized_url or "/{bp.name}/authorized" rule_kwargs = rule_kwargs or {} self.add_url_rule( rule=login_url.format(bp=self), endpoint="login", view_func=self.login, **rule_kwargs, ) self.add_url_rule( rule=authorized_url.format(bp=self), endpoint="authorized", view_func=self.authorized, **rule_kwargs, ) if storage is None: self.storage = SessionStorage() elif callable(storage): self.storage = storage() else: self.storage = storage self.logged_in_funcs = [] self.from_config = {} def invalidate_token(d): try: invalidate_cached_property(self.session, "token") except KeyError: pass self.config = CallbackDict(on_update=invalidate_token) self.before_app_request(self.load_config)