Files
MES_Core/shiftflow/admin.py
ackFromRedmi 191d06d7d3
Some checks failed
Deploy MES Core / deploy (push) Failing after 1s
Поменял структуру моделей
2026-03-29 16:04:02 +03:00

65 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from django.contrib import admin
from .models import Company, EmployeeProfile, Machine, Deal, Material, 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', 'company')
search_fields = ('number', 'company__name')
list_filter = ('company',)
# --- Настройка отображения Материалов ---
@admin.register(Material)
class MaterialAdmin(admin.ModelAdmin):
search_fields = ('name',)
# --- Задания на производство (База) ---
@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
get_deal.short_description = 'Сделка'
def get_drawing(self, obj): return obj.task.drawing_name
get_drawing.short_description = 'Деталь'
# Регистрация станков просто списком
admin.site.register(Machine)
@admin.register(EmployeeProfile)
class EmployeeProfileAdmin(admin.ModelAdmin):
list_display = ('user', 'role')
filter_horizontal = ('machines',) # Красивый выбор станков двумя колонками