83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.views.generic import TemplateView
|
|
from .models import Data
|
|
from django.views.generic.edit import FormView
|
|
from .forms import CloudAddFileForm
|
|
from django.conf import settings
|
|
from django.core.files.storage import default_storage
|
|
from digitaleagentur.settings import BASE_DIR
|
|
from django.http import JsonResponse
|
|
import os
|
|
|
|
|
|
|
|
class CloudMain(LoginRequiredMixin, FormView):
|
|
form_class = CloudAddFileForm
|
|
success_url = '/cloud/home'
|
|
|
|
def form_valid(self, form):
|
|
form = CloudAddFileForm(self.request.POST, self.request.FILES['file'])
|
|
tempdata = Data(file=self.request.FILES['file'], subdir="/"+self.request.POST.get("subdirinfo")+"/", agency=self.request.user.profile.agency, owner=self.request.user)
|
|
tempdata.save()
|
|
return super().form_valid(form)
|
|
|
|
# Change context and return for template-data
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
agency_id = self.request.user.profile.agency.pk
|
|
if self.request.is_ajax() == False:
|
|
agencyfiles = Data.objects.filter(agency__pk=agency_id)
|
|
|
|
dirs = []
|
|
files = []
|
|
|
|
dirs = os.listdir(BASE_DIR+"\\media\\agencydata\\agency_"+str(agency_id)+"\\files\\")
|
|
if(self.kwargs['level'] != "home"):
|
|
dirs = os.listdir(BASE_DIR+"\\media\\agencydata\\agency_"+str(agency_id)+"\\files\\"+self.kwargs['level'])
|
|
|
|
# ALLOWED FILETYPES
|
|
filecheckarr = [".txt", ".pdf", ".TXT", ".PDF", ".jpg", ".JPG", ".png", ".PNG", ".jpeg", ".JPEG", ".docx", ".odt", ".odf"]
|
|
|
|
for d in dirs:
|
|
for fa in filecheckarr:
|
|
if fa in d:
|
|
templevel = self.kwargs["level"].split("\\")
|
|
templevel_final = templevel[len(self.kwargs["level"].split("\\"))-1]
|
|
if(templevel_final == "home"):
|
|
templevel_final = ""
|
|
tempsearchname = templevel_final+"/"+d
|
|
fileob = list(Data.objects.filter(file__endswith=tempsearchname))[0]
|
|
files.append(fileob)
|
|
dirs.remove(d)
|
|
|
|
if(self.kwargs['level'] != "home"):
|
|
i = 0
|
|
for d in dirs:
|
|
dirs[i] = self.kwargs["level"] + "\\" + d
|
|
i += 1
|
|
|
|
crumplevel = self.kwargs["level"].split("\\")
|
|
|
|
context.update({'active_link' : 'cloud', 'files': files, 'dirs' : dirs, 'agencyfiles' : agencyfiles, 'level' : self.kwargs["level"], 'crumplevel' : crumplevel})
|
|
return context
|
|
else:
|
|
context.update({'active_link' : 'cloud'})
|
|
adddirname = self.request.GET.get("adddirname")
|
|
newdirname = self.request.GET.get("newdirname")
|
|
|
|
if(adddirname == "home"):
|
|
os.mkdir(BASE_DIR+"\\media\\agencydata\\agency_"+str(agency_id)+"\\files\\" + newdirname)
|
|
else:
|
|
os.mkdir(BASE_DIR+"\\media\\agencydata\\agency_"+str(agency_id)+"\\files\\" + adddirname + "\\" + newdirname)
|
|
|
|
return {}
|
|
|
|
|
|
|
|
def adddirbyajax(request):
|
|
return {"success" : success}
|