digitaleagenturnc/cloud/views.py

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}