def admin_categories_view(self, auth_token):
        categories = self.get_filtered(auth_token, {}, ['name', 'managers', 'authorized_groups', 'locked'])

        categories = Utils.merge_queries(categories, facade.managers.GroupManager(), auth_token,
            ['name'], 'authorized_groups')

        return Utils.merge_queries(categories, facade.managers.UserManager(), auth_token, 
            ['last_name', 'first_name', 'email'], 'managers')
    def user_videos_view(self, auth_token):
        videos = self.get_filtered(auth_token, {}, ['author',
            'approved_categories', 'create_timestamp', 'description',
            'encoded_videos', 'length', 'name', 'num_views', 'photo_url',
            'src_file_size'])

        videos = Utils.merge_queries(videos, facade.managers.CategoryManager(), auth_token,
            ['name'], 'approved_categories')

        return Utils.merge_queries(videos, facade.managers.EncodedVideoManager(), auth_token, 
            ['bitrate', 'url'], 'encoded_videos')
    def admin_videos_view(self, auth_token):
        videos = self.get_filtered(auth_token, {}, ['author',
            'category_relationships', 'create_timestamp', 'description',
            'encoded_videos', 'length', 'name', 'num_views', 'photo_url',
            'src_file_size'])

        videos = Utils.merge_queries(videos, facade.managers.VideoCategoryManager(), auth_token,
            ['category_name', 'category', 'status'], 'category_relationships')

        return Utils.merge_queries(videos, facade.managers.EncodedVideoManager(), auth_token, 
            ['bitrate', 'http_url', 'url'], 'encoded_videos')
    def admin_categories_view(self, auth_token):
        categories = self.get_filtered(
            auth_token, {},
            ['name', 'managers', 'authorized_groups', 'locked'])

        categories = Utils.merge_queries(categories,
                                         facade.managers.GroupManager(),
                                         auth_token, ['name'],
                                         'authorized_groups')

        return Utils.merge_queries(categories, facade.managers.UserManager(),
                                   auth_token,
                                   ['last_name', 'first_name', 'email'],
                                   'managers')
    def user_videos_view(self, auth_token):
        videos = self.get_filtered(auth_token, {}, [
            'author', 'approved_categories', 'create_timestamp', 'description',
            'encoded_videos', 'length', 'name', 'num_views', 'photo_url',
            'src_file_size'
        ])

        videos = Utils.merge_queries(videos, facade.managers.CategoryManager(),
                                     auth_token, ['name'],
                                     'approved_categories')

        return Utils.merge_queries(videos,
                                   facade.managers.EncodedVideoManager(),
                                   auth_token, ['bitrate', 'url'],
                                   'encoded_videos')
    def admin_videos_view(self, auth_token):
        videos = self.get_filtered(auth_token, {}, [
            'author', 'category_relationships', 'create_timestamp',
            'description', 'encoded_videos', 'length', 'name', 'num_views',
            'photo_url', 'src_file_size'
        ])

        videos = Utils.merge_queries(videos,
                                     facade.managers.VideoCategoryManager(),
                                     auth_token,
                                     ['category_name', 'category', 'status'],
                                     'category_relationships')

        return Utils.merge_queries(videos,
                                   facade.managers.EncodedVideoManager(),
                                   auth_token, ['bitrate', 'http_url', 'url'],
                                   'encoded_videos')
 def watcher_report(self,
                    auth_token,
                    videos,
                    start_date=None,
                    end_date=None):
     """
     Returns a list of views of the given videos (optinally filtered by date)
     along with some information about the viewer.
     """
     filters = {'member': {'assignment__task__id': videos}}
     if start_date or end_date:
         filters = [filters]
         if start_date:
             if pr_time.is_iso8601(start_date):
                 start_date = pr_time.iso8601_to_datetime(start_date)
             filters.append(
                 {'greater_than_or_equal': {
                     'date_started': start_date
                 }})
         if end_date:
             if pr_time.is_iso8601(end_date):
                 end_date = pr_time.iso8601_to_datetime(end_date)
             filters.append(
                 {'less_than_or_equal': {
                     'date_started': end_date
                 }})
         filters = {'and': filters}
     views = self.get_filtered(auth_token, filters,
                               ['video', 'date_started', 'user'])
     views = Utils.merge_queries(views, facade.managers.VideoManager(),
                                 auth_token, ['name'], 'video')
     views = Utils.merge_queries(views, facade.managers.UserManager(),
                                 auth_token, [
                                     'first_name', 'last_name', 'email',
                                     'default_username_and_domain'
                                 ], 'user')
     return views
    def vod_admin_groups_view(self, auth_token):
        groups = self.get_filtered(auth_token, {}, ['name', 'categories'])

        return Utils.merge_queries(groups, facade.managers.CategoryManager(), auth_token, 
            ['name'], 'categories')
    def admin_org_user_view(self, auth_token, org):
        ret = facade.managers.UserOrgRoleManager().get_filtered(auth_token, {'exact' : {'organization' : org}}, ['role', 'owner'])

        ret = Utils.merge_queries(ret, facade.managers.UserManager(), auth_token, ['first_name', 'last_name', 'email'], 'owner')

        return Utils.merge_queries(ret, facade.managers.OrgRoleManager(), auth_token, ['name'], 'role')
 def admin_org_view(self, auth_token):
     orgs = self.get_filtered(auth_token, {}, ['name', 'parent', 'user_org_roles', 'org_email_domains'])
     
     ret = Utils.merge_queries(orgs, facade.managers.OrgEmailDomainManager(), auth_token, ['email_domain', 'effective_role', 'effective_role_name'], 'org_email_domains')
     
     return Utils.merge_queries(ret, facade.managers.UserOrgRoleManager(), auth_token, ['role_name', 'role', 'owner'], 'user_org_roles')
    def vod_admin_groups_view(self, auth_token):
        groups = self.get_filtered(auth_token, {}, ['name', 'categories'])

        return Utils.merge_queries(groups, facade.managers.CategoryManager(),
                                   auth_token, ['name'], 'categories')