Example #1
0
    def view_vodb_group(self, visiting_group_id=''):
        visiting_group_o = holly_couch[visiting_group_id]
        
        #...construct the age group list. It's going to be a json document. Hard coded.
        #... if we are to partially load from database and check that we can process it, we do need to go from python to json. (and back)
        #...construct a program request template. It's going to be a json document. Hard coded.
        notes = [n.doc for n in getNotesForTarget(holly_couch, visiting_group_id)]
        
        visiting_group_o.show_vodb_live_sheet = json.dumps(dict(identifier='rid', items=visiting_group_o.get('vodb_live_computed', list())))
        visiting_group_o.show_vodb_eat_sheet = json.dumps(dict(identifier='rid', items=visiting_group_o.get('vodb_eat_computed', list())))
        visiting_group_o.show_vodb_tag_sheet = json.dumps(dict(identifier='rid', items=visiting_group_o.get('vodb_tag_computed', list())))


        #...find room_bookings
        activities = dict()
        for x in getAllActivities(holly_couch):
            activities[x.key[1]] = x.doc
            
        room_bookings = list()
        for b in getRoomBookingsOfVODBGroup(holly_couch,  visiting_group_id):
            
            #...lookup slot map
            live_schema_id = 'room_schema.2013' # TODO: Read dynamically from booking day 
            tmp_slot_row_data = list(holly_couch.view('day_schema/slot_map',  keys=[[b['slot_id'],  live_schema_id], [b['booking_end_slot_id'],  live_schema_id]]))

            start_time = tmp_slot_row_data[0].value[1]['time_from']
            end_time = tmp_slot_row_data[1].value[1]['time_to']
            b2 = DataContainer(booking_state=b['booking_state'],  cache_content=b['cache_content'],  content=b['content'] ,  activity=activities[b['activity_id']],  id=b['_id'],  booking_date=b.get('booking_date', 'Unknown'), booking_end_date=b.get('booking_end_date', 'Unknown'),  booking_day_id=b.get('booking_day_id', ''),  valid_from=b.get('valid_from',''),  valid_to=b.get('valid_to',''),  requested_date=b.get('requested_date',''),  start_time=start_time,  end_time=end_time)
            
            room_bookings.append(b2)
        
        
        tag_layout_tags = json.dumps(visiting_group_o['tags'])
        return dict(visiting_group=visiting_group_o, reFormatDate=reFormatDate, vodb_state_map=bokn_status_map, program_state_map=bokn_status_map, notes=notes, tag_layout_tags=tag_layout_tags,  room_bookings=room_bookings,  getRenderContent=getRenderContent)
Example #2
0
    def view_activity(self, activity_id=None):
        activity = common_couch.getActivity(holly_couch, activity_id)
        activity_group = common_couch.getActivityGroup(holly_couch, activity['activity_group_id'])

        #...replace missing fields with empty string
        for tmp_field in ['print_on_demand_link','external_link','internal_link','guides_per_slot','guides_per_day','equipment_needed','education_needed']:
            if not activity.has_key(tmp_field):
                activity[tmp_field] = u''


        activity_booking_info_id = activity.get('booking_info_id','')
        if activity_booking_info_id != '':
            notes = [n.doc for n in getNotesForTarget(holly_couch, activity_id)]
        else:
            notes = list()

        return dict(activity=activity, activity_group=activity_group, notes=notes)
Example #3
0
    def show_visiting_group(self, visiting_group_id=None,  **kw):

        if None == visiting_group_id:
            visiting_group = DataContainer(name='', id=None,  info='')
            bookings=[]
            notes=[]
        elif visiting_group_id=='':
            visiting_group = DataContainer(name='', id=None,  info='')
            bookings=[]
            notes=[]
        else:
            visiting_group = common_couch.getVisitingGroup(holly_couch,  visiting_group_id)

            # TODO: there is no composite view any more showing both bookings and visiting group data
            bookings = []
            notes = [n.doc for n in getNotesForTarget(holly_couch, visiting_group_id)]
        return dict(visiting_group=visiting_group, bookings=bookings, workflow_map=workflow_map,  getRenderContent=getRenderContent, program_state_map=bokn_status_map, vodb_state_map=bokn_status_map, reFormatDate=reFormatDate, notes=notes)
