models.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from django.db import models
  4. from django.contrib.auth.models import User
  5. # Create your models here.
  6. #Соответствие названий и номеров дней недели
  7. class Common:
  8. day_names = ("Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье")
  9. day_colors = ("FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF","#FFE4E1", "#FFE4E1")
  10. #Изделия
  11. class Product(models.Model):
  12. name = models.CharField(max_length=150)
  13. prod_period = models.IntegerField()#трудоемкость, дней
  14. #Таблица посещаемости
  15. class Attendance(models.Model):
  16. date = models.DateField()
  17. calls = models.IntegerField()
  18. visits = models.IntegerField()
  19. @property
  20. def date_dd_mm_yy(self):
  21. return self.date.strftime("%d/%m/%Y")
  22. @property
  23. def date_as_tuple(self):
  24. return tuple(self.date_dd_mm_yy().split("/"))
  25. @property
  26. def week_day(self):
  27. day_number = self.date.weekday()
  28. day_name = Common.day_names[day_number]
  29. return day_name
  30. @property
  31. def day_color(self):
  32. day_number = self.date.weekday()
  33. color = Common.day_colors[day_number]
  34. return color
  35. @property
  36. def order_count(self):
  37. return Order.objects.filter(date=self.date).count()
  38. @property
  39. def orders_price(self):
  40. orders = Order.objects.filter(date=self.date)
  41. day_price = sum(o.price for o in orders)
  42. return day_price
  43. #Заказы
  44. class Order(models.Model):
  45. date = models.DateField() #дата
  46. product = models.ForeignKey(Product) #id изделия
  47. price = models.DecimalField(max_digits=12, decimal_places=2) #стоимость
  48. address = models.CharField(max_length=150) #адрес
  49. designer = models.ForeignKey(User, related_name='+') #id дизайнера
  50. deadline = models.DateField() #срок сдачи
  51. delivery = models.BooleanField(default=False) #доставка
  52. lifting = models.BooleanField(default=False) #подъем
  53. paid = models.DecimalField(max_digits=12, decimal_places=2) #оплачено
  54. approved = models.DateTimeField(null=True, blank = True) #согласовано
  55. executor = models.ForeignKey(User, related_name='+') #id исполнителя
  56. is_done = models.BooleanField(default=False) #сдан
  57. calls = models.TextField(null=True, blank = True) #обзвон
  58. contact = models.CharField(max_length=150, null=True, blank = True) #контактное лицо
  59. phone_num = models.CharField(max_length=150,null=True, blank = True) #контактный телефон
  60. cancelled = models.BooleanField(default=False) #отменен
  61. @property
  62. def date_dmy(self):
  63. return self.date.strftime("%d/%m/%Y")
  64. @property
  65. def deadline_dmy(self):
  66. return self.deadline.strftime("%d/%m/%Y")
  67. @property
  68. def approved_date(self):
  69. return self.approved.strftime("%d/%m/%Y")
  70. @property
  71. def ostatok(self):
  72. return self.price-self.paid
  73. #Эскизы
  74. class Sketch(models.Model):
  75. sketch_file = models.FileField(upload_to = 'sketches') #путь к файу
  76. order = models.ForeignKey(Order) #id заказа
  77. #Действия
  78. class Action(models.Model):
  79. name = models.CharField(max_length=150) #наименование действия
  80. #Производственный план
  81. class ProdPlan(models.Model):
  82. start_date = models.DateField() #дата начала
  83. end_date = models.DateField() #дата окончания
  84. order = models.ForeignKey(Order) #id заказа
  85. executor = models.ForeignKey(User) #id исполнителя
  86. action = models.ForeignKey(Action) #id действия
  87. #Протокол доступа
  88. class AccessProtocol(models.Model):
  89. time = models.DateTimeField() #время
  90. user = models.ForeignKey(User) #id пользователя
  91. event = models.CharField(max_length=150) #действие
  92. #План заказов
  93. class OrderPlan(models.Model):
  94. date = models.DateField()
  95. plan = models.IntegerField()