Example #1
0
 def get(self, group_id, preset_id):
     errors = validate(group_id=group_id, preset_id=preset_id)
     if len(errors) > 0:
         return {"errors": [error.to_json() for error in errors]}, 404
     all_presets_actions = PresetActionModel.find_preset_actions_by_preset_id(preset_id) or []
     all_in_json = [preset.to_json() for preset in all_presets_actions]
     return {"preset_actions": all_in_json}, 200
Example #2
0
 def get(self, schedule_id):
     errors = validate(schedule_id=schedule_id)
     if len(errors) > 0:
         return {"errors": [error.to_json() for error in errors]}, 404
     schedule_days = ScheduleDayModel.find_by_schedule_id(schedule_id) or []
     all_in_json = [day.to_json() for day in schedule_days]
     return {"schedule_days": all_in_json}, 200
Example #3
0
 def get(self, group_id, item_id):
     errors = validate(group_id=group_id, item_id=item_id, method="GroupItemResource.get")
     if len(errors) > 0:
         all_errors_in_json = [error.to_json() for error in errors]
         return {'errors': all_errors_in_json}, 500
     item = ItemModel.find_by_id(item_id)
     return item.to_json(), 200
Example #4
0
    def get(self, item_id, usage_id):
        errors = validate(item_id=item_id, usage_id=usage_id)
        if len(errors) > 0:
            return {errors: [error.to_json() for error in errors]}, 404

        usage = UsageModel.find_by_id(usage_id)
        return {"usage": usage.to_json()}, 200
Example #5
0
 def get(self, schedule_id, scheduled_usage_id):
     errors = validate(schedule_id=schedule_id,
                       scheduled_usage_id=scheduled_usage_id)
     if len(errors) > 0:
         return {"errors": [error.to_json() for error in errors]}, 404
     scheduled_usage = ScheduledUsageModel.find_by_id(scheduled_usage_id)
     return scheduled_usage.to_json(), 200
Example #6
0
    def get(self, group_id):
        errors = validate(group_id=group_id)
        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 500

        group = GroupModel.find_by_id(group_id)
        return group.to_json()
Example #7
0
 def delete(self, schedule_id):
     errors = validate(schedule_id=schedule_id)
     if len(errors) > 0:
         return {"errors": [error.to_json() for error in errors]}, 404
     schedule = ScheduleModel.find_by_id(schedule_id)
     schedule.delete_from_db()
     return "Schedule with id: {} was successfully deleted.".format(
         schedule_id), 200
Example #8
0
    def post(self, schedule_id):

        if 'usage_id' in request.form.keys():
            usage_id = request.form['usage_id']
            value = request.form['value']
        else:
            request_data = json.loads(request.data)

            usage_id = request_data['usage_id']
            value = request_data['value']
        validate(schedule_id=schedule_id,
                 usage_id=usage_id,
                 usage_value=value,
                 method="ScheduledUsagesResource.post")

        scheduled_usage = ScheduledUsageModel(schedule_id, usage_id, value)
        return scheduled_usage.to_json(), 201
Example #9
0
 def delete(self, group_id):
     errors = validate(group_id=group_id)
     if len(errors) > 0:
         all_errors_in_json = [error.to_json() for error in errors]
         return {'errors': all_errors_in_json}, 500
     group = GroupModel.find_by_id(group_id)
     group.delete_from_db()
     return "Group with id: {} was successfully deleted.".format(group_id), 200
Example #10
0
    def get(self, item_id):
        errors = validate(item_id=item_id)
        if len(errors) > 0:
            return {'errors': [error.to_json() for error in errors]}, 404

        item = ItemModel.find_by_id(item_id)
        usages_in_json = [usage.to_json() for usage in item.usages]
        return {"usages": usages_in_json}, 200
Example #11
0
    def get(self, group_id):
        errors = validate(group_id=group_id)
        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 500

        item_groups_from_group = ItemGroupModel.find_by_group_id(group_id)or []
        all_in_json = [ItemModel.find_by_id(item_group.item_id).to_json() for item_group in item_groups_from_group]
        return {"items": all_in_json}, 200
