Fix: custom storage path

This commit is contained in:
Stepan Zhukovsky 2023-08-30 16:38:28 +09:00
parent 68bec09209
commit b65481207a
6 changed files with 19 additions and 39 deletions

View File

@ -11,7 +11,7 @@ from collector.models import Archive, Platform, Ticket
def delete_test_files(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) test_file.unlink(missing_ok=True)

View File

@ -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 import collector.utils
from django.conf import settings from django.conf import settings
import django.core.files.storage
import django.core.validators import django.core.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import pathlib
import uuid import uuid
@ -49,7 +47,7 @@ class Migration(migrations.Migration):
name='Archive', name='Archive',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('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)), ('md5', models.CharField(editable=False, max_length=1024)),
('time_create', models.DateTimeField(auto_now_add=True)), ('time_create', models.DateTimeField(auto_now_add=True)),
('time_update', models.DateTimeField(auto_now=True)), ('time_update', models.DateTimeField(auto_now=True)),

View File

@ -1,35 +1,16 @@
import uuid import uuid
import hashlib import hashlib
from functools import partial
from django.core.validators import MaxValueValidator, MinValueValidator from django.core.validators import MaxValueValidator, MinValueValidator
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from django.urls import reverse from django.urls import reverse
from .utils import logs_dir_path 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): class Archive(models.Model):
file = AuthenticatedFileField( file = models.FileField(upload_to=logs_dir_path, blank=True, null=True)
upload_to=logs_dir_path,
blank=True,
null=True
)
md5 = models.CharField(max_length=1024, editable=False) md5 = models.CharField(max_length=1024, editable=False)
time_create = models.DateTimeField(auto_now_add=True) time_create = models.DateTimeField(auto_now_add=True)
time_update = models.DateTimeField(auto_now=True) time_update = models.DateTimeField(auto_now=True)

View File

@ -8,7 +8,7 @@ from collector.models import Platform, Ticket, Archive
def delete_test_files(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) test_file.unlink(missing_ok=True)

View File

@ -139,12 +139,21 @@ STATIC_ROOT = BASE_DIR / 'static'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = BASE_DIR / 'media' MEDIA_ROOT = BASE_DIR / 'archives'
MEDIA_URL = 'media/'
MEDIA_ROOT_FOR_SENSITIVE_FILES = BASE_DIR / 'archives'
MEDIA_URL_FOR_SENSITIVE_FILES = '/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 # django-crispy-forms and crispy-bootstrap5
# https://django-crispy-forms.readthedocs.io/en/latest/ # https://django-crispy-forms.readthedocs.io/en/latest/

View File

@ -1,4 +1,3 @@
from django.conf.urls.static import static
from django.contrib import admin from django.contrib import admin
from django.urls import path, include 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 two_factor.urls import urlpatterns as tf_urls
from logs_collector import settings
from account.utils import AdminSiteOTPRequiredMixinRedirectSetup from account.utils import AdminSiteOTPRequiredMixinRedirectSetup
@ -57,8 +54,3 @@ urlpatterns += [
name='redoc' name='redoc'
), ),
] ]
if settings.DEBUG:
urlpatterns += static(
settings.MEDIA_URL, document_root=settings.MEDIA_ROOT
)