From d7606f4cc682e9caa4760e4ac7b2b0f29bd6ccf9 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Mon, 6 Jun 2022 17:04:45 -0400 Subject: [PATCH] Fix user permissions issue --- app/classes/models/crafty_permissions.py | 26 ++++++++++++++++-------- app/classes/shared/server.py | 6 +++++- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/classes/models/crafty_permissions.py b/app/classes/models/crafty_permissions.py index 74d9e572..8e61670f 100644 --- a/app/classes/models/crafty_permissions.py +++ b/app/classes/models/crafty_permissions.py @@ -139,15 +139,23 @@ class PermissionsCrafty: ): # http://docs.peewee-orm.com/en/latest/peewee/querying.html#upsert - UserCrafty.replace( - { - UserCrafty.user_id: user_id, - UserCrafty.permissions: permissions_mask, - UserCrafty.limit_server_creation: limit_server_creation, - UserCrafty.limit_user_creation: limit_user_creation, - UserCrafty.limit_role_creation: limit_role_creation, - } - ).execute() + try: + user_crafty = UserCrafty.select().where(UserCrafty.user_id == user_id).get() + user_crafty.permissions = permissions_mask + user_crafty.limit_server_creation = limit_server_creation + user_crafty.limit_user_creation = limit_user_creation + user_crafty.limit_role_creation = limit_role_creation + UserCrafty.save(user_crafty) + except: + UserCrafty.insert( + { + UserCrafty.user_id: user_id, + UserCrafty.permissions: permissions_mask, + UserCrafty.limit_server_creation: limit_server_creation, + UserCrafty.limit_user_creation: limit_user_creation, + UserCrafty.limit_role_creation: limit_role_creation, + } + ).execute() @staticmethod def get_created_quantity_list(user_id): diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index bde74066..f31dc7c8 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -1,6 +1,7 @@ from contextlib import redirect_stderr import os import re +import shutil import time import datetime import base64 @@ -842,7 +843,10 @@ class ServerInstance: args=[temp_dir + "/", backup_filename + ".zip"], ) # pylint: disable=unexpected-keyword-arg - FileHelpers.copy_dir(self.server_path, temp_dir, dirs_exist_ok=True) + try: + FileHelpers.copy_dir(self.server_path, temp_dir, dirs_exist_ok=True) + except shutil.Error as e: + logger.error(f"Failed to fully complete backup due to shutil error {e}") excluded_dirs = HelpersManagement.get_excluded_backup_dirs(self.server_id) server_dir = Helpers.get_os_understandable_path(self.settings["path"])