def vodb_booking_overview(self, compute_local_sum=False, compute_live=False): # the aim at first is to start draw grid / sheet using div tags instead of a table. overview_live_o = getBookingOverview(holly_couch, None, None, reduce=False) used_dates, used_times = self.compute_used_dates_and_times(overview_live_o) used_dates_keys = used_dates.keys() used_dates_keys.sort() header_dates = used_dates_keys # try and extend dates min_date = header_dates[0] max_date = header_dates[len(header_dates)-1] header_dates = dateRange(min_date, max_date, format='%Y-%m-%d') header_times = vodb_live_times #...computing the vgroups we are looking for vgroup_ids = self.getVisitingGroupIdsOfViewSet(overview_live_o) #...create booking for all summary groups summary_vgroups = self.makeSummaryVGroups(vodb_live_times_options, vodb_status_map) #...iterating through reduced result set should give the data we need live_summaries_rows = getBookingOverview(holly_couch, None, None, reduce=True) self.computeLiveSummaries(live_summaries_rows, summary_vgroups) #...now that we have populated the dict-dict, we need to compute the date-range self.computeDateRangeOfSummaryVGroup(summary_vgroups, vodb_live_times_options, vodb_status_map) vgroups = list() for tmp_id in vgroup_ids.keys(): tmp_vgroup = holly_couch[tmp_id] tmp_vgroup.all_values_zero = dict(indoor=True, outdoor=True, daytrip=True) formated_dates = dateRange(tmp_vgroup['from_date'], tmp_vgroup['to_date'], format='%Y-%m-%d') tmp_vgroup['date_range'] = formated_dates live_computed_by_date = dict() for tmp_live_row in tmp_vgroup['vodb_live_computed']: for k in vodb_live_times_options: tmp_comp_key = self.getCompKey(k, tmp_live_row) tmp_value = tmp_live_row[k] live_computed_by_date[tmp_comp_key] = tmp_value if tmp_value != '0' and tmp_value != 0: tmp_vgroup.all_values_zero[k] = False tmp_vgroup['live_computed_by_date'] = live_computed_by_date vgroups.append(tmp_vgroup) vgroups.sort(self.fn_cmp_vgroups_on_date) return dict(header_dates=header_dates, header_times=header_times, vgroups=vgroups, bokn_status_map=bokn_status_map, vodb_status_map=vodb_status_map, summary_vgroups=summary_vgroups)
def layers_printable(self, visiting_group_id, hide_comment=1): visiting_group = common_couch.getVisitingGroup(holly_couch, visiting_group_id) date_range = dateRange(visiting_group['from_date'], visiting_group['to_date']) number_of_days = len(date_range) width_ratio = (100.0 / (number_of_days+1)) #...TODO organize bookings per layer bucket result = self.program_layer_get_days_helper(visiting_group_id) result['notes'] = [] result['tags'] = [] result['reFormatDate'] = reFormatDate result['visiting_group'] = visiting_group slot_id_time_id_map = result['slot_id_time_map'] bookings = dict() layers = visiting_group.get('layers', list()) layers.append(dict(title=visiting_group['name'], colour='#ffe', layer_id=visiting_group_id)) unscheduled_bookings = [] #...code repeat for making used_activities activities = dict() used_activities_keys = dict() for x in getAllActivities(holly_couch): activities[x.key[1]] = x.doc for tmp_layer in layers: tmp_visiting_group = common_couch.getVisitingGroup(holly_couch, tmp_layer['layer_id']) bookings_list = self.get_program_layer_bookings(tmp_visiting_group, tmp_visiting_group['name'], tmp_layer['colour']) for tmp_booking in bookings_list: tmp_booking['layer_colour'] = tmp_layer['colour'] if '' != tmp_booking['slot_id']: tmp_time_id = slot_id_time_id_map[tmp_booking['slot_id']] #if hide_comment==1: hide_cache_content_in_booking(tmp_booking) tmp_id = tmp_booking['booking_day_id'] + ':' +tmp_time_id if not bookings.has_key(tmp_id): bookings[tmp_id] = list() bookings[tmp_id].append(tmp_booking) else: hide_cache_content_in_booking(tmp_booking) unscheduled_bookings.append(tmp_booking) #...fix used activities used_activities_keys[tmp_booking['activity_id']] = 1 used_activities_keys[activities[tmp_booking['activity_id']]['activity_group_id']] = 1 result['bookings'] = bookings result['width_ratio'] = width_ratio result['unscheduled_bookings'] = unscheduled_bookings result['booking_info_notes'] = [n.doc for n in getBookingInfoNotesOfUsedActivities(holly_couch, used_activities_keys.keys())] return result
def computeDateRangeOfSummaryVGroup(self, a_summary_vgroups, a_vodb_live_times_options, a_vodb_status_map): """ now that we have populated the dict-dict, we need to compute the date-range. """ for live_option in a_vodb_live_times_options: for vodb_status, vodb_status_name in a_vodb_status_map.items(): summary_live_option_vgroups = a_summary_vgroups[live_option] tmp_summary_group = summary_live_option_vgroups[vodb_status] if not tmp_summary_group.has_values: formated_dates = [] else: formated_dates = dateRange(tmp_summary_group['from_date'], tmp_summary_group['to_date'], format='%Y-%m-%d') tmp_summary_group.date_range = formated_dates