Skip to content

Commit b94cb66

Browse files
committed
improved account delete feedback
1 parent 49c99f2 commit b94cb66

File tree

2 files changed

+40
-11
lines changed

2 files changed

+40
-11
lines changed

users/filestore.py

+12
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ def get_user_login(user: User):
5050
return user_login
5151

5252

53+
def get_filestore_health():
54+
""" Helper method of to test filebrowser system will respond."""
55+
verify, host = get_rest_host()
56+
try:
57+
r_users = requests.get(f"https://{host}/storemng", verify=verify, timeout=FS_API_TIMEOUT)
58+
r_users.raise_for_status()
59+
return True
60+
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
61+
print(err)
62+
return False
63+
64+
5365
def use_filestore_auth(user: User):
5466
""" Helper method of to login to user.username's filebrowser account.
5567

users/views.py

+28-11
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@
2121
from rest_framework.decorators import api_view, permission_classes
2222
from rest_framework.parsers import JSONParser
2323

24-
from .filestore import delete_filestore_user, login_filestore_user, set_filestore_scope
24+
from .filestore import (
25+
delete_filestore_user,
26+
get_filestore_health,
27+
login_filestore_user,
28+
set_filestore_scope,
29+
)
2530
from .forms import (
2631
DeviceForm,
2732
NamespaceForm,
@@ -755,27 +760,38 @@ def user_profile(request):
755760
ids={"userclient": f"{request.user.username}-objects-delete"},
756761
version=version,
757762
)
763+
# delete devices permissions
764+
u_devices = Device.objects.filter(name__startswith=f"{request.user.username}/")
765+
for device in u_devices:
766+
# delete account device data
767+
device.delete()
768+
messages.success(request, f"Removed device permissions: {device.name}")
758769
# delete scenes permissions/objects
759-
u_scenes = Scene.objects.filter(
760-
name__startswith=f'{request.user.username}/')
770+
u_scenes = Scene.objects.filter(name__startswith=f"{request.user.username}/")
761771
for scene in u_scenes:
762772
# delete account scene data
763773
scene.delete()
774+
messages.success(request, f"Removed scene permissions: {scene.name}")
764775
# delete persist scene data
765-
if not delete_scene_objects(token, scene.name):
766-
messages.error(
767-
request, f"Unable to delete {scene.name} objects from persistence database.")
768-
return redirect("users:user_profile")
776+
if len(get_scene_objects(token, scene.name)) > 0:
777+
if not delete_scene_objects(token, scene.name):
778+
messages.error(request, f"Unable to delete {scene.name} objects from persistence database.")
779+
return redirect("users:user_profile")
780+
else:
781+
messages.success(request, f"Removed scene persistence objects: {scene.name}")
769782
# delete namespaces permissions
770783
u_namespaces = Namespace.objects.filter(name=request.user.username)
771784
for namespace in u_namespaces:
772785
# delete account namespace data
773786
namespace.delete()
787+
messages.success(request, f"Removed namespace permissions: {namespace.name}")
774788
# delete filestore files/account
775-
if not delete_filestore_user(request.user):
776-
messages.error(
777-
request, "Unable to delete account/files from the filestore.")
778-
return redirect("users:user_profile")
789+
if get_filestore_health():
790+
if not delete_filestore_user(request.user):
791+
messages.error(request, "Unable to delete account/files from the filestore.")
792+
return redirect("users:user_profile")
793+
else:
794+
messages.success(request, f"Removed filestore directory: users/{request.user.username}")
779795

780796
# Be careful of foreign keys, in that case this is suggested:
781797
# user.is_active = False
@@ -784,6 +800,7 @@ def user_profile(request):
784800
# delete user account
785801
user = request.user
786802
user.delete()
803+
messages.success(request, f"Removed user: {request.user.username}")
787804
return logout_request(request)
788805
except User.DoesNotExist:
789806
messages.error(request, "Unable to complete account delete.")

0 commit comments

Comments
 (0)