'Return a list of possible values for self.source_library_id'

def source_library_values(self):

    lib_tools = self.runtime.service(self, 'library_tools')
    user_perms = self.runtime.service(self, 'studio_user_permissions')
    all_libraries = [(key, name) for (key, name) in lib_tools.list_available_libraries() if (user_perms.can_read(key) or (self.source_library_id == unicode(key)))]
    all_libraries.sort(key=(lambda entry: entry[1]))
    if (self.source_library_id and (self.source_library_key not in [entry[0] for entry in all_libraries])):
        all_libraries.append((self.source_library_id, _(u'Invalid    Library')))
    all_libraries = ([(u'', _('No    Library    Selected'))] + all_libraries)
    values = [{'display_name': name, 'value': unicode(key)} for (key, name) in all_libraries]
    return values
