X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=userhandler%2Fviews.py;h=17032330092e4b5773f0cbf15aa97ce413760e43;hb=af2a46ed8b79b64fcdd1de5022eb650580e4a370;hp=3aa227a660eef8bf1b0c609399cc24c8c68dfc67;hpb=8b12a9b5600453e1e6f8c2f2abe163bfde3f8b9e;p=osm%2FLW-UI.git diff --git a/userhandler/views.py b/userhandler/views.py index 3aa227a..1703233 100644 --- a/userhandler/views.py +++ b/userhandler/views.py @@ -1,3 +1,19 @@ +# +# Copyright 2018 EveryUP Srl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + from django.shortcuts import render, redirect from sf_t3d.decorators import login_required from django.http import HttpResponse @@ -15,9 +31,23 @@ def user_list(request): user = osmutils.get_user(request) client = Client() result = client.user_list(user.get_token()) + result_projects = client.project_list(user.get_token()) + p_map = {'admin': 'admin'} + for p in result_projects['data']: + p_map[p['_id']] = p['name'] + users = result['data'] if result and result['error'] is False else [] + for user in users: + user_project_ids = user['projects'] + user_project_names = [] + for p_id in user_project_ids: + if p_id in p_map: + user_project_names.append(p_map[p_id]) + user['projects'] = user_project_names + result = { 'users': result['data'] if result and result['error'] is False else [] } + return __response_handler(request, result, 'user_list.html') @@ -30,10 +60,12 @@ def create(request): "password": request.POST['password'], "projects": request.POST.getlist('projects') } - result = client.user_create(user.get_token(), user_data) - - return __response_handler(request, result, 'users:list', to_redirect=True) + if result['error']: + return __response_handler(request, result['data'], url=None, + status=result['data']['status'] if 'status' in result['data'] else 500) + else: + return __response_handler(request, {}, url=None, status=200) @login_required @@ -41,10 +73,15 @@ def delete(request, user_id=None): user = osmutils.get_user(request) try: client = Client() - del_res = client.user_delete(user.get_token(), user_id) + result = client.user_delete(user.get_token(), user_id) except Exception as e: log.exception(e) - return __response_handler(request, {}, 'users:list', to_redirect=True, ) + result = {'error': True, 'data': str(e)} + if result['error']: + return __response_handler(request, result['data'], url=None, + status=result['data']['status'] if 'status' in result['data'] else 500) + else: + return __response_handler(request, {}, url=None, status=200) @login_required def update(request, user_id=None): @@ -58,20 +95,31 @@ def update(request, user_id=None): projects_to_add = list(set(projects_new) - set(projects_old)) projects_to_remove = list(set(projects_old) - set(projects_new)) - payload = {} + project_payload = {} for p in projects_to_remove: - payload["$"+str(p)] = None + project_payload["$"+str(p)] = None for p in projects_to_add: if p not in projects_old: - payload["$+"+str(p)] = str(p) - payload["$" + default_project] = None - payload["$+[0]"] = default_project + project_payload["$+"+str(p)] = str(p) + project_payload["$" + default_project] = None + project_payload["$+[0]"] = default_project + payload = {} + if project_payload: + payload["projects"] = project_payload + if request.POST.get('password') and request.POST.get('password') is not '': + payload["password"] = request.POST.get('password') - update_res = client.user_update(user.get_token(), user_id, {"projects": payload}) + update_res = client.user_update(user.get_token(), user_id, payload) except Exception as e: log.exception(e) - return __response_handler(request, {}, 'users:list', to_redirect=True, ) + update_res = {'error': True, 'data': str(e)} + if update_res['error']: + return __response_handler(request, update_res['data'], url=None, + status=update_res['data']['status'] if 'status' in update_res['data'] else 500) + else: + return __response_handler(request, {}, url=None, status=200) + #return __response_handler(request, {}, 'users:list', to_redirect=True, ) def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):