vizualizacija i customUser model ima umjesto is_serviser polje uloga

This commit is contained in:
2026-05-23 12:30:03 +00:00
parent e308cd8d13
commit 80f9ba3879
8 changed files with 70 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

@@ -17,6 +17,21 @@ class PutniNalogMinimalSerializer(serializers.ModelSerializer):
model = PutniNalog
fields = ['id', 'broj_naloga', 'status', 'pocetna_km']
# --- NOVI STANDARDNI PUTNI NALOG SERIALIZER (Za rješavanje ImportError-a) ---
class PutniNalogSerializer(serializers.ModelSerializer):
vozilo_detalji = VoziloListaSerializer(source='vozilo', read_only=True)
korisnik_ime = serializers.CharField(source='korisnik.get_full_name', read_only=True)
status_display = serializers.CharField(source='get_status_display', read_only=True)
class Meta:
model = PutniNalog
fields = [
'id', 'broj_naloga', 'vozilo', 'vozilo_detalji', 'korisnik', 'korisnik_ime',
'relacija', 'mjesto_odredista', 'pocetna_km', 'zavrsna_km', 'status',
'status_display', 'vrijeme_polaska', 'vrijeme_povratka'
]
read_only_fields = ['id', 'broj_naloga', 'vrijeme_polaska']
# --- 1. LISTA SERIALIZER ---
class RadniNalogListaSerializer(serializers.ModelSerializer):
klijent_naziv = serializers.CharField(source='klijent.naziv', read_only=True)

View File

@@ -3,11 +3,21 @@ from django.contrib.auth.admin import UserAdmin
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
model = CustomUser
# Definiramo koja polja se vide u admin listi i formama
list_display = ['email', 'username', 'first_name', 'last_name', 'is_staff', 'is_serviser']
# 🚀 POPRAVLJENO: Zamijenjen 'is_serviser' s 'uloga' u stupcima tablice
list_display = ['email', 'first_name', 'last_name', 'telefon', 'oib', 'uloga', 'is_staff']
# Ako filtriraš korisnike na desnoj strani admina, ažuriraj i to:
list_filter = ['uloga', 'is_staff', 'is_active']
# 🚀 POPRAVLJENO: Dodavanje polja u sekciju za uređivanje postojećeg korisnika
fieldsets = UserAdmin.fieldsets + (
('Dodatni podaci', {'fields': ('telefon', 'oib', 'is_serviser')}),
('Dodatni podaci tvrtke', {'fields': ('telefon', 'oib', 'uloga')}),
)
# 🚀 POPRAVLJENO: Dodavanje polja u formu za kreiranje novog korisnika
add_fieldsets = UserAdmin.add_fieldsets + (
('Dodatni podaci tvrtke', {'fields': ('telefon', 'oib', 'uloga')}),
)
# Registracija modela i tvoje prilagođene admin klase
admin.site.register(CustomUser, CustomUserAdmin)

View File

@@ -0,0 +1,22 @@
# Generated by Django 6.0.5 on 2026-05-23 12:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='customuser',
name='is_serviser',
),
migrations.AddField(
model_name='customuser',
name='uloga',
field=models.CharField(choices=[('SERVISER', 'Serviser'), ('PRODAJA', 'Prodaja / Operativa'), ('KNJIGOVODSTVO', 'Knjigovodstvo i financije'), ('ADMIN', 'Administrator')], default='SERVISER', help_text='Glavna operativna uloga korisnika u ERP sustavu', max_length=20),
),
]

View File

@@ -2,17 +2,29 @@ from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
class Role(models.TextChoices):
SERVISER = 'SERVISER', 'Serviser'
PRODAJA = 'PRODAJA', 'Prodaja / Operativa'
KNJIGOVODSTVO = 'KNJIGOVODSTVO', 'Knjigovodstvo i financije'
ADMIN = 'ADMIN', 'Administrator'
# Email koristimo za login, pa mora biti jedinstven
email = models.EmailField(unique=True)
# Dodatna polja za tvoju tvrtku
telefon = models.CharField(max_length=20, blank=True)
oib = models.CharField(max_length=11, blank=True, null=True)
is_serviser = models.BooleanField(default=False) # Razlikovanje uloga
# 🚀 ZAMJENA: Umjesto is_serviser, uvodimo jedno polje za sve uloge
uloga = models.CharField(
max_length=20,
choices=Role.choices,
default=Role.SERVISER,
help_text="Glavna operativna uloga korisnika u ERP sustavu"
)
# Govorimo Djangu da koristi email umjesto username-a
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', 'first_name', 'last_name']
def __str__(self):
return f"{self.first_name} {self.last_name} ({self.email})"
return f"{self.first_name} {self.last_name} ({self.email}) - {self.get_uloga_display()}"

View File

@@ -1,7 +1,10 @@
from rest_framework import serializers
from .models import CustomUser
class UserMeSerializer(serializers.ModelSerializer):
class UserSerializer(serializers.ModelSerializer):
# Prosljeđujemo i ljudski čitljiv naziv (npr. "Knjigovodstvo i financije")
uloga_prikaz = serializers.CharField(source='get_uloga_display', read_only=True)
class Meta:
model = CustomUser
fields = ['id', 'email', 'first_name', 'last_name', 'is_serviser']
fields = ['id', 'first_name', 'last_name', 'email', 'telefon', 'oib', 'uloga', 'uloga_prikaz']