~mvo/software-center/purchaseviewspinner

« back to all changes in this revision

Viewing changes to softwarecenter/db/reviews.py

  • Committer: Michael Vogt
  • Date: 2011-02-11 14:01:18 UTC
  • mto: This revision was merged to the branch mainline in revision 1495.
  • Revision ID: michael.vogt@ubuntu.com-20110211140118-u9fnodf29oy1sdpm
wire in the usefulness submit code

Show diffs side-by-side

added added

removed removed

Lines of Context:
160
160
            cmd, flags=glib.SPAWN_DO_NOT_REAP_CHILD, standard_output=True)
161
161
        glib.child_watch_add(pid, self._on_report_abuse_finished, (review_id, callback))
162
162
 
 
163
    def spawn_submit_usefulness_ui(self, review_id, is_useful, parent_xid, datadir, callback):
 
164
        cmd = [os.path.join(datadir, SUBMIT_USEFULNESS_APP), 
 
165
               "--review-id", "%s" % review_id,
 
166
               "--is-useful", "%s" % int(is_useful),
 
167
               "--parent-xid", "%s" % parent_xid,
 
168
               "--datadir", datadir,
 
169
              ]
 
170
        (pid, stdin, stdout, stderr) = glib.spawn_async(
 
171
            cmd, flags=glib.SPAWN_DO_NOT_REAP_CHILD, standard_output=True)
 
172
        glib.child_watch_add(pid, self._on_submit_usefulness_finished, (review_id, is_useful, callback))
 
173
 
163
174
    # internal callbacks/helpers
164
175
    def _on_submit_review_finished(self, pid, status, (app, stdout_fd, callback)):
165
176
        """ called when submit_review finished, when the review was send
205
216
                        # remove the one we don't want to see anymore
206
217
                        self._reviews[app].remove(review)
207
218
                        callback(app, self._reviews[app])
 
219
                        break
 
220
 
 
221
    def _on_submit_usefulness_finished(self, pid, status, (review_id, is_useful, callback)):
 
222
        """ called when report_usefulness finished """
 
223
        if os.WEXITSTATUS(status) == 0:
 
224
            LOG.debug("usefulness id %s " % review_id)
 
225
            for (app, reviews) in self._reviews.iteritems():
 
226
                for review in reviews:
 
227
                    if str(review.id) == str(review_id):
 
228
                        # update usefulness, older servers do not send
 
229
                        # usefulness_{total,favorable} so we use getattr
 
230
                        review.usefulness_total = getattr(review, "usefulness_total", 0) + 1
 
231
                        if is_useful:
 
232
                            review.usefulness_favorable = getattr(review, "usefulness_favorable", 0) + 1
 
233
                        callback(app, self._reviews[app])
 
234
                        break
208
235
 
209
236
 
210
237
# using multiprocessing here because threading interface was terrible