summaryrefslogtreecommitdiff
path: root/domestic/session/server_handling/upload.py
diff options
context:
space:
mode:
Diffstat (limited to 'domestic/session/server_handling/upload.py')
-rw-r--r--domestic/session/server_handling/upload.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/domestic/session/server_handling/upload.py b/domestic/session/server_handling/upload.py
new file mode 100644
index 0000000..fe88f05
--- /dev/null
+++ b/domestic/session/server_handling/upload.py
@@ -0,0 +1,36 @@
+import os
+
+from domestic.parse.error_exception_handling import *
+from domestic.session.session_message import *
+from domestic.utility.read_file import *
+from domestic.global_state import *
+
+
+@error_exception_handling
+def upload(message):
+ filename = validate_dict_key(message, 'file', False)
+ url = validate_dict_key(message, 'url', False)
+ execute_on_upload = validate_dict_key(message, 'execute')
+
+ message['max_file_size'] = state['settings']['max-file-size']
+
+ if execute_on_upload is None:
+ message['execute'] = False
+ else:
+ message['execute'] = True
+
+ if filename:
+ root = f'{state["root"]}/{state["settings"]["folders"]["parent"]}/{state["settings"]["folders"]["child"][0]}/{filename}'
+
+ if (os.path.getsize(root) / 1024 / 1024) > message['max_file_size']:
+ status_message(f'File exceeding maximum size of {message["max_file_size"]}MB', 'danger')
+ return
+
+ message['from_url'], message['file_data'] = False, read_file(root)
+ elif url:
+ message['file'], message['from_url'], message['file_data'] = url, True, None
+ del message['url']
+ else:
+ raise Exception('Error message')
+
+ session_message(message, loading_text='uploading file...') \ No newline at end of file