#!/usr/bin/env python # -*- coding: utf-8 -*- from django.db import models from django.contrib.auth.models import User # Create your models here. #Соответствие названий и номеров дней недели class Common: day_names = ("Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье") day_colors = ("FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","#FFE4E1", "#FFE4E1") #Изделия class Product(models.Model): name = models.CharField(max_length=150) prod_period = models.IntegerField()#трудоемкость, дней #Таблица посещаемости class Attendance(models.Model): date = models.DateField() calls = models.IntegerField() visits = models.IntegerField() @property def date_dd_mm_yy(self): return self.date.strftime("%d/%m/%y") @property def week_day(self): day_number = self.date.weekday() day_name = Common.day_names[day_number] return day_name @property def day_color(self): day_number = self.date.weekday() color = Common.day_colors[day_number] return color @property def order_count(self): return Order.objects.filter(date=self.date).count() @property def orders_price(self): orders = Order.objects.filter(date=self.date) day_price = sum(o.price for o in orders) return day_price #Заказы class Order(models.Model): date = models.DateField() #дата product = models.ForeignKey(Product) #id изделия price = models.DecimalField(max_digits=12, decimal_places=2) #стоимость address = models.CharField(max_length=150) #адрес designer = models.ForeignKey(User, related_name='+') #id дизайнера deadline = models.DateField() #срок сдачи delivery = models.BooleanField(default=False) #доставка lifting = models.BooleanField(default=False) #подъем paid = models.DecimalField(max_digits=12, decimal_places=2) #оплачено approved = models.DateTimeField(null=True, blank = True) #согласовано executor = models.ForeignKey(User, related_name='+') #id исполнителя is_done = models.BooleanField(default=False) #сдан calls = models.TextField(null=True, blank = True) #обзвон contact = models.CharField(max_length=150, null=True, blank = True) #контактное лицо phone_num = models.CharField(max_length=150,null=True, blank = True) #контактный телефон cancelled = models.BooleanField(default=False) #отменен @property def deadline_dmy(self): return self.deadline.strftime("%d/%m/%y") #Эскизы class Sketch(models.Model): file_name = models.CharField(max_length=150) #имя файла file_path = models.CharField(max_length=150) #путь к файу order = models.ForeignKey(Order) #id заказа #Действия class Action(models.Model): name = models.CharField(max_length=150) #наименование действия #Производственный план class ProdPlan(models.Model): start_date = models.DateField() #дата начала end_date = models.DateField() #дата окончания order = models.ForeignKey(Order) #id заказа executor = models.ForeignKey(User) #id исполнителя action = models.ForeignKey(Action) #id действия #Протокол доступа class AccessProtocol(models.Model): time = models.DateTimeField() #время user = models.ForeignKey(User) #id пользователя event = models.CharField(max_length=150) #действие #План заказов class OrderPlan(models.Model): month = models.DateField() plan = models.IntegerField()