Datenmigration
This commit is contained in:
parent
39759cfeb6
commit
43ef9ece43
|
|
@ -10,7 +10,7 @@
|
|||
<div id="groups_process_groups"></div>
|
||||
<h5 id="user_process" style="display: none;">Es werden {{users|length}} Benutzer angelegt und in die Gruppen gepackt. Die Nutzer müssen sich dann ein neues Passwort setzen.</h5>
|
||||
<div id="user_process_user" style="display: none;"></div>
|
||||
<h5 id="cloud_process" style="display: none;">Es werden Dateien und Ordner kopiert und mit Zugriffsrechten gesetzt.</h5>
|
||||
<h5 id="cloud_process" style="display: none;">Es werden {{files|length}} Dateien und ({{dirids|length}}) Ordner angelegt und mit Zugriffsrechten gesetzt.</h5>
|
||||
<div id="cloud_process_main" style="display: none;">Gruppenordner wird angelegt</div>
|
||||
<div id="cloud_process_cloud" style="display: none;"></div>
|
||||
</div>
|
||||
|
|
@ -19,8 +19,8 @@
|
|||
var userids = [{% for us in users %} "{{us.pk}}" {% if forloop.counter < users|length %}, {% endif %} {% endfor %}];
|
||||
var groupids = [{% for g in groups %} "{{g.name}}" {% if forloop.counter < groups|length %}, {% endif %} {% endfor %}];
|
||||
|
||||
var filesid = [{% for f in files %} "{{f.pk}}" {% if forloop.counter < files|length %}, {% endif %} {% endfor %}];
|
||||
var dirsid = [{% for d in dirs %} "{{d.pk}}" {% if forloop.counter < dirs|length %}, {% endif %} {% endfor %}];
|
||||
var files = [{% for f in files %} "{{f.pk}}" {% if forloop.counter < files|length %}, {% endif %} {% endfor %}];
|
||||
var dirids = [{% for d in dirs %} "{{d.pk}}" {% if forloop.counter < dirs|length %}, {% endif %} {% endfor %}];
|
||||
|
||||
$(document).ready(function(){
|
||||
// FIRST CALL GROUPS, When Groups finished User will call by Groups
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
//DEV
|
||||
addGroupFolder();
|
||||
//addDirs(dirids[0]);
|
||||
})
|
||||
|
||||
var groupcounter = 0;
|
||||
|
|
@ -113,8 +114,9 @@
|
|||
success: function(data){
|
||||
console.log(data);
|
||||
if(data['status'] == true){
|
||||
|
||||
//addCloud();
|
||||
if(files[0] != undefined){
|
||||
addFiles(files[0]);
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(e){
|
||||
|
|
@ -123,10 +125,11 @@
|
|||
});
|
||||
}
|
||||
|
||||
function addCloud(){
|
||||
filecounter = 0;
|
||||
function addFiles(fileid){
|
||||
$("#cloud_process_cloud").show();
|
||||
$.ajax({
|
||||
url: "{% url 'api:apiaddcloud' %}",
|
||||
url: "{% url 'api:apiaddfile' %}",
|
||||
headers: {
|
||||
'Authorization':'Token {{ ncid }}',
|
||||
"Access-Control-Allow-Origin" : "*"
|
||||
|
|
@ -135,13 +138,50 @@
|
|||
dataType: 'json',
|
||||
data: {
|
||||
'agencyid' : {{agency.pk}},
|
||||
'fileid' : fileid,
|
||||
},
|
||||
success: function(data){
|
||||
if(data['status'] == true){
|
||||
$("#groups_process_groups").append('<p>' + data['message'] + "</p>");
|
||||
groupcounter += 1;
|
||||
if(groupcounter < groupids.length){
|
||||
//createAgencyGroups(groupids[groupcounter]);
|
||||
$("#cloud_process_cloud").append('<p>' + data['message'] + "</p>");
|
||||
filecounter += 1;
|
||||
if(filecounter < files.length){
|
||||
addFiles(files[filecounter]);
|
||||
}
|
||||
else {
|
||||
if(dirids[0] != undefined){
|
||||
addDirs(dirids[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(e){
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dircounter = 0;
|
||||
function addDirs(dirid){
|
||||
$("#cloud_process_cloud").show();
|
||||
$.ajax({
|
||||
url: "{% url 'api:apiadddir' %}",
|
||||
headers: {
|
||||
'Authorization':'Token {{ ncid }}',
|
||||
"Access-Control-Allow-Origin" : "*"
|
||||
},
|
||||
method: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
'agencyid' : {{agency.pk}},
|
||||
'dirid' : dirid,
|
||||
},
|
||||
success: function(data){
|
||||
if(data['status'] == true){
|
||||
$("#cloud_process_cloud").append('<p>' + data['message'] + "</p>");
|
||||
dircounter += 1;
|
||||
if(dircounter < dirids.length){
|
||||
console.log(dircounter < dirids.length);
|
||||
addDirs(dirids[dircounter]);
|
||||
}
|
||||
else {
|
||||
$("#migfinished").show();
|
||||
|
|
|
|||
|
|
@ -711,7 +711,7 @@ class AdmImportFlow(TemplateView):
|
|||
context.update({'files' : DataFile.objects.filter(agency=agency)})
|
||||
|
||||
# DataDirs
|
||||
context.update({'dirs' : DataDir.objects.filter(agency=agency)})
|
||||
context.update({'dirs' : DataDir.objects.filter(agency=agency).exclude(is_root=True)})
|
||||
|
||||
# Groups of the Agency
|
||||
groups = Group.objects.all()
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@ urlpatterns = [
|
|||
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
||||
path('adduser/', views.NCAddUser, name="apiadduser"),
|
||||
path('addgf/', views.NCAddGroupFolder, name="apiaddgf"),
|
||||
path('addcloud/', views.NCAddDirsFiles, name="apiaddcloud"),
|
||||
path('addfile/', views.NCAddFiles, name="apiaddfile"),
|
||||
path('adddir/', views.NCAddDirs, name="apiadddir"),
|
||||
# EXTERNAL FROM NC
|
||||
path('logout/<str:uid>', views.apilogout, name="api-logout"),
|
||||
path('uschanged/<str:uid>/<str:sid>', views.userChangedInNc, name="api-userchanged"),
|
||||
|
|
|
|||
83
api/views.py
83
api/views.py
|
|
@ -1,3 +1,4 @@
|
|||
from cloud.models import DataFile, DataDir
|
||||
from django.shortcuts import redirect
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
|
|
@ -252,7 +253,8 @@ def NCAddGroupFolder(request):
|
|||
if request.method == "POST":
|
||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||
data = {
|
||||
"gid" : "agencymaingroupid_" + str(agency.pk)
|
||||
"gid" : "agencymaingroupid_" + str(agency.pk),
|
||||
"aid" : str(agency.pk)
|
||||
}
|
||||
headers = {
|
||||
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
||||
|
|
@ -263,13 +265,84 @@ def NCAddGroupFolder(request):
|
|||
|
||||
return JsonResponse({"status" : "NO AUTH"})
|
||||
|
||||
import os
|
||||
|
||||
'''
|
||||
Hier werden die Dateien und Ordner angelegt und entsprechende Zugriffsrechte der Gruppen gesetzt.
|
||||
Hier werden die Dateien angelegt und entsprechende Zugriffsrechte der Gruppen gesetzt.
|
||||
'''
|
||||
@api_view(['POST'], )
|
||||
def NCAddDirsFiles(request):
|
||||
def NCAddFiles(request):
|
||||
if request.method == "POST":
|
||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||
print(agency)
|
||||
pass
|
||||
file_to_load = DataFile.objects.get(pk=request.POST.get('fileid'))
|
||||
datadir_parent = None
|
||||
datadir_parent_dirnames = []
|
||||
if(file_to_load.parent != None):
|
||||
datadir_parent = file_to_load.parent
|
||||
datadir_parent_dirnames = [file_to_load.parent.name]
|
||||
|
||||
while(datadir_parent.parent != None):
|
||||
datadir_parent_dirnames.append(datadir_parent.parent.name)
|
||||
datadir_parent = datadir_parent.parent
|
||||
## Popping last Element
|
||||
d_prestring = ""
|
||||
if(len(datadir_parent_dirnames) > 0):
|
||||
datadir_parent_dirnames.pop(len(datadir_parent_dirnames)-1)
|
||||
# Turning Array around
|
||||
datadir_parent_dirnames = datadir_parent_dirnames[::-1]
|
||||
|
||||
# Dirs needed for the File
|
||||
for d in datadir_parent_dirnames:
|
||||
new_folder = d_prestring + "/" +d
|
||||
r = requests.request("MKCOL", settings.NEXTCLOUD_URL + "remote.php/dav/files/admin/Agenturdaten_" + str(agency.pk)+ '/' + new_folder, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
d_prestring += "/" + d
|
||||
|
||||
# Uplod the file!
|
||||
final_file_path = settings.NEXTCLOUD_URL + "remote.php/dav/files/admin/Agenturdaten_"+ str(agency.pk) + "/" + d_prestring + "/" + file_to_load.name
|
||||
r = requests.put(final_file_path, files={file_to_load.name : file_to_load.file.path}, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
if(len(r.text) == 0):
|
||||
return JsonResponse({'status' : True, 'message': 'Datei ' + file_to_load.name + ' angelegt.'})
|
||||
else:
|
||||
return JsonResponse({'status' : True, 'message': 'Datei ' + file_to_load.name + ' konnte nicht angelegt. Bitte manuell prüfen!'})
|
||||
|
||||
return JsonResponse({"status" : "NO AUTH"})
|
||||
|
||||
|
||||
'''
|
||||
Hier werden die Dateien angelegt und entsprechende Zugriffsrechte der Gruppen gesetzt.
|
||||
'''
|
||||
@api_view(['POST'], )
|
||||
def NCAddDirs(request):
|
||||
if request.method == "POST":
|
||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||
dir_to_create = DataDir.objects.get(pk=request.POST.get('dirid'))
|
||||
# Dir has no parent, create
|
||||
if(len(dir_to_create.parent.name) == 0):
|
||||
r = requests.request("MKCOL", settings.NEXTCLOUD_URL + "remote.php/dav/files/admin/Agenturdaten_" + str(agency.pk)+ '/' + dir_to_create.name, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
return JsonResponse({'status' : True, 'message': 'Ordner ' + dir_to_create.name + ' angelegt.'})
|
||||
# Dir has parents, start thinking :)
|
||||
else:
|
||||
datadir_parent = None
|
||||
datadir_parent_dirnames = []
|
||||
if(dir_to_create.parent != None and len(dir_to_create.parent.name) > 0):
|
||||
datadir_parent = dir_to_create.parent
|
||||
datadir_parent_dirnames = [dir_to_create.parent.name]
|
||||
|
||||
if(datadir_parent.parent != None):
|
||||
while(datadir_parent.parent != None and len(datadir_parent.parent.name) > 0):
|
||||
datadir_parent_dirnames.append(datadir_parent.parent.name)
|
||||
datadir_parent = datadir_parent.parent
|
||||
|
||||
if(len(datadir_parent_dirnames) > 0):
|
||||
datadir_parent_dirnames = datadir_parent_dirnames[::-1]
|
||||
d_prestring = ""
|
||||
for d in datadir_parent_dirnames:
|
||||
new_folder = d_prestring + "/" +d
|
||||
r = requests.request("MKCOL", settings.NEXTCLOUD_URL + "remote.php/dav/files/admin/Agenturdaten_" + str(agency.pk)+ '/' + new_folder, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
d_prestring += "/" + d
|
||||
|
||||
r = requests.request("MKCOL", settings.NEXTCLOUD_URL + "remote.php/dav/files/admin/Agenturdaten_" + str(agency.pk)+ '/' + d_prestring + "/" + dir_to_create.name, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API))
|
||||
return JsonResponse({'status' : True, 'message': 'Ordner ' + dir_to_create.name + ' angelegt.'})
|
||||
|
||||
|
||||
return JsonResponse({'status' : False, 'message': 'AUTH ERROR'})
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from .priomodel import Prio
|
|||
from standards.models import StandardCommentRate, StandardComments
|
||||
from django.contrib.auth.models import Permission
|
||||
from message.models import Message
|
||||
from cloud.models import DataFile
|
||||
from cloud.models import DataFile, DataDir
|
||||
from organizer.models import AGContacts
|
||||
from timemanagement.models import Workday, Breaks, AbsenceReason, FreeDays, Absence
|
||||
from chat.models import ChatRoom
|
||||
|
|
@ -26,6 +26,7 @@ admin.site.register(AgencyNetwork)
|
|||
admin.site.register(AGContacts)
|
||||
admin.site.register(AgencyNetworkPreperation)
|
||||
admin.site.register(DataFile)
|
||||
admin.site.register(DataDir)
|
||||
admin.site.register(UserTime)
|
||||
admin.site.register(Workday)
|
||||
admin.site.register(Breaks)
|
||||
|
|
|
|||
Loading…
Reference in New Issue