diff --git a/inventory/migrations/0008_settings_currency_settings_currency_symbol_and_more.py b/inventory/migrations/0008_settings_currency_settings_currency_symbol_and_more.py new file mode 100644 index 0000000..22491e7 --- /dev/null +++ b/inventory/migrations/0008_settings_currency_settings_currency_symbol_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.1.4 on 2025-01-07 18:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0007_settings_track_amount'), + ] + + operations = [ + migrations.AddField( + model_name='settings', + name='currency', + field=models.CharField(default='Euro', help_text='Currency name', max_length=30), + ), + migrations.AddField( + model_name='settings', + name='currency_symbol', + field=models.CharField(default='€', help_text='Currency symbol', max_length=20), + ), + migrations.AddField( + model_name='settings', + name='currency_symbol_position', + field=models.BooleanField(default=True, help_text='Currency symbol after amount'), + ), + ] diff --git a/inventory/templates/inventory/cell.html b/inventory/templates/inventory/cell.html index 591b3db..4c6281e 100644 --- a/inventory/templates/inventory/cell.html +++ b/inventory/templates/inventory/cell.html @@ -1,5 +1,7 @@ {% load static %} {% load admin_urls %} +{% load currency %} +
{% if item.name %} {% if item.metadata.package %} @@ -26,7 +28,7 @@ {% endif %} {% endif %} {% if item.price %} -
{{ item.price | floatformat:2 }} €
+
{{ item.price | currency:"short" }}
{% endif %} {% if item.form_factor %}
{{ item.form_factor.name }}
diff --git a/inventory/templates/inventory/item_detail.html b/inventory/templates/inventory/item_detail.html index 113652f..e2a9316 100644 --- a/inventory/templates/inventory/item_detail.html +++ b/inventory/templates/inventory/item_detail.html @@ -1,6 +1,7 @@ {% extends "base.html" %} {% load static %} {% load formatstring %} +{% load currency %} {% block title %}{{ item }}{% endblock %} @@ -103,7 +104,7 @@ {% if item.price %} Price - {{ item.price }} Euro + {{ item.price | currency:"detail" }} {% if settings.track_amount %}(sum: {{ item.value | currency:"long" }}){% endif %} {% endif %} diff --git a/inventory/templatetags/currency.py b/inventory/templatetags/currency.py new file mode 100644 index 0000000..d473950 --- /dev/null +++ b/inventory/templatetags/currency.py @@ -0,0 +1,29 @@ +from django import template +from django.utils.safestring import mark_safe +from django.utils.formats import number_format + +from inventory.models import Settings + +register = template.Library() +s = Settings.objects.first() + +@register.filter(name='currency') +def currency(value, format): + value = float(value) + + if format == 'detail': + value = number_format(round(value, 3), 3, use_l10n=True) + else: + value = number_format(round(value, 2), 2, use_l10n=True) + + if format == 'long' or format == 'detail': + symbol = s.currency + else: + symbol = s.currency_symbol + + if s.currency_symbol_position: + result = f"{value} {symbol}" + else: + result = f"{symbol} {value}" + + return mark_safe(result) \ No newline at end of file