From cbe729c88a46882b3687d0655e791f163c9236ab Mon Sep 17 00:00:00 2001 From: Hongwei Date: Wed, 19 Jan 2022 14:05:55 +0100 Subject: [PATCH 1/3] bugfix/fixed the put method no request body bug --- apimanager/obp/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apimanager/obp/api.py b/apimanager/obp/api.py index c1e2e26..35b59f2 100644 --- a/apimanager/obp/api.py +++ b/apimanager/obp/api.py @@ -55,7 +55,7 @@ class API(object): if payload: response = session.request(method, url, json=payload, verify=settings.VERIFY) else: - response = session.request(method, url, verify=settings.VERIFY) + response = session.request(method, url, json={}, verify=settings.VERIFY) except ConnectionError as err: raise APIError(err) time_end = time.time() From 18bef3d4a518550d29b71865bf4cb7d53cd9dfdb Mon Sep 17 00:00:00 2001 From: Hongwei Date: Wed, 19 Jan 2022 14:06:35 +0100 Subject: [PATCH 2/3] feature/added the unlock user button --- apimanager/users/templates/users/detail.html | 19 ++++++++++------ apimanager/users/urls.py | 6 ++--- apimanager/users/views.py | 24 +++++++++++++------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/apimanager/users/templates/users/detail.html b/apimanager/users/templates/users/detail.html index 61d85df..f69546c 100644 --- a/apimanager/users/templates/users/detail.html +++ b/apimanager/users/templates/users/detail.html @@ -27,26 +27,31 @@ {{ apiuser.provider_id }} - - {% if apiuser.is_deleted %}
Deleted
{{ apiuser.is_deleted }}
- {% else %} - - {% endif %} -
+
+ Locked
+ {{ apiuser.is_locked }} +
+ + {% csrf_token %} {% if apiuser.is_deleted %} {% else %} - + {% endif %} + + {% if apiuser.is_locked %} + + {% else %} + {% endif %}
diff --git a/apimanager/users/urls.py b/apimanager/users/urls.py index 72cb253..acd3bd0 100644 --- a/apimanager/users/urls.py +++ b/apimanager/users/urls.py @@ -5,7 +5,7 @@ URLs for users app from django.conf.urls import url -from .views import IndexView, DetailView, MyDetailView, DeleteEntitlementView, InvitationView, DeleteUserView, \ +from .views import IndexView, DetailView, MyDetailView, DeleteEntitlementView, InvitationView, DeleteOrUnlockUserView, \ ExportCsvView urlpatterns = [ @@ -24,8 +24,8 @@ urlpatterns = [ url(r'^(?P[\w-]+)/entitlement/delete/(?P[\w-]+)$', DeleteEntitlementView.as_view(), name='users-delete-entitlement'), - url(r'^(?P[\w-]+)/delete$', - DeleteUserView.as_view(), + url(r'^(?P[\w-]+)/deleteOrUnlock/(?P[\w\@\.\+-]+)$', + DeleteOrUnlockUserView.as_view(), name='users-delete-user'), url(r'^export_csv$', ExportCsvView.as_view(), diff --git a/apimanager/users/views.py b/apimanager/users/views.py index dccd5c9..b40fa6a 100644 --- a/apimanager/users/views.py +++ b/apimanager/users/views.py @@ -352,21 +352,29 @@ class DeleteEntitlementView(LoginRequiredMixin, View): return HttpResponseRedirect(redirect_url) -class DeleteUserView(LoginRequiredMixin, View): +class DeleteOrUnlockUserView(LoginRequiredMixin, View): """View to delete a user""" def post(self, request, *args, **kwargs): """Deletes a user via API""" api = API(self.request.session.get('obp')) try: - urlpath = '/users/{}'.format( - kwargs['user_id']) - result = api.delete(urlpath) - if result is not None and 'code' in result and result['code'] >= 400: - messages.error(request, result['message']) + if(request.POST.get("Delete")): + urlpath = '/users/{}'.format(kwargs['user_id']) + result = api.delete(urlpath) + if result is not None and 'code' in result and result['code'] >= 400: + messages.error(request, result['message']) + else: + msg = 'User with ID {} has been deleted.'.format(kwargs['user_id']) + messages.success(request, msg) else: - msg = 'User with ID {} has been deleted.'.format(kwargs['user_id']) - messages.success(request, msg) + urlpath = '/users/{}/lock-status'.format(kwargs['username']) + result = api.put(urlpath, None) + if result is not None and 'code' in result and result['code'] >= 400: + messages.error(request, result['message']) + else: + msg = 'User {} has been unlocked.'.format(kwargs['username']) + messages.success(request, msg) except APIError as err: messages.error(request, err) except: From 3fef8cd4289d592d95c46b766fc15bb947edcaf9 Mon Sep 17 00:00:00 2001 From: Hongwei Date: Mon, 24 Jan 2022 11:56:30 +0100 Subject: [PATCH 3/3] refactor/tweaked the view name --- apimanager/users/templates/users/detail.html | 6 +++--- apimanager/users/urls.py | 8 ++++---- apimanager/users/views.py | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apimanager/users/templates/users/detail.html b/apimanager/users/templates/users/detail.html index f69546c..d950058 100644 --- a/apimanager/users/templates/users/detail.html +++ b/apimanager/users/templates/users/detail.html @@ -37,18 +37,18 @@ {{ apiuser.is_locked }} -
+ {% csrf_token %} {% if apiuser.is_deleted %} {% else %} - + {% endif %} {% if apiuser.is_locked %} - + {% else %} {% endif %} diff --git a/apimanager/users/urls.py b/apimanager/users/urls.py index acd3bd0..ee5fa0f 100644 --- a/apimanager/users/urls.py +++ b/apimanager/users/urls.py @@ -5,7 +5,7 @@ URLs for users app from django.conf.urls import url -from .views import IndexView, DetailView, MyDetailView, DeleteEntitlementView, InvitationView, DeleteOrUnlockUserView, \ +from .views import IndexView, DetailView, MyDetailView, DeleteEntitlementView, InvitationView, UserStatusUpdateView, \ ExportCsvView urlpatterns = [ @@ -24,9 +24,9 @@ urlpatterns = [ url(r'^(?P[\w-]+)/entitlement/delete/(?P[\w-]+)$', DeleteEntitlementView.as_view(), name='users-delete-entitlement'), - url(r'^(?P[\w-]+)/deleteOrUnlock/(?P[\w\@\.\+-]+)$', - DeleteOrUnlockUserView.as_view(), - name='users-delete-user'), + url(r'^(?P[\w-]+)/userStatusUpdateView/(?P[\w\@\.\+-]+)$', + UserStatusUpdateView.as_view(), + name='user-status-update'), url(r'^export_csv$', ExportCsvView.as_view(), name='export-csv') diff --git a/apimanager/users/views.py b/apimanager/users/views.py index b40fa6a..7d54e0f 100644 --- a/apimanager/users/views.py +++ b/apimanager/users/views.py @@ -352,7 +352,7 @@ class DeleteEntitlementView(LoginRequiredMixin, View): return HttpResponseRedirect(redirect_url) -class DeleteOrUnlockUserView(LoginRequiredMixin, View): +class UserStatusUpdateView(LoginRequiredMixin, View): """View to delete a user""" def post(self, request, *args, **kwargs):