get s3 url
This commit is contained in:
parent
b1527a8f49
commit
23ef8eab20
|
@ -19,7 +19,7 @@ class TmcField(models.Model):
|
||||||
field = models.ForeignKey(BaseCustomField, models.RESTRICT)
|
field = models.ForeignKey(BaseCustomField, models.RESTRICT)
|
||||||
text = models.CharField(null=True, blank=True)
|
text = models.CharField(null=True, blank=True)
|
||||||
file_id = 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):
|
class TmcElement(models.Model):
|
||||||
|
|
|
@ -33,7 +33,5 @@ def upload_file(file_id):
|
||||||
aws_secret_access_key=settings.SELECTEL['secret'],
|
aws_secret_access_key=settings.SELECTEL['secret'],
|
||||||
)
|
)
|
||||||
s3.upload_fileobj(r.raw, 'inventorization', file_id)
|
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 = file_id
|
||||||
obj.image_aws_url = object_url
|
|
||||||
obj.save()
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
import json
|
import json
|
||||||
import requests
|
|
||||||
import time
|
import time
|
||||||
|
import boto3
|
||||||
|
|
||||||
from telegram import Update
|
from telegram import Update
|
||||||
|
|
||||||
|
@ -17,9 +17,6 @@ from .updater import tg_bot_updater_instance
|
||||||
from .models import TgItem, TmcField
|
from .models import TgItem, TmcField
|
||||||
from .serializers import TgItemSerializer, TmcFieldSerializer
|
from .serializers import TgItemSerializer, TmcFieldSerializer
|
||||||
|
|
||||||
from tmc.models import TerritoryItem
|
|
||||||
from tmc.serializers import TerritoryItemSerializer
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
logger = logging.getLogger("root")
|
logger = logging.getLogger("root")
|
||||||
|
@ -31,10 +28,10 @@ class TgItemViewSet(viewsets.ModelViewSet):
|
||||||
http_method_names = ["post", "get", "patch"]
|
http_method_names = ["post", "get", "patch"]
|
||||||
permission_classes = ()
|
permission_classes = ()
|
||||||
authentication_classes = ()
|
authentication_classes = ()
|
||||||
|
|
||||||
filter_backends = [DjangoFilterBackend]
|
filter_backends = [DjangoFilterBackend]
|
||||||
filterset_fields = ['user_id']
|
filterset_fields = ["user_id"]
|
||||||
|
|
||||||
def retrieve(self, request, pk=None):
|
def retrieve(self, request, pk=None):
|
||||||
item = TgItem.objects.get(id=pk)
|
item = TgItem.objects.get(id=pk)
|
||||||
logger.info(
|
logger.info(
|
||||||
|
@ -42,10 +39,10 @@ class TgItemViewSet(viewsets.ModelViewSet):
|
||||||
)
|
)
|
||||||
return super().retrieve(request, pk)
|
return super().retrieve(request, pk)
|
||||||
# return Response(serializer.data)
|
# return Response(serializer.data)
|
||||||
|
|
||||||
def partial_update(self, request, *args, **kwargs):
|
def partial_update(self, request, *args, **kwargs):
|
||||||
if 'location_id' in request.data:
|
if "location_id" in request.data:
|
||||||
request.data['location'] = 35
|
request.data["location"] = 35
|
||||||
return super().partial_update(request)
|
return super().partial_update(request)
|
||||||
|
|
||||||
@action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"])
|
@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"]
|
http_method_names = ["post", "get", "patch"]
|
||||||
permission_classes = ()
|
permission_classes = ()
|
||||||
authentication_classes = ()
|
authentication_classes = ()
|
||||||
|
|
||||||
def partial_update(self, request, *args, **kwargs):
|
def partial_update(self, request, *args, **kwargs):
|
||||||
return super().partial_update(request)
|
return super().partial_update(request)
|
||||||
|
|
||||||
@action(detail=False, methods=["get"], url_path=r"get_name/(?P<chat_id>[^/.]+)")
|
@action(detail=False, methods=["get"], url_path=r"get_name/(?P<chat_id>[^/.]+)")
|
||||||
def get_name(self, request, 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 = []
|
response = []
|
||||||
timer = 30
|
timer = 30
|
||||||
while timer > 0:
|
while timer > 0:
|
||||||
|
@ -84,7 +83,9 @@ class TmcFieldViewset(viewsets.ModelViewSet):
|
||||||
|
|
||||||
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
|
@action(detail=False, methods=["get"], url_path=r"get_image/(?P<field_id>[^/.]+)")
|
||||||
def get_image(self, request, 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 = []
|
response = []
|
||||||
timer = 30
|
timer = 30
|
||||||
while timer > 0:
|
while timer > 0:
|
||||||
|
@ -96,3 +97,17 @@ class TmcFieldViewset(viewsets.ModelViewSet):
|
||||||
del tg_bot_updater_instance.return_values[field_id]
|
del tg_bot_updater_instance.return_values[field_id]
|
||||||
break
|
break
|
||||||
return Response(response)
|
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])
|
||||||
|
|
Loading…
Reference in New Issue