Автор работы: Пользователь скрыл имя, 24 Марта 2014 в 15:24, дипломная работа
Целью работы является разработка, создание и внедрение Интернет-магазина «Дом моды 8 Марта». Объектом исследования является деятельность ООО «Швейная фабрика 8 марта». Предметом исследования является процесс разработки и внедрения интернет-магазина «Дом моды 8 марта».
Для достижения поставленной цели необходимо выполнить следующие задачи:
1. Выявить и охарактеризовать существующие бизнес-процессы в организации
2. Дать обоснование по выбранным техническим инструментам.
Введение 4
1. Аналитическая часть 7
1.1 Характеристика предприятия. 7
1.2 Экономическая сущность задачи 8
1.3 Обоснование необходимости и цели использования вычислительной техники для решения задачи. 9
1.4 Постановка задачи 10
1.4.1 Цель и назначение автоматизированного варианта решения задачи 10
1.4.2 Общая характеристика организации решения задачи на ЭВМ 10
1.5. Анализ интернет-представительств других предприятий данной отрасли 13
1.6. Обоснование проектных решений. 16
1.6.1 Обоснование проектных решений по техническому обеспечению 17
1.6.2 Обоснование проектных решений по информационному обеспечению 18
1.6.3 Обоснование проектных решений по программному обеспечению 19
1.7. Выбор политики рекламы сайта при его размещении в Интернет 22
2. Проектная часть 24
2.1 Информационное обеспечение задачи 24
2.1.1. Информационная модель и её описание 24
2.2.2. Используемые классификаторы и системы кодирования 25
2.2.3. Характеристика нормативно-справочной и входной оперативной информации 26
2.2.4 Характеристика результатной информации 28
2.2.5 Характеристика базы данных 31
2.3 Программное обеспечение задачи 35
2.3.1. Общие положения 35
2.3.2. Структура сайта, состав и типы используемых файлов 36
2.3.3. Описание программных модулей 37
2.3.4. Описание интерфейса 38
2.4.1. Организация процесса информационной поддержки сайта 39
2.4.2. Тестирование сайта, размещение его в сети, информирование общественности о существовании сайта 39
3. Обоснование экономической эффективности проекта 44
3.1 Выбор и обоснование методики расчёта экономической эффективности 44
3.2 Расчет показателей экономической эффективности проекта 48
Заключение 55
Список сокращений 57
Глоссарий 58
Список литературы 59
'NAME': rel(DATABASE_NAME), # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
STATICFILES_DIRS = (
# for admin_tools
('admin_tools', '/usr/lib/python2.7/site-
# for tinymce
#('tiny_mce', '/usr/lib/python2.7/site-
# static files
('css', rel('static/css')),
('js', rel('static/js')),
('images', rel('static/images')),
# temporary
('fancybox', rel('static/fancybox')),
)
# tinymce
#TINYMCE_JS_URL = 'http://debug.example.org/
#TINYMCE_DEFAULT_CONFIG = {
# 'plugins': "table,paste,searchreplace",
# 'theme': "advanced",
# 'theme_advanced_layout_
# 'theme_advanced_toolbar_
# 'theme_advanced_buttons1' : 'bold,italic,underline,
#}
#TINYMCE_SPELLCHECKER = False
#TINYMCE_COMPRESSOR = True
# debug-toolbar
INTERNAL_IPS = ('127.0.0.1',)
DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.version.
'debug_toolbar.panels.timer.
'debug_toolbar.panels.
'debug_toolbar.panels.headers.
'debug_toolbar.panels.request_
'debug_toolbar.panels.
'debug_toolbar.panels.sql.
'debug_toolbar.panels.signals.
'debug_toolbar.panels.logger.
)
DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
}
Настройки диспатчера ссылок «urls.py»
# -*- coding: utf8 -*-
from django.conf.urls.defaults import patterns, include, url
from django.conf.urls.static import static
from django.shortcuts import get_list_or_404
from django.conf import settings
from django.http import Http404
from rollyourown.seo.admin import register_seo_admin
from django.contrib import admin
from django.contrib.sitemaps import Sitemap
from django.contrib.sitemaps import FlatPageSitemap
from django.views.generic.base import TemplateView
admin.autodiscover()
from django.views.generic import ListView, DetailView
from django.db.models.query import QuerySet
from catalog.models import Product, Order
from eshop_seo.seo import MyMetadata
from registration.forms import RegistrationFormUniqueEmail
from django import forms
from news.models import NewsEntry
register_seo_admin(admin.site, MyMetadata)
class NewsSitemap(Sitemap):
changefreq = "weekly"
priority = 0.5
def items(self):
return NewsEntry.objects.filter()
def lastmod(self, obj):
return obj.created
sitemaps = {
'news': NewsSitemap,
'flatpages': FlatPageSitemap,
}
class RobotsView(TemplateView):
'''
Serves /robots.txt without Apache configuration modification.
'''
template_name = 'robots.txt'
def render_to_response(self, context, **kwargs):
return super(TemplateView,
self).render_to_response(
content_type='text/plain',
**kwargs)
class SalesByTimeConfigView(
template_name = 'salesbytime_cfg.html'
def get_context_data(self, **kwargs):
context = super(SalesByTimeConfigView,
self).get_context_data(**
context['status_types'] = Order.STATUS_TYPES
return context
class CustomRegistrationForm(
attrs_dict = { 'class': 'required' }
username = forms.RegexField(regex=r'^\w+$
email = forms.EmailField(widget=forms.
label=(u'E-mail *'))
password1 = forms.CharField(widget=forms.
password2 = forms.CharField(widget=forms.
class SeachByArtikulListView(
context_object_name = "products"
template_name = "all_products.html"
def get_queryset(self):
artikul = self.request.GET.get('s', '')
return Product.objects.filter(
class FilterProductsListView(
context_object_name = "products"
template_name = "all_products.html"
def get_queryset(self):
product_type = self.request.GET.get('product_
metal = self.request.GET.get('metal', '')
vstavka = self.request.GET.get('vstavka'
price_id = self.request.GET.get('price_
sort = self.request.GET.get('sort', '')
exists = self.request.GET.get('exists', '')
q = QuerySet(model=Product)
if product_type:
q = q.filter(type=int(product_
if metal:
q = q.filter(metal=metal)
if vstavka:
q = q.filter(vstavka=vstavka)
if exists:
if exists == 'on':
q = q.filter(exists=True)
else:
q = q.filter(exists=False)
if sort:
if sort == 'inc':
return q.order_by('price')
else:
return q.order_by('-price')
s = q.order_by('-date').all()
result = list(s)
if price_id:
price_id = int(price_id)
if price_id == 1:
result = [x for x in result if x.full_price() <= 2000.0]
elif price_id == 2:
result = [x for x in result if x.full_price() > 2000.0 and x.full_price() <= 5000.0]
elif price_id == 3:
result = [x for x in result if x.full_price() > 5000.0 and x.full_price() <= 10000.0]
elif price_id == 4:
result = [x for x in result if x.full_price() > 10000.0 and x.full_price() <= 20000.0]
elif price_id == 5:
result = [x for x in result if x.full_price() > 20000.0 and x.full_price() <= 50000.0]
elif price_id == 6:
result = [x for x in result if x.full_price() > 50000.0]
return result
class ShowAllProductsListView(
queryset = Product.objects.order_by('-
context_object_name = 'products'
template_name = 'all_products.html'
class ProductTypeListView(ListView):
''' views specified type of product only
'''
context_object_name = "products"
template_name = "all_products.html"
def get_queryset(self):
return get_list_or_404(Product.
# return Product.objects.filter(type__
urlpatterns = patterns('',
# url(r'^$', 'eshop.views.home', name='home'),
# show all products on main page
url(r'^$',
ShowAllProductsListView.as_
name='show_all_products'),
url(r'^product/(?P<pk>\d+)/$',
DetailView.as_view(
model=Product,
context_object_name='product',
template_name='product.html'
),
name='show_product_by_id'),
# search by artikul
url(r'^search/',
SeachByArtikulListView.as_
name='search_product_by_
url(r'^filter/',
FilterProductsListView.as_
name='filter_products'),
# admin site
url(r'^admin/', include(admin.site.urls)),
# news
url(r'^news/', include('news.urls')),
# sendmail
url(r'^sendmail/', include('sendmail.urls')),
# show products by type
url(r'^show/(?P<name>\w+)/', ProductTypeListView.as_view())
# registration url
# url(r'^accounts/register/$', 'registration.views.register',
# {'form_class': RegistrationFormUniqueEmail},
# name='registration_register'
# ),
url(r'^accounts/register/$', 'registration.views.register',
{'form_class': CustomRegistrationForm},
name='registration_register'
),
# logout url
url(r'^accounts/logout/$', 'django.contrib.auth.views.
{'next_page':'/'},
name='auth_logout'
),
# accounts actions (login, etc)
(r'^accounts/', include('registration.urls')),
# cart
(r'^cart/', include('catalog.urls')),
# profiles
(r'^profiles/', include('profiles.urls')),
# clear cache
url(r'^adm/clearcache/$', 'clearcache.views.clear_cache'
url(r'^adm/salesbytime_cfg/$', SalesByTimeConfigView.as_view(
url(r'^adm/salesbytime/$', 'reports.views.salesbytime'),
url(r'^print/order/(?P<order_
# robots.txt
url(r'^robots\.txt$', RobotsView.as_view()),
# sitemap.xml
(r'^sitemap\.xml$', 'django.contrib.sitemaps.
{'sitemaps': sitemaps}),
)
# debug url to serve media files
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_
Основные функции проекта «views.py»
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from annoying.decorators import render_to
from pytils.numeral import rubles
from catalog.models import Order
@render_to('print_order.html')
def print_order(request, order_id):
order = Order.objects.get(id=order_id)
result = []
for op in order.orderposition_set.all():
result.append(
{
'naim': u'Наименование' % (op.product.type, op.product.artikul),
'kolvo': op.quantity,
'price': (op.product.price / (130/100.0)),
'sum': op.quantity * (op.product.price / (130/100.0)),
'sum_nds': op.product.nds(),
'total':op.quantity * op.product.full_price(),
}
)
itogo = {
'sum': reduce(lambda x, y: x + y, [x['sum'] for x in result]),
'sum_nds': reduce(lambda x, y: x + y, [x['sum_nds'] for x in result]),
'total': reduce(lambda x, y: x + y, [x['total'] for x in result]),
'total_propis': rubles(order.price())
}
return {'order':order, 'result':result, 'itogo':itogo}
Диспетчер ссылок модуля catalog «urls.py»
from django.conf.urls.defaults import patterns, url
from views import add_to_cart, remove_from_cart, get_cart, decrease_quantity
from views import make_order, my_orders
urlpatterns = patterns('',
url(r'^add/(?P<product_id>\d+)
url(r'^remove/(?P<product_id>\
name='remove_from_cart'),
url(r'^removeone/(?P<product_
name='decrease_quantity'),
url(r'^order/$', make_order, name='make_order'),
url(r'^myorders/$', my_orders, name='my_orders'),
url(r'^$', get_cart, name='get_cart'),
)
Настройки административных страниц модуля catalog «admin.py»
# -*- encoding: utf-8 -*-
from django.contrib import admin
from sorl.thumbnail.admin import AdminImageMixin
from rollyourown.seo.admin import get_inline
from catalog.models import Product, Vstavka, ProductType
from catalog.models import Tax, Certificate, DeliveryType, Order, OrderPosition
from eshop_seo.seo import MyMetadata
class OrderPositionInline(admin.
model = Order.products.through
class ProductAdmin(AdminImageMixin, admin.ModelAdmin):
search_fields = ['artikul', 'metal', 'vstavka', 'ves', 'price',
'prim', 'type', 'tax__name']
list_display = ['artikul', 'metal', 'ves', 'price',
'type', 'tax', 'nds', 'exists']
list_filter = ['metal', 'vstavka', 'type', 'tax__name', 'exists']
inlines = [get_inline(MyMetadata), OrderPositionInline]
class OrderAdmin(admin.ModelAdmin):
search_fields = ['id', 'user', 'date', 'status']
list_display = ['__unicode__', 'user', 'date', 'status', 'price',
'products_count', 'certificate']
list_filter = ['date', 'status', 'certificate']
inlines = [OrderPositionInline, ]
exclude = ('products',)
class VstavkaAdmin(admin.ModelAdmin)
search_fields = ['name']
class ProductTypeAdmin(admin.
search_fields = ['name']
class TaxAdmin(admin.ModelAdmin):
search_fields = ['name', 'type']
list_display = ('name', 'type', 'value')
class CertificateAdmin(admin.
search_fields = ['name', 'type', 'code', 'value']
list_display = ('name', 'code', 'type', 'value', 'date_start', 'date_end',
'used', 'onetime')
class DeliveryTypeAdmin(admin.
search_fields = ['name']
list_display = ('name', 'value')
admin.site.register(Product, ProductAdmin)
admin.site.register(Vstavka, VstavkaAdmin)
admin.site.register(
admin.site.register(Tax, TaxAdmin)
admin.site.register(
admin.site.register(
admin.site.register(Order, OrderAdmin)
Описание функций модуля catalog «views.py»
# -*- coding: utf-8 -*-
from annoying.decorators import render_to
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.shortcuts import redirect
from django.template import RequestContext
from cart import Cart as OrigCart, ItemAlreadyExists, ItemDoesNotExist
from cart.models import Item
from models import Product, OrderPosition, Order
from models import OrderForm, DeliveryType, Certificate
from django.core.exceptions import ObjectDoesNotExist
from django.views.generic.base import TemplateView
import datetime
class Cart(OrigCart):
def update(self, product, quantity, unit_price=None):
try:
item = Item.objects.get(
cart=self.cart,
product=product,
)
except Item.DoesNotExist:
raise ItemDoesNotExist
item.quantity += quantity
item.save()
def decrease_quantity(self, product, quantity):
try:
item = Item.objects.get(
cart=self.cart,
product=product,
)
except Item.DoesNotExist:
raise ItemDoesNotExist
else:
item.quantity -= quantity
item.save()
@login_required
def add_to_cart(request, product_id):
product = Product.objects.get(id=
cart = Cart(request)
# add 1 product
try:
cart.add(product, product.full_price(), 1)
except ItemAlreadyExists:
cart.update(product, 1)
prev = request.GET.get('prev', '')
print request.META['QUERY_STRING']
print request.GET.urlencode()
print prev
if prev:
return HttpResponseRedirect(prev)
else:
return HttpResponseRedirect('/cart/')
@login_required
def remove_from_cart(request, product_id):
product = Product.objects.get(id=
cart = Cart(request)
cart.remove(product)
return HttpResponseRedirect('/cart/')
@login_required
def decrease_quantity(request, product_id):
product = Product.objects.get(id=
cart = Cart(request)
cart.decrease_quantity(
return HttpResponseRedirect('/cart/')
@login_required
@render_to('cart.html')
def get_cart(request):
return {'cart':Cart(request)}
@render_to('make_order.html')
def make_order(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderForm(request.POST)
if form.is_valid():
order = form.save(commit=False)
order.user = request.user
cert_code = request.POST.get('cert', '')