4.3 KiB
4.3 KiB
claims-system
Modern Django/Tailwind-baserad portal för att ta emot, granska och betala utlägg.
1. Kom igång
uv syncuv run python manage.py migrateuv run python manage.py createsuperuseruv run python manage.py runserver
Nyckel-URLer (default):
- Offentligt formulär
GET /claims/new/ - Bekräftelsesida
GET /claims/submitted/ - Adminlista
GET /claims/admin/ - Mina utlägg
GET /claims/mine/ - Användarhantering
GET /claims/users/ - Export-placeholder
GET /claims/export/ - Auth
GET /accounts/login|logout/
2. Kärnfunktioner
- Multi-rad formulär: Offentligt formulär stödjer upp till 5 rader. Lägg till
?forms=neller använd +/−-knapparna (lägger till rader utan reload). - Auto-prefill: Inloggade användare får namn, e-post och senaste kontonummer förifyllt.
- Valuta & projekt: Varje rad har dold valutaväljare (SEK default) och projektreferens. Projekt listas från Django admin > Projekt.
- Kvitton: Filuppladdningar sparas med slumpat UUID-baserat namn under
receipts/för säkerhet och unika namn. - Adminlista: Kortlayout med statuschippar, loggtimeline, kvittolänkar och inline-formulär för godkänn/avslag.
- Betalspårning: När intern betalning är på får godkända claims en "Betala"-knapp. När ett claim markeras som betalt låses status/kommentar tills reset görs.
- Mina utlägg: Inloggade ser sina egna claims i samma Tailwind-layout med kvitto-länk och logg.
- Användarhantering: Tailwind-sida där personal kan skapa konton, tilldela
claims.view_claim/claims.change_claim, markera staff och ta bort användare.
3. Språk & UI
- Django i18n är aktiverat (
LANGUAGES = [('sv','Swedish'), ('en','English')], LocaleMiddleware, språkväljare i navbaren). - Alla mallar/formulär använder
{% trans %}/gettext. Engelska översättningar ligger ilocale/en/LC_MESSAGES/django.po(kompileras till.mo). - Uppdatera översättningar:
uv run django-admin makemessages -l en uv run django-admin compilemessages -l en <html lang="{{ LANGUAGE_CODE }}">sätts automatiskt, och språkväljaren lagrar valet i session/cookie.
4. Viktiga inställningar
| Variabel | Default | Beskrivning |
|---|---|---|
CLAIMS_ENABLE_INTERNAL_PAYMENTS |
true |
Styr “Betala”-flödet. Kan också togglas i Django admin > Systeminställningar. |
CLAIMS_EMAIL_ENABLED |
false |
Slår på e-postaviseringar. Låt vara false i testläge. |
CLAIMS_EMAIL_FROM |
no-reply@claims.local |
Avsändare för utskick. |
CLAIMS_ADMIN_NOTIFICATION_EMAIL |
tom | Om satt skickas notifiering vid nytt claim (när e-post är aktiverad). |
EMAIL_BACKEND |
django.core.mail.backends.console.EmailBackend |
Byt till SMTP i prod (se nedan). |
EMAIL_HOST, EMAIL_PORT, EMAIL_USE_TLS, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD |
tom | Standard Django SMTP-inställningar. |
LANGUAGE_CODE |
sv |
Standardspråk. |
LOCALE_PATHS |
BASE_DIR/locale |
Katalog för .po/.mo. |
LOGIN_REDIRECT_URL |
/claims/admin/ |
Efter inloggning. |
LOGOUT_REDIRECT_URL |
/accounts/login/ |
Efter utloggning. |
SMTP-exempel:
CLAIMS_EMAIL_ENABLED=true
CLAIMS_EMAIL_FROM=claims@example.com
CLAIMS_ADMIN_NOTIFICATION_EMAIL=finance@example.com
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.example.com
EMAIL_PORT=587
EMAIL_USE_TLS=true
EMAIL_HOST_USER=apikey
EMAIL_HOST_PASSWORD=secret
5. Underhåll & verktyg
- Reset claims:
uv run python manage.py reset_claims(bekräfta medjaeller använd--noinput). Tar bort alla claims/loggar/kvitton men lämnar användarkonton. - Django admin:
/admin/används för projekt, grupper, superusers, SystemSetting mm. Staff-användare har automatiskt åtkomst. - Testa konfiguration:
uv run python manage.py check. - Språkreset: Rensa cookies om språkväljaren inte byter språk (Django använder
django_languagecookien).
6. Länkar och roller
- Offentligt formulär: alla (även utan konto).
- Mina utlägg / Adminlista / Export / Betalningar: kräver
claims.view_claim(ochclaims.change_claimför beslut). - Användarhantering:
auth.view_user+ respektive add/change/delete. - Språkväljare och logout finns i nav-menyn på varje sida.
Se även AGENTS.md för utvecklingsriktlinjer, betalflöden och e-postpolicy. EOF