feat: Add favicon and admin panel logo to PlatformProfile

This commit is contained in:
Flatlogic Bot 2026-01-31 13:07:20 +00:00
parent cf8af51ff6
commit 582c5271c7
10 changed files with 61 additions and 1 deletions

View File

@ -166,7 +166,7 @@ class ParcelAdmin(admin.ModelAdmin):
class PlatformProfileAdmin(admin.ModelAdmin):
fieldsets = (
(_('General Info'), {
'fields': ('name', 'logo', 'slogan', 'address', 'phone_number', 'registration_number', 'vat_number')
'fields': ('name', 'logo', 'favicon', 'admin_panel_logo', 'slogan', 'address', 'phone_number', 'registration_number', 'vat_number')
}),
(_('Financial Configuration'), {
'fields': ('platform_fee_percentage', 'enable_payment')

View File

@ -0,0 +1,23 @@
# Generated by Django 5.2.7 on 2026-01-31 13:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0024_platformprofile_auto_mark_paid'),
]
operations = [
migrations.AddField(
model_name='platformprofile',
name='admin_panel_logo',
field=models.ImageField(blank=True, help_text='Logo for the Admin Panel (top left).', null=True, upload_to='platform_logos/', verbose_name='Admin Panel Logo'),
),
migrations.AddField(
model_name='platformprofile',
name='favicon',
field=models.ImageField(blank=True, help_text='Upload a favicon (e.g., .ico or .png)', null=True, upload_to='platform_logos/', verbose_name='Favicon'),
),
]

View File

@ -134,6 +134,8 @@ class PricingRule(models.Model):
class PlatformProfile(models.Model):
name = models.CharField(_('Platform Name'), max_length=100)
logo = models.ImageField(_('Logo'), upload_to='platform_logos/', blank=True, null=True)
favicon = models.ImageField(_('Favicon'), upload_to='platform_logos/', blank=True, null=True, help_text=_("Upload a favicon (e.g., .ico or .png)"))
admin_panel_logo = models.ImageField(_('Admin Panel Logo'), upload_to='platform_logos/', blank=True, null=True, help_text=_("Logo for the Admin Panel (top left)."))
slogan = models.CharField(_('Slogan'), max_length=255, blank=True)
address = models.TextField(_('Address'), blank=True)
phone_number = models.CharField(_('Phone Number'), max_length=50, blank=True)

View File

@ -0,0 +1,29 @@
{% extends "admin/base.html" %}
{% load static %}
{% block extrahead %}
{{ block.super }}
{% if platform_profile and platform_profile.favicon %}
<link rel="icon" href="{{ platform_profile.favicon.url }}">
{% endif %}
{% if platform_profile and platform_profile.admin_panel_logo %}
<style>
/* Jazzmin Sidebar Logo Override */
.brand-link .brand-image {
content: url("{{ platform_profile.admin_panel_logo.url }}");
opacity: 1 !important;
box-shadow: none !important;
/* Adjust size to fit nicely */
max-height: 40px;
width: auto;
border-radius: 0; /* Sometimes logos are square, remove circular radius if default has it */
}
/* Optional: Hide the default elevation shadow if it looks weird with custom logo */
.brand-link .brand-image.elevation-3 {
box-shadow: none !important;
}
</style>
{% endif %}
{% endblock %}

View File

@ -8,6 +8,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}masarX | {% trans "Small Shipments, Smart Delivery" %}{% endblock %}</title>
{% if platform_profile and platform_profile.favicon %}
<link rel="icon" href="{{ platform_profile.favicon.url }}">
{% else %}
<link rel="icon" href="{% static 'img/logo.jpg' %}">
{% endif %}
{% if project_description %}
<meta name="description" content="{{ project_description }}">
<meta property="og:description" content="{{ project_description }}">