get s3 url

This commit is contained in:
Kseninia Mikhaylova 2024-08-12 14:41:38 +03:00
parent b1527a8f49
commit 23ef8eab20
3 changed files with 31 additions and 18 deletions

View File

@ -19,7 +19,7 @@ class TmcField(models.Model):
field = models.ForeignKey(BaseCustomField, models.RESTRICT)
text = models.CharField(null=True, blank=True)
file_id = models.CharField(null=True, blank=True)
image_aws_url = models.CharField(null=True, blank=True)
image_aws_url = models.CharField(null=True, blank=True)
class TmcElement(models.Model):

View File

@ -33,7 +33,5 @@ def upload_file(file_id):
aws_secret_access_key=settings.SELECTEL['secret'],
)
s3.upload_fileobj(r.raw, 'inventorization', file_id)
object_url = s3.generate_presigned_url('get_object', ExpiresIn=0, Params={'Bucket': 'inventorization', 'Key': file_id})
obj.image_aws_url = object_url
obj.save()
obj.image_aws_url = file_id

View File

@ -1,8 +1,8 @@
from django.conf import settings
from django.db import models
import json
import requests
import time
import boto3
from telegram import Update
@ -17,9 +17,6 @@ from .updater import tg_bot_updater_instance
from .models import TgItem, TmcField
from .serializers import TgItemSerializer, TmcFieldSerializer
from tmc.models import TerritoryItem
from tmc.serializers import TerritoryItemSerializer
import logging
logger = logging.getLogger("root")
@ -31,10 +28,10 @@ class TgItemViewSet(viewsets.ModelViewSet):
http_method_names = ["post", "get", "patch"]
permission_classes = ()
authentication_classes = ()
filter_backends = [DjangoFilterBackend]
filterset_fields = ['user_id']
filterset_fields = ["user_id"]
def retrieve(self, request, pk=None):
item = TgItem.objects.get(id=pk)
logger.info(
@ -42,10 +39,10 @@ class TgItemViewSet(viewsets.ModelViewSet):
)
return super().retrieve(request, pk)
# return Response(serializer.data)
def partial_update(self, request, *args, **kwargs):
if 'location_id' in request.data:
request.data['location'] = 35
if "location_id" in request.data:
request.data["location"] = 35
return super().partial_update(request)
@action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"])
@ -63,13 +60,15 @@ class TmcFieldViewset(viewsets.ModelViewSet):
http_method_names = ["post", "get", "patch"]
permission_classes = ()
authentication_classes = ()
def partial_update(self, request, *args, **kwargs):
return super().partial_update(request)
@action(detail=False, methods=["get"], url_path=r"get_name/(?P<chat_id>[^/.]+)")
def get_name(self, request, chat_id):
tg_bot_updater_instance.my_queue.put({"name": "admin_get_name", "queryset": chat_id})
tg_bot_updater_instance.my_queue.put(
{"name": "admin_get_name", "queryset": chat_id}
)
response = []
timer = 30
while timer > 0:
@ -84,7 +83,9 @@ class TmcFieldViewset(viewsets.ModelViewSet):
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
def get_image(self, request, field_id):
tg_bot_updater_instance.my_queue.put({"name": "admin_get_image", "queryset": field_id})
tg_bot_updater_instance.my_queue.put(
{"name": "admin_get_image", "queryset": field_id}
)
response = []
timer = 30
while timer > 0:
@ -96,3 +97,17 @@ class TmcFieldViewset(viewsets.ModelViewSet):
del tg_bot_updater_instance.return_values[field_id]
break
return Response(response)
@action(detail=False, methods=["get"], url_path=r"get_image_s3/(?P<file_id>[^/.]+)")
def get_image_s3(self, request, file_id):
s3 = boto3.client(
service_name="s3",
endpoint_url="https://s3.ru-1.storage.selcloud.ru",
aws_access_key_id=settings.SELECTEL["access"],
aws_secret_access_key=settings.SELECTEL["secret"],
)
object_url = s3.generate_presigned_url(
"get_object",
Params={"Bucket": "inventorization", "Key": file_id},
)
return Response([object_url])