Example #4
0
    def view_bookings_of_visiting_group(self, visiting_group, visiting_group_id, name, bookings, hide_comment=0, show_group=0, render_time=''):
        #...now group all bookings in a dict mapping activity_id:content
        clustered_bookings = {}
        booking_day_map = dict()
        booking_day_slot_map = dict()
        for bd in getBookingDays(holly_couch):
            booking_day_map[bd.doc['_id']] = bd.doc

            #...this is very time consuming, better list all slot map and build a map
            #booking_day_slot_map[bd.doc['_id']] = getSchemaSlotActivityMap(holly_couch, bd.doc, subtype='program')

        activities = dict()
        used_activities_keys = dict()
        for x in getAllActivities(holly_couch):
            activities[x.key[1]] = x.doc


        for b in bookings: # TODO: There will be quite a few multiples if we search on both id and name!
            if hide_comment==1:
                hide_cache_content_in_booking(b)
                #tmp = b['cache_content']
                #i = tmp.find('//')
                #if i > 0:
                #    b['cache_content'] = b['cache_content'][:i]

            key = str(b['activity_id'])+':'+b['content']
            if None == b.get('booking_day_id',  None):
                key = 'N'+key

            #...we need to do this transfer because we need to add booking_day.date and slot time.
            #...HERE WE MUST NOW ONCE AGAIN GET SLOT FROM BOOKING DAY ID AND SLOT ID...
            booking_day_id = None
            slot_id = ''
            slot_o = None
            tmp_booking_day = None

            used_activities_keys[b['activity_id']] = 1
            used_activities_keys[activities[b['activity_id']]['activity_group_id']] = 1

            if b.has_key('booking_day_id'):
                booking_day_id = b['booking_day_id']
                if '' != booking_day_id:
                    tmp_booking_day = booking_day_map[booking_day_id]
                    slot_id = b['slot_id']
                    tmp_slot_map = self.getSlotMapOfBookingDay(booking_day_slot_map,  tmp_booking_day)
                    slot_o = tmp_slot_map[slot_id]

            b2 = DataContainer(booking_state=b['booking_state'],  cache_content=b['cache_content'],  content=b['content'] ,  activity=activities[b['activity_id']],  id=b['_id'],  booking_day=tmp_booking_day ,  slot_id=slot_id ,  slot=slot_o,  booking_day_id=booking_day_id,  valid_from=b.get('valid_from',''),  valid_to=b.get('valid_to',''),  requested_date=b.get('requested_date',''))
            if clustered_bookings.has_key(key):
                bl = clustered_bookings[key]
                bl.append(b2)
            else:
                bl = list()
                bl.append(b2)
                clustered_bookings[key] = bl

        clustered_bookings_list = clustered_bookings.values()
        clustered_bookings_list.sort(self.fn_cmp_booking_date_list)
        for bl in clustered_bookings_list:
            bl.sort(self.fn_cmp_booking_timestamps)

        if True: #show_group==1:
            booking_info_notes = [n.doc for n in getBookingInfoNotesOfUsedActivities(holly_couch, used_activities_keys.keys())]
        else:
            booking_info_notes = []
        return dict(clustered_bookings=clustered_bookings_list,  name=name,  workflow_map=workflow_map, visiting_group_id=visiting_group_id,  getRenderContent=getRenderContent,  formatDate=reFormatDate, booking_info_notes=booking_info_notes, render_time=render_time, visiting_group=visiting_group, bokn_status_map=bokn_status_map, notes = [n.doc for n in getNotesForTarget(holly_couch, visiting_group_id)], show_group=show_group)
Example #5
0
 def layers(self, visiting_group_id):
     vgroup = common_couch.getVisitingGroup(holly_couch,  visiting_group_id)
     notes = [n.doc for n in getNotesForTarget(holly_couch, visiting_group_id)]
     return dict(visiting_group=vgroup,  notes=notes,  tags=[],  reFormatDate=reFormatDate,  program_state_map=bokn_status_map)
Example #6
0
 def get_notes_for_visiting_group(self, id):
     notes = [n.doc for n in getNotesForTarget(holly_couch, id)]
     return dict(notes=notes, id=id)