X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FLW-UI.git;a=blobdiff_plain;f=userhandler%2Fviews.py;h=a7c014d2c75d61e2662ce676917058c6f680482f;hp=05d5925efafa85f2420457d996b8284a7fd1c01c;hb=5aea5b7cee866c7abb3f414ab80a172a29e35318;hpb=88d09568efc69901d4e12f62021239096f8d69f8 diff --git a/userhandler/views.py b/userhandler/views.py index 05d5925..a7c014d 100644 --- a/userhandler/views.py +++ b/userhandler/views.py @@ -11,7 +11,7 @@ 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()) @@ -51,16 +51,38 @@ def update(request, user_id=None): user = osmutils.get_user(request) try: client = Client() - user_data = { - "projects": request.POST.getlist('projects') - } - print user_data - update_res = client.user_update(user.get_token(), user_id, user_data) - except Exception as e: - log.exception(e) - return __response_handler(request, {}, 'users:list', to_redirect=True, ) + projects_old = request.POST.get('projects_old').split(',') + projects_new = request.POST.getlist('projects') + default_project = request.POST.get('default_project') + projects_new.append(default_project) + projects_to_add = list(set(projects_new) - set(projects_old)) + projects_to_remove = list(set(projects_old) - set(projects_new)) + + project_payload = {} + for p in projects_to_remove: + project_payload["$"+str(p)] = None + for p in projects_to_add: + if p not in projects_old: + 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, payload) + except Exception as e: + log.exception(e) + 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):