diff --git a/back/api/celery.py b/back/api/celery.py index 1f9ab59..680a2c1 100644 --- a/back/api/celery.py +++ b/back/api/celery.py @@ -10,7 +10,4 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings") celery_app = Celery("api") celery_app.config_from_object(f'django.conf:settings', namespace='CELERY') - -print(os) -print(celery_app) celery_app.autodiscover_tasks() \ No newline at end of file diff --git a/back/poetry.lock b/back/poetry.lock index bcab18b..abf60d3 100644 --- a/back/poetry.lock +++ b/back/poetry.lock @@ -98,6 +98,44 @@ files = [ {file = "billiard-4.2.0.tar.gz", hash = "sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c"}, ] +[[package]] +name = "boto3" +version = "1.34.154" +description = "The AWS SDK for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "boto3-1.34.154-py3-none-any.whl", hash = "sha256:7ca22adef4c77ee128e1e1dc7d48bc9512a87cc6fe3d771b3f913d5ecd41c057"}, + {file = "boto3-1.34.154.tar.gz", hash = "sha256:864f06528c583dc7b02adf12db395ecfadbf9cb0da90e907e848ffb27128ce19"}, +] + +[package.dependencies] +botocore = ">=1.34.154,<1.35.0" +jmespath = ">=0.7.1,<2.0.0" +s3transfer = ">=0.10.0,<0.11.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.34.154" +description = "Low-level, data-driven core of boto 3." +optional = false +python-versions = ">=3.8" +files = [ + {file = "botocore-1.34.154-py3-none-any.whl", hash = "sha256:4eef4b1bb809b382ba9dc9c88f5fcc4a133f221a1acb693ee6bee4de9f325979"}, + {file = "botocore-1.34.154.tar.gz", hash = "sha256:64d9b4c85a504d77cb56dabb2ad717cd8e1717424a88edb458b01d1e5797262a"}, +] + +[package.dependencies] +jmespath = ">=0.7.1,<2.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} + +[package.extras] +crt = ["awscrt (==0.20.11)"] + [[package]] name = "celery" version = "5.4.0" @@ -497,6 +535,17 @@ files = [ {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + [[package]] name = "kombu" version = "5.3.7" @@ -891,6 +940,23 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "s3transfer" +version = "0.10.2" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">=3.8" +files = [ + {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, + {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, +] + +[package.dependencies] +botocore = ">=1.33.2,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + [[package]] name = "six" version = "1.16.0" @@ -1026,4 +1092,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "6362300a16177d23be8b5603dfd1ba3cf5ce477bb51962661c8bcf818433cf26" +content-hash = "aa35e34107fa686fbca554ddc961c9d1c8164357927c2ee20196d61c9deb06c2" diff --git a/back/pyproject.toml b/back/pyproject.toml index 77ffa3f..8303d10 100644 --- a/back/pyproject.toml +++ b/back/pyproject.toml @@ -20,6 +20,7 @@ python-telegram-bot = { extras = ["job-queue"], version = "^21.3" } more-itertools = "^10.3.0" djangoviz = "^0.1.1" celery = { extras = ["redis"], version = "^5.4.0" } +boto3 = "^1.34.154" [tool.poetry.group.dev.dependencies] taskipy = "^1.12.2" diff --git a/back/tgbot/models.py b/back/tgbot/models.py index 29196b4..8a0661f 100644 --- a/back/tgbot/models.py +++ b/back/tgbot/models.py @@ -19,6 +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) class TmcElement(models.Model): diff --git a/back/tgbot/tasks.py b/back/tgbot/tasks.py new file mode 100644 index 0000000..e2c8e8d --- /dev/null +++ b/back/tgbot/tasks.py @@ -0,0 +1,9 @@ +from celery import shared_task +from celery.utils.log import get_task_logger + +logger = get_task_logger(__name__) + + +@shared_task +def upload_file(file_id): + logger.info(file_id) diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index cc81325..14ce27c 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -29,6 +29,7 @@ from django.conf import settings from django.urls import reverse from django.db import models +from .tasks import upload_file from .models import TgItem, TmcElement, TmcField from tmc.models import CustomTable, BaseCustomField, Territory, TerritoryItem @@ -545,6 +546,7 @@ class TgBot: if update.message.photo: element.file_id = update.message.photo[-1].file_id + upload_file.delay(element.file_id) elif update.message.text: element.text = update.message.text diff --git a/env/back.env.example b/env/back.env.example index 0a0e95d..1dd05f3 100644 --- a/env/back.env.example +++ b/env/back.env.example @@ -6,4 +6,7 @@ DB_PORT= ODATA_AUTH= TG_TOKEN= -NGROK_TEMP= \ No newline at end of file +NGROK_TEMP= + +AWS_ACCESS= +AWS_SECRET= \ No newline at end of file