21
21
from rest_framework .decorators import api_view , permission_classes
22
22
from rest_framework .parsers import JSONParser
23
23
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
+ )
25
30
from .forms import (
26
31
DeviceForm ,
27
32
NamespaceForm ,
@@ -755,27 +760,38 @@ def user_profile(request):
755
760
ids = {"userclient" : f"{ request .user .username } -objects-delete" },
756
761
version = version ,
757
762
)
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 } " )
758
769
# 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 } /" )
761
771
for scene in u_scenes :
762
772
# delete account scene data
763
773
scene .delete ()
774
+ messages .success (request , f"Removed scene permissions: { scene .name } " )
764
775
# 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 } " )
769
782
# delete namespaces permissions
770
783
u_namespaces = Namespace .objects .filter (name = request .user .username )
771
784
for namespace in u_namespaces :
772
785
# delete account namespace data
773
786
namespace .delete ()
787
+ messages .success (request , f"Removed namespace permissions: { namespace .name } " )
774
788
# 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 } " )
779
795
780
796
# Be careful of foreign keys, in that case this is suggested:
781
797
# user.is_active = False
@@ -784,6 +800,7 @@ def user_profile(request):
784
800
# delete user account
785
801
user = request .user
786
802
user .delete ()
803
+ messages .success (request , f"Removed user: { request .user .username } " )
787
804
return logout_request (request )
788
805
except User .DoesNotExist :
789
806
messages .error (request , "Unable to complete account delete." )
0 commit comments