def make_pdf_data(template, day): places = models.Place.active().order_by('order') changes = {(change.event_id, change.place_id, change.day): change for change in models.CalendarPlacement.objects.filter(calendar=template)} current_date = settings.ZILANT_FIRST_DAY + timedelta(days=day) placements = list(models.Placement.objects.filter(day=current_date)) calendar = list() calendar.append([human_date(current_date)]) for n in range(10, 22): calendar[0].extend([{'text': str(n), 'span': 4}, "", "", ""]) calendar.append([""] + ['00', '15', '30', '45'] * 12) for number, place in enumerate(places): row = make_pdf_row(template, place, [placement for placement in placements if placement.place_id == place.id], changes) calendar.append(row) return calendar
def make_department_data(department): placements = list( models.Placement.objects.filter(event__department=department) .order_by('day', 'start', 'place') .select_related('event') ) schedule = [] styles = [] for day, places in groupby(placements, key=lambda p: p.day): schedule.append([human_date(day), '', '']) styles.append('bold') for placement, style in izip(places, cycle(['odd', 'even'])): schedule.append([placement.start, placement.place.title, placement.calendar_title or placement.event.title]) styles.append(style) schedule.append(['', '', '']) styles.append('odd') return schedule, styles
def get_date(self): placement = self.get_placement() if placement: return human_date(placement.day) else: return ''