Beispiel #1
0
 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)
Beispiel #2
0
 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
Beispiel #3
0
 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