Fix when we are retrieving the cache_files from the database (errors with new plugin_id filter)

This commit is contained in:
Théophile Diot 2024-03-12 11:12:43 +00:00
parent 122b64c2d4
commit dd525b4f58
No known key found for this signature in database
GPG key ID: 248FEA4BAE400D06
2 changed files with 46 additions and 88 deletions

View file

@ -1709,16 +1709,17 @@ class Database:
filters = {"job_name": job_name, "file_name": file_name}
if service_id:
filters["service_id"] = service_id
if plugin_id:
filters["plugin_id"] = plugin_id
with self.__db_session() as session:
if plugin_id:
job = session.query(Jobs).filter_by(name=job_name, plugin_id=plugin_id).first()
if not job:
return None
data = session.query(Jobs_cache).with_entities(*entities).filter_by(**filters).first()
if not data:
return None
if with_data and not with_info:
elif with_data and not with_info:
return data.data
ret_data = {}
@ -1738,24 +1739,36 @@ class Database:
query = session.query(Jobs_cache).with_entities(*entities)
filters = {}
if job_name:
filters["job_name"] = job_name
query = query.filter_by(job_name=job_name)
db_cache = query.all()
if not db_cache:
return []
job_names = []
if plugin_id:
filters["plugin_id"] = plugin_id
filters = {"plugin_id": plugin_id}
if job_name:
filters["name"] = job_name
job_names = [name for name in session.query(Jobs).with_entities(Jobs.name).filter_by(**filters)]
if not job_names:
return []
if filters:
query = query.filter_by(**filters)
return [
{
"job_name": cache.job_name,
"service_id": cache.service_id,
"file_name": cache.file_name,
"data": "Download file to view content" if not with_data else cache.data,
}
for cache in query
]
cache_files = []
for cache in db_cache:
if cache.job_name not in job_names:
continue
cache_files.append(
{
"job_name": cache.job_name,
"service_id": cache.service_id,
"file_name": cache.file_name,
"data": "Download file to view content" if not with_data else cache.data,
}
)
return cache_files
def add_instance(self, hostname: str, port: int, server_name: str, changed: Optional[bool] = True) -> str:
"""Add instance."""

View file

@ -72,11 +72,7 @@ class Settings(Base):
id = Column(String(256), primary_key=True)
name = Column(String(256), primary_key=True)
plugin_id = Column(
String(64),
ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"),
nullable=False,
)
plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), nullable=False)
context = Column(CONTEXTS_ENUM, nullable=False)
default = Column(String(4096), nullable=True, default="")
help = Column(String(512), nullable=False)
@ -94,11 +90,7 @@ class Settings(Base):
class Global_values(Base):
__tablename__ = "bw_global_values"
setting_id = Column(
String(256),
ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"),
primary_key=True,
)
setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True)
value = Column(String(8192), nullable=False)
suffix = Column(Integer, primary_key=True, nullable=True, default=0)
method = Column(METHODS_ENUM, nullable=False)
@ -121,16 +113,8 @@ class Services(Base):
class Services_settings(Base):
__tablename__ = "bw_services_settings"
service_id = Column(
String(64),
ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"),
primary_key=True,
)
setting_id = Column(
String(256),
ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"),
primary_key=True,
)
service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), primary_key=True)
setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True)
value = Column(String(8192), nullable=False)
suffix = Column(Integer, primary_key=True, nullable=True, default=0)
method = Column(METHODS_ENUM, nullable=False)
@ -144,10 +128,7 @@ class Jobs(Base):
__table_args__ = (UniqueConstraint("name", "plugin_id"),)
name = Column(String(128), primary_key=True)
plugin_id = Column(
String(64),
ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"),
)
plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"))
file_name = Column(String(256), nullable=False)
every = Column(SCHEDULES_ENUM, nullable=False)
reload = Column(Boolean, default=False, nullable=False)
@ -161,16 +142,8 @@ class Jobs(Base):
class Plugin_pages(Base):
__tablename__ = "bw_plugin_pages"
id = Column(
Integer,
Identity(start=1, increment=1),
primary_key=True,
)
plugin_id = Column(
String(64),
ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"),
nullable=False,
)
id = Column(Integer, Identity(start=1, increment=1), primary_key=True)
plugin_id = Column(String(64), ForeignKey("bw_plugins.id", onupdate="cascade", ondelete="cascade"), nullable=False)
template_file = Column(LargeBinary(length=(2**32) - 1), nullable=False)
template_checksum = Column(String(128), nullable=False)
actions_file = Column(LargeBinary(length=(2**32) - 1), nullable=False)
@ -181,27 +154,11 @@ class Plugin_pages(Base):
class Jobs_cache(Base):
__tablename__ = "bw_jobs_cache"
__table_args__ = (UniqueConstraint("job_name", "service_id", "file_name"),)
id = Column(
Integer,
Identity(start=1, increment=1),
primary_key=True,
)
job_name = Column(
String(128),
ForeignKey("bw_jobs.name", onupdate="cascade", ondelete="cascade"),
nullable=False,
)
service_id = Column(
String(64),
ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"),
nullable=True,
)
file_name = Column(
String(256),
nullable=False,
)
id = Column(Integer, Identity(start=1, increment=1), primary_key=True)
job_name = Column(String(128), ForeignKey("bw_jobs.name", onupdate="cascade", ondelete="cascade"), nullable=False)
service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), nullable=True)
file_name = Column(String(256), nullable=False)
data = Column(LargeBinary(length=(2**32) - 1), nullable=True)
last_update = Column(DateTime, nullable=True)
checksum = Column(String(128), nullable=True)
@ -214,16 +171,8 @@ class Custom_configs(Base):
__tablename__ = "bw_custom_configs"
__table_args__ = (UniqueConstraint("service_id", "type", "name"),)
id = Column(
Integer,
Identity(start=1, increment=1),
primary_key=True,
)
service_id = Column(
String(64),
ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"),
nullable=True,
)
id = Column(Integer, Identity(start=1, increment=1), primary_key=True)
service_id = Column(String(64), ForeignKey("bw_services.id", onupdate="cascade", ondelete="cascade"), nullable=True)
type = Column(CUSTOM_CONFIGS_TYPES_ENUM, nullable=False)
name = Column(String(256), nullable=False)
data = Column(LargeBinary(length=(2**32) - 1), nullable=False)
@ -236,11 +185,7 @@ class Custom_configs(Base):
class Selects(Base):
__tablename__ = "bw_selects"
setting_id = Column(
String(256),
ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"),
primary_key=True,
)
setting_id = Column(String(256), ForeignKey("bw_settings.id", onupdate="cascade", ondelete="cascade"), primary_key=True)
value = Column(String(256), primary_key=True)
setting = relationship("Settings", back_populates="selects")