~juliank/software-center/debian

« back to all changes in this revision

Viewing changes to utils/piston-helpers/piston_get_review_stats_helper.py

  • Committer: Julian Andres Klode
  • Date: 2011-11-20 13:34:41 UTC
  • mfrom: (429.62.1824 software-center)
  • Revision ID: jak@debian.org-20111120133441-npw6j3nmd8v75yav
Merge from 2.0.7 up to 5.1.2 pre-release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
import os
 
4
import pickle
 
5
import logging
 
6
import sys
 
7
 
 
8
from optparse import OptionParser
 
9
 
 
10
from softwarecenter.paths import SOFTWARE_CENTER_CACHE_DIR
 
11
from softwarecenter.backend.piston.rnrclient import RatingsAndReviewsAPI
 
12
 
 
13
LOG = logging.getLogger(__name__)
 
14
 
 
15
if __name__ == "__main__":
 
16
    logging.basicConfig()
 
17
 
 
18
    # common options for optparse go here
 
19
    parser = OptionParser()
 
20
 
 
21
    # check options
 
22
    parser.add_option("--origin", default="any")
 
23
    parser.add_option("--distroseries", default="any")
 
24
    parser.add_option("--days-delta", default=None)
 
25
    parser.add_option("--debug",
 
26
                      action="store_true", default=False)
 
27
    parser.add_option("--no-pickle",
 
28
                      action="store_true", default=False)
 
29
    (options, args) = parser.parse_args()
 
30
 
 
31
    if options.debug:
 
32
        LOG.setLevel(logging.DEBUG)
 
33
 
 
34
    cachedir = os.path.join(SOFTWARE_CENTER_CACHE_DIR, "rnrclient")
 
35
    rnrclient = RatingsAndReviewsAPI(cachedir=cachedir)
 
36
 
 
37
    kwargs = {"origin": options.origin,
 
38
              "distroseries": options.distroseries,
 
39
             }
 
40
    if options.days_delta:
 
41
        kwargs["days"] = int(options.days_delta)
 
42
 
 
43
    # depending on the time delta, use a different call
 
44
    piston_review_stats = []
 
45
    try:
 
46
        piston_review_stats = rnrclient.review_stats(**kwargs)
 
47
    except:
 
48
        LOG.exception("get_review_stats")
 
49
        sys.exit(1)
 
50
 
 
51
    # useful for debugging
 
52
    if options.no_pickle:
 
53
        print "\n".join(["pkgname=%s total=%s avg=%s" % (s.package_name, 
 
54
                                                         s.ratings_total, 
 
55
                                                         s.ratings_average)
 
56
                         for s in piston_review_stats])
 
57
    else:
 
58
        # print to stdout where its consumed by the parent
 
59
        try:
 
60
            print pickle.dumps(piston_review_stats)
 
61
        except IOError:
 
62
            # this can happen if the parent gets killed, no need to trigger
 
63
            # apport for this
 
64
            sys.exit(1)
 
65