added list, file process

This commit is contained in:
Alexander Karpov 2023-04-06 14:41:10 +03:00
parent 845c989718
commit bad7355c96
8 changed files with 48 additions and 8 deletions

View File

@ -2,7 +2,7 @@
from django.core.management.base import BaseCommand
from django.utils import timezone
from django.utils.translation import ugettext as _
from django.utils.translation import gettext as _
from akarpov.contrib.chunked_upload.constants import COMPLETE, UPLOADING
from akarpov.contrib.chunked_upload.models import ChunkedUpload

View File

@ -2,13 +2,13 @@
from django.dispatch import receiver
from akarpov.files.models import File
from akarpov.files.tasks import generate_file_review
from akarpov.files.tasks import process_file
@receiver(post_save, sender=File)
def post_on_create(sender, instance: File, created, **kwargs):
if created:
generate_file_review.apply_async(
process_file.apply_async(
kwargs={
"pk": instance.pk,
},

View File

@ -1,3 +1,5 @@
import os
from celery import shared_task
from django.core.files import File
@ -6,14 +8,18 @@
@shared_task()
def generate_file_review(pk: int):
def process_file(pk: int):
file = FileModel.objects.get(pk=pk)
if not file.name:
file.name = file.file.name
pth = create_preview(file.file)
with open(pth, "rb") as f:
file.preview.save(
pth.split("/")[-1],
File(f.read()),
File(f),
save=False,
)
file.save(update_fields=["preview"])
if os.path.isfile(pth):
os.remove(pth)
return pk

View File

@ -4,12 +4,14 @@
ChunkedUploadDemo,
MyChunkedUploadCompleteView,
MyChunkedUploadView,
TopFolderView,
files_view,
folder_view,
)
app_name = "files"
urlpatterns = [
path("", TopFolderView.as_view(), name="main"),
path("upload", ChunkedUploadDemo.as_view(), name="chunked_upload"),
path(
"api/chunked_upload_complete/",

View File

@ -1,6 +1,7 @@
import os
from django.views.generic import DetailView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import DetailView, ListView
from django.views.generic.base import TemplateView
from akarpov.contrib.chunked_upload.exceptions import ChunkedUploadError
@ -12,6 +13,21 @@
from akarpov.files.models import File, Folder
class TopFolderView(LoginRequiredMixin, ListView):
template_name = "files/list.html"
model = File
def get_queryset(self):
return File.objects.filter(user=self.request.user, folder__isnull=True)
def get_context_data(self, **kwargs):
contex = super().get_context_data(**kwargs)
contex["folders"] = Folder.objects.filter(
user=self.request.user, parent__isnull=True
)
return contex
class FileView(DetailView):
template_name = "files/view.html"
model = File
@ -69,4 +85,4 @@ def on_completion(self, uploaded_file, request):
os.remove(uploaded_file.file.path)
def get_response_data(self, chunked_upload, request):
return {"message": (self.message)}
return {"message": self.message}

View File

@ -49,6 +49,12 @@
<a href="{% url 'about:about' %}" class="{% active_link 'about' %} text-muted nav-link px-sm-0 px-2">
<i class="fs-5 bi-person"></i><span class="ms-1 d-none d-sm-inline">About me</span></a>
</li>
{% if request.user.is_authenticated %}
<li>
<a href="{% url 'files:main' %}" class="{% active_link 'files' %} text-muted nav-link px-sm-0 px-2">
<i class="fs-5 bi-folder-fill"></i><span class="ms-1 d-none d-sm-inline">Files</span></a>
</li>
{% endif %}
<li class="dropdown">
<a href="#" class="text-muted nav-link dropdown-toggle px-sm-0 px-1" id="dropdown" data-bs-toggle="dropdown" aria-expanded="false">
<i class="fs-5 bi-terminal-fill"></i><span class="ms-1 d-none d-sm-inline">Apps</span>

View File

@ -0,0 +1,10 @@
{% extends 'base.html' %}
{% block content %}
{% for folder in folders %}
{{ folder.name }}
{% endfor %}
{% for file in file_list %}
{{ file.name }} - {{ file.file.url }}
{% endfor %}
{% endblock %}

View File

@ -22,7 +22,7 @@
path("users/", include("akarpov.users.urls", namespace="users")),
path("about/", include("akarpov.about.urls", namespace="about")),
path("files/", include("akarpov.files.urls", namespace="files")),
path("files/", include("akarpov.music.urls", namespace="music")),
path("music/", include("akarpov.music.urls", namespace="music")),
path("forms/", include("akarpov.test_platform.urls", namespace="forms")),
path("tools/", include("akarpov.tools.urls", namespace="tools")),
path("ckeditor/", include("ckeditor_uploader.urls")),