if opts.category and (not 'CATEGORIES' in component or not opts.category in component['CATEGORIES']): return False return True cals = utils.get_all_calendars(opts.url, filter=caldav.comp_filter( "VCALENDAR", caldav.comp_filter("VEVENT"))) vevents = list(filter(filter_fn, filters.extract_vevents(cals))) vevents.sort(key=utils.keyEvent) for vevent in vevents: summary = vevent['SUMMARY'] location = vevent.get('LOCATION') dtstart = vevent['DTSTART'].dt if isinstance(dtstart, datetime.datetime): sys.stdout.write('%12s ' % dtstart.strftime('%d %b %H:%M')) else: try: dtend = vevent['DTEND'].dt except KeyError: dtend = None sys.stdout.write('%12s ' % utils.format_daterange(dtstart, dtend)) sys.stdout.write("%s" % summary) if location: sys.stdout.write(" @ %s" % location.replace('\n', ' / ')) sys.stdout.write(utils.statuschar(vevent.get('STATUS'))) sys.stdout.write("\n")
if getattr(end, "date", None): end = end.date() return now >= start and now <= end f = sys.stdout if opts.format == "text": for year in sorted(travelevs.keys(), reverse=True): if not travelevs[year]: continue f.write("%d\n" % year) evs = travelevs[year] for ev in sorted(evs, key=evsortkey, reverse=True): f.write("* ") f.write(utils.format_daterange(ev.start, ev.end)) f.write(": %s" % ev.summary) if ev.location: f.write(" @ %s" % ev.location) f.write(utils.statuschar(ev.status)) f.write("\n") elif opts.format == "html": env = jinja2.Environment(loader=jinja2.FileSystemLoader("templates")) template = env.get_template(opts.html_template) def status_char(status): if status == "TENTATIVE": return "?" if status == "CONFIRMED": return "." return ""
vevents.sort(cmp=utils.cmpEvent) for vevent in vevents: if not (day == utils.asdate(vevent['DTSTART'].dt) or (day >= utils.asdate(vevent['DTSTART'].dt) and day <= utils.asdate(vevent['DTEND'].dt))): continue summary = vevent['SUMMARY'] location = vevent.get('LOCATION') dtstart = vevent['DTSTART'].dt if isinstance(dtstart, datetime.datetime): sys.stdout.write('%s' % dtstart.strftime('%H:%M')) try: dtend = vevent['DTEND'].dt except KeyError: dtend = None else: sys.stdout.write('-%s' % dtend.strftime('%H:%M')) sys.stdout.write(' ') else: try: dtend = vevent['DTEND'].dt except KeyError: dtend = None sys.stdout.write('%s ' % utils.format_daterange(dtstart, dtend)) sys.stdout.write("%s" % summary) if location: sys.stdout.write(" @ %s" % location.replace('\n', ' / ')) sys.stdout.write(utils.statuschar(vevent.get('STATUS'))) sys.stdout.write("\n")
end = ev.end if getattr(end, "date", None): end = end.date() return (now >= start and now <= end) f = sys.stdout if opts.format == "text": for year in sorted(list(travelevs.keys()), reverse=True): if not travelevs[year]: continue f.write("%d\n" % year) evs = travelevs[year] for ev in sorted(evs, key=evsortkey, reverse=True): f.write("* ") f.write(utils.format_daterange(ev.start, ev.end)) f.write(": %s" % ev.summary) if ev.location: f.write(" @ %s" % ev.location) f.write(utils.statuschar(ev.status)) f.write("\n") elif opts.format == "html": env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) template = env.get_template(opts.html_template) def status_char(status): if status == "TENTATIVE": return "?" if status == "CONFIRMED": return "." return "" for year in travelevs: