本文整理汇总了Python中softwarecenter.db.enquire.AppEnquire.set_query方法的典型用法代码示例。如果您正苦于以下问题:Python AppEnquire.set_query方法的具体用法?Python AppEnquire.set_query怎么用?Python AppEnquire.set_query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类softwarecenter.db.enquire.AppEnquire
的用法示例。
在下文中一共展示了AppEnquire.set_query方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_test_window
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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
示例2: test_app_store
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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)
示例3: test_app_enquire
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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_view
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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()
示例5: get_test_enquirer_matches
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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: DBSearchTestCase
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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)
示例7: get_documents
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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()
示例8: _ceibal_get_docs
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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()
示例9: _update_appcount
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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)
示例10: test_app_enquire
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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)
示例11: _get_toprated_category_content
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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()
示例12: _get_new_category_content
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
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()
示例13: SubCategoryViewGtk
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
class SubCategoryViewGtk(CategoriesViewGtk):
def __init__(self, datadir, desktopdir, cache, db, icons,
apps_filter, apps_limit=0, root_category=None):
CategoriesViewGtk.__init__(self, datadir, desktopdir, cache, db, icons,
apps_filter, apps_limit)
# state
self._built = False
# data
self.root_category = root_category
self.enquire = AppEnquire(self.cache, self.db)
self.properties_helper = AppPropertiesHelper(
self.db, self.cache, self.icons)
# sections
self.current_category = None
self.departments = None
self.top_rated = None
self.recommended_for_you_in_cat = None
self.appcount = None
# widgetry
self.vbox.set_margin_left(StockEms.MEDIUM - 2)
self.vbox.set_margin_right(StockEms.MEDIUM - 2)
self.vbox.set_margin_top(StockEms.MEDIUM)
return
def _get_sub_top_rated_content(self, category):
app_filter = AppFilter(self.db, self.cache)
self.enquire.set_query(category.query,
limit=TOP_RATED_CAROUSEL_LIMIT,
sortmode=SortMethods.BY_TOP_RATED,
filter=app_filter,
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE,
nonblocking_load=False)
return self.enquire.get_documents()
@wait_for_apt_cache_ready # be consistent with new apps
def _update_sub_top_rated_content(self, category):
self.top_rated.remove_all()
# FIXME: should this be m = "%s %s" % (_(gettext text), header text) ??
# TRANSLATORS: %s is a category name, like Internet or Development
# Tools
m = _('Top Rated %(category)s') % {
'category': GObject.markup_escape_text(self.header)}
self.top_rated_frame.set_header_label(m)
docs = self._get_sub_top_rated_content(category)
self._add_tiles_to_flowgrid(docs, self.top_rated,
TOP_RATED_CAROUSEL_LIMIT)
return
def _append_sub_top_rated(self):
self.top_rated = FlowableGrid()
self.top_rated.set_row_spacing(6)
self.top_rated.set_column_spacing(6)
self.top_rated_frame = FramedHeaderBox()
self.top_rated_frame.pack_start(self.top_rated, True, True, 0)
self.vbox.pack_start(self.top_rated_frame, False, True, 0)
return
def _update_recommended_for_you_in_cat_content(self, category):
if (self.recommended_for_you_in_cat and
self.recommended_for_you_in_cat.get_parent()):
self.vbox.remove(self.recommended_for_you_in_cat)
self.recommended_for_you_in_cat = RecommendationsPanelCategory(
self,
category)
# only show the panel in the categories view when the user
# is opted in to the recommender service
# FIXME: this is needed vs. a simple hide() on the widget because
# we do a show_all on the view
if self.recommended_for_you_in_cat.recommender_agent.is_opted_in():
self.vbox.pack_start(self.recommended_for_you_in_cat,
False, False, 0)
def _update_subcat_departments(self, category, num_items):
self.departments.remove_all()
# set the subcat header
m = "<b><big>%s</big></b>"
self.subcat_label.set_markup(m % GObject.markup_escape_text(
self.header))
# sort Category.name's alphabetically
sorted_cats = categories_sorted_by_name(self.categories)
enquire = xapian.Enquire(self.db.xapiandb)
app_filter = AppFilter(self.db, self.cache)
for cat in sorted_cats:
# add the subcategory if and only if it is non-empty
enquire.set_query(cat.query)
if len(enquire.get_mset(0, 1)):
tile = CategoryTile(cat.name, cat.iconname)
tile.connect('clicked', self.on_category_clicked, cat)
self.departments.add_child(tile)
# partialy work around a (quite rare) corner case
if num_items == 0:
enquire.set_query(xapian.Query(xapian.Query.OP_AND,
category.query,
#.........这里部分代码省略.........
示例14: SoftwarePane
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
#.........这里部分代码省略.........
#name = self.pane_name
if self.channel:
channel_query = self.channel.query
#name = self.channel.display_name
# search terms
if self.apps_search_term:
query = self.db.get_query_list_from_search_entry(
self.apps_search_term, channel_query)
return query
# overview list
# if we are in a channel, limit to that
if channel_query:
return channel_query
# ... otherwise show all
return xapian.Query("")
def refresh_apps(self, query=None):
"""refresh the applist and update the navigation bar """
LOG.debug("refresh_apps")
# FIXME: make this available for all panes
if query is None:
query = self.get_query()
self.app_view.clear_model()
self.search_aid.reset()
self.show_appview_spinner()
self._refresh_apps_with_apt_cache(query)
def quick_query(self, query):
# a blocking query and does not emit "query-complete"
with ExecutionTime("enquirer.set_query() quick query"):
self.enquirer.set_query(
query,
limit=self.get_app_items_limit(),
nonapps_visible=self.nonapps_visible,
nonblocking_load=False,
filter=self.state.filter)
return len(self.enquirer.matches)
@wait_for_apt_cache_ready
def _refresh_apps_with_apt_cache(self, query):
LOG.debug("softwarepane query: %s" % query)
# a nonblocking query calls on_query_complete once finished
with ExecutionTime("enquirer.set_query()"):
self.enquirer.set_query(
query,
limit=self.get_app_items_limit(),
sortmode=self.get_sort_mode(),
exact=self.is_custom_list(),
nonapps_visible=self.nonapps_visible,
filter=self.state.filter)
def display_details_page(self, page, view_state):
self.app_details_view.show_app(view_state.application)
self.action_bar.unset_label()
return True
def is_custom_list(self):
return self.apps_search_term and ',' in self.apps_search_term
def get_current_page(self):
return self.notebook.get_current_page()
示例15: SoftwarePane
# 需要导入模块: from softwarecenter.db.enquire import AppEnquire [as 别名]
# 或者: from softwarecenter.db.enquire.AppEnquire import set_query [as 别名]
#.........这里部分代码省略.........
#name = self.pane_name
if self.channel:
channel_query = self.channel.query
#name = self.channel.display_name
# search terms
if self.apps_search_term:
query = self.db.get_query_list_from_search_entry(
self.apps_search_term, channel_query)
return query
# overview list
# if we are in a channel, limit to that
if channel_query:
return channel_query
# ... otherwise show all
return xapian.Query("")
def refresh_apps(self, query=None):
"""refresh the applist and update the navigation bar """
LOG.debug("refresh_apps")
# FIXME: make this available for all panes
if query is None:
query = self.get_query()
self.app_view.clear_model()
self.search_aid.reset()
self.show_appview_spinner()
self._refresh_apps_with_apt_cache(query)
def quick_query(self, query):
# a blocking query and does not emit "query-complete"
with ExecutionTime("enquirer.set_query() quick query"):
self.enquirer.set_query(
query,
limit=self.get_app_items_limit(),
nonapps_visible=self.nonapps_visible,
nonblocking_load=False,
filter=self.state.filter)
return len(self.enquirer.matches)
@wait_for_apt_cache_ready
def _refresh_apps_with_apt_cache(self, query):
LOG.debug("softwarepane query: %s" % query)
# a nonblocking query calls on_query_complete once finished
with ExecutionTime("enquirer.set_query()"):
self.enquirer.set_query(
query,
limit=self.get_app_items_limit(),
sortmode=self.get_sort_mode(),
exact=self.is_custom_list(),
nonapps_visible=self.nonapps_visible,
filter=self.state.filter)
return
def display_details_page(self, page, view_state):
self.app_details_view.show_app(view_state.application)
self.action_bar.unset_label()
return True
def is_custom_list(self):
return self.apps_search_term and ',' in self.apps_search_term
def get_current_page(self):
return self.notebook.get_current_page()