Example #12
0
    def delete(self, group_id, preset_id):
        errors = validate(group_id=group_id, preset_id=preset_id)
        if len(errors) > 0:
            return {"errors": [error.to_json for error in errors]}, 404

        preset = PresetModel.find_by_id(preset_id)
        preset.delete_from_db()
        return "Preset with id: {} was successfully deleted.".format(
            preset_id), 200
Example #13
0
 def get(self, group_id, preset_id, preset_action_id):
     errors = validate(
         group_id=group_id,
         preset_id=preset_id,
         preset_action_id=preset_action_id
     )
     if len(errors) > 0:
         return {"errors": [error.to_json() for error in errors]}, 422
     preset_action = PresetActionModel.find_by_id(preset_action_id)
     return preset_action.to_json()
Example #14
0
    def put(self, schedule_id):
        schedule = ScheduleModel.find_by_id(schedule_id)
        if 'time' in request.form.keys():
            schedule_time = request.form['time']
        else:
            request_data = json.loads(request.data)
            schedule_time = request_data['time']
        errors = validate(schedule_id=schedule_id, schedule_time=schedule_time)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        schedule.update(time)
Example #15
0
    def post(self, schedule_id):
        if 'day' in request.form.keys():
            day = int(request.form['day'])
        else:
            request_data = json.loads(request.data)
            day = int(request_data['day'])

        errors = validate(schedule_id=schedule_id, schedule_day_number=day)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 404

        schedule_day = ScheduleDayModel(schedule_id, day)
        return schedule_day.to_json(), 201
Example #16
0
    def post(self, group_id):
        if 'name' in request.form.keys():
            name = request.form['name']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']

        errors = validate(group_id=group_id, preset_name=name)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        preset = PresetModel(group_id, name)
        preset.save_to_db()
        return preset.to_json(), 201
Example #17
0
    def post(self):
        if 'time' in request.form.keys():
            schedule_time = request.form['time']
            if 'schedule_days' in request.form.keys():
                request_schedule_days = request.form['schedule_days']
            else:
                request_schedule_days = []
            if 'scheduled_usages' in request.form.keys():
                request_scheduled_usages = request.form['scheduled_usages']
            else:
                request_scheduled_usages = []
        else:
            request_data = json.loads(request.data)

            schedule_time = request_data['time']
            if 'schedule_days' in request_data.keys():
                request_schedule_days = request_data['schedule_days']
            else:
                request_schedule_days = []
            if 'scheduled_usages' in request_data.keys():
                request_scheduled_usages = request_data['scheduled_usages']
            else:
                request_scheduled_usages = []
        errors = validate(schedule_time=schedule_time,
                          schedule_days=request_schedule_days,
                          schedule_usages=request_scheduled_usages)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        schedule = ScheduleModel(datetime.strptime(schedule_time, "%H:%M:%S"))
        schedule.save_to_db()

        schedule_days = []
        for schedule_day in request_schedule_days:
            schedule_day = ScheduleDayModel(schedule.id, schedule_day)
            schedule_day.save_to_db()
            schedule_days.append(schedule_day)

        schedule.schedule_days = schedule_days

        scheduled_usages = []
        for scheduled_usage in request_scheduled_usages:
            scheduled_usage = ScheduledUsageModel(schedule.id,
                                                  scheduled_usage['usage_id'],
                                                  scheduled_usage['value'])
            scheduled_usage.save_to_db()
            scheduled_usages.append(scheduled_usage)
        schedule.scheduled_usages = scheduled_usages

        return schedule.to_json(), 201
Example #18
0
    def put(self, schedule_id, scheduled_usage_id):
        if 'value' in request.form.keys():
            value = request.form['value']
        else:
            request_data = json.loads(request.data)
            value = request_data['value']
        errors = validate(schedule_id=schedule_id,
                          scheduled_usage_id=scheduled_usage_id,
                          scheduled_usage_value=value)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}

        scheduled_usage = ScheduledUsageModel.find_by_id(scheduled_usage_id)
        return scheduled_usage.set_value(value).to_json(), 200
