def segments(query=None, limit=MAX_RESULTS, grouped_by=None, min_date=None, max_date=None, randomize=False, compact=False, is_ajax=False): def segment_comparator(s1, s2): return s1['epoch_time'] > s2['epoch_time'] and -1 or 1 segments = Segment.cache() if query and len(query): filtered_segments = [segment for segment in segments if segment['description'].lower().find(query.lower()) != -1] else: filtered_segments = segments min_date_secs = int(time.mktime(min_date.timetuple())) if min_date else -1 max_date_secs = int(time.mktime(max_date.timetuple())) if max_date else sys.maxint filtered_segments = [seg_props for seg_props in filtered_segments \ if min_date_secs <= seg_props.get('epoch_time', 0) < max_date_secs] if limit > -1: filtered_segments = filtered_segments[:limit] filtered_segments.sort(segment_comparator) if is_ajax: for segment in filtered_segments: del segment['date'] if compact: # date_format = "%B %d, %Y" for segment in filtered_segments: pass if randomize and len(filtered_segments): return random.choice(filtered_segments) else: return filtered_segments
def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("Repeat segments\n") url_segs = defaultdict(list) for segment in Segment.cache(): url_segs[segment['u']].append(segment) for url, segments in url_segs.items(): if len(segments) > 1: self.response.out.write("\n\n%s" % url) for seg in segments: self.response.out.write("\n\t%s" % seg)
def get(self): self.response.headers['Content-Type'] = 'text/plain' url_segs = defaultdict(list) for segment in Segment.cache(): url_segs[segment['url']].append(segment) keys_to_del = [] for url, segments in url_segs.items(): if len(segments) > 1: control_segment = segments[0] for segment in segments[1:]: if segment['description'] == control_segment['description']: keys_to_del.append(segment['key']) self.response.out.write("Keys to delete: %s\n" % keys_to_del) segs_to_del = [seg for seg in Segment.get(keys_to_del) if seg is not None] self.response.out.write("Segments to delete: %s\n" % segs_to_del) if len(segs_to_del): db.delete(segs_to_del) Segment.cache(True) self.response.out.write("\nDeleted marked segments and reset cache.") else: self.response.out.write("\nNo segments were deleted.")
def get(self): self.response.headers['Content-Type'] = 'application/json' key = self.request.get('key', '') segments = Segment.cache() try: idx = [segment['key'] for segment in segments].index(key) except: idx = -1 try: limit = int(self.request.get('limit', MAX_RESULTS)) except: limit = MAX_RESULTS if limit < -1: limit = len(segments) latest_segments = segments[idx + 1:idx + 1 + limit] self.response.out.write("%s" % json.dumps({'segments': latest_segments}))
def get(self): segments = Segment.cache() logging.debug("segments: %s" % segments) self.response.headers['Content-Type'] = 'text/plain'