def fetchmenus(): email, code = self.retAUTHCODE(request.cookies.get('loginsession')) ret = {'code': code, 'msg': self.AUTHCODES[code]} week = request.get_json()['week'] if type(week) == int: if code == 1 or code == 0: with db_conn().cursor() as conn: thisCursor = conn ret['opcode'] = 'Success' if week == 0: year, week = getCurrentWeekAndYear() listDates = weekdaterange(year, week) thisCursor.execute( 'SELECT day, menu FROM menues WHERE weeknumber = %i AND year = %i;' % (week, year)) ret['year'] = year ret['week'] = week else: year, week = skipAhead(week) listDates = weekdaterange(year, week) thisCursor.execute( 'SELECT day, menu FROM menues WHERE weeknumber = %i AND year = %i;' % (week, year)) ret['week'] = week ret['year'] = year ret['menus'] = [] for i in range(5): ret['menus'].insert( i, { 'day': listDates[len(ret['menus'])], 'menu': [] }) for m in thisCursor.fetchall(): m['menu'] = json.loads(m['menu']) for i in range(len(m['menu'])): m['menu'][i] = b64decode(m['menu'][i].encode( 'utf-8')).decode('utf-8') ret['menus'][datetime.date.weekday( datetime.datetime.strptime( m['day'], '%Y-%m-%d'))] = m return jsonify(ret) else: ret['opcode'] = 'Illegal' return jsonify(ret) else: ret['opcode'] = 'Improper input' return jsonify(ret)
def individualreports(): email, code = self.retAUTHCODE(request.cookies.get('loginsession')) ret = { 'code': code, 'msg': self.AUTHCODES[code], 'individuals': [] } if code == 1: data = request.get_json() date_from = datetime.datetime.strptime(data['date_from'], '%Y-%m-%d') date_end = datetime.datetime.strptime(data['date_end'], '%Y-%m-%d') with db_conn() as conn: conn.execute('SELECT userid, name FROM users WHERE 1=1;') if conn.rowcount > 0: users = conn.fetchall() for u in users: total_units_ordered = 0 username = b64decode( u['name'].encode('utf-8')).decode('utf-8') u_id = u['userid'] select_date = date_from while select_date <= date_end: conn.execute( 'SELECT foodorder FROM orders WHERE userid=%i AND day="%s";' % (u_id, select_date.date())) if conn.rowcount > 0: d = json.loads( conn.fetchone()['foodorder']) for o in d: total_units_ordered += o['amount'] select_date += datetime.timedelta(days=1) ret['individuals'].append({ 'name': username, 'total': total_units_ordered }) return jsonify(ret)
def daily_report(self): with db_conn() as conn: today = datetime.datetime.today().date() orders = [] conn.execute('SELECT menu FROM menues WHERE day="%s";' % (today.isoformat())) if conn.rowcount > 0: menus = json.loads(conn.fetchone()['menu']) for m in menus: m = b64decode(m.encode('utf-8')).decode('utf-8') orders.append({'food': m, 'amount': 0}) conn.execute('SELECT foodorder FROM orders WHERE day="%s";' % (today.isoformat())) if conn.rowcount > 0: individualOrders = conn.fetchall() for i in individualOrders: i = json.loads(i['foodorder']) for o in i: orders[o['item']]['amount'] += o['amount'] return orders
def removemenu(): email, code = self.retAUTHCODE(request.cookies.get('loginsession')) data = request.get_json() year, week = skipAhead(int(data['weekskip'])) date = str(weekdaterange(year, week)[int(data['day'])]) ret = {'code': code} yearnow, weeknow = getCurrentWeekAndYear() if (code == 1): with db_conn().cursor() as conn: thisCursor = conn if yearnow <= yearnow and weeknow < week: try: thisCursor.execute( 'DELETE FROM menues WHERE year=%i AND weeknumber=%i AND day="%s";' % (year, week, date)) ret['msg'] = 'success' except: ret['msg'] = '500' else: ret['msg'] = 'Illegal action' return jsonify(ret)
def fetchorder(): email, code = self.retAUTHCODE(request.cookies.get('loginsession')) data = request.get_json() ret = {'code': code, 'msg': self.AUTHCODES[code], 'orders': []} if code == 0 or code == 1: with db_conn().cursor() as conn: thisCursor = conn uid = self.getUID(email) startDate = datetime.datetime.strptime( data['startDate'], '%Y-%m-%d').date() endDate = datetime.datetime.strptime( data['endDate'], '%Y-%m-%d').date() if startDate <= endDate: while startDate <= endDate: thisCursor.execute( 'SELECT year, weeknumber, day, foodorder FROM orders WHERE userid=%i AND day="%s";' % (uid, str(startDate))) if thisCursor.rowcount > 0: o = thisCursor.fetchone() o['foodorder'] = json.loads(o['foodorder']) thisCursor.execute( 'SELECT menu FROM menues WHERE day="%s";' % (str(startDate))) o['menu'] = [] if thisCursor.rowcount > 0: for m in json.loads( thisCursor.fetchone()['menu']): m = b64decode( m.encode('utf-8')).decode('utf-8') o['menu'].append(m) ret['orders'].append(o) startDate += datetime.timedelta(days=1) return jsonify(ret)