def create(): try: valid_auth_code() data = get_post_json_data() # TODO: Enable all employee to create/edit/delete for now! # if 'Company Admin' not in frappe.get_roles(): # throw("only_admin_can_create_shared_group") # if frappe.get_value("Cloud Company", data.get('company'), "admin") != frappe.session.user: # throw("you_are_not_admin_of_this_company") if not data.get("group_name"): throw("group_name_missing") if not data.get("company"): throw("company_id_missing") data.update({ "doctype": "IOT Share Group", }) doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": doc.name}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def remove(): try: valid_auth_code() warns = [] devices = (get_post_json_data()['name']) if isinstance(devices, string_types): devices = [devices] for sn in devices: try: doc = frappe.get_doc("IOT Device", sn) doc.update_owner("", None) except Exception as ex: warns.append(str(ex)) if len(warns) > 0: frappe.response.update({ "ok": True, "warning": warns }) else: frappe.response.update({ "ok": True, }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def list(filters=[]): try: valid_auth_code() # data = get_sidebar_stats(stats="_user_tags", doctype='IOT Application') # # frappe.response.update({ # "ok": True, # "data": data.get('stats').get('_user_tags') # }) _user_tags = [] if frappe.request and frappe.request.method == "POST": data = get_post_json_data() filters = data.get("filters") or [] for tag in frappe.get_all("Tag Link", filters={"document_type": 'IOT Application'}, fields=["tag"]): tag_filters = [] tag_filters.extend(filters) tag_filters.extend([['Tag Link', 'tag', '=', tag.tag]]) count = frappe.get_all('IOT Application', filters=tag_filters, fields=["count(*)"]) if count[0].get("count(*)") > 0: _user_tags.append([tag.tag, count[0].get("count(*)")]) frappe.response.update({"ok": True, "data": _user_tags}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def create(): try: valid_auth_code() data = get_post_json_data() if not data.get("comp_name"): throw("company_name_missing") if not data.get("domain"): throw("domain_missing") data.update({ "doctype": "Cloud Company", "admin": frappe.session.user, "enabled": 0, "wechat": 0 }) doc = frappe.get_doc(data).insert() frappe.response.update({ "ok": True, "data": doc.name }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def invite(): try: valid_auth_code() data = get_post_json_data() if 'Company Admin' not in frappe.get_roles(): throw("only_admin_can_create_employee") if not data.get("user"): throw("user_id_missing") if not data.get("company"): throw("company_id_missing") if frappe.get_value("Cloud Company", data.get('company'), "admin") != frappe.session.user: throw("you_are_not_admin_of_this_company") if frappe.get_value("Cloud Employee", data.get("user")): throw("user_is_already_joined_other_company") to_find = {"user": data.get('user'), "company": data.get('company')} if frappe.get_value("Cloud Employee Invitation", to_find, "docstatus") == 0: throw("user_has_been_invited") data.update({ "doctype": "Cloud Employee Invitation", }) doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": doc.name}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def dispose(activities, disposed=1): try: valid_auth_code() postdata = get_post_json_data() activities = postdata['activities'] or {} disposed = postdata['disposed'] or 1 warns = [] for activity in activities: try: doc = frappe.get_doc("IOT Device Activity", activity) doc.dispose(disposed) except Exception as ex: warns.append(str(ex)) if len(warns) > 0: frappe.response.update({ "ok": True, "warning": warns }) else: frappe.response.update({ "ok": True, }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def update(): try: valid_auth_code() data = get_post_json_data() update_doc("IOT Device", data) frappe.response.update({"ok": True, "message": "device_updated"}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
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 update(name, group_name, description, enabled=1): #, user_list=None): try: valid_auth_code() if 'Company Admin' not in frappe.get_roles(): throw("only_admin_can_update_group") company_name = frappe.get_value("Cloud Company Group", name, "company") if not company_name: throw("invalid_name") if frappe.get_value("Cloud Company", company_name, "admin") != frappe.session.user: throw("not_admin_of_this_company") data = { "name": name, "group_name": group_name, "description": description, "enabled": enabled } post_data = get_post_json_data() user_list = post_data.get('user_list') if user_list is not None: data.update({"user_list": user_list}) if user_list is not None and group_name == "root": company = frappe.get_value("Cloud Company Group", name, "company") users = [d.user for d in user_list] org_users = [ d.name for d in frappe.get_all("Cloud Employee", filters={"company": company}) ] for user in org_users: if user not in users: frappe.delete_doc("Cloud Employee", user) for user in users: if user not in org_users: doc = frappe.get_doc({ "doctype": "Cloud Employee", "user": user, "company": company }) doc.insert(ignore_permissions=True) update_doc("Cloud Company Group", data) frappe.response.update({ "ok": True, "message": "company_group_updated" }) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def create(): try: valid_auth_code() data = get_post_json_data() data.update({ "doctype": "IOT Application Conf", "developer": frappe.session.user }) doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": as_dict(doc)}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def update(): try: valid_auth_code() data = get_post_json_data() if not data.get("name"): throw("object_name_missing") if not frappe.get_value("Cloud Company Requisition", data.get("name"), "name"): throw("object_not_found") update_doc("Cloud Company Requisition", data) frappe.response.update({"ok": True, "message": "company_updated"}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def update(): try: valid_auth_code() data = get_post_json_data() if 'star' in data: data.pop('star') if frappe.get_value("IOT Application", data.get('name'), 'developer') != frappe.session.user: 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 update(): try: if frappe.request.method != "POST": throw("method_must_be_post") if 'Company Admin' not in frappe.get_roles(): throw("not_company_admin") data = get_post_json_data() validate_owner(data.get("name")) update_doc("IOT User Application", data) frappe.response.update({ "ok": True, "message": "configuration_updated" }) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def create(): try: if frappe.request.method != "POST": throw("method_must_be_post") if 'Company Admin' not in frappe.get_roles(): throw("not_company_admin") data = get_post_json_data() data.update({ "doctype": "IOT User Application", "owner": frappe.session.user, "public": 0 }) doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": as_dict(doc)}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def create(): try: valid_auth_code() data = get_post_json_data() if 'Company Admin' not in frappe.get_roles(): throw("only_admin_can_create_employee") if not data.get("user"): throw("user_id_missing") if not data.get("company"): throw("company_id_missing") if frappe.get_value("Cloud Company", data.get('company'), "admin") != frappe.session.user: throw("you_are_not_admin_of_this_company") domain = frappe.get_value("Cloud Company", data.get('company'), "domain") user = data.get("user") if user == user[0 - len(domain):]: data.update({ "doctype": "Cloud Employee", }) doc = frappe.get_doc(data).insert() # rg = frappe.get_value("Cloud Company Group", {"company": doc.company, "group_name": "root"}) # if rg: # group_doc = frappe.get_doc("Cloud Company Group", rg) # group_doc.add_users("user", doc.user) # else: data.update({ "doctype": "Cloud Employee Invitation", }) doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": doc.name}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def info(_w_appid, _w_conf_name, _w_access_key, _w_signature): valid_auth_code(_w_access_key) _w_conf_name = _w_conf_name or frappe.get_request_header("x-weboffice-file-id") data = get_post_json_data() ids = data.get('ids') if ids: users = [] for id in ids: users.append({ "id": id, "name": get_fullname(id), "avatar_url": "http://cloud.thingsroot.com/user?id=" + id }) frappe.response.update({ "users": users }) else: throw("missing_ids")
def create(): try: valid_auth_code() data = get_post_json_data() if 'Company Admin' not in frappe.get_roles(): throw("only_admin_can_create_employee") if not data.get("email"): throw("email_missing") if not data.get("company"): throw("company_id_missing") if not data.get("first_name"): throw("first_name_missing") if not data.get("last_name"): throw("last_name_missing") if not data.get("mobile_no"): throw("mobile_no_missing") if not data.get("new_password"): throw("new_password_missing") data.update({ "doctype": "User", "language": "zh", "enabled": 1, "send_welcome_email": 0 }) doc = frappe.get_doc(data).insert(ignore_permissions=True) frappe.response.update({ "ok": True, "data": doc.name }) except Exception as ex: frappe.response.update({ "ok": False, "error": str(ex) })
def dispose(events, disposed=1): try: valid_auth_code() postdata = get_post_json_data() events = postdata['events'] or {} disposed = postdata['disposed'] or 1 warns = [] for event in events: try: doc = frappe.get_doc("IOT Device Event", event) doc.dispose(disposed) except Exception as ex: warns.append(str(ex)) if len(warns) > 0: frappe.response.update({"ok": True, "warning": warns}) else: frappe.response.update({ "ok": True, }) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def update(name, group_name, role): #, users=None, devices=None): try: valid_auth_code() # TODO: Enable all employee to create/edit/delete for now! # if 'Company Admin' not in frappe.get_roles(): # throw("only_admin_can_update_shared_group") data = {"name": name, "group_name": group_name, "role": role} post_data = get_post_json_data() users = post_data.get('users') if users is not None: data.update({"users": users}) devices = post_data.get('devices') if devices is not None: data.update({"devices": devices}) update_doc("IOT Share Group", data) frappe.response.update({ "ok": True, "message": "company_shared_group_updated" }) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})
def create(): try: valid_auth_code() data = get_post_json_data() data.update({"doctype": "IOT Device Share"}) if not frappe.has_permission( doctype="IOT Device", doc=data.get("device"), ptype='write'): throw("has_no_permission") ''' TODO: Change the permission implementation''' for d in frappe.db.get_values("IOT Device Share", { "device": data.get("device"), "share_to": frappe.session.user }, "name"): end_time = frappe.get_value("IOT Device Share", d[0], "end_time") if time_diff_in_seconds(end_time, get_datetime()) > 0: throw("cannot_share_the_shared_device") doc = frappe.get_doc(data).insert() frappe.response.update({"ok": True, "data": as_dict(doc)}) except Exception as ex: frappe.response.update({"ok": False, "error": str(ex)})