Loading back/myfab/model.py +8 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,12 @@ class Queue(Model): name = CharField() weight = IntegerField(default=1) class QueueElement(Model): id = AutoField() state = IntegerField(default=0) # 0: todo, 1: done, 2: err/ canceled ? queue = ForeignKeyField(Queue) time_added = DateTimeField(default=datetime.datetime.now()) class PrintRequest(Model): id = AutoField(primary_key=True) title = CharField() Loading @@ -55,7 +61,7 @@ class PrintRequest(Model): status = IntegerField(default=0) project = TextField() operator = ForeignKeyField(User, null=True, default=None) queue = ForeignKeyField(Queue, null=True, default=None) # Only the queue info, the actual queue is not store in db queue_element = ForeignKeyField(QueueElement, null=True, default=None) # Only the queue info, the actual queue is not store in db recup_id = CharField(default="") class Message(Model): Loading @@ -82,11 +88,7 @@ class PrinterQueue(Model): printer = ForeignKeyField(Printer) queue = ForeignKeyField(Queue) class QueueElement(Model): id = AutoField() state = IntegerField(default=0) # 0: todo, 1: done, 2: err/ canceled ? queue = ForeignKeyField(Queue) time_added = DateTimeField(default=datetime.datetime.now()) Loading back/myfab/queue.py +23 −12 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ from myfab.model import PrintRequest, QueueElement, Queue, Printer, PrinterQueue import requests as r import json import myfab.log as log import peewee QUEUE_ELEMENT_STATE_INQUEUE = 0 QUEUE_ELEMENT_STATE_DONE = 1 Loading @@ -13,20 +14,25 @@ QUEUE_ELEMENT_STATE_REMOVED = 2 """ Add request to the end of the queue """ def enqueue(req, queue): pass def enqueue(req : PrintRequest, queue): elem : QueueElement = QueueElement.create(queue = queue) req.queue_element = elem.id return elem """ Get the immediate next item Peek the immediate next queue item """ def get_next_request(queue): pass try: return QueueElement.select().where(QueueElement.state == QUEUE_ELEMENT_STATE_INQUEUE and QueueElement.queue == queue).order_by(QueueElement.id).limit(1).get() except peewee.DoesNotExist: return None def rm_queue_top(queue): pass def remove_queue_element(queue_element, reason): pass def rm_queue_top(queue, reason = QUEUE_ELEMENT_STATE_REMOVED): e :QueueElement = get_next_request(queue) if e != None: e.state = reason e.save() """ Number of elements before queue_element. Loading @@ -39,6 +45,11 @@ def get_queue_element_pos(queue_element: QueueElement): #region PRINTER UTILS & class def get_printers_from_db(): # for p in Printer.select(): # p.model pass class PrinterBase: def __init__(self, printer_obj): Loading Loading
back/myfab/model.py +8 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,12 @@ class Queue(Model): name = CharField() weight = IntegerField(default=1) class QueueElement(Model): id = AutoField() state = IntegerField(default=0) # 0: todo, 1: done, 2: err/ canceled ? queue = ForeignKeyField(Queue) time_added = DateTimeField(default=datetime.datetime.now()) class PrintRequest(Model): id = AutoField(primary_key=True) title = CharField() Loading @@ -55,7 +61,7 @@ class PrintRequest(Model): status = IntegerField(default=0) project = TextField() operator = ForeignKeyField(User, null=True, default=None) queue = ForeignKeyField(Queue, null=True, default=None) # Only the queue info, the actual queue is not store in db queue_element = ForeignKeyField(QueueElement, null=True, default=None) # Only the queue info, the actual queue is not store in db recup_id = CharField(default="") class Message(Model): Loading @@ -82,11 +88,7 @@ class PrinterQueue(Model): printer = ForeignKeyField(Printer) queue = ForeignKeyField(Queue) class QueueElement(Model): id = AutoField() state = IntegerField(default=0) # 0: todo, 1: done, 2: err/ canceled ? queue = ForeignKeyField(Queue) time_added = DateTimeField(default=datetime.datetime.now()) Loading
back/myfab/queue.py +23 −12 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ from myfab.model import PrintRequest, QueueElement, Queue, Printer, PrinterQueue import requests as r import json import myfab.log as log import peewee QUEUE_ELEMENT_STATE_INQUEUE = 0 QUEUE_ELEMENT_STATE_DONE = 1 Loading @@ -13,20 +14,25 @@ QUEUE_ELEMENT_STATE_REMOVED = 2 """ Add request to the end of the queue """ def enqueue(req, queue): pass def enqueue(req : PrintRequest, queue): elem : QueueElement = QueueElement.create(queue = queue) req.queue_element = elem.id return elem """ Get the immediate next item Peek the immediate next queue item """ def get_next_request(queue): pass try: return QueueElement.select().where(QueueElement.state == QUEUE_ELEMENT_STATE_INQUEUE and QueueElement.queue == queue).order_by(QueueElement.id).limit(1).get() except peewee.DoesNotExist: return None def rm_queue_top(queue): pass def remove_queue_element(queue_element, reason): pass def rm_queue_top(queue, reason = QUEUE_ELEMENT_STATE_REMOVED): e :QueueElement = get_next_request(queue) if e != None: e.state = reason e.save() """ Number of elements before queue_element. Loading @@ -39,6 +45,11 @@ def get_queue_element_pos(queue_element: QueueElement): #region PRINTER UTILS & class def get_printers_from_db(): # for p in Printer.select(): # p.model pass class PrinterBase: def __init__(self, printer_obj): Loading