feat(orion): extend report layout settings to version 1.1
This commit is contained in:
parent
12e1761a5b
commit
613ffdc8b7
591 changed files with 3601 additions and 999 deletions
Binary file not shown.
|
|
@ -61,6 +61,8 @@ class QuickStartService:
|
|||
device = self._device(str(payload.device_id)) if payload.device_id else self._single_or_default(devices)
|
||||
if device is None:
|
||||
raise ValueError("Kein Gerät verfügbar.")
|
||||
if device.customer_id != customer.id:
|
||||
raise ValueError("Gerät gehört nicht zum ausgewählten Kunden.")
|
||||
locations = list(
|
||||
self.session.scalars(
|
||||
select(Location).where(Location.customer_id == customer.id).order_by(Location.name.asc())
|
||||
|
|
@ -73,13 +75,23 @@ class QuickStartService:
|
|||
)
|
||||
location = self._location(str(payload.location_id)) if payload.location_id else self._single_or_default(locations)
|
||||
contact = self._contact(str(payload.contact_id)) if payload.contact_id else self._single_or_default(contacts)
|
||||
if location is None:
|
||||
if locations:
|
||||
raise ValueError("Bitte Standort auswählen.")
|
||||
raise ValueError("Kein Standort verfügbar.")
|
||||
if location.customer_id != customer.id:
|
||||
raise ValueError("Standort gehört nicht zum ausgewählten Kunden.")
|
||||
if device.location_id and device.location_id != location.id:
|
||||
raise ValueError("Gerät gehört nicht zum gewählten Standort.")
|
||||
if contact and contact.customer_id != customer.id:
|
||||
raise ValueError("Ansprechpartner gehört nicht zum ausgewählten Kunden.")
|
||||
|
||||
base = self._base_validation(device.id, payload.validation_type)
|
||||
bundle = ReportTemplateService(self.session).ensure_default_template()
|
||||
validation = Validation(
|
||||
report_number=self._next_report_number(),
|
||||
customer_id=customer.id,
|
||||
location_id=location.id if location else (locations[0].id if locations else None),
|
||||
location_id=location.id,
|
||||
contact_id=contact.id if contact else None,
|
||||
device_id=device.id,
|
||||
validation_type=payload.validation_type,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.report_settings import (
|
||||
OrionImagePosition,
|
||||
OrionImageSize,
|
||||
OrionLayoutProfile,
|
||||
OrionLogoSize,
|
||||
OrionPageMargin,
|
||||
OrionReportSettings,
|
||||
OrionReportSettingsScope,
|
||||
OrionSignatureMode,
|
||||
OrionSpacing,
|
||||
OrionTableFontSize,
|
||||
)
|
||||
from app.models.user import User
|
||||
from app.schemas.domain import OrionReportSettingsUpdate
|
||||
|
||||
|
||||
class OrionReportSettingsService:
|
||||
def __init__(self, session: Session) -> None:
|
||||
self.session = session
|
||||
|
||||
def get_global(self) -> OrionReportSettings:
|
||||
settings = self.session.scalar(
|
||||
select(OrionReportSettings).where(
|
||||
OrionReportSettings.scope == OrionReportSettingsScope.global_.value
|
||||
)
|
||||
)
|
||||
if settings is not None:
|
||||
return settings
|
||||
settings = OrionReportSettings(
|
||||
scope=OrionReportSettingsScope.global_.value,
|
||||
layout_profile=OrionLayoutProfile.standard.value,
|
||||
show_cover_result_text=True,
|
||||
signature_mode=OrionSignatureMode.technical_only.value,
|
||||
image_size=OrionImageSize.medium.value,
|
||||
page_break_before_main_chapters=True,
|
||||
page_margin=OrionPageMargin.standard.value,
|
||||
section_spacing=OrionSpacing.standard.value,
|
||||
table_layout=OrionSpacing.standard.value,
|
||||
table_font_size=OrionTableFontSize.standard.value,
|
||||
image_position=OrionImagePosition.side_by_side.value,
|
||||
max_images_per_page=2,
|
||||
show_image_captions=True,
|
||||
show_header=True,
|
||||
show_footer=True,
|
||||
logo_size=OrionLogoSize.medium.value,
|
||||
compact_cover=False,
|
||||
)
|
||||
self.session.add(settings)
|
||||
self.session.flush()
|
||||
return settings
|
||||
|
||||
def update_global(self, payload: OrionReportSettingsUpdate, user: User) -> OrionReportSettings:
|
||||
settings = self.get_global()
|
||||
settings.layout_profile = payload.layout_profile.value
|
||||
settings.show_cover_result_text = payload.show_cover_result_text
|
||||
settings.signature_mode = payload.signature_mode.value
|
||||
settings.image_size = payload.image_size.value
|
||||
settings.page_break_before_main_chapters = payload.page_break_before_main_chapters
|
||||
settings.page_margin = payload.page_margin.value
|
||||
settings.section_spacing = payload.section_spacing.value
|
||||
settings.table_layout = payload.table_layout.value
|
||||
settings.table_font_size = payload.table_font_size.value
|
||||
settings.image_position = payload.image_position.value
|
||||
settings.max_images_per_page = payload.max_images_per_page
|
||||
settings.show_image_captions = payload.show_image_captions
|
||||
settings.show_header = payload.show_header
|
||||
settings.show_footer = payload.show_footer
|
||||
settings.logo_size = payload.logo_size.value
|
||||
settings.compact_cover = payload.compact_cover
|
||||
settings.updated_by_user_id = user.id
|
||||
self.session.flush()
|
||||
return settings
|
||||
Loading…
Add table
Add a link
Reference in a new issue