Commit 45b7d1cb authored by “Mikkelando”'s avatar “Mikkelando”
Browse files

add func for daemon message sending

1 merge request!16Profile
Showing with 154 additions and 3 deletions
+154 -3
No preview for this file type
# Generated by Django 4.2.16 on 2025-01-16 16:33
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("mainapp", "0008_editrequest"),
]
operations = [
migrations.AddField(
model_name="editrequest",
name="received_file",
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AlterField(
model_name="editrequest",
name="req_state",
field=models.CharField(
choices=[
("wait_confirmation", "Ожидание подтверждения"),
("in_progress", "В работе"),
("ready", "Готово"),
("error", "Ошибка"),
],
default="wait_confirmation",
max_length=50,
),
),
migrations.CreateModel(
name="IncomingEditRequest",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("response_datetime", models.DateTimeField(auto_now_add=True)),
("server_response", models.TextField()),
(
"result_file_path",
models.CharField(blank=True, max_length=255, null=True),
),
(
"status",
models.CharField(
choices=[("ready", "Готово"), ("error", "Ошибка")],
max_length=50,
),
),
(
"related_request",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="incoming_request",
to="mainapp.editrequest",
),
),
],
),
migrations.CreateModel(
name="Incoming_req",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("processed_datetime", models.DateTimeField(auto_now_add=True)),
("job_state", models.CharField(default="success", max_length=50)),
(
"order",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE, to="mainapp.order"
),
),
],
),
]
# Generated by Django 4.2.16 on 2025-01-20 22:21
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("mainapp", "0009_editrequest_received_file_and_more"),
]
operations = [
migrations.DeleteModel(
name="Incoming_req",
),
]
from django.contrib.auth.models import User
from django.db import models
import threading
import time
class Order(models.Model):
order_datetime = models.DateTimeField(auto_now_add=True) # Дата и время создания заказа
......@@ -11,17 +13,60 @@ class Order(models.Model):
def __str__(self):
return f"Order {self.id} for {self.user.username}"
class EditRequest(models.Model):
req_datetime = models.DateTimeField(auto_now_add=True) # Дата и время создания заказа
user = models.ForeignKey(User, on_delete=models.CASCADE) # Связь с пользователем
req_parameters = models.TextField(default='no parameters') # Параметры заказа
file_path = models.CharField(max_length=255, blank=True, null=True) # Путь к файлу
req_state = models.CharField(max_length=50, default='wait_confirmation') # Состояние заказа
req_state = models.CharField(
max_length=50,
default='wait_confirmation',
choices=[
('wait_confirmation', 'Ожидание подтверждения'),
('in_progress', 'В работе'),
('ready', 'Готово'),
('error', 'Ошибка'),
]
) # Состояние заказа
received_file = models.CharField(max_length=255, blank=True, null=True) # Полученный файл от сервера
def __str__(self):
return f"Edit Request {self.id} for {self.user.username}"
def save(self, *args, **kwargs):
# Сохраняем объект
is_new = self.pk is None
super().save(*args, **kwargs)
# Если это новый объект, запускаем фоновую задачу
if is_new:
threading.Thread(target=self.send_request_to_server, args=(), daemon=True).start()
def send_request_to_server(self):
# Заглушка для отправки данных на сервер
print(f"Начало отправки данных для заявки {self.id}")
time.sleep(5) # Симуляция задержки
print(f"Данные для заявки {self.id} отправлены на сервер.")
class IncomingEditRequest(models.Model):
related_request = models.OneToOneField(
EditRequest,
on_delete=models.CASCADE,
related_name='incoming_request'
) # Связь с исходной заявкой
response_datetime = models.DateTimeField(auto_now_add=True) # Время получения ответа
server_response = models.TextField() # Ответ от сервера
result_file_path = models.CharField(max_length=255, blank=True, null=True) # Путь к полученному файлу
status = models.CharField(
max_length=50,
choices=[
('ready', 'Готово'),
('error', 'Ошибка'),
]
) # Статус результата
def __str__(self):
return f"Incoming Edit Request for {self.related_request}"
class Storage(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment