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

3
.directory Normal file
View File

@@ -0,0 +1,3 @@
[Dolphin]
Timestamp=2015,4,13,16,48,17
Version=3

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.

0
record/__init__.py Normal file
View File

BIN
record/__init__.pyc Normal file

Binary file not shown.

85
record/settings.py Normal file
View File

@@ -0,0 +1,85 @@
"""
Django settings for record project.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = ')-s&c_)jnmzoslf=9rnav9qqadd#l$46jt+m51ppu!lril3g89'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'asuzr'
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'record.urls'
WSGI_APPLICATION = 'record.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Yekaterinburg'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/')

BIN
record/settings.pyc Normal file

Binary file not shown.

16
record/urls.py Normal file
View File

@@ -0,0 +1,16 @@
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'record.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^product/$', 'asuzr.views.prod_list'),
url(r'^product/(?P<prod_id>\d+)/$', 'asuzr.views.prod_detail'),
url(r'^attendance/(?P<year>\d+)/(?P<month>\d+)/$', 'asuzr.views.attend_table'),
url(r'^orders/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/$', 'asuzr.views.orders_table'),
url(r'^attend_order/(?P<year>\d+)/(?P<month>\d+)/$', 'asuzr.views.attend_order_table'),
url(r'^admin/', include(admin.site.urls)),
)

BIN
record/urls.pyc Normal file

Binary file not shown.

14
record/wsgi.py Normal file
View File

@@ -0,0 +1,14 @@
"""
WSGI config for record project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
"""
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "record.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

BIN
record/wsgi.pyc Normal file

Binary file not shown.

View File

@@ -0,0 +1,10 @@
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}
{% block branding %}
<h1 id="site-name">{% trans 'Автоматизированная система учета заказов студии мебели Рекорд' %}</h1>
{% endblock %}
{% block nav-global %}{% endblock %}

View File

@@ -0,0 +1,2 @@
{% include 'asuzr/attendance.html' %}
{% include 'asuzr/orders.html' %}

View File

@@ -0,0 +1,43 @@
<html>
<head>
<title>Таблица посещаемости</title>
<meta content="">
<style></style>
</head>
<body>
<H1>Таблица посещаемости</H1>
<TABLE BORDER WIDTH="100%">
{% if attend_list %}
<ul>
<TR>
<TH>Дата</TH>
<TH>День недели</TH>
<TH>Звонки</TH>
<TH>Посещения</TH>
<TH>Заказы</TH>
<TH>Стоимость</TH>
</TR>
{% for attend in attend_list %}
<TR bgcolor={{attend.day_color}}>
<TD>{{ attend.date_dd_mm_yy}}</TD>
<TD>{{ attend.week_day}}</TD>
<TD>{{ attend.calls }}</TD>
<TD>{{ attend.visits }}</TD>
<TD>{{ attend.order_count}}</TD>
<TD>{{ attend.orders_price}}</TD>
</TR>
{% endfor %}
<TR>
<TD COLSPAN=2>ИТОГО:</TD>
<TD>{{sum_calls}}</TD>
<TD>{{sum_visits}}</TD>
<TD>{{sum_orders}}</TD>
<TD>{{sum_price}}</TD>
</TR>
</ul>
{% else %}
<p>Список изделий пуст</p>
{% endif %}
</TABLE>
</body>
</html>

View File

@@ -0,0 +1,41 @@
<html>
<head>
<title>Заказы</title>
<meta content="">
<style></style>
</head>
<body>
<H1>Заказы</H1>
<TABLE BORDER WIDTH="100%">
{% if order_list %}
<ul>
<TR>
<TH>Наименование</TH>
<TH>Стоимость</TH>
<TH>Адрес</TH>
<TH>Дизайнер</TH>
<TH>Срок сдачи</TH>
</TR>
{% for order in order_list %}
<TR>
<TD>{{ order.product.name }}</TD>
<TD>{{ order.price }}</TD>
<TD>{{ order.address }}</TD>
<TD>{{ order.designer.first_name }}</TD>
<TD>{{ order.deadline_dmy }}</TD>
</TR>
{% endfor %}
<TR>
<TD> ИТОГО:</TD>
<TD>{{sum_price}}</TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</ul>
{% else %}
<p> Список заказов пуст</p>
{% endif %}
</TABLE>
</body>
</html>

View File

@@ -0,0 +1,18 @@
<html>
<head>
<title>Типы изделий</title>
<meta content="">
<style></style>
</head>
<body>
{% if product_list %}
<ul>
{% for prod in product_list %}
<li>{{ prod.name }}</li>
{% endfor %}
</ul>
{% else %}
<p>Список изделий пуст</p>
{% endif %}
</body>
</html>