JET-Design-Wortmarke im Kopf und auf der Rechnung
Die Logos stammen aus der Shop-Webseite (assets/img/logo). Im Seitenkopf stehen beide SVG-Varianten im Markup, CSS blendet die zum Theme passende ein -- der Dark-Mode-Schalter laedt die Seite nicht neu. Fuer den Rechnungsdruck liegt die Wortmarke zusaetzlich als JPEG bei, weil fpdf2 kein SVG setzen kann. logo_datei() waehlt aus: hochgeladenes Logo vor mitgelieferter Marke, Textkopf nur noch als Notnagel. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
26
app.py
26
app.py
@@ -118,6 +118,20 @@ def as_stueckzahl(value):
|
||||
return max(1, zahl)
|
||||
|
||||
|
||||
|
||||
def logo_datei(config):
|
||||
"""Pfad des Rechnungslogos relativ zu static/.
|
||||
|
||||
Ein hochgeladenes Logo hat Vorrang, sonst greift die mitgelieferte
|
||||
Wortmarke. Fehlen beide Dateien, kommt '' zurueck und der PDF-Kopf
|
||||
setzt den Firmennamen als Text.
|
||||
"""
|
||||
for name in (config.get('logo', ''), STANDARD_LOGO):
|
||||
if name and os.path.exists(os.path.join('static', name)):
|
||||
return name
|
||||
return ''
|
||||
|
||||
|
||||
def pdf_text(value):
|
||||
"""Macht beliebigen Text fuer die latin-1-Kernfonts von fpdf sicher.
|
||||
|
||||
@@ -147,6 +161,11 @@ MAX_PROJEKTE = 500
|
||||
|
||||
LOGO_EXTS = ('png', 'jpg', 'webp')
|
||||
|
||||
# Mitgelieferte JET-Design-Wortmarke fuer den Rechnungskopf. Aus der
|
||||
# SVG-Vorlage des Shops gerastert, weil fpdf2 nur Pixelbilder setzt.
|
||||
# Greift, solange kein eigenes Logo hochgeladen wurde.
|
||||
STANDARD_LOGO = 'img/logo/jet-design.jpg'
|
||||
|
||||
# Obergrenze, damit ein fehlerhafter Client die Config nicht aufblaeht.
|
||||
MAX_POSITIONEN = 50
|
||||
|
||||
@@ -589,7 +608,8 @@ def index():
|
||||
def settings():
|
||||
"""Einstellungsseite fuer Druckerabschreibung, Arbeitskosten und Marge."""
|
||||
config = load_config()
|
||||
return render_template('settings.html', config=config)
|
||||
return render_template('settings.html', config=config,
|
||||
logo_anzeige=logo_datei(config))
|
||||
|
||||
|
||||
@app.route('/calculate', methods=['POST'])
|
||||
@@ -843,9 +863,9 @@ def invoice_pdf():
|
||||
col_w = 45
|
||||
|
||||
# Logo rechts oben
|
||||
logo_name = config.get('logo', '')
|
||||
logo_name = logo_datei(config)
|
||||
logo_path = os.path.join('static', logo_name) if logo_name else ''
|
||||
if logo_name and os.path.exists(logo_path):
|
||||
if logo_name:
|
||||
pdf.image(logo_path, x=175, y=12, w=20)
|
||||
img_w, img_h = image_dimensions(logo_path)
|
||||
if img_w and img_h:
|
||||
|
||||
Reference in New Issue
Block a user