X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=userhandler%2Fviews.py;h=66fc22a6bab83f648e10b9231e20dc7592fd4987;hb=70f9629aef040ce2bd6fba9c082f15d33ac00ef1;hp=aa0d8d224bdbc07ec011771cbdcc4996f10bc7f6;hpb=4908f382154fddb84d72ce8d516229649c01b606;p=osm%2FLW-UI.git diff --git a/userhandler/views.py b/userhandler/views.py index aa0d8d2..66fc22a 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 @@ -11,13 +27,16 @@ log = logging.getLogger(__name__) @login_required -def list(request): +def user_list(request): user = osmutils.get_user(request) client = Client() result = client.user_list(user.get_token()) + + users = result['data'] if result and result['error'] is False else [] result = { 'users': result['data'] if result and result['error'] is False else [] } + return __response_handler(request, result, 'user_list.html') @@ -27,13 +46,15 @@ def create(request): client = Client() user_data ={ "username": request.POST['username'], - "password": request.POST['password'], - "projects": request.POST.getlist('projects') + "password": request.POST['password'] } - + 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 +62,61 @@ 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) + 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 user_info(request, user_id=None): + user = osmutils.get_user(request) + try: + client = Client() + + info_res = client.get_user_info(user.get_token(), user_id) + except Exception as e: + log.exception(e) + info_res = {'error': True, 'data': str(e)} + if info_res['error']: + return __response_handler(request, info_res['data'], url=None, + status=info_res['data']['status'] if 'status' in info_res['data'] else 500) + else: + return __response_handler(request, info_res['data'], url=None, status=200) + +@login_required +def update(request, user_id=None): + user = osmutils.get_user(request) + try: + client = Client() + payload = {} + + if request.POST.get('password') and request.POST.get('password') is not '': + payload["password"] = request.POST.get('password') + + if request.POST.getlist('map_project_name') and request.POST.getlist('map_role_name'): + project_param_name = request.POST.getlist('map_project_name') + role_param_ip = request.POST.getlist('map_role_name') + payload["project_role_mappings"] = [] + for i, project in enumerate(project_param_name): + payload["project_role_mappings"].append({ + 'project': project, + 'role': role_param_ip[i], + }) + + 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) def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):