This commit is contained in:
Kseninia Mikhaylova 2024-07-19 11:48:37 +03:00
parent 5e8f4649a2
commit db276f2bec
3 changed files with 26 additions and 29 deletions

View File

@ -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}"

View File

@ -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

View File

@ -39,7 +39,7 @@ class TmcFieldViewset(viewsets.ModelViewSet):
@action(detail=False, methods=["get"], url_path=r"get_name/(?P<chat_id>[^/.]+)")
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<field_id>[^/.]+)")
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)