# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors # MIT License. See license.txt import webnotes from webnotes.webutils import get_access doctype = "Website Group" no_cache = 1 def get_context(controller, page_options): group, view = guess_group_view(controller, page_options) try: if not has_access(group, view): raise webnotes.PermissionError context = get_initial_context(group, view, controller) context["access"] = get_access(group) context["content"] = get_content(context) return context except webnotes.DoesNotExistError: return { "content": '
' 'The page you are looking for does not exist.
' } except webnotes.PermissionError: return { "content": '
' 'You are not permitted to view this page.
' } def get_initial_context(group, view, controller): def _get_initial_context(): if controller: group = controller.doc else: group = webnotes.doc("Website Group", group) # move all this to webutils parents = webnotes.conn.sql("""select name, unit_title from tabUnit where lft < %s and rgt > %s order by lft asc""", (unit.lft, unit.rgt), as_dict=1) # update title title = unit.unit_title views = get_views(unit) view_options = views.get(view, {}) if view_options: title += " - " + view_options["label"] views = sorted([opts for v, opts in views.items()], key=lambda d: d.get("idx")) context = { "name": unit.name, "public_read": unit.public_read, "title": "Aam Aadmi Party: " + title, "unit_title": title, "public_write": unit.public_write, "parents": parents, "children": get_child_unit_items(unit.name, public_read=1), "unit": unit.fields, "view": view, "views": views, "view_options": view_options } return context if webnotes.conf.get("disable_website_cache"): return _get_unit_context(unit, view) return webnotes.cache().get_value("unit_context:{unit}:{view}".format(unit=unit.lower(), view=view), lambda:_get_unit_context(unit, view)) def get_content(context): pass def guess_group_view(controller, page_options): group = page_options.docname view = None pathname = webnotes.request.path[1:] if "/" in pathname: view = pathname.split("/", 1)[1] if not view: get_views = webnotes.get_hooks("website_group_views:{}".controller.doc.group_type) if get_views: for v, opts in webnotes.get_attr(get_views)(group).items(): if opts.get("default"): view = v break return group, view def has_access(group, view): access = get_access(group) if view=="settings": return access.get("admin") elif view in ("add", "edit"): return access.get("write") else: return access.get("read")