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

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']