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