Datenmigration
This commit is contained in:
parent
39759cfeb6
commit
43ef9ece43
|
|
@ -10,7 +10,7 @@
|
||||||
<div id="groups_process_groups"></div>
|
<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>
|
<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>
|
<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_main" style="display: none;">Gruppenordner wird angelegt</div>
|
||||||
<div id="cloud_process_cloud" style="display: none;"></div>
|
<div id="cloud_process_cloud" style="display: none;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
var userids = [{% for us in users %} "{{us.pk}}" {% if forloop.counter < users|length %}, {% endif %} {% endfor %}];
|
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 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 files = [{% 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 dirids = [{% for d in dirs %} "{{d.pk}}" {% if forloop.counter < dirs|length %}, {% endif %} {% endfor %}];
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
// FIRST CALL GROUPS, When Groups finished User will call by Groups
|
// FIRST CALL GROUPS, When Groups finished User will call by Groups
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
//DEV
|
//DEV
|
||||||
addGroupFolder();
|
addGroupFolder();
|
||||||
|
//addDirs(dirids[0]);
|
||||||
})
|
})
|
||||||
|
|
||||||
var groupcounter = 0;
|
var groupcounter = 0;
|
||||||
|
|
@ -113,8 +114,9 @@
|
||||||
success: function(data){
|
success: function(data){
|
||||||
console.log(data);
|
console.log(data);
|
||||||
if(data['status'] == true){
|
if(data['status'] == true){
|
||||||
|
if(files[0] != undefined){
|
||||||
//addCloud();
|
addFiles(files[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(e){
|
error: function(e){
|
||||||
|
|
@ -123,10 +125,11 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addCloud(){
|
filecounter = 0;
|
||||||
|
function addFiles(fileid){
|
||||||
$("#cloud_process_cloud").show();
|
$("#cloud_process_cloud").show();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "{% url 'api:apiaddcloud' %}",
|
url: "{% url 'api:apiaddfile' %}",
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization':'Token {{ ncid }}',
|
'Authorization':'Token {{ ncid }}',
|
||||||
"Access-Control-Allow-Origin" : "*"
|
"Access-Control-Allow-Origin" : "*"
|
||||||
|
|
@ -135,13 +138,50 @@
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
data: {
|
data: {
|
||||||
'agencyid' : {{agency.pk}},
|
'agencyid' : {{agency.pk}},
|
||||||
|
'fileid' : fileid,
|
||||||
},
|
},
|
||||||
success: function(data){
|
success: function(data){
|
||||||
if(data['status'] == true){
|
if(data['status'] == true){
|
||||||
$("#groups_process_groups").append('<p>' + data['message'] + "</p>");
|
$("#cloud_process_cloud").append('<p>' + data['message'] + "</p>");
|
||||||
groupcounter += 1;
|
filecounter += 1;
|
||||||
if(groupcounter < groupids.length){
|
if(filecounter < files.length){
|
||||||
//createAgencyGroups(groupids[groupcounter]);
|
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 {
|
else {
|
||||||
$("#migfinished").show();
|
$("#migfinished").show();
|
||||||
|
|
|
||||||
|
|
@ -711,7 +711,7 @@ class AdmImportFlow(TemplateView):
|
||||||
context.update({'files' : DataFile.objects.filter(agency=agency)})
|
context.update({'files' : DataFile.objects.filter(agency=agency)})
|
||||||
|
|
||||||
# DataDirs
|
# 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 of the Agency
|
||||||
groups = Group.objects.all()
|
groups = Group.objects.all()
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,8 @@ urlpatterns = [
|
||||||
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
path('addgroup/', views.NCAddGroup, name="apiaddgroup"),
|
||||||
path('adduser/', views.NCAddUser, name="apiadduser"),
|
path('adduser/', views.NCAddUser, name="apiadduser"),
|
||||||
path('addgf/', views.NCAddGroupFolder, name="apiaddgf"),
|
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
|
# EXTERNAL FROM NC
|
||||||
path('logout/<str:uid>', views.apilogout, name="api-logout"),
|
path('logout/<str:uid>', views.apilogout, name="api-logout"),
|
||||||
path('uschanged/<str:uid>/<str:sid>', views.userChangedInNc, name="api-userchanged"),
|
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 django.shortcuts import redirect
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
@ -252,7 +253,8 @@ def NCAddGroupFolder(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||||
data = {
|
data = {
|
||||||
"gid" : "agencymaingroupid_" + str(agency.pk)
|
"gid" : "agencymaingroupid_" + str(agency.pk),
|
||||||
|
"aid" : str(agency.pk)
|
||||||
}
|
}
|
||||||
headers = {
|
headers = {
|
||||||
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id']
|
||||||
|
|
@ -263,13 +265,84 @@ def NCAddGroupFolder(request):
|
||||||
|
|
||||||
return JsonResponse({"status" : "NO AUTH"})
|
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'], )
|
@api_view(['POST'], )
|
||||||
def NCAddDirsFiles(request):
|
def NCAddFiles(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
agency = Agency.objects.get(pk=request.POST.get('agencyid'))
|
||||||
print(agency)
|
file_to_load = DataFile.objects.get(pk=request.POST.get('fileid'))
|
||||||
pass
|
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"})
|
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 standards.models import StandardCommentRate, StandardComments
|
||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
from message.models import Message
|
from message.models import Message
|
||||||
from cloud.models import DataFile
|
from cloud.models import DataFile, DataDir
|
||||||
from organizer.models import AGContacts
|
from organizer.models import AGContacts
|
||||||
from timemanagement.models import Workday, Breaks, AbsenceReason, FreeDays, Absence
|
from timemanagement.models import Workday, Breaks, AbsenceReason, FreeDays, Absence
|
||||||
from chat.models import ChatRoom
|
from chat.models import ChatRoom
|
||||||
|
|
@ -26,6 +26,7 @@ admin.site.register(AgencyNetwork)
|
||||||
admin.site.register(AGContacts)
|
admin.site.register(AGContacts)
|
||||||
admin.site.register(AgencyNetworkPreperation)
|
admin.site.register(AgencyNetworkPreperation)
|
||||||
admin.site.register(DataFile)
|
admin.site.register(DataFile)
|
||||||
|
admin.site.register(DataDir)
|
||||||
admin.site.register(UserTime)
|
admin.site.register(UserTime)
|
||||||
admin.site.register(Workday)
|
admin.site.register(Workday)
|
||||||
admin.site.register(Breaks)
|
admin.site.register(Breaks)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue