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
|
||||||
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!'
|
||||||
|
|||||||
@@ -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)
|
||||||
Reference in new issue
Block a user