def action_data_out_by_random(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceDataOutByRandomForm.from_json(content) if form.validate(): datasets = form.datasets.data dataset_list = [] for _ in range(datasets): items = random_int_values(form.amount.data, form.min_value.data, form.max_value.data) dataset_list.append({ 'items': items }) labels = random_datetime_range( datetime.now() - timedelta(seconds=form.amount.data - 1), datetime.now(), dt_format='%H:%M:%S' ) return response.success(data={ 'labels': labels, 'datasets': dataset_list }) else: return response.from_form(form)
def action_data_out_by_device(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceDataOutByDeviceForm.from_json(content) if form.validate(): device = Device.query.get(form.device_id.data) if device: items = DeviceData.query.filter( DeviceData.device_id == form.device_id.data, DeviceData.type == form.type.data, DeviceData.created_at >= form.start_dt.data, DeviceData.created_at <= form.end_dt.data ).all() if items: labels = map(lambda item: item.created_at.strftime(form.format_dt.data), items) items = map(lambda item: item.value, items) return response.success(data={ 'labels': labels, 'datasets': [{ 'items': items }] }) else: return response.not_success('empty') else: return response.not_success('not-found') else: return response.from_form(form)
def action_update(account): if not account.is_admin: return response.unauthorized() content = request.get_json(silent=True) content = content if content is not None else {} form = AccountUpdateForm.from_json(content) if form.validate(): found_account = Account.query.get(form.id.data) if found_account: found_account.name = form.name.data found_account.token = form.token.data found_account.email = form.email.data found_account.photo_url = form.photo_url.data found_account.is_admin = form.is_admin.data found_account.updated_at = datetime.utcnow() if form.password.data: found_account.set_password(form.password.data) db.session.flush() db.session.commit() found_account = Account.query.get(found_account.id) return response.success( data={"account": found_account.to_dict("update")}) else: return response.not_success("not-found") else: return response.from_form(form)
def action_delete(account): if not account.is_admin: return response.unauthorized() content = request.get_json(silent=True) content = content if content is not None else {} form = AccountDeleteForm.from_json(content) if form.validate(): if form.id.data > 1: found_account = Account.query.get(form.id.data) if found_account: db.session.delete(found_account) db.session.flush() db.session.commit() return response.success() else: return response.not_success("not-found") else: return response.with_validate_error( "id", ["Cannot delete this account."]) else: return response.from_form(form)
def action_create(account): if not account.is_admin: return response.unauthorized() content = request.get_json(silent=True) content = content if content is not None else {} form = AccountCreateForm.from_json(content) if form.validate(): new_account = Account() new_account.name = form.name.data new_account.email = form.email.data new_account.photo_url = form.photo_url.data new_account.is_admin = form.is_admin.data new_account.created_at = datetime.utcnow() new_account.set_password(form.password.data) db.session.add(new_account) db.session.flush() db.session.commit() new_account = Account.query.get(new_account.id) return response.success( data={'account': new_account.to_dict('create')}) else: return response.from_form(form)
def action_update(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceUpdateForm.from_json(content) if form.validate(): device = Device.query.get(form.id.data) if device: device.name = form.name.data device.updated_at = datetime.utcnow() db.session.flush() db.session.commit() device = Device.query.get(device.id) return response.success(data={ 'device': device.to_dict('update') }) else: return response.not_success('not-found') else: return response.from_form(form)
def action_data_out_by_device(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceDataOutByDeviceForm.from_json(content) if form.validate(): device = Device.query.filter( Device.token == form.device_token.data).first() if device: if form.order.data == "asc": order_by = asc(DeviceData.created_at) else: order_by = desc(DeviceData.created_at) items = (DeviceData.query.filter( DeviceData.device_id == device.id, DeviceData.type == form.type.data, DeviceData.created_at >= form.start_dt.data, DeviceData.created_at <= form.end_dt.data, ).order_by(order_by).limit(form.amount.data).all()) if items: if form.format_dt.data: labels = map( lambda item: item.created_at.strftime(form.format_dt. data), items, ) else: labels = map( lambda item: int( calendar.timegm(item.created_at.timetuple()) * 1000 ), items, ) items = map(lambda item: item.value, items) return response.success(data={ "labels": labels, "datasets": [{ "items": items }] }) else: return response.not_success("empty") else: return response.not_success("not-found") else: return response.from_form(form)
def action_token(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceGetForm.from_json(content) if form.validate(): device = Device.query.get(form.id.data) if device: return response.success(data={"token": device.get_jwt_encoded()}) else: return response.not_success("not-found") else: return response.from_form(form)
def action_get(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceGetForm.from_json(content) if form.validate(): device = Device.query.get(form.id.data) if device: return response.success(data={ 'device': device.to_dict('get') }) else: return response.not_success('not-found') else: return response.from_form(form)
def action_delete(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceDeleteForm.from_json(content) if form.validate(): device = Device.query.get(form.id.data) if device: db.session.delete(device) db.session.flush() db.session.commit() return response.success() else: return response.not_success("not-found") else: return response.from_form(form)
def action_token(account): if not account.is_admin: return response.unauthorized() content = request.get_json(silent=True) content = content if content is not None else {} form = AccountGetForm.from_json(content) if form.validate(): found_account = Account.query.get(form.id.data) if found_account: return response.success( data={"token": found_account.get_jwt_encoded()}) else: return response.not_success("not-found") else: return response.from_form(form)
def action_get(account): if not account.is_admin: return response.unauthorized() content = request.get_json(silent=True) content = content if content is not None else {} form = AccountGetForm.from_json(content) if form.validate(): found_account = Account.query.get(form.id.data) if found_account: return response.success( data={'account': found_account.to_dict('get')}) else: return response.not_success('not-found') else: return response.from_form(form)
def action_update(account): content = request.get_json(silent=True) content = content if content is not None else {} form = AuthUpdateForm.from_json(content) if form.validate(): account.name = form.name.data account.email = form.email.data account.photo_url = form.photo_url.data account.updated_at = datetime.utcnow() db.session.flush() db.session.commit() account = Account.query.get(account.id) return response.success(data={"account": account.to_dict("update")}) else: return response.from_form(form)
def action_update_password(account): content = request.get_json(silent=True) content = content if content is not None else {} form = AuthUpdatePasswordForm.from_json(content) if form.validate(): if account.check_password(form.old_password.data): account.set_password(form.password.data) account.updated_at = datetime.utcnow() db.session.flush() db.session.commit() return response.success() else: return response.with_validate_error('password', ['The old password is wrong']) else: return response.from_form(form)
def action_create(): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceCreateForm.from_json(content) if form.validate(): new_device = Device() new_device.name = form.name.data new_device.token = form.token.data new_device.created_at = datetime.utcnow() db.session.add(new_device) db.session.flush() db.session.commit() new_device = Device.query.get(new_device.id) return response.success(data={"device": new_device.to_dict("create")}) else: return response.from_form(form)
def action_data_in(device): content = request.get_json(silent=True) content = content if content is not None else {} form = DeviceDataCreateForm.from_json(content) form.device_id.data = device.id if form.validate(): new_device_data = DeviceData() new_device_data.device_id = form.device_id.data new_device_data.type = form.type.data new_device_data.value = form.value.data new_device_data.created_at = datetime.utcnow() db.session.add(new_device_data) db.session.flush() db.session.commit() return response.success() else: return response.from_form(form)