Skip to content

Commit

Permalink
feat: add private media storage
Browse files Browse the repository at this point in the history
  • Loading branch information
helllllllder committed Oct 17, 2024
1 parent b3b2fb6 commit de3fb7a
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 4.1.2 on 2024-10-17 18:34

import chats.core.storage_backends
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("discussions", "0001_initial"),
]

operations = [
migrations.AlterField(
model_name="discussionmessagemedia",
name="media_file",
field=models.FileField(
blank=True,
max_length=300,
null=True,
storage=chats.core.storage_backends.PrivateMediaStorage(),
upload_to="discussionmedia/%Y/%m/%d/",
verbose_name="Media File",
),
),
]
2 changes: 2 additions & 0 deletions chats/apps/discussions/models/discussion_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from django.utils.translation import gettext_lazy as _

from chats.core.models import BaseModel, WebSocketsNotifiableMixin
from chats.core.storage_backends import PrivateMediaStorage


class DiscussionMessage(WebSocketsNotifiableMixin, BaseModel):
Expand Down Expand Up @@ -65,6 +66,7 @@ class DiscussionMessageMedia(BaseModel):
blank=True,
max_length=300,
upload_to="discussionmedia/%Y/%m/%d/",
storage=PrivateMediaStorage(),
)

class Meta:
Expand Down
26 changes: 26 additions & 0 deletions chats/apps/msgs/migrations/0008_alter_messagemedia_media_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 4.1.2 on 2024-10-17 18:34

import chats.core.storage_backends
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("msgs", "0007_alter_message_options"),
]

operations = [
migrations.AlterField(
model_name="messagemedia",
name="media_file",
field=models.FileField(
blank=True,
max_length=300,
null=True,
storage=chats.core.storage_backends.PrivateMediaStorage(),
upload_to="",
verbose_name="Media File",
),
),
]
7 changes: 6 additions & 1 deletion chats/apps/msgs/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from chats.core.models import BaseModel
from chats.core.requests import get_request_session_with_retries
from chats.core.storage_backends import PrivateMediaStorage


class Message(BaseModel):
Expand Down Expand Up @@ -114,7 +115,11 @@ class MessageMedia(BaseModel):
)
content_type = models.CharField(_("Content Type"), max_length=300)
media_file = models.FileField(
_("Media File"), null=True, blank=True, max_length=300
_("Media File"),
null=True,
blank=True,
max_length=300,
storage=PrivateMediaStorage(),
)
media_url = models.TextField(_("Media url"), null=True, blank=True)

Expand Down
5 changes: 5 additions & 0 deletions chats/core/excel_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@


class ExcelStorage(S3Boto3Storage): # pragma: no cover
location = "private"
default_acl = "private"
file_overwrite = False
custom_domain = False

def get_default_settings(self):
default_settings = super().get_default_settings()
default_settings["location"] = "dashboard_data/excel"
Expand Down
8 changes: 8 additions & 0 deletions chats/core/storage_backends.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from storages.backends.s3boto3 import S3Boto3Storage


class PrivateMediaStorage(S3Boto3Storage):
location = "private"
default_acl = "private"
file_overwrite = False
custom_domain = False

0 comments on commit de3fb7a

Please sign in to comment.