vpn integration
This commit is contained in:
+16
-17
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user