add company logo
This commit is contained in:
Binary file not shown.
Binary file not shown.
32
migrations/versions/f18735338888_add_company_logo_field.py
Normal file
32
migrations/versions/f18735338888_add_company_logo_field.py
Normal 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 ###
|
||||
@@ -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))
|
||||
|
||||
Binary file not shown.
@@ -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')
|
||||
|
||||
BIN
static/uploads/company_logos/1748249775_logo-placeholder.png
Normal file
BIN
static/uploads/company_logos/1748249775_logo-placeholder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
@@ -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 %}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user