initial commit
This commit is contained in:
0
asuzr/__init__.py
Normal file
0
asuzr/__init__.py
Normal file
BIN
asuzr/__init__.pyc
Normal file
BIN
asuzr/__init__.pyc
Normal file
Binary file not shown.
24
asuzr/admin.py
Normal file
24
asuzr/admin.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.contrib import admin
|
||||
from asuzr.models import Product
|
||||
from asuzr.models import Order
|
||||
from asuzr.models import Sketch
|
||||
from asuzr.models import Action
|
||||
from asuzr.models import ProdPlan
|
||||
from asuzr.models import AccessProtocol
|
||||
from asuzr.models import OrderPlan
|
||||
from asuzr.models import Attendance
|
||||
|
||||
# Register your models here.
|
||||
#admin.site.register(Product)
|
||||
class ProductAdmin(admin.ModelAdmin):
|
||||
list_display=('name', 'prod_period')
|
||||
admin.site.register(Product, ProductAdmin)
|
||||
admin.site.register(Order)
|
||||
admin.site.register(Sketch)
|
||||
admin.site.register(Action)
|
||||
admin.site.register(ProdPlan)
|
||||
admin.site.register(AccessProtocol)
|
||||
admin.site.register(OrderPlan)
|
||||
class AttendAdmin(admin.ModelAdmin):
|
||||
list_display=('date', 'calls', 'visits')
|
||||
admin.site.register(Attendance, AttendAdmin)
|
||||
BIN
asuzr/admin.pyc
Normal file
BIN
asuzr/admin.pyc
Normal file
Binary file not shown.
101
asuzr/models.py
Normal file
101
asuzr/models.py
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/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()
|
||||
BIN
asuzr/models.pyc
Normal file
BIN
asuzr/models.pyc
Normal file
Binary file not shown.
3
asuzr/tests.py
Normal file
3
asuzr/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
96
asuzr/views.py
Normal file
96
asuzr/views.py
Normal file
@@ -0,0 +1,96 @@
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpResponse
|
||||
from django.template import Context, loader
|
||||
from asuzr.models import Product
|
||||
from asuzr.models import Attendance
|
||||
from asuzr.models import Order
|
||||
from datetime import datetime, date, time
|
||||
# Create your views here.
|
||||
|
||||
def prod_list(request):
|
||||
product_list = Product.objects.all()
|
||||
t = loader.get_template('asuzr/prod_list.html')
|
||||
c = Context({
|
||||
'product_list': product_list,
|
||||
})
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
def prod_detail(request, prod_id):
|
||||
return HttpResponse("This is %s" % prod_id)
|
||||
|
||||
|
||||
def attend_table(request, year, month):
|
||||
attend_list = Attendance.objects.all().order_by('date')
|
||||
filtered_list=[]
|
||||
for a in attend_list:
|
||||
a_date = a.date
|
||||
if a_date.strftime('%m/%Y') == month+'/'+year:
|
||||
filtered_list.append(a)
|
||||
|
||||
sum_calls = sum(l.calls for l in filtered_list)
|
||||
sum_visits = sum(l.visits for l in filtered_list)
|
||||
sum_orders = sum(l.order_count for l in filtered_list)
|
||||
sum_price = sum(l.orders_price for l in filtered_list)
|
||||
t = loader.get_template('asuzr/attendance.html')
|
||||
c = Context({
|
||||
'attend_list': filtered_list,
|
||||
'sum_calls': sum_calls,
|
||||
'sum_visits': sum_visits,
|
||||
'sum_orders': sum_orders,
|
||||
'sum_price': sum_price,
|
||||
})
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
def orders_table(request, year, month, day):
|
||||
p_date = datetime.strptime(day+'/'+month+'/'+year, '%d/%m/%Y')
|
||||
order_list = Order.objects.filter(date=p_date).order_by('id')
|
||||
sum_price = sum(l.price for l in order_list)
|
||||
t = loader.get_template('asuzr/orders.html')
|
||||
c = Context({
|
||||
'order_list': order_list,
|
||||
'sum_price': sum_price,
|
||||
})
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
def get_filtered_list(p_list, year, month):
|
||||
filtered_list=[]
|
||||
for a in p_list:
|
||||
a_date = a.date
|
||||
if a_date.strftime('%m/%Y') == month+'/'+year:
|
||||
filtered_list.append(a)
|
||||
|
||||
return filtered_list
|
||||
|
||||
def get_orders_by_date(dt):
|
||||
order_list = Order.objects.filter(date=dt).order_by('id')
|
||||
return order_list
|
||||
|
||||
def attend_order_table(request, year, month):
|
||||
attend_list = Attendance.objects.all().order_by('date')
|
||||
filtered_attend_list=get_filtered_list(attend_list, year, month)
|
||||
|
||||
order_list = Order.objects.all().order_by('id')
|
||||
filtered_order_list = get_filtered_list(order_list, year, month)
|
||||
|
||||
sum_calls = sum(l.calls for l in filtered_attend_list)
|
||||
sum_visits = sum(l.visits for l in filtered_attend_list)
|
||||
sum_orders = sum(l.order_count for l in filtered_attend_list)
|
||||
sum_price = sum(l.orders_price for l in filtered_attend_list)
|
||||
|
||||
sum_order_price = sum(l.price for l in filtered_order_list)
|
||||
|
||||
t = loader.get_template('asuzr/attend_order.html')
|
||||
c = Context({
|
||||
'attend_list': filtered_attend_list,
|
||||
'order_list': filtered_order_list,
|
||||
'sum_calls': sum_calls,
|
||||
'sum_visits': sum_visits,
|
||||
'sum_orders': sum_orders,
|
||||
'sum_price': sum_price,
|
||||
'sum_order_price': sum_order_price,
|
||||
})
|
||||
return HttpResponse(t.render(c))
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
asuzr/views.pyc
Normal file
BIN
asuzr/views.pyc
Normal file
Binary file not shown.
Reference in New Issue
Block a user