Compare commits
No commits in common. '151a96dc37acb7246f9f9cac8b25bd9aad957c07' and '54bc863f5fe589ec0e839ef6b4a9102d732d9221' have entirely different histories.
151a96dc37
...
54bc863f5f
@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
@ -1,86 +0,0 @@
|
|||||||
# Generated by Django 5.1.4 on 2025-01-07 15:19
|
|
||||||
|
|
||||||
import django.contrib.auth.models
|
|
||||||
import django.contrib.auth.validators
|
|
||||||
import django.db.models.deletion
|
|
||||||
import django.utils.timezone
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('auth', '0012_alter_user_first_name_max_length'),
|
|
||||||
('inventory', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Contractor',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(max_length=255, verbose_name='Наименование контрагента')),
|
|
||||||
('address', models.TextField(verbose_name='Адрес')),
|
|
||||||
('phone', models.CharField(max_length=20, verbose_name='Телефон')),
|
|
||||||
('email', models.EmailField(max_length=254, verbose_name='Электронная почта')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Position',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('name', models.CharField(max_length=255, verbose_name='Наименование должности')),
|
|
||||||
('hourly_rate', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Ставка в час')),
|
|
||||||
('monthly_hours', models.IntegerField(verbose_name='Часы в месяц')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Truck',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('plate_number', models.CharField(max_length=20, verbose_name='Номерной знак')),
|
|
||||||
('model', models.CharField(max_length=50, verbose_name='Модель')),
|
|
||||||
('capacity', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Грузоподъемность (тонны)')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Employee',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('password', models.CharField(max_length=128, verbose_name='password')),
|
|
||||||
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
|
|
||||||
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
|
|
||||||
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
|
|
||||||
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
|
|
||||||
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
|
|
||||||
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
|
|
||||||
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
|
|
||||||
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
|
|
||||||
('department', models.CharField(max_length=255, verbose_name='Подразделение')),
|
|
||||||
('work_phone', models.CharField(blank=True, max_length=20, null=True, verbose_name='Рабочий телефон')),
|
|
||||||
('personal_phone', models.CharField(blank=True, max_length=20, null=True, verbose_name='Личный телефон')),
|
|
||||||
('email', models.EmailField(max_length=254, unique=True, verbose_name='Электронная почта')),
|
|
||||||
('groups', models.ManyToManyField(blank=True, related_name='employee_groups', to='auth.group', verbose_name='Группы')),
|
|
||||||
('user_permissions', models.ManyToManyField(blank=True, related_name='employee_permissions', to='auth.permission', verbose_name='Разрешения')),
|
|
||||||
('position', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='inventory.position', verbose_name='Должность')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name': 'user',
|
|
||||||
'verbose_name_plural': 'users',
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
managers=[
|
|
||||||
('objects', django.contrib.auth.models.UserManager()),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='SupplyContract',
|
|
||||||
fields=[
|
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('description', models.TextField(verbose_name='Описание')),
|
|
||||||
('start_date', models.DateField(verbose_name='Дата начала')),
|
|
||||||
('end_date', models.DateField(blank=True, null=True, verbose_name='Дата окончания')),
|
|
||||||
('contractor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.contractor', verbose_name='Контрагент')),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]
|
|
@ -1,43 +0,0 @@
|
|||||||
from rest_framework import serializers
|
|
||||||
from .models import Product, Employee, Position, StorageLocation, Contractor, SupplyContract, Truck
|
|
||||||
|
|
||||||
class ProductSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Product
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class PositionSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Position
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class EmployeeSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Employee
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class StorageLocationSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = StorageLocation
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class ContractorSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Contractor
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class SupplyContractSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = SupplyContract
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class TruckSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Truck
|
|
||||||
fields = '__all__'
|
|
@ -1,37 +0,0 @@
|
|||||||
from django.urls import path, include
|
|
||||||
from rest_framework.routers import DefaultRouter
|
|
||||||
from .views import (
|
|
||||||
ProductViewSet, EmployeeViewSet, PositionViewSet,
|
|
||||||
StorageLocationViewSet, ContractorViewSet, SupplyContractViewSet, TruckViewSet
|
|
||||||
)
|
|
||||||
from drf_yasg.views import get_schema_view
|
|
||||||
from drf_yasg import openapi
|
|
||||||
from rest_framework.permissions import AllowAny
|
|
||||||
|
|
||||||
router = DefaultRouter()
|
|
||||||
router.register(r'products', ProductViewSet)
|
|
||||||
router.register(r'employees', EmployeeViewSet)
|
|
||||||
router.register(r'positions', PositionViewSet)
|
|
||||||
router.register(r'storage-locations', StorageLocationViewSet)
|
|
||||||
router.register(r'contractors', ContractorViewSet)
|
|
||||||
router.register(r'supply-contracts', SupplyContractViewSet)
|
|
||||||
router.register(r'trucks', TruckViewSet)
|
|
||||||
|
|
||||||
schema_view = get_schema_view(
|
|
||||||
openapi.Info(
|
|
||||||
title="Store Management API",
|
|
||||||
default_version='v1',
|
|
||||||
description="API for managing the franchise store",
|
|
||||||
terms_of_service="https://www.example.com/terms/",
|
|
||||||
contact=openapi.Contact(email="support@example.com"),
|
|
||||||
license=openapi.License(name="BSD License"),
|
|
||||||
),
|
|
||||||
public=True,
|
|
||||||
permission_classes=(AllowAny,),
|
|
||||||
)
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
path('api/', include(router.urls)),
|
|
||||||
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
|
|
||||||
path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
|
|
||||||
]
|
|
@ -1,40 +1,3 @@
|
|||||||
from rest_framework import viewsets
|
from django.shortcuts import render
|
||||||
from .models import Product, Employee, Position, StorageLocation, Contractor, SupplyContract, Truck
|
|
||||||
from .serializers import (
|
|
||||||
ProductSerializer, EmployeeSerializer, PositionSerializer,
|
|
||||||
StorageLocationSerializer, ContractorSerializer, SupplyContractSerializer, TruckSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
class ProductViewSet(viewsets.ModelViewSet):
|
# Create your views here.
|
||||||
queryset = Product.objects.all()
|
|
||||||
serializer_class = ProductSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class EmployeeViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = Employee.objects.all()
|
|
||||||
serializer_class = EmployeeSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class PositionViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = Position.objects.all()
|
|
||||||
serializer_class = PositionSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class StorageLocationViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = StorageLocation.objects.all()
|
|
||||||
serializer_class = StorageLocationSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class ContractorViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = Contractor.objects.all()
|
|
||||||
serializer_class = ContractorSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class SupplyContractViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = SupplyContract.objects.all()
|
|
||||||
serializer_class = SupplyContractSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class TruckViewSet(viewsets.ModelViewSet):
|
|
||||||
queryset = Truck.objects.all()
|
|
||||||
serializer_class = TruckSerializer
|
|
||||||
|
Loading…
Reference in new issue