diff --git a/archivist/apps/files/urls.py b/archivist/apps/files/urls.py deleted file mode 100644 index 29ea12e..0000000 --- a/archivist/apps/files/urls.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.urls import re_path, path -from . import views - -urlpatterns = [ - # Add a URL pattern that captures the file path - path('submission/', views.serve_submission_file, name='serve_submission_file'), - # Other URL patterns if any - path('upload/', views.fileUpload, name='file_upload'), -] diff --git a/archivist/apps/files/views.py b/archivist/apps/files/views.py deleted file mode 100644 index 5445b88..0000000 --- a/archivist/apps/files/views.py +++ /dev/null @@ -1,83 +0,0 @@ -# Create your views here. - -from django.contrib.auth.decorators import login_required -from django.http import FileResponse, HttpResponse, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render - -import os -import blake3 - -from .forms import UploadFileForm -from .models import Submission_File - - -def compute_file_hash(file): - ''' - Compute BLAKE3 hash of the file - ''' - try: - hasher = blake3.blake3() - for chunk in file.chunks(chunk_size=65536): - hasher.update(chunk) - return hasher.hexdigest() - except Exception as e: - print(f"Error computing file hash: {e}") - return None - - -@login_required(login_url="/login/") -def serve_submission_file(request, file_hash): - ''' - View function to serve submission files for download or inline viewing - ''' - download = request.GET.get('d') - - try: - submission_file = get_object_or_404(Submission_File, file_hash=file_hash) - file = submission_file.file.file - file_name = submission_file.file_name - - response = FileResponse(file) - if download == "1": - response['Content-Disposition'] = f'attachment; filename="{file_name}"' - else: - response['Content-Disposition'] = f'inline; filename="{file_name}"' - - return response - - except: - return HttpResponse("File not found", status=404) - - -@login_required(login_url="/login/") -def fileUpload(request): - ''' - View function for handling file uploads - ''' - if request.method == 'POST': - form = UploadFileForm(request.POST, request.FILES) - if form.is_valid(): - file = form.cleaned_data['file'] - - file_name = file.name - file_hash = compute_file_hash(file) - - Null, file_ext = os.path.splitext(file_name) - hash_file_name = file_hash + file_ext - - new_submission_file, created = Submission_File.objects.get_or_create(file_hash=file_hash) - - new_submission_file.file_hash = file_hash - new_submission_file.file_name = file_name - new_submission_file.file.save(hash_file_name, file) - - new_submission_file.save - - return HttpResponseRedirect("/") - - else: - form = UploadFileForm() - - return render(request, 'files/upload.html', {'form': form}) - - diff --git a/archivist/core/settings.py b/archivist/core/settings.py index 2e71221..0f120c6 100644 --- a/archivist/core/settings.py +++ b/archivist/core/settings.py @@ -61,8 +61,6 @@ INSTALLED_APPS = [ "django_celery_beat", "django_celery_results", - 'apps.files', - # Gallery Archivist apps 'sites.furaffinity' ] diff --git a/archivist/core/urls.py b/archivist/core/urls.py index c41d958..cc9a25f 100644 --- a/archivist/core/urls.py +++ b/archivist/core/urls.py @@ -21,7 +21,6 @@ admin.site.site_header = 'Gallery Archivist Django Admin Panel' urlpatterns = [ path('admin/', admin.site.urls), # Django admin route path("", include("apps.authentication.urls")), # Auth routes - login / register - path("files/", include("apps.files.urls")), path("", include("sites.furaffinity.urls")),