All checks were successful
Deploy MES Core / deploy (push) Successful in 10s
65 lines
2.7 KiB
Python
65 lines
2.7 KiB
Python
import os
|
||
from django.contrib import admin
|
||
from .models import Company, EmployeeProfile, Machine, Deal, ProductionTask, Item
|
||
|
||
# --- Настройка отображения Компаний ---
|
||
@admin.register(Company)
|
||
class CompanyAdmin(admin.ModelAdmin):
|
||
list_display = ('name', 'description')
|
||
search_fields = ('name',)
|
||
|
||
# --- Настройка отображения Сделок ---
|
||
@admin.register(Deal)
|
||
class DealAdmin(admin.ModelAdmin):
|
||
list_display = ('number', 'status', 'company')
|
||
search_fields = ('number', 'company__name')
|
||
list_filter = ('status', 'company')
|
||
|
||
# --- Задания на производство (База) ---
|
||
@admin.register(ProductionTask)
|
||
class ProductionTaskAdmin(admin.ModelAdmin):
|
||
list_display = ('drawing_name', 'deal', 'material', 'quantity_ordered', 'created_at')
|
||
search_fields = ('drawing_name', 'deal__number')
|
||
list_filter = ('deal', 'material', 'is_bend')
|
||
|
||
# --- Сменные задания (Выполнение) ---
|
||
@admin.register(Item)
|
||
class ItemAdmin(admin.ModelAdmin):
|
||
# Что видим в общем списке (используем task__ для доступа к полям базы)
|
||
list_display = ('date', 'machine', 'get_deal', 'get_drawing', 'quantity_plan', 'quantity_fact', 'status', 'is_synced_1c')
|
||
# Фильтры справа
|
||
list_filter = ('date', 'machine', 'status', 'is_synced_1c', 'task__deal')
|
||
# Поиск по номеру сделки и названию детали через связь task
|
||
search_fields = ('task__drawing_name', 'task__deal__number')
|
||
|
||
# Группируем поля в форме редактирования
|
||
fieldsets = (
|
||
('Связь с заданием', {
|
||
'fields': ('task', 'date', 'machine')
|
||
}),
|
||
('Исполнение', {
|
||
'fields': ('quantity_plan', 'quantity_fact', 'status', 'is_synced_1c')
|
||
}),
|
||
('Отходы и материалы', {
|
||
'fields': ('material_taken', 'usable_waste', 'scrap_weight')
|
||
}),
|
||
)
|
||
|
||
def get_deal(self, obj):
|
||
return obj.task.deal if obj.task else "-"
|
||
get_deal.short_description = 'Сделка'
|
||
|
||
def get_drawing(self, obj):
|
||
return obj.task.drawing_name if obj.task else "-"
|
||
get_drawing.short_description = 'Деталь'
|
||
|
||
@admin.register(Machine)
|
||
class MachineAdmin(admin.ModelAdmin):
|
||
list_display = ('name', 'machine_type')
|
||
list_filter = ('machine_type',)
|
||
search_fields = ('name',)
|
||
|
||
@admin.register(EmployeeProfile)
|
||
class EmployeeProfileAdmin(admin.ModelAdmin):
|
||
list_display = ('user', 'role')
|
||
filter_horizontal = ('machines',) # Красивый выбор станков двумя колонками |