From b65481207a53bd82a683f438c0553e8ac078f66e Mon Sep 17 00:00:00 2001 From: MOIS3Y Date: Wed, 30 Aug 2023 16:38:28 +0900 Subject: [PATCH] Fix: custom storage path --- .../collector/api/tests/test_views.py | 2 +- .../collector/migrations/0001_initial.py | 6 ++---- logs_collector/collector/models.py | 21 +------------------ logs_collector/collector/tests/test_models.py | 2 +- logs_collector/logs_collector/settings.py | 19 ++++++++++++----- logs_collector/logs_collector/urls.py | 8 ------- 6 files changed, 19 insertions(+), 39 deletions(-) diff --git a/logs_collector/collector/api/tests/test_views.py b/logs_collector/collector/api/tests/test_views.py index b3718d8..798c503 100644 --- a/logs_collector/collector/api/tests/test_views.py +++ b/logs_collector/collector/api/tests/test_views.py @@ -11,7 +11,7 @@ from collector.models import Archive, Platform, Ticket def delete_test_files(ticket): - test_file = settings.MEDIA_ROOT_FOR_SENSITIVE_FILES / Path(str(ticket)) + test_file = settings.MEDIA_ROOT / Path(str(ticket)) test_file.unlink(missing_ok=True) diff --git a/logs_collector/collector/migrations/0001_initial.py b/logs_collector/collector/migrations/0001_initial.py index 4607b91..80282ac 100644 --- a/logs_collector/collector/migrations/0001_initial.py +++ b/logs_collector/collector/migrations/0001_initial.py @@ -1,12 +1,10 @@ -# Generated by Django 4.2 on 2023-08-15 03:58 +# Generated by Django 4.2 on 2023-08-30 05:52 import collector.utils from django.conf import settings -import django.core.files.storage import django.core.validators from django.db import migrations, models import django.db.models.deletion -import pathlib import uuid @@ -49,7 +47,7 @@ class Migration(migrations.Migration): name='Archive', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('file', models.FileField(blank=True, null=True, storage=django.core.files.storage.FileSystemStorage(base_url='/archives/', location=pathlib.PurePosixPath('/home/stepan/Documents/Dev/ISPsystem/logs-collector/logs_collector/archives')), upload_to=collector.utils.logs_dir_path)), + ('file', models.FileField(blank=True, null=True, upload_to=collector.utils.logs_dir_path)), ('md5', models.CharField(editable=False, max_length=1024)), ('time_create', models.DateTimeField(auto_now_add=True)), ('time_update', models.DateTimeField(auto_now=True)), diff --git a/logs_collector/collector/models.py b/logs_collector/collector/models.py index 7c4f712..8ec1f55 100644 --- a/logs_collector/collector/models.py +++ b/logs_collector/collector/models.py @@ -1,35 +1,16 @@ import uuid import hashlib -from functools import partial from django.core.validators import MaxValueValidator, MinValueValidator from django.contrib.auth.models import User from django.db import models -from django.conf import settings -from django.core.files.storage import FileSystemStorage from django.urls import reverse from .utils import logs_dir_path -# Create a custom storage location, using a value from your settings file -sensitive_upload_storage = FileSystemStorage( - location=settings.MEDIA_ROOT_FOR_SENSITIVE_FILES, - base_url=settings.MEDIA_URL_FOR_SENSITIVE_FILES -) -# ... and a file field that will use the custom storage -AuthenticatedFileField = partial( - models.FileField, - storage=sensitive_upload_storage -) - - class Archive(models.Model): - file = AuthenticatedFileField( - upload_to=logs_dir_path, - blank=True, - null=True - ) + file = models.FileField(upload_to=logs_dir_path, blank=True, null=True) md5 = models.CharField(max_length=1024, editable=False) time_create = models.DateTimeField(auto_now_add=True) time_update = models.DateTimeField(auto_now=True) diff --git a/logs_collector/collector/tests/test_models.py b/logs_collector/collector/tests/test_models.py index 0f000e8..34a5d4d 100644 --- a/logs_collector/collector/tests/test_models.py +++ b/logs_collector/collector/tests/test_models.py @@ -8,7 +8,7 @@ from collector.models import Platform, Ticket, Archive def delete_test_files(ticket): - test_file = settings.MEDIA_ROOT_FOR_SENSITIVE_FILES / Path(str(ticket)) + test_file = settings.MEDIA_ROOT / Path(str(ticket)) test_file.unlink(missing_ok=True) diff --git a/logs_collector/logs_collector/settings.py b/logs_collector/logs_collector/settings.py index effe853..047c9c2 100644 --- a/logs_collector/logs_collector/settings.py +++ b/logs_collector/logs_collector/settings.py @@ -139,12 +139,21 @@ STATIC_ROOT = BASE_DIR / 'static' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' -MEDIA_ROOT = BASE_DIR / 'media' -MEDIA_URL = 'media/' - -MEDIA_ROOT_FOR_SENSITIVE_FILES = BASE_DIR / 'archives' -MEDIA_URL_FOR_SENSITIVE_FILES = '/archives/' +MEDIA_ROOT = BASE_DIR / 'archives' +STORAGES = { + # ... + "default": { + "BACKEND": "django.core.files.storage.FileSystemStorage", + "OPTIONS": { + "location": MEDIA_ROOT, + "base_url": "/archives/", + }, + }, + "staticfiles": { + "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage", + }, +} # django-crispy-forms and crispy-bootstrap5 # https://django-crispy-forms.readthedocs.io/en/latest/ diff --git a/logs_collector/logs_collector/urls.py b/logs_collector/logs_collector/urls.py index eac5e33..2118e36 100644 --- a/logs_collector/logs_collector/urls.py +++ b/logs_collector/logs_collector/urls.py @@ -1,4 +1,3 @@ -from django.conf.urls.static import static from django.contrib import admin from django.urls import path, include @@ -9,8 +8,6 @@ from drf_spectacular.views import ( ) from two_factor.urls import urlpatterns as tf_urls - -from logs_collector import settings from account.utils import AdminSiteOTPRequiredMixinRedirectSetup @@ -57,8 +54,3 @@ urlpatterns += [ name='redoc' ), ] - -if settings.DEBUG: - urlpatterns += static( - settings.MEDIA_URL, document_root=settings.MEDIA_ROOT - )