mirror of
https://github.com/FAUSheppy/atlantis-event-dispatcher
synced 2025-12-06 22:41:35 +01:00
feat: settings api
This commit is contained in:
@@ -43,6 +43,14 @@ class UserSettings(db.Model):
|
|||||||
else:
|
else:
|
||||||
return "ntfy"
|
return "ntfy"
|
||||||
|
|
||||||
|
def serizalize(self):
|
||||||
|
return {
|
||||||
|
"username" : self.username,
|
||||||
|
"signal_priority" : self.signal_priority,
|
||||||
|
"email_priority" : self.email_priority,
|
||||||
|
"ntfy_priority" : self.ntfy_priority,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class DispatchObject(db.Model):
|
class DispatchObject(db.Model):
|
||||||
|
|
||||||
@@ -106,6 +114,34 @@ def get_dispatch_status():
|
|||||||
else:
|
else:
|
||||||
return ("Waiting for dispatch", 200)
|
return ("Waiting for dispatch", 200)
|
||||||
|
|
||||||
|
@app.route('/settings', methods=["GET", "POST"])
|
||||||
|
def settings():
|
||||||
|
|
||||||
|
# check static access token #
|
||||||
|
token = flask.request.args.get("token")
|
||||||
|
if token != app.config["SETTINGS_ACCESS_TOKEN"]:
|
||||||
|
return ("SETTINGS_ACCESS_TOKEN incorrect. Refusing to access settings", 401)
|
||||||
|
|
||||||
|
user = flask.request.args.get("user")
|
||||||
|
if not user:
|
||||||
|
return ("Missing user paramter in URL", 500)
|
||||||
|
|
||||||
|
if flask.request.method == "POST":
|
||||||
|
posted = UserSettings(username=user,
|
||||||
|
signal_priority=flask.request.json.get("signal_priority") or 0,
|
||||||
|
email_priority=flask.request.json.get("email_priority") or 0,
|
||||||
|
ntfy_priority=flask.request.json.get("ntfy_priority") or 0)
|
||||||
|
db.session.merge(posted)
|
||||||
|
db.session.commit()
|
||||||
|
return ('', 204)
|
||||||
|
|
||||||
|
if flask.request.method == "GET":
|
||||||
|
user_settings = db.session.query(UserSettings).filter(UserSettings.username==user).first()
|
||||||
|
if not user_settings:
|
||||||
|
return ('', 404)
|
||||||
|
else:
|
||||||
|
return flask.jsonify(user_settings.serizalize())
|
||||||
|
|
||||||
|
|
||||||
@app.route('/get-dispatch')
|
@app.route('/get-dispatch')
|
||||||
def get_dispatch():
|
def get_dispatch():
|
||||||
@@ -293,7 +329,7 @@ def create_app():
|
|||||||
"LDAP_BASE_DN" : os.environ["LDAP_BASE_DN"]
|
"LDAP_BASE_DN" : os.environ["LDAP_BASE_DN"]
|
||||||
}
|
}
|
||||||
app.config["LDAP_ARGS"] = ldap_args
|
app.config["LDAP_ARGS"] = ldap_args
|
||||||
print("Setting LDAP_ARGS...")
|
app.config["SETTINGS_ACCESS_TOKEN"] = os.environ["SETTINGS_ACCESS_TOKEN"]
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
@@ -310,6 +346,8 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument('--ldap-manager-dn')
|
parser.add_argument('--ldap-manager-dn')
|
||||||
parser.add_argument('--ldap-manager-password')
|
parser.add_argument('--ldap-manager-password')
|
||||||
|
|
||||||
|
parser.add_argument('--settings-access-token')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# define ldap args #
|
# define ldap args #
|
||||||
@@ -321,6 +359,8 @@ if __name__ == "__main__":
|
|||||||
}
|
}
|
||||||
app.config["LDAP_NO_READ_ENV"] = True
|
app.config["LDAP_NO_READ_ENV"] = True
|
||||||
|
|
||||||
|
app.config["SETTINGS_ACCESS_TOKEN"] = args.settings_access_token
|
||||||
|
|
||||||
if not any([value is None for value in ldap_args.values()]):
|
if not any([value is None for value in ldap_args.values()]):
|
||||||
app.config["LDAP_ARGS"] = ldap_args
|
app.config["LDAP_ARGS"] = ldap_args
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user