Adds per day sale stats

This commit is contained in:
nikolark committed 2015-08-09 21:59:58 +02:00
1 parent abebcaf688
commit 7686b11f12
2 files changed
+27 -1

No files matched your search

+17 -1
View File
@@ -7,7 +7,7 @@ import datetime
import logging import logging
import logging.config import logging.config
from utils import generate_activation_code from utils import generate_activation_code, MyJSONEncoder
import sendega import sendega
import inside import inside
@@ -15,6 +15,7 @@ import config
app = Flask(__name__) app = Flask(__name__)
app.config.from_object('config') app.config.from_object('config')
app.json_encoder = MyJSONEncoder
if not app.debug: if not app.debug:
logging.config.dictConfig(app.config['LOGGING']) logging.config.dictConfig(app.config['LOGGING'])
@@ -582,6 +583,21 @@ def dlr():
app.logger.error('Unhandled DLR, dlr_id=%s', dlr_id) app.logger.error('Unhandled DLR, dlr_id=%s', dlr_id)
@app.route('/stats/memberships/', methods=['GET'])
def stats_memberships():
start_datetime = request.args.get('start', '2015-08-01')
sale_events = query_db("""
SELECT DATE_FORMAT(timestamp, '%%Y-%%m-%%d') as date,count(*) as sales FROM event
WHERE action IN ('new_membership_delivered', 'renew_membership_delivered')
AND timestamp > %s
GROUP BY DATE_FORMAT(timestamp, '%%Y-%%m-%%d')
ORDER BY timestamp""", [start_datetime])
result = {'meta': {'num_results': len(sale_events)}, 'memberships': sale_events}
headers = {'Access-Control-Allow-Origin': '*'}
return (jsonify(**result), 200, headers)
@app.route('/') @app.route('/')
def main(): def main():
return 'Tekstmelding!' return 'Tekstmelding!'
+10
View File
@@ -1,5 +1,7 @@
import string import string
import random import random
from datetime import datetime
from flask.json import JSONEncoder
def generate_activation_code(length=5): def generate_activation_code(length=5):
@@ -7,3 +9,11 @@ def generate_activation_code(length=5):
# remove easily misinterpreted chars # remove easily misinterpreted chars
chars = chars.translate(None, '0oil1wv') chars = chars.translate(None, '0oil1wv')
return ''.join(random.choice(chars) for _ in range(length)) return ''.join(random.choice(chars) for _ in range(length))
class MyJSONEncoder(JSONEncoder):
def default(self, o):
if isinstance(o, datetime):
return o.isoformat()
return super(MyJSONEncoder, self).default(o)