From 4df2b77fdf42046fe19bd371be7c7255986b5980 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Tue, 6 Mar 2012 13:36:39 +0100 Subject: renamed hooks to addons, new filemanager and database, many new api methods you will loose ALL your LINKS, webinterface will NOT work --- module/web/utils.py | 1 + 1 file changed, 1 insertion(+) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index a89c87558..5cb0cebdd 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -104,6 +104,7 @@ def login_required(perm=None): if s.get("name", None) and s.get("authenticated", False): if perm: perms = parse_permissions(s) + if perm not in perms or not perms[perm]: if request.headers.get('X-Requested-With') == 'XMLHttpRequest': return HTTPError(403, "Forbidden") -- cgit v1.2.3 From 84efa9d5ccd46a0adddc256a5eba4f8e33c76afd Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 7 May 2012 18:42:29 +0200 Subject: new multiuser api methods --- module/web/utils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 5cb0cebdd..ac4bdd4f8 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -20,7 +20,7 @@ from bottle import request, HTTPError, redirect, ServerAdapter from webinterface import env, TEMPLATE -from module.Api import has_permission, PERMS, ROLE +from module.Api import has_permission, Permission, Role def render_to_response(name, args={}, proc=[]): for p in proc: @@ -31,14 +31,14 @@ def render_to_response(name, args={}, proc=[]): def parse_permissions(session): - perms = dict([(x, False) for x in dir(PERMS) if not x.startswith("_")]) + perms = dict([(x, False) for x in dir(Permission) if not x.startswith("_")]) perms["ADMIN"] = False perms["is_admin"] = False if not session.get("authenticated", False): return perms - if session.get("role") == ROLE.ADMIN: + if session.get("role") == Role.Admin: for k in perms.iterkeys(): perms[k] = True @@ -50,7 +50,7 @@ def parse_permissions(session): def permlist(): - return [x for x in dir(PERMS) if not x.startswith("_") and x != "ALL"] + return [x for x in dir(Permission) if not x.startswith("_") and x != "ALL"] def get_permission(perms, p): @@ -60,7 +60,7 @@ def get_permission(perms, p): :param p: bits """ for name in permlist(): - perms[name] = has_permission(p, getattr(PERMS, name)) + perms[name] = has_permission(p, getattr(Permission, name)) def set_permission(perms): @@ -69,11 +69,11 @@ def set_permission(perms): :param perms: dict """ permission = 0 - for name in dir(PERMS): + for name in dir(Permission): if name.startswith("_"): continue if name in perms and perms[name]: - permission |= getattr(PERMS, name) + permission |= getattr(Permission, name) return permission -- cgit v1.2.3 From 829244a6140763712d50ed046c33f415f2b04301 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Tue, 15 May 2012 19:22:34 +0200 Subject: some multiuser db changes --- module/web/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index ac4bdd4f8..1641fdbba 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -50,7 +50,7 @@ def parse_permissions(session): def permlist(): - return [x for x in dir(Permission) if not x.startswith("_") and x != "ALL"] + return [x for x in dir(Permission) if not x.startswith("_") and x != "All"] def get_permission(perms, p): -- cgit v1.2.3 From a8f763fb85756f69899f7b3b71c01bb01461ee3c Mon Sep 17 00:00:00 2001 From: RaNaN Date: Fri, 10 Aug 2012 22:12:10 +0200 Subject: beginning new pyload web-ui from scratch --- module/web/utils.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 1641fdbba..364f12bf4 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -25,8 +25,7 @@ from module.Api import has_permission, Permission, Role def render_to_response(name, args={}, proc=[]): for p in proc: args.update(p()) - - t = env.get_template(TEMPLATE + "/" + name) + t = env.get_or_select_template((TEMPLATE + "/" + name, "default/" + name)) return t.render(**args) @@ -123,13 +122,6 @@ def login_required(perm=None): return _dec -def toDict(obj): - ret = {} - for att in obj.__slots__: - ret[att] = getattr(obj, att) - return ret - - class CherryPyWSGI(ServerAdapter): def run(self, handler): from wsgiserver import CherryPyWSGIServer -- cgit v1.2.3 From 941e3021000e59020f66419cc2156aee30972121 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 13 Aug 2012 17:40:10 +0200 Subject: working login --- module/web/utils.py | 83 +++++++++-------------------------------------------- 1 file changed, 14 insertions(+), 69 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 364f12bf4..43847b6c8 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -12,15 +12,13 @@ See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this plrogram; if not, see . + along with this program; if not, see . @author: RaNaN """ from bottle import request, HTTPError, redirect, ServerAdapter -from webinterface import env, TEMPLATE - -from module.Api import has_permission, Permission, Role +from webinterface import env, TEMPLATE, PYLOAD def render_to_response(name, args={}, proc=[]): for p in proc: @@ -29,87 +27,34 @@ def render_to_response(name, args={}, proc=[]): return t.render(**args) -def parse_permissions(session): - perms = dict([(x, False) for x in dir(Permission) if not x.startswith("_")]) - perms["ADMIN"] = False - perms["is_admin"] = False - - if not session.get("authenticated", False): - return perms - - if session.get("role") == Role.Admin: - for k in perms.iterkeys(): - perms[k] = True - - elif session.get("perms"): - p = session.get("perms") - get_permission(perms, p) - - return perms - - -def permlist(): - return [x for x in dir(Permission) if not x.startswith("_") and x != "All"] - - -def get_permission(perms, p): - """Returns a dict with permission key - - :param perms: dictionary - :param p: bits - """ - for name in permlist(): - perms[name] = has_permission(p, getattr(Permission, name)) - - -def set_permission(perms): - """generates permission bits from dictionary - - :param perms: dict - """ - permission = 0 - for name in dir(Permission): - if name.startswith("_"): continue - - if name in perms and perms[name]: - permission |= getattr(Permission, name) - - return permission - - -def set_session(request, info): +def set_session(request, user): s = request.environ.get('beaker.session') - s["authenticated"] = True - s["user_id"] = info["id"] - s["name"] = info["name"] - s["role"] = info["role"] - s["perms"] = info["permission"] - s["template"] = info["template"] + s["uid"] = user.uid s.save() - return s +def get_user_api(s): + uid = s.get("uid", None) + if uid is not None: + api = PYLOAD.withUserContext(uid) + return api -def parse_userdata(session): - return {"name": session.get("name", "Anonymous"), - "is_admin": True if session.get("role", 1) == 0 else False, - "is_authenticated": session.get("authenticated", False)} - + return None def login_required(perm=None): def _dec(func): def _view(*args, **kwargs): s = request.environ.get('beaker.session') - if s.get("name", None) and s.get("authenticated", False): + api = get_user_api(s) + if api is not None: if perm: - perms = parse_permissions(s) - - if perm not in perms or not perms[perm]: + if api.user.hasPermission(perm): if request.headers.get('X-Requested-With') == 'XMLHttpRequest': return HTTPError(403, "Forbidden") else: return redirect("/nopermission") + kwargs["api"] = api return func(*args, **kwargs) else: if request.headers.get('X-Requested-With') == 'XMLHttpRequest': -- cgit v1.2.3 From d8119f648e63a4728433e67e79d2a99296a8c2c1 Mon Sep 17 00:00:00 2001 From: godofdream Date: Thu, 16 Aug 2012 17:48:39 +0200 Subject: Added Mobile WebIf, some Layouting --- module/web/utils.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 43847b6c8..88cc75542 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -16,6 +16,7 @@ @author: RaNaN """ +import re from bottle import request, HTTPError, redirect, ServerAdapter from webinterface import env, TEMPLATE, PYLOAD @@ -38,9 +39,35 @@ def get_user_api(s): if uid is not None: api = PYLOAD.withUserContext(uid) return api - return None +def is_mobile(): + if request.get_cookie("mobile"): + if request.get_cookie("mobile") == "True": + return True + else: + return False + mobile_ua = request.headers.get('User-Agent').lower() + if (mobile_ua.find('opera mini') > 0): + return True + if (mobile_ua.find('windows') > 0): + return False + if (request.headers.get('Accept').lower().find('application/vnd.wap.xhtml+xml') > 0): + return True + if (re.search('(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)', mobile_ua) is not None): + return True + mobile_ua = mobile_ua[:4] + mobile_agents = ['w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac','blaz','brew','cell','cldc','cmd-', + 'dang','doco','eric','hipt','inno','ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-', + 'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-','newt','noki','palm','pana','pant', + 'phil','play','port','prox','qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar','sie-', + 'siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-','tosh','tsm-','upg1','upsi','vk-v','voda', + 'wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda ','xda-'] + if (mobile_ua in mobile_agents): + return True + return False + + def login_required(perm=None): def _dec(func): def _view(*args, **kwargs): -- cgit v1.2.3 From 7bc7de7332670f692eda576787e671c2eba0e5bb Mon Sep 17 00:00:00 2001 From: godofdream Date: Fri, 17 Aug 2012 01:29:03 +0200 Subject: added division into default template and mobile template, added Base site --- module/web/utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 88cc75542..1a15a8a00 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -19,12 +19,15 @@ import re from bottle import request, HTTPError, redirect, ServerAdapter -from webinterface import env, TEMPLATE, PYLOAD - +from webinterface import env, TEMPLATE, TEMPLATE_MOBILE, PYLOAD +# TODO: useful but needs a rewrite, too def render_to_response(name, args={}, proc=[]): for p in proc: args.update(p()) - t = env.get_or_select_template((TEMPLATE + "/" + name, "default/" + name)) + if is_mobile(): + t = env.get_or_select_template((TEMPLATE_MOBILE + "/" + name,"default_mobile/" + name)) + else: + t = env.get_or_select_template((TEMPLATE + "/" + name, "default/" + name)) return t.render(**args) -- cgit v1.2.3 From 89e803a1e8364a3d32dcdb2ff445959723b974b1 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Fri, 17 Aug 2012 16:25:49 +0200 Subject: completed renaming --- module/web/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index 1a15a8a00..d0c782b68 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -19,13 +19,14 @@ import re from bottle import request, HTTPError, redirect, ServerAdapter -from webinterface import env, TEMPLATE, TEMPLATE_MOBILE, PYLOAD +from webinterface import env, TEMPLATE, PYLOAD + # TODO: useful but needs a rewrite, too def render_to_response(name, args={}, proc=[]): for p in proc: args.update(p()) if is_mobile(): - t = env.get_or_select_template((TEMPLATE_MOBILE + "/" + name,"default_mobile/" + name)) + t = env.get_or_select_template(("mobile/" + name,)) else: t = env.get_or_select_template((TEMPLATE + "/" + name, "default/" + name)) return t.render(**args) -- cgit v1.2.3 From cd99410a04685bbffed04091a7ad03e017140277 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Mon, 10 Sep 2012 13:36:09 +0200 Subject: cosmetic fixed, changed default server to threaded --- module/web/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'module/web/utils.py') diff --git a/module/web/utils.py b/module/web/utils.py index d0c782b68..967fc3412 100644 --- a/module/web/utils.py +++ b/module/web/utils.py @@ -51,14 +51,14 @@ def is_mobile(): return True else: return False - mobile_ua = request.headers.get('User-Agent').lower() - if (mobile_ua.find('opera mini') > 0): + mobile_ua = request.headers.get('User-Agent', '').lower() + if mobile_ua.find('opera mini') > 0: return True - if (mobile_ua.find('windows') > 0): + if mobile_ua.find('windows') > 0: return False - if (request.headers.get('Accept').lower().find('application/vnd.wap.xhtml+xml') > 0): + if request.headers.get('Accept', '').lower().find('application/vnd.wap.xhtml+xml') > 0: return True - if (re.search('(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)', mobile_ua) is not None): + if re.search('(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)', mobile_ua) is not None: return True mobile_ua = mobile_ua[:4] mobile_agents = ['w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac','blaz','brew','cell','cldc','cmd-', @@ -67,7 +67,7 @@ def is_mobile(): 'phil','play','port','prox','qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar','sie-', 'siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-','tosh','tsm-','upg1','upsi','vk-v','voda', 'wap-','wapa','wapi','wapp','wapr','webc','winw','winw','xda ','xda-'] - if (mobile_ua in mobile_agents): + if mobile_ua in mobile_agents: return True return False -- cgit v1.2.3