diff --git a/expenses_manager/expenses/forms.py b/expenses_manager/expenses/forms.py index 67b42c4..89bc673 100644 --- a/expenses_manager/expenses/forms.py +++ b/expenses_manager/expenses/forms.py @@ -30,7 +30,7 @@ class ExpenseForm(forms.ModelForm): ] widgets = { "date": forms.DateInput(format="%Y-%m-%d", attrs={"type": "date"}), - "widget": forms.CheckboxSelectMultiple(), + "tags": forms.CheckboxSelectMultiple(), } @@ -95,6 +95,8 @@ class CategoryForm(forms.ModelForm): self.fields["parent"].queryset = Category.objects.filter( owner=user, ) + + class GoalForm(forms.ModelForm): class Meta: model = Goal diff --git a/expenses_manager/expenses/management/commands/seed_demo.py b/expenses_manager/expenses/management/commands/seed_demo.py index 876ced3..e2c8bd4 100644 --- a/expenses_manager/expenses/management/commands/seed_demo.py +++ b/expenses_manager/expenses/management/commands/seed_demo.py @@ -1,8 +1,9 @@ from datetime import date from decimal import Decimal +from django.conf import settings from django.utils import timezone from django.contrib.auth import get_user_model -from django.core.management.base import BaseCommand +from django.core.management.base import BaseCommand, CommandError from expenses.models import Account, Category, Tag, Expense @@ -11,6 +12,13 @@ class Command(BaseCommand): help = 'Seed demo data for development' def handle(self, *args, **options): + if not settings.DEBUG: + raise CommandError( + "seed_demo solo puede ejecutarse con DEBUG=True " + "(entorno de desarrollo). Abortando para no crear un " + "superusuario con contraseña conocida en producción." + ) + User = get_user_model() user, created = User.objects.get_or_create( @@ -20,13 +28,14 @@ class Command(BaseCommand): if created: user.set_password('demo1234') - user.save() user.is_staff = True user.is_superuser = True + user.save() self.stdout.write(self.style.SUCCESS("Demo user created")) else: user.is_staff = True user.is_superuser = True + user.save() self.stdout.write('Demo user exists!!') # ------------------ diff --git a/expenses_manager/expenses/static/expenses/css/base.css b/expenses_manager/expenses/static/expenses/css/base.css index 70ce213..60255bc 100644 --- a/expenses_manager/expenses/static/expenses/css/base.css +++ b/expenses_manager/expenses/static/expenses/css/base.css @@ -430,4 +430,92 @@ tbody tr:hover { padding: 10px; border-radius: 8px; background: #f9f9f9; +} + +.row-inactive { + opacity: 0.55; +} + +.badge { + display: inline-block; + padding: 2px 8px; + border-radius: 12px; + font-size: 0.8em; + font-weight: 600; +} + +.badge-active { + background-color: #e6f4ea; + color: #1e7e34; +} + +.badge-inactive { + background-color: #fbe9e7; + color: #b71c1c; +} + +.settings-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 16px; + margin-top: 20px; +} + +.settings-card { + display: block; + padding: 16px; + border: 1px solid #ddd; + border-radius: 8px; + text-decoration: none; + color: inherit; + transition: box-shadow 0.15s ease; +} + +.settings-card:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +.settings-card h3 { + margin: 0 0 4px 0; +} + +.settings-card p { + margin: 0; + font-size: 0.9em; + color: #666; +} + +.tag-chip-list { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin: 8px 0; + max-height: 160px; + overflow-y: auto; + padding: 8px; + border: 1px solid #ddd; + border-radius: 8px; +} + +.tag-chip { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 4px 10px; + border: 1px solid #ccc; + border-radius: 16px; + font-size: 0.85em; + cursor: pointer; + user-select: none; + background-color: #fafafa; +} + +.tag-chip input[type="checkbox"] { + accent-color: #1e7e34; +} + +.tag-chip:has(input:checked) { + background-color: #e6f4ea; + border-color: #1e7e34; + color: #1e7e34; } \ No newline at end of file diff --git a/expenses_manager/expenses/templates/expenses/account_list.html b/expenses_manager/expenses/templates/expenses/account_list.html index 6867499..cc7bd4d 100644 --- a/expenses_manager/expenses/templates/expenses/account_list.html +++ b/expenses_manager/expenses/templates/expenses/account_list.html @@ -22,10 +22,18 @@