本文整理汇总了Python中softwarecenter.db.enquire.AppEnquire类的典型用法代码示例。如果您正苦于以下问题:Python AppEnquire类的具体用法?Python AppEnquire怎么用?Python AppEnquire使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AppEnquire类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_app_view
def test_app_view(self):
from softwarecenter.ui.gtk3.views.appview import get_test_window
enquirer = AppEnquire(self.cache, self.db)
enquirer.set_query(xapian.Query(""),
sortmode=SortMethods.BY_CATALOGED_TIME,
limit=10,
nonblocking_load=False)
# get test window
win = get_test_window()
appview = win.get_data("appview")
# set matches
appview.clear_model()
appview.display_matches(enquirer.matches)
do_events()
# verify that the order is actually the correct one
model = appview.tree_view.get_model()
docs_in_model = [item[0] for item in model]
docs_from_enquirer = [m.document for m in enquirer.matches]
self.assertEqual(len(docs_in_model),
len(docs_from_enquirer))
for i in range(len(docs_in_model)):
self.assertEqual(self.db.get_pkgname(docs_in_model[i]),
self.db.get_pkgname(docs_from_enquirer[i]))
win.destroy()
示例2: get_test_window
def get_test_window():
from softwarecenter.testutils import (
get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache)
from softwarecenter.db.enquire import AppEnquire
from softwarecenter.ui.gtk3.models.appstore2 import AppListStore
import xapian
db = get_test_db()
cache = get_test_pkg_info()
icons = get_test_gtk3_icon_cache()
# create the view
appview = AppView(db, cache, icons, show_ratings=True)
liststore = AppListStore(db, cache, icons)
appview.set_model(liststore)
# do a simple query and display that
enquirer = AppEnquire(cache, db)
enquirer.set_query(xapian.Query(""),
sortmode=SortMethods.BY_CATALOGED_TIME,
limit=20,
nonblocking_load=False)
appview.display_matches(enquirer.matches)
# and put it in the window
win = Gtk.Window()
win.add(appview)
win.set_data("appview", appview)
win.connect("destroy", lambda x: Gtk.main_quit())
win.set_size_request(600, 400)
win.show_all()
return win
示例3: test_app_enquire
def test_app_enquire(self):
db = StoreDatabase(cache=self.cache)
db.open()
# test the AppEnquire engine
enquirer = AppEnquire(self.cache, db)
enquirer.set_query(xapian.Query("a"), nonblocking_load=False)
self.assertTrue(len(enquirer.get_docids()) > 0)
示例4: test_app_store
def test_app_store(self):
# get a enquire object
enquirer = AppEnquire(self.cache, self.db)
enquirer.set_query(xapian.Query(""))
# get a AppListStore and run functions on it
model = AppListStore(self.db, self.cache, self.icons)
# test if set from matches works
self.assertEqual(len(model), 0)
model.set_from_matches(enquirer.matches)
self.assertTrue(len(model) > 0)
# ensure the first row has a xapian doc type
self.assertEqual(type(model[0][0]), xapian.Document)
# lazy loading of the docs
self.assertEqual(model[100][0], None)
# test the load range stuff
model.load_range(indices=[100], step=15)
self.assertEqual(type(model[100][0]), xapian.Document)
# ensure buffer_icons works and loads stuff into the cache
model.buffer_icons()
self.assertEqual(len(model.icon_cache), 0)
while Gtk.events_pending():
Gtk.main_iteration()
self.assertTrue(len(model.icon_cache) > 0)
# ensure clear works
model.clear()
self.assertEqual(model.current_matches, None)
示例5: get_test_enquirer_matches
def get_test_enquirer_matches(db, query=None, limit=20, sortmode=0):
if query is None:
query = xapian.Query("")
enquirer = AppEnquire(db._aptcache, db)
enquirer.set_query(query,
sortmode=sortmode,
limit=limit,
nonblocking_load=False)
return enquirer.matches
示例6: _update_appcount
def _update_appcount(self):
enq = AppEnquire(self.cache, self.db)
distro = get_distro()
if get_global_filter().supported_only:
query = distro.get_supported_query()
else:
query = xapian.Query('')
length = enq.get_estimated_matches_count(query)
text = gettext.ngettext("%(amount)s item", "%(amount)s items", length
) % {'amount': length}
self.appcount.set_text(text)
示例7: DBSearchTestCase
class DBSearchTestCase(unittest.TestCase):
APP_INFO_JSON = """
[
{
"application_name": "The apt",
"package_name": "apt",
"description": "meep"
}
]
"""
@classmethod
def setUpClass(cls):
cache = get_pkg_info()
cache.open()
db = xapian.WritableDatabase(TEST_DB, xapian.DB_CREATE_OR_OVERWRITE)
update_from_json_string(db, cache, cls.APP_INFO_JSON, origin="local")
db.close()
def setUp(self):
# create a fake database to simualte a run of software-center-agent
# create a StoreDatabase and add our other db
self.db = get_test_db()
self.db.add_database(xapian.Database(TEST_DB))
self.db.open(use_axi=True)
self.enquire = AppEnquire(self.db._aptcache, self.db)
def test_search_app_pkgname_duplication_lp891613(self):
# simulate a pkg "apt" that is both in the agent and in the x-a-i db
search_term = "apt"
search_query = self.db.get_query_list_from_search_entry(search_term)
self.enquire.set_query(search_query, nonblocking_load=False)
self.assertTrue(len(self.enquire._matches) > 2)
for m in self.enquire._matches:
doc = m.document
# ensure that all hits are "apps" and do not come from a-x-i
self.assertNotEqual(doc.get_value(XapianValues.PKGNAME), "")
def test_search_custom_pkgs_list_lp1043159(self):
# simulate a pkg "apt" that is both in the agent and in the x-a-i db
pkgs = ["apt", "gedit"]
search_query = self.db.get_query_for_pkgnames(pkgs)
self.enquire.set_query(
search_query,
# custom package lists are always in this mode
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False,
)
self.assertEqual(len(self.enquire._matches), 2)
示例8: get_documents
def get_documents(self, db):
""" return the database docids for the given category """
enq = AppEnquire(db._aptcache, db)
app_filter = AppFilter(db, db._aptcache)
if "available-only" in self.flags:
app_filter.set_available_only(True)
if "not-installed-only" in self.flags:
app_filter.set_not_installed_only(True)
enq.set_query(self.query,
limit=self.item_limit,
filter=app_filter,
sortmode=self.sortmode,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False)
return enq.get_documents()
示例9: setUp
def setUp(self):
# create a fake database to simualte a run of software-center-agent
# create a StoreDatabase and add our other db
self.db = get_test_db()
self.db.add_database(xapian.Database(TEST_DB))
self.db.open(use_axi=True)
self.enquire = AppEnquire(self.db._aptcache, self.db)
示例10: _ceibal_get_docs
def _ceibal_get_docs(self):
""" return the database docids for the given category """
enq = AppEnquire(self.db._aptcache, self.db)
app_filter = AppFilter(self.db, self.db._aptcache)
app_filter.set_available_only(True)
#app_filter.set_not_installed_only(True)
p = "http://apt.ceibal.edu.uy/recommendations/list.json"
data = json.load(urllib2.urlopen(p))
query = get_query_for_pkgnames(data['packages'])
enq.set_query(query,
limit=20,
filter=app_filter,
sortmode=0,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False)
return enq.get_documents()
示例11: _update_appcount
def _update_appcount(self):
enq = AppEnquire(self.cache, self.db)
distro = get_distro()
if get_global_filter().supported_only:
query = distro.get_supported_query()
else:
query = xapian.Query('')
enq.set_query(query,
limit=0,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=True)
length = len(enq.matches)
text = gettext.ngettext("%(amount)s item", "%(amount)s items", length
) % { 'amount' : length, }
self.appcount.set_text(text)
示例12: test_app_enquire
def test_app_enquire(self):
db = get_test_db()
cache = get_test_pkg_info()
xfilter = AppFilter(cache, db)
enquirer = AppEnquire(cache, db)
terms = [ "app", "this", "the", "that", "foo", "tool", "game",
"graphic", "ubuntu", "debian", "gtk", "this", "bar",
"baz"]
# run a bunch of the querries in parallel
for nonblocking in [False, True]:
for i in range(10):
for term in terms:
enquirer.set_query(
search_query=xapian.Query(term),
limit=0,
filter=xfilter,
nonblocking_load=nonblocking)
# give the threads a bit of time
time.sleep(5)
示例13: _get_toprated_category_content
def _get_toprated_category_content(self):
toprated_cat = get_category_by_name(self.categories,
u"Top Rated") # unstranslated name
if toprated_cat is None:
LOG.warn("No 'toprated' category found!!")
return None, []
enq = AppEnquire(self.cache, self.db)
app_filter = AppFilter(self.db, self.cache)
enq.set_query(toprated_cat.query,
limit=TOP_RATED_CAROUSEL_LIMIT,
sortmode=toprated_cat.sortmode,
filter=app_filter,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False)
if not hasattr(self, "helper"):
self.helper = AppPropertiesHelper(self.db,
self.cache,
self.icons)
return toprated_cat, enq.get_documents()
示例14: __init__
def __init__(self, cache, db, distro, icons, datadir, show_ratings=True):
Gtk.VBox.__init__(self)
BasePane.__init__(self)
# other classes we need
self.enquirer = AppEnquire(cache, db)
self._query_complete_handler = self.enquirer.connect(
"query-complete", self.on_query_complete)
self.cache = cache
self.db = db
self.distro = distro
self.icons = icons
self.datadir = datadir
self.show_ratings = show_ratings
self.backend = get_install_backend()
self.nonapps_visible = NonAppVisibility.MAYBE_VISIBLE
# refreshes can happen out-of-bound so we need to be sure
# that we only set the new model (when its available) if
# the refresh_seq_nr of the ready model matches that of the
# request (e.g. people click on ubuntu channel, get impatient, click
# on partner channel)
self.refresh_seq_nr = 0
# this should be initialized
self.apps_search_term = ""
# Create the basic frame for the common view
self.state = DisplayState()
vm = get_viewmanager()
self.searchentry = vm.get_global_searchentry()
self.back_forward = vm.get_global_backforward()
# a notebook below
self.notebook = Gtk.Notebook()
if not "SOFTWARE_CENTER_DEBUG_TABS" in os.environ:
self.notebook.set_show_tabs(False)
self.notebook.set_show_border(False)
# make a spinner view to display while the applist is loading
self.spinner_notebook = SpinnerNotebook(self.notebook)
self.pack_start(self.spinner_notebook, True, True, 0)
# add a bar at the bottom (hidden by default) for contextual actions
self.action_bar = ActionBar()
self.pack_start(self.action_bar, False, True, 0)
# cursor
self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
# views to be created in init_view
self.app_view = None
self.app_details_view = None
示例15: _get_new_category_content
def _get_new_category_content(self):
whatsnew_cat = get_category_by_name(self.categories,
u"What\u2019s New") # unstranslated name
if whatsnew_cat is None:
LOG.warn("No 'new' category found!!")
return None, []
enq = AppEnquire(self.cache, self.db)
app_filter = AppFilter(self.db, self.cache)
app_filter.set_available_only(True)
app_filter.set_not_installed_only(True)
enq.set_query(whatsnew_cat.query,
limit=8,
filter=app_filter,
sortmode=SortMethods.BY_CATALOGED_TIME,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False)
if not hasattr(self, "helper"):
self.helper = AppPropertiesHelper(self.db,
self.cache,
self.icons)
return whatsnew_cat, enq.get_documents()