Archived
Adds per day sale stats
This commit is contained in:
1 parent
abebcaf688
commit
7686b11f12
2 files changed
+27
-1
No files matched your search
+17
-1
@@ -7,7 +7,7 @@ import datetime
|
||||
import logging
|
||||
import logging.config
|
||||
|
||||
from utils import generate_activation_code
|
||||
from utils import generate_activation_code, MyJSONEncoder
|
||||
import sendega
|
||||
import inside
|
||||
|
||||
@@ -15,6 +15,7 @@ import config
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config.from_object('config')
|
||||
app.json_encoder = MyJSONEncoder
|
||||
|
||||
if not app.debug:
|
||||
logging.config.dictConfig(app.config['LOGGING'])
|
||||
@@ -582,6 +583,21 @@ def dlr():
|
||||
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('/')
|
||||
def main():
|
||||
return 'Tekstmelding!'
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import string
|
||||
import random
|
||||
from datetime import datetime
|
||||
from flask.json import JSONEncoder
|
||||
|
||||
|
||||
def generate_activation_code(length=5):
|
||||
@@ -7,3 +9,11 @@ def generate_activation_code(length=5):
|
||||
# remove easily misinterpreted chars
|
||||
chars = chars.translate(None, '0oil1wv')
|
||||
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)
|
||||
Reference in new issue
Block a user