push latest changes

This commit is contained in:
Daniel S. 2021-12-13 19:11:43 +01:00
parent 7523a19d1f
commit cb2b5c2c2b
63 changed files with 3158 additions and 1552 deletions

View file

@ -1,4 +1,8 @@
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
from flask_sqlalchemy import SQLAlchemy # isort:skip
db = SQLAlchemy() # isort:skip
from .transcode import TranscodeJob
from .stats import Stats
from .transcode import TranscodeJob
from .requests import RequestItem, RequestUser
from flask_sqlalchemy import SQLAlchemy

74
models/requests.py Normal file
View file

@ -0,0 +1,74 @@
from datetime import datetime
from uuid import uuid4
from sqlalchemy import Float, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from api import Client
from . import db
class RequestItem(db.Model):
id = db.Column(
db.String,
default=lambda: str(
uuid4()),
index=True,
unique=True)
item_id = db.Column(db.String, primary_key=True)
added_date = db.Column(db.DateTime)
request_type = db.Column(db.String)
data = db.Column(db.String)
approved = db.Column(db.Boolean, nullable=True)
arr_id = db.Column(db.String, nullable=True)
jellyfin_id = db.Column(db.String, nullable=True)
users = relationship("RequestUser", back_populates="requests")
@property
def downloads(self):
yield from self._download_state()
@property
def arr_item(self):
c = Client()
if self.request_type == "sonarr":
return c.sonarr.series(self.arr_id)
if self.request_type == "radarr":
return c.radarr.movies(self.arr_id)
def _download_state(self):
c = Client()
if self.request_type == "sonarr":
q = c.sonarr.queue()
for item in q:
if item["seriesId"] == str(self.arr_id):
item["download"] = c.qbittorent.poll(self.download_id)
yield item
c = Client()
if self.request_type == "radarr":
q = c.radarr.queue()
for item in q:
if str(item["movieId"]) == str(self.arr_id):
if item["protocol"] == "torrent":
item["download"] = c.qbittorent.poll(
item["downloadId"])
yield item
class RequestUser(db.Model):
item_id = db.Column(
db.String,
db.ForeignKey(
RequestItem.item_id),
primary_key=True)
user_id = db.Column(db.String, primary_key=True)
hidden = db.Column(db.Boolean, default=False)
updated = db.Column(db.Boolean, default=True)
user_name = db.Column(db.String)
requests = relationship("RequestItem", back_populates="users")
@property
def details(self):
c = Client()
return c.jellyfin.get_users(self.user_id)

View file

@ -1,7 +1,9 @@
from . import db
from sqlalchemy import String, Float, Column, Integer, DateTime
from datetime import datetime
from sqlalchemy import Column, DateTime, Float, Integer, String
from . import db
class Stats(db.Model):
id = db.Column(db.Integer, primary_key=True)
@ -9,6 +11,7 @@ class Stats(db.Model):
key = db.Column(db.String)
value = db.Column(db.Float)
class Diagrams(db.Model):
name = db.Column(db.String,primary_key=True)
data = db.Column(db.String)
name = db.Column(db.String, primary_key=True)
data = db.Column(db.String)

View file

@ -1,13 +1,15 @@
from . import db
from sqlalchemy import String, Float, Column, Integer, DateTime, ForeignKey
from sqlalchemy_utils import JSONType
from sqlalchemy.orm import relationship
from datetime import datetime
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from sqlalchemy_utils import JSONType
from . import db
class TranscodeJob(db.Model):
id = db.Column(db.Integer, primary_key=True)
created = db.Column(db.DateTime, default=datetime.today)
status = db.Column(JSONType, default={})
completed = db.Column(db.DateTime, default=None)
profile = db.Column(db.String, default=None)
profile = db.Column(db.String, default=None)

View file