Beispiel #1
0
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)})
Beispiel #2
0
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)
		})
Beispiel #3
0
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)})
Beispiel #4
0
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)
		})
Beispiel #5
0
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)})
Beispiel #6
0
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)
		})
Beispiel #7
0
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)})
Beispiel #8
0
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)})
Beispiel #9
0
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)})
Beispiel #10
0
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)})
Beispiel #11
0
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)})
Beispiel #12
0
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)})
Beispiel #13
0
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)})
Beispiel #14
0
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)})
Beispiel #15
0
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)})
Beispiel #16
0
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")
Beispiel #17
0
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)
		})
Beispiel #18
0
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)})
Beispiel #19
0
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)})
Beispiel #20
0
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)})