add company logo

This commit is contained in:
2025-05-26 10:57:02 +02:00
parent 933182c790
commit 109a6978af
9 changed files with 76 additions and 2 deletions

Binary file not shown.

View File

@@ -0,0 +1,32 @@
"""add company logo field
Revision ID: f18735338888
Revises: 787468cfea77
Create Date: 2025-05-26 10:52:32.572951
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'f18735338888'
down_revision = '787468cfea77'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('site_settings', schema=None) as batch_op:
batch_op.add_column(sa.Column('company_logo', sa.String(length=255), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('site_settings', schema=None) as batch_op:
batch_op.drop_column('company_logo')
# ### end Alembic commands ###

View File

@@ -131,6 +131,7 @@ class SiteSettings(db.Model):
primary_color = db.Column(db.String(7), default='#16767b') # Default from colors.css
secondary_color = db.Column(db.String(7), default='#741b5f') # Default from colors.css
company_name = db.Column(db.String(100))
company_logo = db.Column(db.String(255)) # Store the filename of the logo
company_website = db.Column(db.String(200))
company_email = db.Column(db.String(100))
company_phone = db.Column(db.String(20))

View File

@@ -7,6 +7,7 @@ from sqlalchemy import func, case, literal_column, text
from datetime import datetime, timedelta
import logging
import sys
import time
# Set up logging to show in console
logging.basicConfig(
@@ -399,6 +400,24 @@ def init_routes(main_bp):
site_settings = SiteSettings.get_settings()
# Handle logo upload
if 'company_logo' in request.files:
logo_file = request.files['company_logo']
if logo_file and logo_file.filename:
# Delete old logo if it exists
if site_settings.company_logo:
old_logo_path = os.path.join('static', 'uploads', 'company_logos', site_settings.company_logo)
if os.path.exists(old_logo_path):
os.remove(old_logo_path)
# Save new logo
filename = secure_filename(logo_file.filename)
# Add timestamp to filename to prevent caching issues
filename = f"{int(time.time())}_{filename}"
logo_path = os.path.join('static', 'uploads', 'company_logos', filename)
logo_file.save(logo_path)
site_settings.company_logo = filename
# Update all company fields
site_settings.company_name = request.form.get('company_name')
site_settings.company_website = request.form.get('company_website')

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -18,7 +18,12 @@
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="{{ url_for('main.dashboard') }}">
<a class="navbar-brand d-flex align-items-center" href="{{ url_for('main.dashboard') }}">
{% if site_settings.company_logo %}
<img src="{{ url_for('static', filename='uploads/company_logos/' + site_settings.company_logo) }}"
alt="Company Logo"
style="height: 40px; margin-right: 10px;">
{% endif %}
{% if site_settings.company_name %}
DocuPulse for {% if site_settings.company_website %}<a href="{{ site_settings.company_website }}" target="_blank" style="text-decoration: none; color: #fff !important; font-weight: inherit; font-size: 1.25rem; font-family: inherit; display: inline; padding: 0; margin: 0;">{{ site_settings.company_name }}</a>{% else %}{{ site_settings.company_name }}{% endif %}
{% else %}

View File

@@ -4,13 +4,30 @@
<!-- Company Settings Section -->
<div class="card mb-4">
<div class="card-body">
<form method="POST" action="{{ url_for('main.update_company_settings') }}">
<form method="POST" action="{{ url_for('main.update_company_settings') }}" enctype="multipart/form-data">
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
<div class="row">
<!-- Basic Information -->
<div class="col-md-6 mb-4">
<h6 class="mb-3">Basic Information</h6>
<div class="mb-3">
<label for="company_logo" class="form-label">Company Logo</label>
<div class="d-flex align-items-center gap-3">
{% if site_settings.company_logo %}
<img src="{{ url_for('static', filename='uploads/company_logos/' + site_settings.company_logo) }}"
alt="Company Logo"
class="img-thumbnail"
style="max-height: 100px; max-width: 200px;">
{% endif %}
<input type="file"
class="form-control"
id="company_logo"
name="company_logo"
accept="image/*">
</div>
<div class="form-text">Upload your company logo. Recommended size: 200x100 pixels.</div>
</div>
<div class="mb-3">
<label for="company_name" class="form-label">Company Name</label>
<input type="text"