vizualizacija i customUser model ima umjesto is_serviser polje uloga
This commit is contained in:
@@ -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)
|
||||
@@ -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),
|
||||
),
|
||||
]
|
||||
@@ -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()}"
|
||||
@@ -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']
|
||||
Reference in New Issue
Block a user