~ubuntu-branches/ubuntu/quantal/software-center/quantal-updates

« back to all changes in this revision

Viewing changes to softwarecenter/backend/installbackend_impl/aptd.py

  • Committer: Package Import Robot
  • Author(s): Michael Vogt, Gabor Kelemen, Michael Vogt, Kiwinote, Gary Lasker, Juhana Jauhiainen
  • Date: 2012-02-15 19:19:32 UTC
  • Revision ID: package-import@ubuntu.com-20120215191932-ep1hp9tcay31djge
Tags: 5.1.9
[ Gabor Kelemen ]  
* lp:~kelemeng/software-center/bug926743:
  - Mark strings for translation, add translator comment where needed
    (LP: #926743)

[ Michael Vogt ]
* lp:~mvo/software-center/latest-recommender:
  - import latest recommender client
* lp:~mvo/software-center/dynamic-region-menu:
  - allow dynamic template in the software-center.menu file, currently
    supported is ${CURRENT_REGION}. This allows to build a dynamic
    "Your region" menu once we actually tag packages with the region
    information
* lp:~mvo/software-center/sca-video:
  - add the ability to display embedded videos in the application
    details view
* lp:~mvo/software-center/multiple-screenshots:
  - add support for the display of multiple screenshots in the
    application details view, as provided by the software-center-agent
* lp:~mvo/software-center/submit-review-hang-fix:
  - fix hang when submitting a review on precise
* lp:~mvo/software-center/screenshots-sorting:
  - ensure the multiple screenshots are sorted properly when
    they come from the json API
* lp:~mvo/software-center/sca-video-updates:
  - update the client to follow the server side changes for
    videos from software-center-agent
* lp:~mvo/software-center/video-ui-reshuffle:
  - shuffle the video location around a bit in the view to
    ensure the user finds it more easily
* increase dependency on python-apt for the required
  apt_pkg.DepCache.policy_priority() support
* lp:~mvo/software-center/sca-debtags:
  - fix the debtags parsing from the software-center-agent
* lp:~mvo/software-center/multiple-versions:
  - add support for multiple versions into software-center
* lp:~mvo/software-center/fix-recommenations-details-clicks:
  - fix clickthru of details view recommendations after refactor
* lp:~mvo/software-center/rfc3166-use-common-name:
  - ensure that "common_name" in rfc3166 is used when available
    to avoid political issues around the name of the region

[ Kiwinote ]
* data/ui/gtk3/css/*.css:
  - use 'px' suffixes as required by latest gtk
* softwarecenter/ui/gtk3/views/appdetailsview.py:
  - replace ... and ' with their unicode eequivalents (LP: #844799)
* softwarecenter/db/application.py:
  - don't crash if the version nr associated with a screenshot is None

[ Gary Lasker ]
* lp:~gary-lasker/software-center/recommender-service-url:
  - update to the correct production url for the recommender
    service 
* lp:~gary-lasker/software-center/import-latest-sreclient:
  - import latest recommender client 
* lp:~gary-lasker/software-center/recommendation:
  - implement the recommendations opt-in UI and flow, upload
    of the user profile data after opt-in, and display of
    per-application recommendations in the details view
* lp:~gary-lasker/software-center/temp-disable-lobby-recommendations-view:
  - temporarily hide the lobby recommendations opt-in and display
    view pending rollout of the corresponding support on the
    production server

[ Juhana Jauhiainen ]
* softwarecenter/backend/launchpad.py:
  - replaced EDGE_SERVICE_ROOT with LPNET_SERVICE_ROOT. (LP: #737697)

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
 
40
40
from defer import inline_callbacks, return_value
41
41
 
 
42
from softwarecenter.db.application import Application
42
43
from softwarecenter.backend.transactionswatcher import (
43
44
    BaseTransactionsWatcher, 
44
45
    BaseTransaction,
240
241
 
241
242
    # FIXME: upgrade add-ons here
242
243
    @inline_callbacks
243
 
    def upgrade(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
 
244
    def upgrade(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
244
245
        """ upgrade a single package """
 
246
        pkgname = app.pkgname
 
247
        appname = app.appname
245
248
        try:
246
249
            trans = yield self.aptd_client.upgrade_packages([pkgname],
247
250
                                                            defer=True)
277
280
 
278
281
    
279
282
    @inline_callbacks
280
 
    def remove(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
 
283
    def remove(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
281
284
        """ remove a single package """
 
285
        pkgname = app.pkgname
 
286
        appname = app.appname
282
287
        try:
283
288
            trans = yield self.aptd_client.remove_packages([pkgname],
284
289
                                                           defer=True)
288
293
            self._on_trans_error(error, pkgname)
289
294
 
290
295
    @inline_callbacks
291
 
    def remove_multiple(self, pkgnames, appnames, iconnames, addons_install=[], addons_remove=[], metadatas=None):
 
296
    def remove_multiple(self, apps, iconnames, addons_install=[], addons_remove=[], metadatas=None):
292
297
        """ queue a list of packages for removal  """
293
298
        if metadatas == None:
294
299
            metadatas = []
295
 
            for item in pkgnames:
 
300
            for item in apps:
296
301
                metadatas.append(None)
297
 
        for pkgname, appname, iconname, metadata in zip(pkgnames, appnames, iconnames, metadatas):
298
 
            yield self.remove(pkgname, appname, iconname, metadata)
 
302
        for app, iconname, metadata in zip(apps, iconnames, metadatas):
 
303
            yield self.remove(app, iconname, metadata)
299
304
 
300
305
    @inline_callbacks
301
 
    def install(self, pkgname, appname, iconname, filename=None, addons_install=[], addons_remove=[], metadata=None, force=False):
 
306
    def install(self, app, iconname, filename=None, addons_install=[], addons_remove=[], metadata=None, force=False):
302
307
        """Install a single package from the archive
303
308
           If filename is given a local deb package is installed instead.
304
309
        """
 
310
        pkgname = app.pkgname
 
311
        appname = app.appname
 
312
        # this will force aptdaemon to use the right archive suite on install
 
313
        if app.archive_suite:
 
314
            pkgname = "%s/%s" % (pkgname, app.archive_suite)
305
315
        try:
306
316
            if filename:
307
317
                # force means on lintian failure
323
333
            self._on_trans_error(error, pkgname)
324
334
 
325
335
    @inline_callbacks
326
 
    def install_multiple(self, pkgnames, appnames, iconnames, addons_install=[], addons_remove=[], metadatas=None):
 
336
    def install_multiple(self, apps, iconnames, addons_install=[], addons_remove=[], metadatas=None):
327
337
        """ queue a list of packages for install  """
328
338
        if metadatas == None:
329
339
            metadatas = []
330
 
            for item in pkgnames:
 
340
            for item in apps:
331
341
                metadatas.append(None)
332
 
        for pkgname, appname, iconname, metadata in zip(pkgnames, appnames, iconnames, metadatas):
333
 
            yield self.install(pkgname, appname, iconname, metadata=metadata)
 
342
        for app, iconname, metadata in zip(apps, iconnames, metadatas):
 
343
            yield self.install(app, iconname, metadata=metadata)
334
344
            
335
345
    @inline_callbacks
336
 
    def apply_changes(self, pkgname, appname, iconname, addons_install=[], addons_remove=[], metadata=None):
 
346
    def apply_changes(self, app, iconname, addons_install=[], addons_remove=[], metadata=None):
337
347
        """ install and remove add-ons """
 
348
        pkgname = app.pkgname
 
349
        appname = app.appname
338
350
        try:
339
351
            install = addons_install
340
352
            remove = addons_remove
619
631
 
620
632
            # we use aptd_client.install_packages() here instead
621
633
            # of just 
622
 
            #  self.install(app.pkgname, app.appname, "", metadata=metadata)
 
634
            #  self.install(app, "", metadata=metadata)
623
635
            # go get less authentication prompts (because of the 03_auth_me_less
624
636
            # patch in aptdaemon)
625
637
            try:
769
781
                if res == "yes":
770
782
                    # Reinject the transaction
771
783
                    meta_copy = trans.meta_data.copy()
772
 
                    pkgname = meta_copy.pop("sc_pkgname")
773
 
                    appname = meta_copy.pop("sc_appname", None)
 
784
                    app = Application(meta_copy.pop("sc_appname", None),
 
785
                                      meta_copy.pop("sc_pkgname"))
774
786
                    iconname = meta_copy.pop("sc_iconname", None)
775
787
                    filename = meta_copy.pop("sc_filename")
776
 
                    self.install(pkgname, appname, iconname, filename, [], [],
 
788
                    self.install(app, iconname, filename, [], [],
777
789
                                 metadata=meta_copy, force=True)
778
790
                    return
779
791
            elif not "sc_add_repo_and_install_ignore_errors" in trans.meta_data:
833
845
                yield trans.set_meta_data(sc_iconname=iconname, defer=True)
834
846
            # we do not always have a pkgname, e.g. "cache_update" does not
835
847
            if pkgname:
836
 
                yield trans.set_meta_data(sc_pkgname=pkgname, defer=True)
 
848
                # ensure the metadata is just the pkgname
 
849
                sc_pkgname = pkgname.split("/")[0].split("=")[0]
 
850
                yield trans.set_meta_data(sc_pkgname=sc_pkgname, defer=True)
837
851
                # setup debconf only if we have a pkg
838
852
                yield trans.set_debconf_frontend("gnome", defer=True)
839
853
                trans.set_remove_obsoleted_depends(True, defer=True)