Completely re-structured the project from scratch, wrote a better bootstrap script, changed configuration format to yaml, improved Caddyfile, and more. #15 #16 #20
This commit is contained in:
parent
0012214f9b
commit
5572fec9c1
91 changed files with 739 additions and 1345 deletions
|
@ -1,137 +0,0 @@
|
|||
#from datetime import datetime
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import connection
|
||||
|
||||
|
||||
def _select_from_db(sql_select:str):
|
||||
result = None
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute(sql_select)
|
||||
result = cursor.fetchall()
|
||||
return result
|
||||
|
||||
|
||||
def select_history(user, language_code="en") -> list:
|
||||
# select order history and deposits
|
||||
user_id = user.pk
|
||||
result = _select_from_db(f"""
|
||||
select
|
||||
concat(
|
||||
product_name, ' (',
|
||||
content_litres::real, -- converting to real removes trailing zeros
|
||||
'l) x ', amount, ' - ', price_sum, '{settings.CURRENCY_SUFFIX}') as "text",
|
||||
datetime
|
||||
from app_order
|
||||
where user_id = {user_id}
|
||||
|
||||
union
|
||||
|
||||
select
|
||||
concat('Deposit: +', transaction_sum, '{settings.CURRENCY_SUFFIX}') as "text",
|
||||
datetime
|
||||
from app_userdeposits_view
|
||||
where user_id = {user_id}
|
||||
|
||||
order by datetime desc
|
||||
fetch first 30 rows only;
|
||||
""")
|
||||
result = [list(row) for row in result]
|
||||
if language_code == "de": # reformat for german translation
|
||||
for row in result:
|
||||
row[0] = row[0].replace(".", ",")
|
||||
return result
|
||||
|
||||
|
||||
def select_yopml12m(user) -> list:
|
||||
# number of orders per month (last 12 months)
|
||||
# only for the specified user
|
||||
user_id = user.pk
|
||||
result = _select_from_db(f"""
|
||||
-- select the count of the orders per month (last 12 days)
|
||||
select
|
||||
to_char(date_trunc('month', datetime), 'YYYY-MM') as "month",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
where user_id = {user_id}
|
||||
and date_trunc('month', datetime) > date_trunc('month', now() - '12 months'::interval)
|
||||
group by "month"
|
||||
order by "month" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
||||
|
||||
def select_aopml12m() -> list:
|
||||
# number of orders per month (last 12 months)
|
||||
result = _select_from_db(f"""
|
||||
-- select the count of the orders per month (last 12 days)
|
||||
select
|
||||
to_char(date_trunc('month', datetime), 'YYYY-MM') as "month",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
where date_trunc('month', datetime) > date_trunc('month', now() - '12 months'::interval)
|
||||
group by "month"
|
||||
order by "month" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
||||
|
||||
|
||||
def select_yopwd(user) -> list:
|
||||
# number of orders per weekday (all time)
|
||||
# only for the specified user
|
||||
user_id = user.pk
|
||||
result = _select_from_db(f"""
|
||||
-- select the count of the orders per weekday (all time)
|
||||
select
|
||||
to_char(datetime, 'Day') as "day",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
where user_id = {user_id}
|
||||
group by "day"
|
||||
order by "count" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
||||
return []
|
||||
|
||||
def select_aopwd() -> list:
|
||||
# number of orders per weekday (all time)
|
||||
result = _select_from_db(f"""
|
||||
-- select the count of the orders per weekday (all time)
|
||||
select
|
||||
to_char(datetime, 'Day') as "day",
|
||||
sum(amount) as "count"
|
||||
from app_order
|
||||
group by "day"
|
||||
order by "count" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
||||
return []
|
||||
|
||||
|
||||
def select_noyopd(user) -> list:
|
||||
# number of orders per drink (all time)
|
||||
# only for specified user
|
||||
user_id = user.pk
|
||||
result = _select_from_db(f"""
|
||||
select
|
||||
d.product_name as "label",
|
||||
sum(o.amount) as "data"
|
||||
from app_drink d
|
||||
join app_order o on (d.id = o.drink_id)
|
||||
where o.user_id = {user_id}
|
||||
group by d.product_name
|
||||
order by "data" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
||||
|
||||
def select_noaopd() -> list:
|
||||
# number of orders per drink (all time)
|
||||
result = _select_from_db(f"""
|
||||
select
|
||||
d.product_name as "label",
|
||||
sum(o.amount) as "data"
|
||||
from app_drink d
|
||||
join app_order o on (d.id = o.drink_id)
|
||||
group by d.product_name
|
||||
order by "data" desc;
|
||||
""")
|
||||
return [list(row) for row in result]
|
Loading…
Add table
Add a link
Reference in a new issue