예제 #1
0
def add_device(device_data=None):
    valid_auth_code()
    device = device_data or get_post_json_data()
    sn = device.get("sn")
    if not sn:
        throw(_("Request fields not found. fields: sn"))

    if IOTDevice.check_sn_exists(sn):
        # TODO: Check for bunch code when device is existing.
        return IOTDevice.get_device_doc(sn)

    device.update({"doctype": "IOT Device"})
    doc = frappe.get_doc(device).insert().as_dict()

    url = IOTHDBSettings.get_callback_url()
    if url:
        """ Fire callback data """
        user_list = IOTDevice.find_owners_by_bunch(device.get("bunch"))

        frappe.enqueue('iot.hdb_api.fire_callback',
                       cb_url=url + "/api/datachanged",
                       cb_data={
                           'cmd': 'add_device',
                           'sn': sn,
                           'users': user_list
                       })

    return doc
예제 #2
0
def update_device_bunch(device_data=None):
    valid_auth_code()
    data = device_data or get_post_json_data()
    bunch = data.get("bunch")
    sn = data.get("sn")
    if sn is None:
        throw(_("Request fields not found. fields: sn"))

    dev = IOTDevice.get_device_doc(sn)
    if not dev:
        throw(_("Device is not found. SN:{0}").format(sn))

    if bunch == "":
        bunch = None
    if dev.bunch == bunch:
        return dev

    org_bunch = dev.bunch
    dev.update_bunch(bunch)

    url = IOTHDBSettings.get_callback_url()
    if url:
        """ Fire callback data """
        org_user_list = IOTDevice.find_owners_by_bunch(org_bunch)
        user_list = IOTDevice.find_owners_by_bunch(bunch)

        frappe.enqueue('iot.hdb_api.fire_callback',
                       cb_url=url + "/api/datachanged",
                       cb_data={
                           'cmd': 'update_device',
                           'sn': sn,
                           'add_users': user_list,
                           'del_users': org_user_list
                       })

    return dev