Commit 0b127bad authored by Grégor JOUET's avatar Grégor JOUET 🔧
Browse files

printer manager and queue utils

parent 566dd824
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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()
@@ -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):
@@ -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())




+23 −12
Original line number Diff line number Diff line
@@ -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
@@ -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.
@@ -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):