diff --git a/back/tgbot/models.py b/back/tgbot/models.py index 68eddd4..7e3bd07 100644 --- a/back/tgbot/models.py +++ b/back/tgbot/models.py @@ -18,6 +18,7 @@ def group_based_upload_to(instance, filename): 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) class TmcElement(models.Model): @@ -41,4 +42,4 @@ class TgItem(models.Model): tmc = models.ManyToManyField(TmcElement) def __str__(self): - return f"Tg item {self.id}" + return f"Tg item {self.name}" diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index 1664b5e..b1442df 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -65,17 +65,17 @@ class TgBot: async def admin_action(self, name, queryset): if name == "admin_get_image": - async for item in queryset: - try: - text = await TgBot.app.bot.get_file(item.text) - TgBotUpdater.return_values[item.text] = text.file_path - except Exception as e: - TgBotUpdater.return_values[item.text] = None - if name == "admin_get_name": - item = queryset[0] + item = queryset try: - text = await TgBot.app.bot.get_chat(item) - TgBotUpdater.return_values[item] = text.effective_name + result = await TgBot.app.bot.get_file(item) + TgBotUpdater.return_values[item] = result.file_path + except Exception as e: + TgBotUpdater.return_values[item] = None + if name == "admin_get_name": + item = queryset + try: + result = await TgBot.app.bot.get_chat(item) + TgBotUpdater.return_values[item] = result.effective_name except Exception as e: TgBotUpdater.return_values[item] = None @@ -330,7 +330,7 @@ class TgBot: field = await BaseCustomField.objects.aget(id=element.field_id) if update.message.photo: - element.text = update.message.photo[-1].file_id + element.file_id = update.message.photo[-1].file_id elif update.message.text: element.text = update.message.text diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 7688ea5..eaec292 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -39,7 +39,7 @@ class TmcFieldViewset(viewsets.ModelViewSet): @action(detail=False, methods=["get"], url_path=r"get_name/(?P[^/.]+)") def get_name(self, request, chat_id): - TgBotUpdater.my_queue.put({"name": "admin_get_name", "queryset": [chat_id]}) + TgBotUpdater.my_queue.put({"name": "admin_get_name", "queryset": chat_id}) response = [] timer = 30 while timer > 0: @@ -53,19 +53,15 @@ class TmcFieldViewset(viewsets.ModelViewSet): return Response(response) @action(detail=False, methods=["get"], url_path=r"get_image/(?P[^/.]+)") def get_image(self, request, field_id): - if TmcField.objects.filter(id=field_id).exists(): - field = TmcField.objects.filter(id=field_id) - TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field}) - response = [] - timer = 30 - while timer > 0: - sleeping = 1 - timer -= sleeping - time.sleep(sleeping) - if field[0].text in TgBotUpdater.return_values: - response.append(TgBotUpdater.return_values[field[0].text]) - del TgBotUpdater.return_values[field[0].text] - break - return Response(response) - else: - raise (FileNotFoundError()) + TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field_id}) + response = [] + timer = 30 + while timer > 0: + sleeping = 1 + timer -= sleeping + time.sleep(sleeping) + if field_id in TgBotUpdater.return_values: + response.append(TgBotUpdater.return_values[field_id]) + del TgBotUpdater.return_values[field_id] + break + return Response(response)