From 9c8d018e09e6a500555c5321ee1f882058092de8 Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Tue, 27 Jul 2021 00:05:39 +0200 Subject: [PATCH] gruppenimport fertig --- adm/templates/adm/adm_import_flow.html | 9 +++- api/views.py | 62 +++++++++++++++++++++++--- 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/adm/templates/adm/adm_import_flow.html b/adm/templates/adm/adm_import_flow.html index a41cb9b..401ab05 100644 --- a/adm/templates/adm/adm_import_flow.html +++ b/adm/templates/adm/adm_import_flow.html @@ -19,6 +19,7 @@ console.log('{{ nclink }}'); }) + var groupcounter = 0; function createAgencyGroups(groupid){ $.ajax({ url: "{% url 'api:apiaddgroup' %}", @@ -32,7 +33,13 @@ 'groupid' : groupid }, success: function(data){ - console.log('succes: '+data); + if(data['status'] == true){ + $("#groups_process_groups").append('

' + data['message'] + "

"); + groupcounter += 1; + if(groupcounter < groupids.length){ + createAgencyGroups(groupids[groupcounter]); + } + } }, error: function(e){ console.log(e); diff --git a/api/views.py b/api/views.py index 9b691a9..7e31316 100644 --- a/api/views.py +++ b/api/views.py @@ -124,19 +124,69 @@ def userChangedInNc(request, uid, sid): return JsonResponse({"status" : "NO AUTH"}) from requests.auth import HTTPBasicAuth +import random +import string +from django.contrib.auth.models import Group +from users.models import AgencyGroup + +def get_random_number(length = 6): + result_str = ''.join(random.choice("0123456789") for i in range(length)) + return result_str + +# Returns a new groupID for NC by Groupname and Agency +def create_group_id(agencygroupname, agency): + newgroupid = "" + pregroupstr = "agencymaingroupid_" + if(agencygroupname == "Mitarbeiter"): + newgroupid = pregroupstr + str(agency.pk) + # NORMAL GROUOPS + elif(agencygroupname == "Administratoren"): + newgroupid = pregroupstr + str(agency.pk) + "_defaultadmingroup" + elif(agencygroupname == "Notfallhilfe"): + newgroupid = pregroupstr + str(agency.pk) + "_recover" + else: + newgroupid = pregroupstr + str(agency.pk) + "_subgroup_" + get_random_number() + + return newgroupid + + @api_view(['POST'], ) def NCAddGroup(request): if request.method == "POST": - - data = { - "groupid": "Unsere Spatengruppe" - } + + group = Group.objects.get(name=request.POST.get('groupid')) + aggroup = AgencyGroup.objects.get(group=group) + agency = aggroup.agency + newgroupid = create_group_id(aggroup.agencygroupname, agency) headers = { 'Accept' : 'application/json', 'Access-Control-Allow-Headers' : 'OCS-APIRequest', 'OCS-APIRequest' : 'true' } - r = requests.post(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/groups", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) - print(r.text) + request_status = False + trycounter = 0 + while(request_status == False or trycounter < 3): + data = { + "groupid" : newgroupid + } + r = requests.post(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/groups", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) + r_status = json.loads(r.text) + if(r_status['ocs']['meta']['statuscode'] == 100): + #if(100 == 100): + data = { + "name": aggroup.agencygroupname, + "id" : newgroupid + } + headers = { + 'Authorization': 'Bearer ' + request.COOKIES['nc_session_id'] + } + # Group created, set display name + r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers) + print(r.text) + + return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid}) + else: + trycounter += 1 + newgroupid = create_group_id(aggroup.agencygroupname, agency) return JsonResponse({"status" : "NO AUTH"})