Example #19
0
    def patch(self, group_id, preset_id):
        errors = validate(group_id=group_id, preset_id=preset_id)
        if len(errors) > 0:
            return {"errors": [error.to_json for error in errors]}, 404

        preset = PresetModel.find_by_id(preset_id)
        responses = []
        for preset_action in preset.preset_actions:
            usage = UsageModel.find_by_id(preset_action.usage_id)
            response = requests.get(url="{}alias={}&value={}".format(
                app.config['HOMELYNK_URI'], usage.address,
                preset_action.value))
            responses.append(response)
        print(responses)
        return "Request has been accepted.", 202
Example #20
0
    def post(self):
        if 'name' in request.form.keys():
            name = request.form['name']
            comment = request.form['comment']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']
            comment = request_data['comment']

        errors = validate(item_name=name, item_comment=comment)

        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422
        item = ItemModel(name, comment)
        item.save_to_db()
        return item.to_json(), 201
Example #21
0
    def put(self, item_id, usage_id):
        min_value = None
        max_value = None
        if 'external_item_id' in request.form.keys():
            external_item_id = request.form['external_item_id']
            consumption_type = request.form['consumption_type']
            consumption_amount = int(request.form['consumption_amount'])
            address = request.form['address']
            unit = request.form['unit']
            if 'min_value' in request.form.keys():
                min_value = request.form['min_value']
            if 'max_value' in request.form.keys():
                max_value = request.form['max_value']
        else:
            request_data = json.loads(request.data)

            external_item_id = request_data['external_item_id']
            consumption_type = request_data['consumption_type']
            consumption_amount = int(request_data['consumption_amount'])
            address = request_data['address']
            unit = request_data['unit']
            if 'min_value' in request_data.keys():
                min_value = request_data['min_value']
            if 'max_value' in request_data.keys():
                max_value = request_data['max_value']

        errors = validate(item_id=item_id,
                          usage_id=usage_id,
                          usage_consumption_amount=consumption_amount,
                          usage_consumption_type=consumption_type,
                          usage_address=address,
                          usage_unit=unit,
                          usage_min_value=min_value,
                          usage_max_value=max_value)

        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 404

        usage = UsageModel.find_by_id(usage_id)
        usage = usage.update(external_item_id=external_item_id,
                             consumption_type=consumption_type,
                             consumption_amount=consumption_amount,
                             address=address,
                             unit=unit,
                             min_value=min_value,
                             max_value=max_value)
        return usage.to_json(), 202
Example #22
0
    def put(self, group_id):
        if 'name' in request.form.keys():
            name = request.form['name']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']
        errors = validate(
            group_id=group_id,
            group_name=name
        )
        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 500

        group = GroupModel.find_by_id(group_id)
        group = group.update_name(name)
        return group.to_json()
Example #23
0
    def post(self):
        if 'name' in request.form.keys():
            name = request.form['name']
            is_module = request.form['is_module']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']
            is_module = request_data['is_module']

        errors = validate(group_name=name)
        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 400

        group = GroupModel(name, is_module)
        group.save_to_db()
        return group.to_json(), 201
Example #24
0
    def delete(self, group_id, item_id):
        errors = validate(group_id=group_id, item_id=item_id, method="GroupItemResource.delete")
        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 500

        item_group = ItemGroupModel.find_by_item_id_and_group_id(item_id, group_id)
        item_group.delete_from_db()
        item_group = ItemGroupModel.find_by_item_id_and_group_id(item_id, group_id)
        if item_group is not None:
            errors.append(Error("An unexpected error occurred item was not removed from group.",
                                "ItemGroupModel.find_by_item_id_and_group_id({}, {}) did not return None".format(item_id, group_id),
                                500,
                                "https://en.wikipedia.org/wiki/HTTP_500"))
        else:
            group = GroupModel.find_by_id(group_id)
            return group.to_json(), 200
