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)})
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)
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 })
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'))
def confirm_email(token): try: email = token_generator.confirm_token(token) except Exception as e: return return_json(success=False, error="link has expired or is invalid, " + str(e)) res = user_db.get_user(email=email) if res[0] is False: return return_json(success=False, error="User not found") c_user = res[1] if c_user.is_verified: return render_template('auth/confirmation_succes.html', name=c_user.name) c_user.is_verified = True c_user.verified_on = datetime.now() user_db.update_user(c_user) return render_template('auth/confirmation_succes.html', name=c_user.name)
def check_for_notifications(): print("Checking for notifications") res = user_db.get_all_users() if res[0]: users = res[1] else: return return_json(success=False, error="No users in database") for l_user in users: c_user = user.User() c_user.from_mongo(l_user) if not c_user.install_id or not c_user.notifications_enabled: continue c_schedule = schedule_db.get_user_schedule(c_user.uuid) upcoming_events = c_schedule.check_for_upcoming_events() schedule_db.update_one({'user_uuid': c_user.uuid}, {"$set": c_schedule.json()}) res = hygiene_db.get_user_hygiene(c_user.uuid) c_hygiene = hygiene.Hygiene() c_hygiene.from_mongo(res) not_done_jobs = c_hygiene.check_hygiene() user_db.update_user(c_user) if upcoming_events: for c_event in upcoming_events: send_notification_to_user( c_user.install_id, c_event.title, "Details: {0}\n Location: {1}".format( c_event.content, c_event.location)) for job in not_done_jobs: title, message = maker.get_notification_message( "hygiene", job.name) send_notification_to_user(c_user.install_id, title, message)