else:
return None
- async def graph_faction_history(self, destination, *, names = None, systems = None, width = 1024, height = 768):
+ async def graph_faction_history(self, destination, *, names = None, systems = None, start_date = None, end_date = None, width = 1024, height = 768):
faction_ids = []
system_ids = []
if len(faction_ids):
sql += ' and i.faction_id in ({})'.format(', '.join(['?'] * len(faction_ids)))
params += faction_ids
+ if start_date is not None:
+ sql += ' and timestamp>=?'
+ params.append(start_date)
+ if end_date is not None:
+ sql += ' and timestamp<=?'
+ params.append(end_date)
sql += ' group by timestamp, system_name, faction_name order by timestamp desc, system_name, faction_name'
if len(faction_ids) == 1:
return True
async def show_history_report(self, message, args):
- params = { 'names': [], 'systems': [] }
+ params = { 'names': [], 'systems': [], 'start_date': None, 'end_date': None }
key = 'names'
- for arg in args:
+ i = 0
+ while i < len(args):
+ arg = args[i].lower()
+ if i > len(args) - 1:
+ break
+ try:
+ param = args[i + 1]
+ except IndexError:
+ param = None
if arg == 'in':
key = 'systems'
+ i += 1
+ continue
+ elif arg in ['from', 'to']:
+ date = bot.parse_iso8601(param)
+ if date is None:
+ await bot.say(message.channel, '{}?'.format(arg))
+ return False
+ if arg == 'from':
+ params['start_date'] = date
+ else:
+ params['end_date'] = date
+ i += 2
continue
- params[key].append(arg)
+ params[key].append(args[i])
+ i += 1
num_factions = len(params['names'])
num_systems = len(params['systems'])