Example #25
0
    def put(self, item_id):
        item = ItemModel.find_by_id(item_id)
        if 'name' in request.form.keys():
            name = request.form['name']
            comment = request.form['comment']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']
            comment = request_data['comment']

        errors = validate(item_id=item_id,
                          item_name=name,
                          item_comment=comment)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        item = item.update(name=name, comment=comment)
        return item.to_json()
Example #26
0
    def put(self, group_id, preset_id):
        if 'name' in request.form.keys():
            name = request.form['name']
        else:
            request_data = json.loads(request.data)
            name = request_data['name']

        errors = validate(group_id=group_id,
                          preset_id=preset_id,
                          preset_name=name)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        preset = PresetModel.find_by_id(preset_id)
        result = preset.set_name(name)
        if type(result) is PresetModel:
            return result.to_json(), 200
        else:
            return result, 400
Example #27
0
    def post(self, item_id):
        min_value = None
        max_value = None
        if 'external_item_id' in request.form.keys():
            external_item_id = request.form['external_item_id']
            consumption_type = request.form['consumption_type']
            consumption_amount = int(request.form['consumption_amount'])
            address = request.form['address']
            unit = request.form['unit']
            if 'min_value' in request.form.keys():
                min_value = request.form['min_value']
            if 'max_value' in request.form.keys():
                max_value = request.form['max_value']
        else:
            request_data = json.loads(request.data)

            external_item_id = request_data['external_item_id']
            consumption_type = request_data['consumption_type']
            consumption_amount = int(request_data['consumption_amount'])
            address = request_data['address']
            unit = request_data['unit']
            if 'min_value' in request_data.keys():
                min_value = request_data['min_value']
            if 'max_value' in request_data.keys():
                max_value = request_data['max_value']

        errors = validate(item_id=item_id,
                          usage_consumption_type=consumption_type,
                          usage_consumption_amount=consumption_amount,
                          usage_address=address,
                          usage_unit=unit,
                          usage_min_value=min_value,
                          usage_max_value=max_value)
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        consumption_type = UsageTypeEnum(consumption_type)
        unit = UnitEnum(unit)
        usage = UsageModel(item_id, external_item_id, consumption_type,
                           consumption_amount, address, unit, min_value,
                           max_value)
        usage.save_to_db()
        return usage.to_json(), 201
Example #28
0
    def post(self, group_id):
        if 'item_id' in request.form.keys():
            item_id = request.form['item_id']
        else:
            request_data = json.loads(request.data)
            item_id = request_data['item_id']
        errors = validate(
            group_id=group_id,
            item_id=item_id,
            method="GroupItemsResource.post"
        )

        if len(errors) > 0:
            all_errors_in_json = [error.to_json() for error in errors]
            return {'errors': all_errors_in_json}, 422

        item_group = ItemGroupModel(item_id, group_id)
        item_group.save_to_db()
        group = GroupModel.find_by_id(group_id)
        return group.to_json()
Example #29
0
    def post(self, group_id, preset_id):
        if 'usage_id' in request.form.keys():
            usage_id = request.form['usage_id']
            value = request.form['value']
        else:
            request_data = json.loads(request.data)
            usage_id = request_data['usage_id']
            value = request_data['value']

        errors = validate(
            group_id=group_id,
            preset_id=preset_id,
            usage_id=usage_id,
            usage_value=value,
            method="PresetActionsResource.post"
        )
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422
        preset_action = PresetActionModel(preset_id, usage_id, value)
        preset_action.save_to_db()
        return preset_action.to_json(), 201
Example #30
0
    def put(self, group_id, preset_id, preset_action_id):
        if 'usage_id' in request.form.keys():
            usage_id = request.form['usage_id']
            value = request.form['value']
        else:
            request_data = json.loads(request.data)
            usage_id = request_data['usage_id']
            value = request_data['value']

        errors = validate(
            group_id=group_id,
            preset_id=preset_id,
            preset_action_id=preset_action_id,
            usage_id=usage_id,
            usage_value=value
        )
        if len(errors) > 0:
            return {"errors": [error.to_json() for error in errors]}, 422

        preset_action = PresetActionModel.find_by_id(preset_action_id)
        preset_action.update(usage_id, value)
        return preset_action.to_json(), 200