initial commit

This commit is contained in:
Anastasia
2015-04-19 21:57:18 +05:00
parent c35ea95a33
commit f0a9db1c86
23 changed files with 456 additions and 0 deletions

0
asuzr/__init__.py Normal file
View File

BIN
asuzr/__init__.pyc Normal file

Binary file not shown.

24
asuzr/admin.py Normal file
View 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

Binary file not shown.

101
asuzr/models.py Normal file
View 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

Binary file not shown.

3
asuzr/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

96
asuzr/views.py Normal file
View 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

Binary file not shown.