X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=userhandler%2Fviews.py;h=3aa227a660eef8bf1b0c609399cc24c8c68dfc67;hb=8b12a9b5600453e1e6f8c2f2abe163bfde3f8b9e;hp=aa0d8d224bdbc07ec011771cbdcc4996f10bc7f6;hpb=4908f382154fddb84d72ce8d516229649c01b606;p=osm%2FLW-UI.git diff --git a/userhandler/views.py b/userhandler/views.py index aa0d8d2..3aa227a 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()) @@ -46,6 +46,33 @@ def delete(request, user_id=None): log.exception(e) return __response_handler(request, {}, 'users:list', to_redirect=True, ) +@login_required +def update(request, user_id=None): + user = osmutils.get_user(request) + try: + client = Client() + 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)) + + payload = {} + + for p in projects_to_remove: + 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 + + update_res = client.user_update(user.get_token(), user_id, {"projects": payload}) + except Exception as e: + log.exception(e) + return __response_handler(request, {}, 'users:list', to_redirect=True, ) + def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs): raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',')