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): 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)
class TmcElement(models.Model): class TmcElement(models.Model):
@ -41,4 +42,4 @@ class TgItem(models.Model):
tmc = models.ManyToManyField(TmcElement) tmc = models.ManyToManyField(TmcElement)
def __str__(self): 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): async def admin_action(self, name, queryset):
if name == "admin_get_image": if name == "admin_get_image":
async for item in queryset: item = 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]
try: try:
text = await TgBot.app.bot.get_chat(item) result = await TgBot.app.bot.get_file(item)
TgBotUpdater.return_values[item] = text.effective_name 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: except Exception as e:
TgBotUpdater.return_values[item] = None TgBotUpdater.return_values[item] = None
@ -330,7 +330,7 @@ class TgBot:
field = await BaseCustomField.objects.aget(id=element.field_id) field = await BaseCustomField.objects.aget(id=element.field_id)
if update.message.photo: 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: elif update.message.text:
element.text = 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>[^/.]+)") @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):
TgBotUpdater.my_queue.put({"name": "admin_get_name", "queryset": [chat_id]}) TgBotUpdater.my_queue.put({"name": "admin_get_name", "queryset": chat_id})
response = [] response = []
timer = 30 timer = 30
while timer > 0: while timer > 0:
@ -53,19 +53,15 @@ class TmcFieldViewset(viewsets.ModelViewSet):
return Response(response) return Response(response)
@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):
if TmcField.objects.filter(id=field_id).exists(): TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field_id})
field = TmcField.objects.filter(id=field_id) response = []
TgBotUpdater.my_queue.put({"name": "admin_get_image", "queryset": field}) timer = 30
response = [] while timer > 0:
timer = 30 sleeping = 1
while timer > 0: timer -= sleeping
sleeping = 1 time.sleep(sleeping)
timer -= sleeping if field_id in TgBotUpdater.return_values:
time.sleep(sleeping) response.append(TgBotUpdater.return_values[field_id])
if field[0].text in TgBotUpdater.return_values: del TgBotUpdater.return_values[field_id]
response.append(TgBotUpdater.return_values[field[0].text]) break
del TgBotUpdater.return_values[field[0].text] return Response(response)
break
return Response(response)
else:
raise (FileNotFoundError())