def list_user_groups(user, check_enable=True): groups = [] appended_groups = [] for d in frappe.db.get_values("Cloud Company GroupUser", {"user": user}, ["parent", "role", "modified", "creation"]): if frappe.get_value("Cloud Company Group", d[0], "enabled"): groups.append( _dict({ "name": d[0], "role": d[1], "modified": d[2], "creation": d[3], "user": user })) appended_groups.append(d[0]) for comp in list_admin_companies(user): for d in frappe.db.get_values("Cloud Company Group", { "company": comp, "enabled": 1 }, "name"): if d[0] not in appended_groups: groups.append( _dict({ "name": d[0], "role": "Admin", "user": user })) return groups
def remove(name): try: valid_auth_code() company = frappe.get_value("IOT Application Conf", name, "company") if not company: throw("application_not_found") if company not in list_admin_companies(frappe.session.user): throw("invalid_permission") if frappe.get_value("IOT Application Conf", name, "public") == 1: throw("public_application_conf_cannot_be_deleted!") doc = frappe.get_doc("IOT Application Conf", name) doc.clean_before_delete() frappe.delete_doc("IOT Application Conf", name) frappe.response.update({ "ok": True, "message": "configuration_removed" }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def list(): try: valid_auth_code() data = list_admin_companies(frappe.session.user) frappe.response.update({"ok": True, "data": data}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def get_permission_query_conditions(user): if 'Cloud Manager' in frappe.get_roles(user): return "" ent_list = list_admin_companies(user) return """(`tabCloud Company Group`.company in ({user_ents}))""".format( user_ents='"' + '", "'.join(ent_list) + '"')
def get_permission_query_conditions(user): if 'Cloud Manager' in frappe.get_roles(user): return "" from cloud.cloud.doctype.cloud_company.cloud_company import list_admin_companies ent_list = list_admin_companies(user) return """(`tabCloud Employee`.company in ({user_ents}))""".format( user_ents='"' + '", "'.join(ent_list) + '"')
def list_admin_projects(user, check_enable=True): ent_list = list_admin_companies(user) if len(ent_list) == 0: return [] filters = {"company": ["in", ent_list]} if check_enable: filters["enabled"] = 1 return [ d[0] for d in frappe.db.get_values("Cloud Project", filters=filters) ]
def validate_owner(name): companies = list_admin_companies(frappe.session.user) user = frappe.get_value("IOT User Application", name, "on_behalf") if not user: throw("pusher_on_behalf_missing") company = frappe.get_value("Cloud Employee", user, "company") if not company: throw("pusher_on_behalf_user_company") if company not in companies: throw("pusher_not_yours")
def is_user_in_group(group, user): if 'Company Admin' in frappe.get_roles(user): company = frappe.get_value("Cloud Company Group", group, "company") if company in list_admin_companies(user): return True if frappe.get_value("Cloud Company GroupUser", { "user": user, "parent": group }, "name"): return True return False
def update(): try: valid_auth_code() data = get_post_json_data() companies = list_admin_companies(frappe.session.user) if frappe.get_value("IOT Application", data.get('name'), 'company') not in companies: throw("invalid_permission") update_doc("IOT Application", data) frappe.response.update({"ok": True, "message": "application_updated"}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def get_permission_query_conditions(user): """ Show devices for Company Administrator :param user: :return: """ if 'IOT Manager' in frappe.get_roles(user): return "" from cloud.cloud.doctype.cloud_company.cloud_company import list_admin_companies ent_list = list_admin_companies(user) return """(`tabIOT Device`.company in ({user_ents}))""".format( user_ents='"' + '", "'.join(ent_list) + '"')
def list(conf_type='Template'): try: valid_auth_code() apps = [] companies = list_admin_companies(frappe.session.user) filters = {"company": ["in", companies], "type": conf_type} for d in frappe.get_all("IOT Application Conf", "name", filters=filters, order_by="modified desc"): apps.append(as_dict(frappe.get_doc("IOT Application Conf", d.name))) frappe.response.update({ "ok": True, "data": apps }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def get_project_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by="modified desc"): ent_list = list_admin_companies(frappe.session.user) return frappe.db.sql('''select * from `tabCloud Project` where company in {2} order by %(order_by)s limit {0}, {1} '''.format(limit_start, limit_page_length, "('" + "','".join(ent_list) + "')"), {'order_by': order_by}, as_dict=True, update={'doctype': 'Cloud Project'})
def list(): try: valid_auth_code() data = [] if 'Cloud Manager' in frappe.get_roles(): data = [d[0] for d in frappe.db.get_values("Cloud Company", {"enabled": 1}, "name")] else: data = list_admin_companies(frappe.session.user) frappe.response.update({ "ok": True, "data": data }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def list(): try: valid_auth_code() apps = [] companies = list_admin_companies(frappe.session.user) filters = {"company": ["in", companies]} for d in frappe.get_all("IOT Application", "name", filters=filters, order_by="modified desc"): apps.append( get_doc_as_dict("IOT Application", d.name, include_tags=True)) for app in apps: app.installed = frappe.get_value("IOT Application Counter", app.name, "installed") or 0 frappe.response.update({"ok": True, "data": apps}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def list(): try: if 'Company Admin' not in frappe.get_roles(): throw("not_company_admin") companies = list_admin_companies(frappe.session.user) apps = [] for d in frappe.get_all("IOT User Application", "name"): user = frappe.get_value("IOT User Application", d[0], "on_behalf") if not user: continue company = frappe.get_value("Cloud Employee", user, "company") if not company: continue if company in companies: apps.append( as_dict(frappe.get_doc("IOT User Application", d.name))) frappe.response.update({"ok": True, "data": apps}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def is_company_admin(user, company): return company in list_admin_companies(user)