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}