education + employees

This commit is contained in:
Mikan
2025-05-18 22:16:31 +03:00
parent 30ef912c0b
commit c0865fdf51
9 changed files with 241 additions and 6 deletions

View File

@@ -1,3 +1,58 @@
from django.contrib import admin
from .models import AcademicYear, Department, DepartmentHead, Specialty, Group, Student
# Register your models here.
@admin.register(AcademicYear)
class AcademicYearAdmin(admin.ModelAdmin):
list_display = ('year',)
search_fields = ('year',)
@admin.register(Department)
class DepartmentAdmin(admin.ModelAdmin):
list_display = ('name',)
search_fields = ('name',)
@admin.register(DepartmentHead)
class DepartmentHeadAdmin(admin.ModelAdmin):
list_display = ('department', 'head')
list_filter = ('department',)
autocomplete_fields = ('department', 'head')
search_fields = ('department__name', 'head__first_name', 'head__last_name')
@admin.register(Specialty)
class SpecialtyAdmin(admin.ModelAdmin):
list_display = ('code', 'name', 'department')
list_filter = ('department',)
search_fields = ('code', 'name', 'department__name')
@admin.register(Group)
class GroupAdmin(admin.ModelAdmin):
list_display = ('name', 'specialty', 'curator')
list_filter = ('specialty__department', 'specialty')
search_fields = ('name', 'specialty__name', 'curator__first_name', 'curator__last_name')
autocomplete_fields = ('specialty', 'curator')
@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
list_display = ('full_name', 'group', 'account')
list_filter = ('group__specialty__department', 'group__specialty', 'group')
search_fields = (
'first_name', 'last_name', 'middle_name',
'group__name', 'account__login'
)
autocomplete_fields = ('group', 'account')
@admin.display(description='ФИО')
def full_name(self, obj):
return str(obj)
fieldsets = (
('Основная информация', {
'fields': ('account', 'group')
}),
)

View File

@@ -4,3 +4,4 @@ from django.apps import AppConfig
class EducationConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'education'
verbose_name = "Учебный процесс"

View File

@@ -0,0 +1,33 @@
# Generated by Django 4.2.21 on 2025-05-18 18:56
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('education', '0002_initial'),
]
operations = [
migrations.RemoveField(
model_name='student',
name='email',
),
migrations.RemoveField(
model_name='student',
name='first_name',
),
migrations.RemoveField(
model_name='student',
name='last_name',
),
migrations.RemoveField(
model_name='student',
name='middle_name',
),
migrations.RemoveField(
model_name='student',
name='phone',
),
]

View File

@@ -76,7 +76,7 @@ class Group(models.Model):
verbose_name_plural = "Группы"
class Student(ContactMixin):
class Student(models.Model):
group = models.ForeignKey(
Group, on_delete=models.CASCADE, verbose_name="Группа"
)
@@ -84,6 +84,42 @@ class Student(ContactMixin):
Account, on_delete=models.CASCADE, unique=True, verbose_name="Аккаунт"
)
@property
def first_name(self):
return self.account.first_name
@first_name.setter
def first_name(self, value):
self.account.first_name = value
@property
def last_name(self):
return self.account.last_name
@last_name.setter
def last_name(self, value):
self.account.last_name = value
@property
def middle_name(self):
return self.account.middle_name
@middle_name.setter
def middle_name(self, value):
self.account.middle_name = value
@property
def phone(self):
return self.account.phone
@phone.setter
def phone(self, value):
self.account.phone = value
@property
def email(self):
return self.account.email
@email.setter
def email(self, value):
self.account.email = value
def __str__(self):
return f"{self.last_name} {self.first_name} - {self.group}"