PEP8 party

This commit is contained in:
nikolark committed 2014-10-01 17:33:01 +02:00
1 parent 85218c6120
commit 4b3ffeda3c
3 files changed
+53 -21

No files matched your search

+1
View File
@@ -6,3 +6,4 @@ static/.sass-cache
uploads/[^.]*
venv
node_modules
.idea
+2 -2
View File
@@ -12,8 +12,8 @@ urlpatterns = patterns('main.views',
url(r'^stats/orders/products_realtime$', 'stats_products_realtime', name='stats-products-realtime'),
url(r'^stats/products/$', 'stats_products', name='stats-products'),
url(r'^stats/products/(?P<product>[0-9]+)/$', 'stats_products', name='stats-product'),
url(r'^products/(?P<product_id>[0-9]+)/$', 'products', name='json-product'),
url(r'^products/$', 'products', name='json-products'),
url(r'^products/(?P<product_id>[0-9]+)/$', 'products_json', name='json-product'),
url(r'^products/$', 'products_json', name='json-products'),
url(r'^user/create/$', 'create_user', name='create-user'),
url(r'^inventory/$', 'inventory', name='inventory'),
url(r'^inventory/add/$', 'inventory_add', name='inventory-add'),
+50 -19
View File
@@ -1,17 +1,15 @@
# coding: utf-8
from datetime import timedelta
from datetime import datetime
from itertools import groupby
import json
import time
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login, logout as auth_logout
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.db.models import Count, Sum, Max, Min
from django.db.models import Count, Sum, Min
from django.forms.formsets import formset_factory
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, render, get_object_or_404, redirect
@@ -21,6 +19,7 @@ from forms import *
from models import *
import utils
def home(request):
if request.method == "POST":
form = AuthenticationForm(data=request.POST)
@@ -35,6 +34,7 @@ def home(request):
form = AuthenticationForm(request)
return render_to_response('home.html', locals(), context_instance=RequestContext(request))
def register(request):
products = Product.objects.filter(active=True)
cheapest_product_price = products.aggregate(Min('sale_price_int')).values()[0] or 0
@@ -101,10 +101,12 @@ def register(request):
formset = OrderLineFormSet()
return render_to_response('register.html', locals(), context_instance=RequestContext(request))
def deposit(request):
users = User.objects.all().order_by('first_name', 'last_name')
users_js = users_format_js(users)
allowed_users = utils.users_with_perm('add_transaction')
error_message_template = u'{0} {1} kan ikke sette inn {2} kr, det overskrider maks saldo ({3} kr) med {4} kr'
# FIXME: dont need this
try:
@@ -118,7 +120,7 @@ def deposit(request):
amount = form.cleaned_data['amount']
user = form.cleaned_data['user']
if amount + user.get_profile().balance > settings.BBS_SALDO_MAX and amount + user.get_profile().balance != 1337:
messages.error(request, u'{0} {1} kan ikke sette inn {2} kr, det overskrider maks saldo ({3} kr) med {4} kr'.format(
messages.error(request, error_message_template.format(
user.first_name,
user.last_name,
amount,
@@ -146,6 +148,7 @@ def deposit(request):
return render_to_response('deposit.html', locals(), context_instance=RequestContext(request))
def log(request, limit=datetime.now()-timedelta(days=2)):
if limit:
# display last two days of orders and transactions
@@ -166,11 +169,13 @@ def log(request, limit=datetime.now()-timedelta(days=2)):
return render_to_response('log.html', locals(), context_instance=RequestContext(request))
def stats(request):
products = Product.objects.filter(active=True)
return render_to_response('stats.html', locals(), context_instance=RequestContext(request))
def serialize_product(product):
f_product = {}
for attr in Product._meta.get_all_field_names():
@@ -184,7 +189,8 @@ def serialize_product(product):
f_product[attr] = product.__getattribute__(attr)
return f_product
def products(request, product_id=None):
def products_json(request, product_id=None):
if product_id:
#single
products = get_object_or_404(Product, pk=product_id)
@@ -199,10 +205,15 @@ def products(request, product_id=None):
return HttpResponse(json.dumps(f_products), content_type='application/javascript; charset=utf8')
def stats_product(product):
sales = OrderLine.objects.filter(product=product)
# reverse lookup via order, customer
per_user = sales.values('order__customer__first_name','order__customer__last_name').annotate(num=Sum('amount')).order_by('num').reverse()
per_user = OrderLine.objects\
.filter(product=product)\
.values('order__customer__first_name', 'order__customer__last_name')\
.annotate(num=Sum('amount'))\
.order_by('num')\
.reverse()
f_per_user = []
for row in per_user:
who = row['order__customer__first_name'] + " " + row['order__customer__last_name']
@@ -215,6 +226,7 @@ def stats_product(product):
}
return response
def stats_products(request, product=None):
if product:
#single
@@ -235,9 +247,12 @@ def stats_products(request, product=None):
}
return HttpResponse(json.dumps(response), content_type='application/javascript; charset=utf8')
def stats_orders(request):
total = float(Order.objects.count())
per_user = Order.objects.values('customer__first_name','customer__last_name').annotate(num=Count('customer')).order_by('num').reverse()
per_user = Order.objects\
.values('customer__first_name', 'customer__last_name')\
.annotate(num=Count('customer'))\
.order_by('num').reverse()
f_per_user = []
for row in per_user:
who = row['customer__first_name'] + " " + row['customer__last_name']
@@ -245,13 +260,14 @@ def stats_orders(request):
f_per_user.append([who, num])
return HttpResponse(json.dumps(f_per_user), content_type='application/javascript; charset=utf8')
def stats_orders_hourly(request):
orders = Order.objects.all()
f_hourly = dict([(key, 0) for key in range(0, 24)]) # init
# group by hour
for key, values in groupby(orders, key=lambda row: row.created.hour):
count = len(list(values))
f_hourly[key] = f_hourly[key] + count
f_hourly[key] += count
if len(orders) == 0:
return HttpResponse(json.dumps({}), content_type='application/javascript; charset=utf8')
@@ -262,6 +278,7 @@ def stats_orders_hourly(request):
}
return HttpResponse(json.dumps(response), content_type='application/javascript; charset=utf8')
def stats_products_realtime(request):
end_time = datetime.now()
start_time = datetime.now() - timedelta(hours=24)
@@ -291,6 +308,7 @@ def logout(request):
auth_logout(request)
return render_to_response('registration/logout.html', locals(), context_instance=RequestContext(request))
def users_format_js(users):
users_js = []
for user in users:
@@ -298,6 +316,7 @@ def users_format_js(users):
users_js = u"[{0}]".format(u",".join(users_js))
return users_js
def create_user(request):
if request.method == "POST":
form = SimpleCreateUserForm(data=request.POST)
@@ -314,15 +333,17 @@ def create_user(request):
return render(request, 'registration/create_user.html', locals())
def inventory(request):
products = Product.objects.all().order_by('-active', 'inventory_amount', 'name')
transactions = InventoryTransaction.objects.all().order_by('-created')
inventory_value = sum(map(lambda x: x[0] * x[1], Product.objects.filter(active=True).values_list('inventory_amount', 'sale_price_int')))
num_products = sum(Product.objects.filter(active=True).values_list('inventory_amount', flat=True))
products_active = products.filter(active=True)
inventory_value = sum(map(lambda x: x[0] * x[1], products_active.values_list('inventory_amount', 'sale_price_int')))
num_products = sum(products_active.values_list('inventory_amount', flat=True))
return render(request, 'inventory.html', locals())
def inventory_add(request):
if request.method == "POST":
form = InventoryTransactionForm(data=request.POST)
@@ -344,17 +365,22 @@ def inventory_add(request):
return render(request, 'inventory_add.html', locals())
def report(request):
# FIXME: split this up in smaller pieces
datetime_now = datetime.now()
start_time = datetime.now() - timedelta(days=30)
start_time = start_time.replace(hour=0, minute=0, second=0, microsecond=0) # start of day, 1 month
end_time = datetime.now().replace(hour=23, minute=59, second=59, microsecond=999) # end of day
# start of day, 1 month
start_time = start_time.replace(hour=0, minute=0, second=0, microsecond=0)
# end of day
end_time = datetime.now().replace(hour=23, minute=59, second=59, microsecond=999)
if request.GET.get('start_time', False) or request.GET.get('end_time', False):
form = DateRangeForm(request.GET)
if form.is_valid():
start_time = form.cleaned_data['start_time']
end_time = form.cleaned_data['end_time'].replace(hour=23, minute=59, second=59, microsecond=999) # end of day
# end of day
end_time = form.cleaned_data['end_time'].replace(hour=23, minute=59, second=59, microsecond=999)
else:
form = DateRangeForm(initial={
@@ -363,7 +389,10 @@ def report(request):
})
# Inventory
products = Product.objects.filter(transactions__created__range=[start_time, end_time]).values('name', 'transactions__unit_price','transactions__amount').order_by('name')
products = Product.objects\
.filter(transactions__created__range=[start_time, end_time])\
.values('name', 'transactions__unit_price', 'transactions__amount')\
.order_by('name')
# group by name and sum
inventory_products = {}
for k, g in groupby(products, lambda x: x['name']):
@@ -381,9 +410,11 @@ def report(request):
itrans = InventoryTransaction.objects.filter(created__range=[start_time, end_time])
inv_in = sum(map(lambda x: x[1].get('transactions_sum', 0), inventory_products.items()))
# out
out_products = Product.objects.filter(orderlines__order__created__range=[start_time, end_time]).values('name', 'orderlines__unit_price','orderlines__amount').order_by('name')
out_products = Product.objects\
.filter(orderlines__order__created__range=[start_time, end_time])\
.values('name', 'orderlines__unit_price', 'orderlines__amount')\
.order_by('name')
# group by name and sum
for k, g in groupby(out_products, lambda x: x['name']):
group = []