def get_reviews(self, translated_app, callback, page=1, language=None, sort=0, relaxed=False): """ public api, triggers fetching a review and calls callback when its ready """ # its fine to use the translated appname here, we only submit the # pkgname to the server app = translated_app self._update_rnrclient_offline_state() sort_method = self._review_sort_methods[sort] if language is None: language = self.language # gather args for the helper if relaxed: origin = 'any' distroseries = 'any' else: try: origin = self.cache.get_origin(app.pkgname) except: # this can happen if e.g. the app has multiple origins, this # will be handled later origin = None # special case for not-enabled PPAs if not origin and self.db: details = app.get_details(self.db) ppa = details.ppaname if ppa: origin = "lp-ppa-%s" % ppa.replace("/", "-") # if there is no origin, there is nothing to do if not origin: callback(app, []) return distroseries = self.distro.get_codename() # run the command and add watcher cmd = [ os.path.join(softwarecenter.paths.datadir, PistonHelpers.GET_REVIEWS), "--language", language, "--origin", origin, "--distroseries", distroseries, "--pkgname", str(app.pkgname), # ensure its str, not unicode "--page", str(page), "--sort", sort_method, ] spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_reviews_helper_data, app, callback) spawn_helper.run(cmd)
def refresh_review_stats(self, callback): """ public api, refresh the available statistics """ try: mtime = os.path.getmtime(self.REVIEW_STATS_CACHE_FILE) days_delta = int((time.time() - mtime) // (24 * 60 * 60)) days_delta += 1 except OSError: days_delta = 0 LOG.debug("refresh with days_delta: %s" % days_delta) #origin = "any" #distroseries = self.distro.get_codename() cmd = [ os.path.join(softwarecenter.paths.datadir, PistonHelpers.GET_REVIEW_STATS), # FIXME: the server currently has bug (#757695) so we # can not turn this on just yet and need to use # the old "catch-all" review-stats for now #"--origin", origin, #"--distroseries", distroseries, ] if days_delta: cmd += ["--days-delta", str(days_delta)] spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_review_stats_data, callback) spawn_helper.run(cmd)
def spawn_write_new_review_ui(self, translated_app, version, iconname, origin, parent_xid, datadir, callback): """ this spawns the UI for writing a new review and adds it automatically to the reviews DB """ app = translated_app.get_untranslated_app(self.db) cmd = [ os.path.join(datadir, RNRApps.SUBMIT_REVIEW), "--pkgname", app.pkgname, "--iconname", iconname, "--parent-xid", "%s" % parent_xid, "--version", version, "--origin", origin, "--datadir", datadir, ] if app.appname: # needs to be (utf8 encoded) str, otherwise call fails cmd += ["--appname", utf8(app.appname)] spawn_helper = SpawnHelper(format="json") spawn_helper.connect("data-available", self._on_submit_review_data, app, callback) spawn_helper.run(cmd)
def _retrieve_votes_from_server(self): LOG.debug("_retrieve_votes_from_server started") user = get_person_from_config() if not user: LOG.warn("Could not get usefulness from server, no username in config file") return False # run the command and add watcher spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_usefulness_data) spawn_helper.run_generic_piston_helper( "RatingsAndReviewsAPI", "get_usefulness", username=user)
def spawn_delete_review_ui(self, review_id, parent_xid, datadir): cmd = [os.path.join(datadir, RNRApps.DELETE_REVIEW), "--review-id", "%s" % review_id, "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper(format="none") spawn_helper.connect("exited", self._on_delete_review_finished, review_id) spawn_helper.connect("error", self._on_delete_review_error, review_id) spawn_helper.run(cmd)
def _retrieve_votes_from_server(self): LOG.debug("_retrieve_votes_from_server started") user = get_person_from_config() if not user: LOG.warn("Could not get usefulness from server, no username " "in config file") return False # run the command and add watcher spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_usefulness_data) spawn_helper.run_generic_piston_helper( "RatingsAndReviewsAPI", "get_usefulness", username=user)
def spawn_delete_review_ui(self, review_id, parent_xid, datadir): cmd = [ os.path.join(datadir, RNRApps.DELETE_REVIEW), "--review-id", "%s" % review_id, "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper(format="none") spawn_helper.connect("exited", self._on_delete_review_finished, review_id) spawn_helper.connect("error", self._on_delete_review_error, review_id) spawn_helper.run(cmd)
def spawn_submit_usefulness_ui(self, review_id, is_useful, parent_xid, datadir, callback): cmd = [os.path.join(datadir, RNRApps.SUBMIT_USEFULNESS), "--review-id", "%s" % review_id, "--is-useful", "%s" % int(is_useful), "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper(format="none") spawn_helper.connect("exited", self._on_submit_usefulness_finished, review_id, is_useful, callback) spawn_helper.connect("error", self._on_submit_usefulness_error, review_id, callback) spawn_helper.run(cmd)
def get_reviews(self, translated_app, page=1, language=None, sort=0, relaxed=False): """ public API, triggers fetching a review and emits get-reviews-finished signal when its ready """ # its fine to use the translated appname here, we only submit the # pkgname to the server app = translated_app self._update_rnrclient_offline_state() sort_method = self._review_sort_methods[sort] if language is None: language = self.language # gather args for the helper if relaxed: origin = 'any' distroseries = 'any' else: try: origin = self.cache.get_origin(app.pkgname) except: # this can happen if e.g. the app has multiple origins, this # will be handled later origin = None # special case for not-enabled PPAs if not origin and self.db: details = app.get_details(self.db) ppa = details.ppaname if ppa: origin = "lp-ppa-%s" % ppa.replace("/", "-") # if there is no origin, there is nothing to do if not origin: self.emit("get-reviews-finished", app, []) return distroseries = self.distro.get_codename() # run the command and add watcher cmd = [os.path.join(softwarecenter.paths.datadir, PistonHelpers.GET_REVIEWS), "--language", language, "--origin", origin, "--distroseries", distroseries, "--pkgname", str(app.pkgname), # ensure its str, not unicode "--page", str(page), "--sort", sort_method, ] spawn_helper = SpawnHelper() spawn_helper.connect( "data-available", self._on_reviews_helper_data, app) spawn_helper.run(cmd)
def spawn_report_abuse_ui(self, review_id, parent_xid, datadir): """ this spawns the UI for reporting a review as inappropriate and adds the review-id to the internal hide list. once the operation is complete it will emit remove-review with the updated review list """ cmd = [os.path.join(datadir, RNRApps.REPORT_REVIEW), "--review-id", review_id, "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper("json") spawn_helper.connect("exited", self._on_report_abuse_finished, review_id) spawn_helper.run(cmd)
def spawn_modify_review_ui(self, parent_xid, iconname, datadir, review_id): """ this spawns the UI for writing a new review and adds it automatically to the reviews DB """ cmd = [os.path.join(datadir, RNRApps.MODIFY_REVIEW), "--parent-xid", "%s" % parent_xid, "--iconname", iconname, "--datadir", "%s" % datadir, "--review-id", "%s" % review_id, ] spawn_helper = SpawnHelper(format="json") spawn_helper.connect("data-available", self._on_modify_review_finished, review_id) spawn_helper.connect("error", self._on_modify_review_error, review_id) spawn_helper.run(cmd)
def _retrieve_votes_from_server(self): LOG.debug("_retrieve_votes_from_server started") user = get_person_from_config() if not user: LOG.warn("Could not get usefulness from server, no username in config file") return False # run the command and add watcher cmd = [os.path.join( softwarecenter.paths.datadir, PistonHelpers.GET_USEFUL_VOTES), "--username", user, ] spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_usefulness_data) spawn_helper.run(cmd)
def spawn_submit_usefulness_ui(self, review_id, is_useful, parent_xid, datadir, callback): cmd = [ os.path.join(datadir, RNRApps.SUBMIT_USEFULNESS), "--review-id", "%s" % review_id, "--is-useful", "%s" % int(is_useful), "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper(format="none") spawn_helper.connect("exited", self._on_submit_usefulness_finished, review_id, is_useful, callback) spawn_helper.connect("error", self._on_submit_usefulness_error, review_id, callback) spawn_helper.run(cmd)
def spawn_report_abuse_ui(self, review_id, parent_xid, datadir, callback): """ this spawns the UI for reporting a review as inappropriate and adds the review-id to the internal hide list. once the operation is complete it will call callback with the updated review list """ cmd = [ os.path.join(datadir, RNRApps.REPORT_REVIEW), "--review-id", review_id, "--parent-xid", "%s" % parent_xid, "--datadir", datadir, ] spawn_helper = SpawnHelper("json") spawn_helper.connect("exited", self._on_report_abuse_finished, review_id, callback) spawn_helper.run(cmd)
def spawn_modify_review_ui(self, parent_xid, iconname, datadir, review_id): """ this spawns the UI for writing a new review and adds it automatically to the reviews DB """ cmd = [ os.path.join(datadir, RNRApps.MODIFY_REVIEW), "--parent-xid", "%s" % parent_xid, "--iconname", iconname, "--datadir", "%s" % datadir, "--review-id", "%s" % review_id, ] spawn_helper = SpawnHelper(format="json") spawn_helper.connect("data-available", self._on_modify_review_finished, review_id) spawn_helper.connect("error", self._on_modify_review_error, review_id) spawn_helper.run(cmd)
def refresh_review_stats(self): """ public API, refresh the available statistics """ try: mtime = os.path.getmtime(self.REVIEW_STATS_CACHE_FILE) days_delta = int((time.time() - mtime) // (24 * 60 * 60)) days_delta += 1 except OSError: days_delta = 0 LOG.debug("refresh with days_delta: %s" % days_delta) # FIXME: the server currently has bug (#757695) so we # can not turn this on just yet and need to use # the old "catch-all" review-stats for now #origin = "any" #distroseries = self.distro.get_codename() spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_review_stats_data) if days_delta: spawn_helper.run_generic_piston_helper( "RatingsAndReviewsAPI", "review_stats", days=days_delta) else: spawn_helper.run_generic_piston_helper( "RatingsAndReviewsAPI", "review_stats")
def refresh_review_stats(self): """ public API, refresh the available statistics """ try: mtime = os.path.getmtime(self.REVIEW_STATS_CACHE_FILE) days_delta = int((time.time() - mtime) // (24 * 60 * 60)) days_delta += 1 except OSError: days_delta = 0 LOG.debug("refresh with days_delta: %s" % days_delta) # FIXME: the server currently has bug (#757695) so we # can not turn this on just yet and need to use # the old "catch-all" review-stats for now #origin = "any" #distroseries = self.distro.get_codename() spawn_helper = SpawnHelper() spawn_helper.connect("data-available", self._on_review_stats_data) if days_delta: spawn_helper.run_generic_piston_helper("RatingsAndReviewsAPI", "review_stats", days=days_delta) else: spawn_helper.run_generic_piston_helper("RatingsAndReviewsAPI", "review_stats")
def spawn_write_new_review_ui(self, translated_app, version, iconname, origin, parent_xid, datadir): """ this spawns the UI for writing a new review and adds it automatically to the reviews DB """ app = translated_app.get_untranslated_app(self.db) cmd = [os.path.join(datadir, RNRApps.SUBMIT_REVIEW), "--pkgname", app.pkgname, "--iconname", iconname, "--parent-xid", "%s" % parent_xid, "--version", version, "--origin", origin, "--datadir", datadir, ] if app.appname: # needs to be (utf8 encoded) str, otherwise call fails cmd += ["--appname", utf8(app.appname)] spawn_helper = SpawnHelper(format="json") spawn_helper.connect( "data-available", self._on_submit_review_data, app) spawn_helper.connect("exited", self._on_exited_callback, app) spawn_helper.connect("error", self._on_error_callback, app) spawn_helper.run(cmd)