def get_calendar_nodetypes(context, year=None, month=None, template='gstudio/tags/calendar.html'): """Return an HTML calendar of nodetypes""" if not year or not month: date_month = context.get('month') or context.get('day') or \ getattr(context.get('object'), 'creation_date', None) or \ datetime.today() year, month = date_month.timetuple()[:2] calendar = GstudioCalendar() current_month = datetime(year, month, 1) dates = list(Nodetype.published.dates('creation_date', 'month')) if not current_month in dates: dates.append(current_month) dates.sort() index = dates.index(current_month) previous_month = index > 0 and dates[index - 1] or None next_month = index != len(dates) - 1 and dates[index + 1] or None return {'template': template, 'next_month': next_month, 'previous_month': previous_month, 'calendar': calendar.formatmonth(year, month)}