def render(self): def fmt_req_type(req): label = ' %s' % req.label if req.label else '' return '%s%s' % (req.type, label) filter_nick = self.request.params.get('nick') filter_name = self.request.params.get('name') filter_date = self.request.params.get('date') # strict if provided will disable partial search for nicknames strict = self.request.params.get('strict') # remove unwanted chars from filter_date if filter_date: filter_date = re.sub('[^\d+]', '', filter_date) if filter_nick: # retrieve all availables nicknames all_nick = [nick.lower() for nick in User.get_all_nicknames(self.session)] if strict: match = filter_nick.lower() in all_nick else: match = set([nick for nick in all_nick if filter_nick.lower() in nick.lower()]) if not match: # filter_nick does not match any known uid, stop here return JsonHTTPNotFound({'message': ('%s not found' % filter_nick)}) requests = Request.get_active(self.session, filter_date) data_name = dict([(req.user.name.lower(), fmt_req_type(req)) for req in requests]) data_nick = dict([(req.user.nickname, fmt_req_type(req)) for req in requests]) ret = val = None if filter_nick: val = data_nick.get(filter_nick.lower()) if val: ret = {filter_nick: val} elif not strict: val = dict([(k, v) for k, v in data_nick.items() if filter_nick.lower() in k]) return val else: return {} if filter_name: val = data_name.get(filter_name.lower()) if val: ret = {filter_name: val} else: val = dict([(k, v) for k, v in data_name.items() if filter_name.lower() in k]) return val return ret if ret else data_name
def render(self): duration = self.request.params.get('duration') def fmt_req_type(req): label = ' %s' % req.label if req.label else '' if duration and req.days > 1: label = '%s (until %s)' % (label, req.date_to.strftime('%d/%m/%Y')) return '%s%s' % (req.type, label) filter_nick = self.request.params.get('nick') filter_name = self.request.params.get('name') filter_date = self.request.params.get('date') # strict if provided will disable partial search for nicknames strict = self.request.params.get('strict') # remove unwanted chars from filter_date if filter_date: filter_date = re.sub('[^\d+]', '', filter_date) if filter_nick: # retrieve all availables nicknames all_nick = [ nick.lower() for nick in User.get_all_nicknames(self.session) ] if strict: match = filter_nick.lower() in all_nick else: match = set([ nick for nick in all_nick if filter_nick.lower() in nick.lower() ]) if not match: # filter_nick does not match any known uid, stop here return JsonHTTPNotFound( {'message': ('%s not found' % filter_nick)}) requests = Request.get_active(self.session, filter_date) data_name = dict([(req.user.name.lower(), fmt_req_type(req)) for req in requests]) data_nick = dict([(req.user.nickname, fmt_req_type(req)) for req in requests]) ret = val = None if filter_nick: val = data_nick.get(filter_nick.lower()) if val: ret = {filter_nick: val} elif not strict: val = dict([(k, v) for k, v in data_nick.items() if filter_nick.lower() in k]) return val else: return {} if filter_name: val = data_name.get(filter_name.lower()) if val: ret = {filter_name: val} else: val = dict([(k, v) for k, v in data_name.items() if filter_name.lower() in k]) return val data_name = OrderedDict(sorted(data_name.items(), key=lambda t: t[0])) return ret if ret else data_name