Ejemplo n.º 1
0
def update_reminders():
    user_uuid = str(request.form.get("uuid", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    sheets_days = request.form.get("sheets", None)
    bathroom_days = request.form.get("bathroom", None)
    house_days = request.form.get("house", None)
    kitchen_days = request.form.get("kitchen", None)
    dishes_days = request.form.get("dishes", None)
    vacuum_days = request.form.get("vacuum", None)

    update_dict = {
        "sheets": sheets_days,
        "bathroom": bathroom_days,
        "house": house_days,
        "kitchen": kitchen_days,
        "dishes": dishes_days,
        "vacuum": vacuum_days
    }

    return db.update_reminders(user_uuid, update_dict)
Ejemplo n.º 2
0
def check_key():
    c_fcm_key = request.form.get("fcm_key", None)
    user_uuid = request.form.get("uuid", None)

    if c_fcm_key is None:
        return return_json(success=False, error="No fcm_key set")

    if user_uuid is None:
        return return_json(success=False, error="No uuid set'")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid uuid format")

    res = user_db.get_user(uuid=user_uuid)

    if not res[0]:
        return return_json(success=False, error="User not found")

    c_user = res[1]

    if c_user.install_id == c_fcm_key:
        return return_json(success=True)
    c_user.install_id = c_fcm_key
    user_db.update_user(c_user)

    return return_json(success=True)
Ejemplo n.º 3
0
def update_hygiene():
    user_uuid = str(request.form.get("uuid", None))
    hygiene_name_to_update = request.form.get("hygiene_name", None)
    hygiene_is_done = str(request.form.get("is_done", None))

    if hygiene_is_done is not None:
        if hygiene_is_done.lower() == "true":
            hygiene_is_done = True
        elif hygiene_is_done.lower() == "false":
            hygiene_is_done = False
        else:
            return return_json(success=False,
                               error="Invalid delete all: true | false")
    else:
        hygiene_is_done = True

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    res = db.get_user_hygiene(user_uuid)

    c_hygienes = hygiene.Hygiene()
    c_hygienes.from_mongo(res)

    res = c_hygienes.update_hygiene(hygiene_name_to_update, hygiene_is_done)
    db.update_one({'user_uuid': user_uuid}, {"$set": c_hygienes.json()})
    return res
Ejemplo n.º 4
0
    def delete_expense(self, user_uuid: str, delete_all: bool, expense_uuid):
        res = self.find_one({'user_uuid': user_uuid})

        if not res:
            return return_json(success=False, error="No expenses found")

        c_expenses = expenses.Expenses()
        c_expenses.from_mongo(res)

        if delete_all and expense_uuid is None:
            c_expenses.delete_expense(delete_all=True)
            self.update_one({'user_uuid': user_uuid},
                            {"$set": c_expenses.json()})
            return return_json(success=True,
                               data={'message': 'all expenses were deleted'})

        elif not delete_all and expense_uuid is not None:
            if not validate_uuid(expense_uuid):
                return return_json(success=False, error="Invalid expense UUID")

            c_expenses.delete_expense(_expense_uuid=expense_uuid)
            self.update_one({'user_uuid': user_uuid},
                            {"$set": c_expenses.json()})
            return return_json(success=True,
                               data={'message': 'one expense was deleted'})
        else:
            return return_json(
                success=False,
                error="delete_all & expense uuid can't both be set")
Ejemplo n.º 5
0
def trigger_alarm():
    request_json = request.json

    if request_json["arduino_uuid"] is None:
        return return_json(succes=False, error="Arduino UUID is not set")

    arduino_uuid = request_json["arduino_uuid"]

    if not data_validation.validate_uuid(arduino_uuid):
        return return_json(success=False, error="Arduino UUID is not valid")

    if not data_validation.verify_arduino(arduino_uuid):
        return return_json(success=False, error="Arduino is not linked")

    c_user_uuid = arduino_db.get_user_uuid_by_arduino_uuid(arduino_uuid)

    res = user_db.get_user(uuid=c_user_uuid)

    if not res[0]:
        return return_json(success=False, error="User not found")

    c_user = res[1]

    if c_user.alarm_enabled:
        send_notification_to_user(c_user.install_id, "ALARM",
                                  "Motion detected near your TruusPod!")
        return return_json(success=True,
                           data={"message": "Notifications sent"})
    return return_json(success=False, error="Alarm is disabled")
Ejemplo n.º 6
0
def update_user():
    user_uuid = request.form.get("uuid", None)
    name = str(request.form.get("name", None))
    user_hash = Encryption.encrypt_password(
        str(request.form.get("password", None)))
    email = str(request.form.get("email", None))
    birthdate = str(request.form.get("birthdate", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    if not data_validation.validate_email(email):
        return return_json(success=False, error="Invalid email")

    if not data_validation.validate_birthdate(birthdate)[0]:
        return return_json(
            success=False,
            error=data_validation.validate_birthdate(birthdate)[1])

    c_user = user_db.get_user(uuid=user_uuid)[1]

    c_user.name = name
    c_user.user_hash = user_hash
    if c_user.email != email:
        c_user.email = email
        c_user.is_verified = False
    c_user.birthdate = birthdate

    user_db.update_user(c_user)

    return return_json(
        success=True, data={"message": "User {0} updated".format(c_user.uuid)})
Ejemplo n.º 7
0
def get_inc():
    user_uuid = str(request.form.get("uuid", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    return db.get_user_expenses(user_uuid)
Ejemplo n.º 8
0
def get_hygiene():
    user_uuid = str(request.form.get("uuid", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    c_hygiene = db.get_user_hygiene(user_uuid)

    return return_json(success=True, data={"hygiene": c_hygiene})
Ejemplo n.º 9
0
def get_schedule():
    user_uuid = str(request.form.get("uuid", None))

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    res = db.get_user_schedule(user_uuid).get_events()

    return return_json(success=True, data={'schedule': res})
Ejemplo n.º 10
0
def get_schedule():
    request_json = request.json

    if request_json["arduino_uuid"] is None:
        return return_json(succes=False, error="Arduino UUID is not set")

    arduino_uuid = request_json["arduino_uuid"]

    if not data_validation.validate_uuid(arduino_uuid):
        return return_json(success=False, error="Arduino UUID is not valid")

    # The maximum amount of events that can be returned due to limited memory
    try:
        max_events_amount = int(request_json["max_events_amount"])
    except TypeError:
        return return_json(success=False,
                           error="Max_event_amounts must be a number")
    except KeyError:
        max_events_amount = 20

    if not data_validation.verify_arduino(arduino_uuid):
        return return_json(success=False, error="Arduino is not linked")

    c_user_uuid = arduino_db.get_user_uuid_by_arduino_uuid(arduino_uuid)

    res = user_db.get_user(uuid=c_user_uuid)

    if not res[0]:
        return return_json(success=False, error="User not found")

    c_user_uuid = res[1].uuid

    c_schedule = schedule_db.get_user_schedule(c_user_uuid).get_events()

    # User schedule
    if len(c_schedule) > max_events_amount:
        c_schedule = c_schedule[-max_events_amount:]

    for idx, l_item in enumerate(c_schedule):
        c_item = Event()
        c_item.from_mongo(l_item)
        c_schedule[idx] = {
            'start': c_item.start,
            'end': c_item.end,
            'title': c_item.title,
            'content': c_item.content,
            'location': c_item.location
        }

    return return_json(success=True, data={'schedule': c_schedule})
Ejemplo n.º 11
0
def check_notifications():
    request_json = request.json

    if request_json["arduino_uuid"] is None:
        return return_json(succes=False, error="Arduino UUID is not set")

    arduino_uuid = request_json["arduino_uuid"]

    if not data_validation.validate_uuid(arduino_uuid):
        return return_json(success=False, error="Arduino UUID is not valid")

    if not data_validation.verify_arduino(arduino_uuid):
        return return_json(success=False, error="Arduino is not linked")

    try:
        max_events_amount = int(request_json["max_events_amount"])
    except TypeError:
        return return_json(success=False,
                           error="Max_events_amount must be a number")
    except KeyError:
        max_events_amount = 20

    c_user_uuid = arduino_db.get_user_uuid_by_arduino_uuid(arduino_uuid)

    res = user_db.get_user(uuid=c_user_uuid)

    if not res[0]:
        return return_json(success=False, error="User not found")

    c_user = res[1]

    c_schedule = schedule_db.get_user_schedule(c_user.uuid)

    upcoming_events = c_schedule.check_for_upcoming_events()

    total_event_count = len(upcoming_events)

    return_events = []
    for c_event in upcoming_events:
        return_events.append(c_event.json())

    if len(return_events) > max_events_amount:
        return_events = return_events[-max_events_amount:]

    return return_json(success=True,
                       data={
                           'event_count': total_event_count,
                           'upcoming_events': return_events
                       })
Ejemplo n.º 12
0
def arduinos_add():
    if request.method == "GET":
        return render_template('arduinos/arduinos_add.html')

    arduino_uuid = str(request.form.get('arduino_uuid', None)).strip()
    user_uuid = str(request.form.get('user_uuid', None)).strip()
    # If arduino_uuid is set, check if it's valid. If it's not return an error
    if arduino_uuid != "" and not data_validation.validate_uuid(arduino_uuid):
        return render_template('arduinos/arduinos_add.html', error="Invalid arduino UUID")
    if user_uuid != "" and not data_validation.validate_uuid(user_uuid):
        return render_template('arduinos/arduinos_add.html', error="Invalid user UUID")

    if arduino_uuid:
        new_arduino = arduino.Arduino(arduino_uuid=arduino_uuid)
        if user_uuid:
            new_arduino.user_uuid = user_uuid
            arduino_db.insert_one(new_arduino.json())
            return return_message("Succes", f"Arduino created with {arduino_uuid} and linked with {user_uuid}", 2, url_for('admin_blueprint.arduinos_get'))

        arduino_db.insert_one(new_arduino.json())
        return return_message("Succes", f"Arduino created with {arduino_uuid}", 2, url_for('admin_blueprint.arduinos_get'))
    else:
        arduino_db.create_arduino()
        return return_message("Succes", "Arduino created", 2, url_for('admin_blueprint.arduinos_get'))
Ejemplo n.º 13
0
def set_arduino_uuid():
    user_uuid = request.form.get("uuid", None)
    arduino_uuid = request.form.get("arduino_uuid", None)

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.validate_uuid(arduino_uuid):
        return return_json(success=False, error="Invalid arduino UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    if arduino_db.get_user_uuid_by_arduino_uuid(arduino_uuid):
        c_user_uuid = arduino_db.get_user_uuid_by_arduino_uuid(arduino_uuid)
        if c_user_uuid:  # If the user has an arduino linked we need to remove it from that arduino
            c_arduino_mongo = arduino_db.find_one(
                {'arduino_uuid': arduino_uuid})
            c_arduino = arduino.Arduino.from_mongo(c_arduino_mongo)
            c_arduino.user_uuid = None
            arduino_db.update_one({'arduino_uuid': arduino_uuid},
                                  {"$set": c_arduino.json()})

    return arduino_db.link_arduino(arduino_uuid, user_uuid)
Ejemplo n.º 14
0
def toggle_notifications():
    user_uuid = request.form.get("uuid", None)
    r_notifications_enabled = request.form.get("notifications_enabled", None)
    r_alarm_enabled = request.form.get("alarm_enabled", None)

    if r_alarm_enabled is not None:
        if r_alarm_enabled.lower() == "true":
            r_alarm_enabled = True
        elif r_alarm_enabled.lower() == "false":
            r_alarm_enabled = False
        else:
            return return_json(
                success=False,
                error="Invalid alarm_enabled bool: true | false")
    else:
        return return_json(success=False, error="alarm_enabled must be set")

    if r_notifications_enabled is not None:
        if r_notifications_enabled.lower() == "true":
            r_notifications_enabled = True
        elif r_notifications_enabled.lower() == "false":
            r_notifications_enabled = False
        else:
            return return_json(
                success=False,
                error="Invalid notifications enabled bool: true | false")
    else:
        return return_json(success=False,
                           error="notifications_enabled must be set")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    c_user = user_db.get_user(uuid=user_uuid)[1]

    c_user.notifications_enabled = r_notifications_enabled
    c_user.alarm_enabled = r_alarm_enabled

    user_db.update_user(c_user)
    return return_json(success=True,
                       data={
                           'notifications_enabled':
                           c_user.notifications_enabled,
                           'alarm_enabled': c_user.alarm_enabled
                       })
Ejemplo n.º 15
0
def get_schedule_by_date():
    user_uuid = str(request.form.get("uuid", None))
    date = str(request.form.get("date", None)).replace("-", "/")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    if not data_validation.validate_birthdate(date):
        return return_json(success=False,
                           error="Invalid date format: dd/mm/yyyy")

    res = db.get_user_schedule_by_date(user_uuid, date)

    return return_json(success=True, data={'schedule': res})
Ejemplo n.º 16
0
def arduino_edit(uuid):
    c_arduino = arduino_db.get_arduino(uuid)
    if not c_arduino:
        return return_message("Error", "Arduino not found", 2, url_for("admin_blueprint.arduinos_get"))

    if request.method == "GET":
        return render_template('arduinos/arduinos_edit.html', arduino_list=[c_arduino], user_list=user_db.get_all_users()[1])

    user_uuid = str(request.form.get('selected_user', None)).strip()
    print(user_uuid)
    # If arduino_uuid is set, check if it's valid. If it's not return an error
    if user_uuid != "" and not data_validation.validate_uuid(user_uuid):
        return render_template('arduinos/arduinos_edit.html', arduino_list=[c_arduino], user_list=user_db.get_all_users()[1], error="Invalid user UUID")

    c_arduino.user_uuid = user_uuid
    arduino_db.update_arduino(c_arduino)
    return return_message("Succes", "Arduino editted", 2, url_for("admin_blueprint.arduinos_get"))
Ejemplo n.º 17
0
def get_preferences():
    user_uuid = request.form.get("uuid", None)
    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    c_user = user_db.get_user(uuid=user_uuid)[1]

    return return_json(success=True,
                       data={
                           "preferences": {
                               'notifications_enabled':
                               c_user.notifications_enabled,
                               'alarm_enabled': c_user.alarm_enabled
                           }
                       })
Ejemplo n.º 18
0
def user_edit(uuid):
    c_user = user_db.get_user(uuid=uuid)[1]
    if request.method == "GET":
        c_arduino = arduino_db.get_arduino_by_user_uuid(uuid)
        if c_arduino:
            c_user.arduino = c_arduino.arduino_uuid
        else:
            c_user.arduino = None
        return render_template('users/user_edit.html', user_list=[c_user])
    else:
        user_uuid = uuid
        name = str(request.form.get("name", None))
        email = str(request.form.get("email", None))
        birthdate = str(request.form.get("birthdate", None))

        if not data_validation.validate_uuid(user_uuid):
            return render_template('users/user_edit.html', user_list=[c_user], error="Invalid user UUID")

        if user_db.get_user(uuid=user_uuid)[0] is False:
            return render_template('users/user_edit.html', user_list=[c_user], error="User not found")

        if not data_validation.validate_email(email):
            return render_template('users/user_edit.html', user_list=[c_user], error="Invalid email")

        if not data_validation.validate_birthdate(birthdate)[0]:
            return render_template('users/user_edit.html', user_list=[c_user], error=data_validation.validate_birthdate(birthdate)[1])

        c_user = user_db.get_user(uuid=user_uuid)[1]

        c_user.name = name
        if c_user.email != email:
            c_user.email = email
            c_user.is_verified = False
            name = c_user.name

            token = generate_confirm_token(c_user.email)

            send_mail(c_user.name, c_user.email, token)

        c_user.birthdate = birthdate

        user_db.update_user(c_user)

        return return_message("User updated", f"{c_user.name} has been updated!", 2, url_for('admin_blueprint.get_users'))
Ejemplo n.º 19
0
def update_current():
    user_uuid = str(request.form.get("uuid", None))
    expense_uuid = request.form.get("expense_uuid", None)
    amount = request.form.get("amount", None)

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    if amount is None:
        return return_json(success=False, error="Amount must be set")

    if not data_validation.validate_amount(amount):
        return return_json(success=False,
                           error="Est amount must be a number or decimal")

    return db.update_current_value(user_uuid, expense_uuid, amount)
Ejemplo n.º 20
0
    def update_schedule(self,
                        user_uuid,
                        start,
                        end,
                        title,
                        content,
                        location,
                        remind_minutes_before,
                        event_uuid=None):
        res = self.find_one({'user_uuid': user_uuid})

        if not res:
            return return_json(success=False, error="No schedule found")

        c_schedule = schedule.Schedule()
        c_schedule.from_mongo(res)

        if event_uuid is not None:
            # update reminder
            if not validate_uuid(event_uuid):
                return return_json(success=False, error="Invalid event UUID")

            res = c_schedule.update_event(
                event_uuid,
                event.Event(start, end, title, content, location,
                            remind_minutes_before))
            if res[0] is False:
                return return_json(success=False, error="Reminder not found")

            self.update_one({'user_uuid': c_schedule.user_uuid},
                            {"$set": c_schedule.json()})

            return return_json(success=True)

        res = c_schedule.add_event(start, end, title, content, location,
                                   remind_minutes_before)

        if res is False:
            return return_json(success=False, error="Fields empty")

        self.update_one({'user_uuid': c_schedule.user_uuid},
                        {"$set": c_schedule.json()})
        return return_json(success=True)
Ejemplo n.º 21
0
def get_user():
    user_uuid = request.form.get("uuid", None)
    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if user_db.get_user(uuid=user_uuid)[0] is False:
        return return_json(success=False, error="User not found")

    c_user = user_db.get_user(uuid=user_uuid)[1]
    result = {
        'uuid': c_user.uuid,
        'name': c_user.name,
        'email': c_user.email,
        'birthdate': c_user.birthdate,
        'last_login': c_user.last_login,
        'created_at': c_user.created_at
    }

    return return_json(success=True, data=result)
Ejemplo n.º 22
0
def delete_event():
    user_uuid = str(request.form.get("uuid", None))
    event_uuid = request.form.get("event_uuid", None)
    delete_all = request.form.get("delete_all", None)
    if delete_all is not None:
        if delete_all.lower() == "true":
            delete_all = True
        elif delete_all.lower() == "false":
            delete_all = False
        else:
            return return_json(success=False,
                               error="Invalid delete all: true | false")
    else:
        delete_all = False

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    return db.delete_event(user_uuid, event_uuid, delete_all)
Ejemplo n.º 23
0
def update_event():
    user_uuid = str(request.form.get("uuid", None))
    start = str(request.form.get("start", None)).replace(
        "-", "/")  # Ios datetime uses '-' instead of '/'
    end = str(request.form.get("end", None)).replace("-", "/")
    title = str(request.form.get("title", None))
    content = str(request.form.get("content", None))
    location = str(request.form.get("location", None))
    remind_minutes_before = request.form.get("remind_minutes_before", None)
    event_uuid = request.form.get("event_uuid", None)

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    if not data_validation.validate_datetime(start)[0]:
        return return_json(success=False,
                           error=data_validation.validate_datetime(start)[1])

    if not data_validation.validate_datetime(end)[0]:
        return return_json(success=False,
                           error=data_validation.validate_datetime(end)[1])

    time_validation = data_validation.validate_start_before_end(start, end)
    if not time_validation[0]:
        return return_json(success=False, error=time_validation[1])

    if remind_minutes_before is None:
        remind_minutes_before = 30  # Default value
    else:
        if not data_validation.validate_amount(remind_minutes_before):
            return return_json(success=False,
                               error="remind_minutes_before must be a number")
        remind_minutes_before = int(remind_minutes_before)

    return db.update_schedule(user_uuid, start, end, title, content, location,
                              remind_minutes_before, event_uuid)
Ejemplo n.º 24
0
def update_expenses():
    user_uuid = str(request.form.get("uuid", None))
    expense_type = str(request.form.get("expense_type", None)).lower()
    est_amount = str(request.form.get("est_amount", None))
    title = str(request.form.get("title", None))
    expense_uuid = request.form.get("expense_uuid", None)

    if expense_type != "exp" and expense_type != "inc":
        return return_json(success=False,
                           error="Invalid expense type: inc | exp")

    if not data_validation.validate_uuid(user_uuid):
        return return_json(success=False, error="Invalid user UUID")

    if not data_validation.verify_user(user_uuid):
        return return_json(success=False, error="User not found")

    if not data_validation.validate_amount(est_amount):
        return return_json(success=False,
                           error="Est amount must be a number or decimal")

    return db.update_expense(user_uuid, expense_type, est_amount, title,
                             expense_uuid)
Ejemplo n.º 25
0
def send_notification_admin():
    uuid = request.form.get("uuid", None)
    title = str(request.form.get("title", None))
    message = str(request.form.get("message", None))

    if not data_validation.validate_uuid(uuid):
        return render_template('notifications/notifications_main.html', error="Invalid UUID")

    res = user_db.get_user(uuid=uuid)

    if not res[0]:
        return return_message("Error", "User not found", 2, url_for('admin_blueprint.notifications_main'))

    c_user = res[1]

    if c_user.install_id:
        if c_user.notifications_enabled:
            send_notification_to_user(c_user.install_id, title, message)
            if res[0]:
                return return_message("Succes", f"Notifcation has been sent to {c_user.name}", 2, url_for("admin_blueprint.users_main"))
            return return_message("Error", res[1], 5, url_for('admin_blueprint.notifications_main'))
        return return_message("Error", "User has notifications disabled", 2, url_for("admin_blueprint.users_main"))
    return return_message("Error", "User has no FCM key", 2, url_for('admin_blueprint.users_main'))
Ejemplo n.º 26
0
    def update_expense(self,
                       user_uuid: str,
                       expense_type,
                       est_amount,
                       title,
                       expense_uuid=None):
        res = self.find_one({'user_uuid': user_uuid})

        if not res:
            return return_json(success=False, error="No expenses found")

        c_expenses = expenses.Expenses()
        c_expenses.from_mongo(res)

        if expense_uuid is None:
            res = c_expenses.add_expense(title, expense_type, est_amount)

            if not res[0]:
                return return_json(success=False, error="Fields are empty")

            self.update_one({'user_uuid': user_uuid},
                            {"$set": c_expenses.json()})
            return return_json(success=True,
                               data={'message': "Expense added!"})

        if not validate_uuid(expense_uuid):
            return return_json(success=False, error="Invalid expense UUID")

        res = c_expenses.update_expense(
            expense_uuid, expense.Expense(title, expense_type, est_amount))

        if res[0]:
            self.update_one({'user_uuid': user_uuid},
                            {"$set": c_expenses.json()})
            return return_json(success=True,
                               data={'message': "Expense updated!"})
        return return_json(success=False, error=res[1])
Ejemplo n.º 27
0
def update_recipe():
    request_json = request.json
    if request_json["title"] is None:
        return return_json(succes=False, error="Title is not set")
    if request_json["prep_time"] is None:
        return return_json(succes=False, error="prep_time is not set")
    if request_json["ingredients"] is None:
        return return_json(succes=False, error="ingredients is not set")
    if request_json["preperation"] is None:
        return return_json(succes=False, error="preperation is not set")

    if 'uuid' in request_json:
        uuid = request_json["uuid"]
    else:
        uuid = None

    title = request_json["title"]
    prep_time = request_json["prep_time"]
    ingredients = request_json["ingredients"]
    preperation = request_json["preperation"]

    if not data_validation.validate_amount(prep_time):
        return return_json(success=False, error="prep_time must be an integer")

    if type(ingredients) != list:
        return return_json(success=False, error="Ingredients must be a list")

    if type(preperation) != list:
        return return_json(success=False, error="preperation must be a list")

    if uuid is not None:
        if not data_validation.validate_uuid(uuid):
            return return_json(success=False, error="Invalid uuid format")

        return db.update_recipe(uuid, title, prep_time, ingredients,
                                preperation)
    return db.add_recipe(title, prep_time, ingredients, preperation)