Move media handling to new app
This commit is contained in:
parent
ad18226974
commit
a0d0b5d594
9 changed files with 38 additions and 23 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -4,4 +4,4 @@ __pycache__
|
||||||
/nummi-git/
|
/nummi-git/
|
||||||
/pkg/
|
/pkg/
|
||||||
/src/
|
/src/
|
||||||
/nummi/media
|
/media
|
||||||
|
|
|
@ -4,7 +4,6 @@ from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", views.IndexView.as_view(), name="index"),
|
path("", views.IndexView.as_view(), name="index"),
|
||||||
path("media/user/<username>/<path:path>", views.MediaView.as_view(), name="media"),
|
|
||||||
path("login", views.LoginView.as_view(), name="login"),
|
path("login", views.LoginView.as_view(), name="login"),
|
||||||
path("logout", views.LogoutView.as_view(), name="logout"),
|
path("logout", views.LogoutView.as_view(), name="logout"),
|
||||||
path("transactions", views.TransactionListView.as_view(), name="transactions"),
|
path("transactions", views.TransactionListView.as_view(), name="transactions"),
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
from django.conf import settings
|
|
||||||
from django.contrib.auth import views as auth_views
|
from django.contrib.auth import views as auth_views
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.contrib.postgres.search import (
|
from django.contrib.postgres.search import (
|
||||||
|
@ -7,12 +6,9 @@ from django.contrib.postgres.search import (
|
||||||
SearchVector,
|
SearchVector,
|
||||||
TrigramSimilarity,
|
TrigramSimilarity,
|
||||||
)
|
)
|
||||||
from django.core.exceptions import PermissionDenied
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.http import HttpResponse
|
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.views import View
|
|
||||||
from django.views.generic import (
|
from django.views.generic import (
|
||||||
CreateView,
|
CreateView,
|
||||||
DeleteView,
|
DeleteView,
|
||||||
|
@ -22,7 +18,6 @@ from django.views.generic import (
|
||||||
UpdateView,
|
UpdateView,
|
||||||
)
|
)
|
||||||
from django.views.generic.dates import MonthArchiveView
|
from django.views.generic.dates import MonthArchiveView
|
||||||
from django.views.static import serve
|
|
||||||
|
|
||||||
from .forms import (
|
from .forms import (
|
||||||
AccountForm,
|
AccountForm,
|
||||||
|
@ -417,22 +412,6 @@ class SearchView(TransactionListView):
|
||||||
return super().get_context_data(**kwargs) | {"search": self.kwargs["search"]}
|
return super().get_context_data(**kwargs) | {"search": self.kwargs["search"]}
|
||||||
|
|
||||||
|
|
||||||
class MediaView(LoginRequiredMixin, View):
|
|
||||||
def get(self, request, *args, **kwargs):
|
|
||||||
_username = kwargs.get("username")
|
|
||||||
_path = kwargs.get("path")
|
|
||||||
if request.user.get_username() != _username:
|
|
||||||
raise PermissionDenied
|
|
||||||
|
|
||||||
if settings.DEBUG:
|
|
||||||
return serve(request, f"user/{_username}/{_path}", settings.MEDIA_ROOT)
|
|
||||||
|
|
||||||
_res = HttpResponse()
|
|
||||||
_res["Content-Type"] = ""
|
|
||||||
_res["X-Accel-Redirect"] = f"/internal/media/user/{_username}/{_path}"
|
|
||||||
return _res
|
|
||||||
|
|
||||||
|
|
||||||
class TransactionMonthView(UserMixin, MonthArchiveView):
|
class TransactionMonthView(UserMixin, MonthArchiveView):
|
||||||
template_name = "main/month/transaction.html"
|
template_name = "main/month/transaction.html"
|
||||||
model = Transaction
|
model = Transaction
|
||||||
|
|
0
nummi/media/__init__.py
Normal file
0
nummi/media/__init__.py
Normal file
6
nummi/media/apps.py
Normal file
6
nummi/media/apps.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MediaConfig(AppConfig):
|
||||||
|
name = "media"
|
||||||
|
verbose_name = "Media"
|
7
nummi/media/urls.py
Normal file
7
nummi/media/urls.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("user/<username>/<path:path>", views.MediaView.as_view(), name="media"),
|
||||||
|
]
|
22
nummi/media/views.py
Normal file
22
nummi/media/views.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
from django.conf import settings
|
||||||
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
|
from django.core.exceptions import PermissionDenied
|
||||||
|
from django.http import HttpResponse
|
||||||
|
from django.views import View
|
||||||
|
from django.views.static import serve
|
||||||
|
|
||||||
|
|
||||||
|
class MediaView(LoginRequiredMixin, View):
|
||||||
|
def get(self, request, *args, **kwargs):
|
||||||
|
_username = kwargs.get("username")
|
||||||
|
_path = kwargs.get("path")
|
||||||
|
if request.user.get_username() != _username:
|
||||||
|
raise PermissionDenied
|
||||||
|
|
||||||
|
if settings.DEBUG:
|
||||||
|
return serve(request, f"user/{_username}/{_path}", settings.MEDIA_ROOT)
|
||||||
|
|
||||||
|
_res = HttpResponse()
|
||||||
|
_res["Content-Type"] = ""
|
||||||
|
_res["X-Accel-Redirect"] = f"/internal/media/user/{_username}/{_path}"
|
||||||
|
return _res
|
|
@ -45,6 +45,7 @@ CSRF_TRUSTED_ORIGINS = CONFIG.get("trusted_origins", ["http://localhost"])
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
"main.apps.MainConfig",
|
"main.apps.MainConfig",
|
||||||
|
"media.apps.MediaConfig",
|
||||||
"django.contrib.admin",
|
"django.contrib.admin",
|
||||||
"django.contrib.auth",
|
"django.contrib.auth",
|
||||||
"django.contrib.contenttypes",
|
"django.contrib.contenttypes",
|
||||||
|
|
|
@ -19,6 +19,7 @@ from django.urls import include, path
|
||||||
|
|
||||||
urlpatterns = i18n_patterns(
|
urlpatterns = i18n_patterns(
|
||||||
path("", include("main.urls")),
|
path("", include("main.urls")),
|
||||||
|
path("media/", include("media.urls")),
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
prefix_default_language=False,
|
prefix_default_language=False,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue