This commit is contained in:
Mikan
2025-05-18 21:29:04 +03:00
parent 63228923a7
commit d70c5f73f5
50 changed files with 1344 additions and 52 deletions

0
employees/__init__.py Normal file
View File

3
employees/admin.py Normal file
View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
employees/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class EmployeesConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'employees'

View File

@@ -0,0 +1,51 @@
# Generated by Django 4.2.21 on 2025-05-18 18:14
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Department',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Название подразделения')),
],
options={
'verbose_name': 'Подразделение',
'verbose_name_plural': 'Подразделения',
},
),
migrations.CreateModel(
name='Employee',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=100, verbose_name='Имя')),
('last_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='Фамилия')),
('middle_name', models.CharField(blank=True, max_length=100, null=True, verbose_name='Отчество')),
('phone', models.CharField(blank=True, max_length=20, null=True, verbose_name='Телефон')),
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Почта')),
],
options={
'verbose_name': 'Сотрудник',
'verbose_name_plural': 'Сотрудники',
},
),
migrations.CreateModel(
name='Position',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Название должности')),
],
options={
'verbose_name': 'Должность',
'verbose_name_plural': 'Должности',
},
),
]

View File

@@ -0,0 +1,33 @@
# Generated by Django 4.2.21 on 2025-05-18 18:14
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('employees', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='employee',
name='account',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Аккаунт'),
),
migrations.AddField(
model_name='employee',
name='department',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='employees.department', verbose_name='Подразделение'),
),
migrations.AddField(
model_name='employee',
name='position',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='employees.position', verbose_name='Должность'),
),
]

View File

45
employees/models.py Normal file
View File

@@ -0,0 +1,45 @@
from django.db import models
from core.models import ContactMixin # Предполагается, что ContactMixin находится в приложении core
## Учет сотрудников (название приложения: employees)
class Position(models.Model):
name = models.CharField(max_length=100, verbose_name="Название должности")
def __str__(self):
return self.name
class Meta:
verbose_name = "Должность"
verbose_name_plural = "Должности"
class Department(models.Model):
name = models.CharField(max_length=100, verbose_name="Название подразделения")
def __str__(self):
return self.name
class Meta:
verbose_name = "Подразделение"
verbose_name_plural = "Подразделения"
class Employee(ContactMixin):
department = models.ForeignKey(
Department, on_delete=models.CASCADE, verbose_name="Подразделение"
)
position = models.ForeignKey(
Position, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Должность"
)
account = models.OneToOneField(
"users.Account", on_delete=models.CASCADE, unique=True, verbose_name="Аккаунт"
)
def __str__(self):
return f"{self.last_name} {self.first_name} - {self.position}"
class Meta:
verbose_name = "Сотрудник"
verbose_name_plural = "Сотрудники"

3
employees/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
employees/views.py Normal file
View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.