vpn integration

This commit is contained in:
2026-04-11 22:07:59 +02:00
parent c4d27e9842
commit 00ac38d126
47 changed files with 945 additions and 749 deletions
+16 -17
View File
@@ -1,12 +1,11 @@
from django.db import models
from django.conf import settings
import mimetypes
import uuid
from functools import cached_property
from pathlib import Path
from urllib.parse import quote
import mimetypes
import uuid
import shlex
from django.conf import settings
from django.db import models
class Torrent(models.Model):
@@ -14,8 +13,12 @@ class Torrent(models.Model):
name = models.CharField(max_length=255)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
user = models.ForeignKey("user.User", on_delete=models.CASCADE, related_name="torrents")
shared_users = models.ManyToManyField("user.User", related_name="torrents_shares", blank=True, through="SharedUser")
user = models.ForeignKey(
"user.User", on_delete=models.CASCADE, related_name="torrents"
)
shared_users = models.ManyToManyField(
"user.User", related_name="torrents_shares", blank=True, through="SharedUser"
)
size = models.PositiveBigIntegerField()
transmission_data = models.JSONField(default=dict)
@@ -35,10 +38,7 @@ class Torrent(models.Model):
@cached_property
def related_users(self):
return [
self.user_id,
*self.shared_users.values_list("id", flat=True)
]
return [self.user_id, *self.shared_users.values_list("id", flat=True)]
class SharedUser(models.Model):
@@ -50,7 +50,6 @@ class SharedUser(models.Model):
unique_together = ("user", "torrent")
class File(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
torrent = models.ForeignKey("Torrent", models.CASCADE, related_name="files")
@@ -86,7 +85,7 @@ class File(models.Model):
def is_video(self):
if self.mime_types.startswith("video/"):
return True
video_extensions = ['.mp4', '.flv', '.webm', '.avi', '.mkv', '.mov', '.wmv']
video_extensions = [".mp4", ".flv", ".webm", ".avi", ".mkv", ".mov", ".wmv"]
return self.pathname.suffix.lower() in video_extensions
@property
@@ -95,13 +94,13 @@ class File(models.Model):
encoded_parts = []
for part in self.pathname.parts:
# Ignorer un slash initial si présent
if part == '/' or part == '\\':
if part == "/" or part == "\\":
continue
encoded_parts.append(quote(part))
# Construction du chemin final avec le préfixe Nginx
if settings.NGINX_ACCEL_BASE.endswith('/'):
base = settings.NGINX_ACCEL_BASE.rstrip('/')
if settings.NGINX_ACCEL_BASE.endswith("/"):
base = settings.NGINX_ACCEL_BASE.rstrip("/")
else:
base = settings.NGINX_ACCEL_BASE