def update(self):
        """
        - Download new package list
        - Update locally loaded packages
        """

        dp_bootstrap = DjangoPackagesBootstrap(proxy=self.proxy)
        session = Session()

        puts_header("Updating categories...")
        categories = dp_bootstrap.grid_list()
        puts("Category list downloaded 1/1 OK")
        #progress_bar = progress.bar(len(categories))
        for category in progress.bar(categories):

            #progress_bar.next()

            filtered_args = [(key,val) for key,val in category.items() if key in CATEGORY_FIELDS]
            category_model = session.query(Category).filter(Category.slug==category['slug']).first()
            if category_model:
                for key, val in filtered_args:
                    setattr(category_model, key, val)
            else:
                category_model = Category(**dict(filtered_args))
                session.add(category_model)
        session.commit()
        print "Categories updated"

        puts()

        puts_header("Updating packages...")
        packages = dp_bootstrap.app_list()
        puts("Package list downloaded 1/1 OK")
        for package in progress.bar(packages):
            filtered_args = [(key,val) for key,val in package.items() if key in PACKAGE_FIELDS]
            package_model = session.query(Package).filter(Package.slug==package['slug']).first()
            #print "PACKAGE_MODEL", package_model
            if package_model:
                for key, val in filtered_args:
                    setattr(package_model, key, val)
            else:
                package_model = Package(**dict(filtered_args))
                session.add(package_model)

            package_model.set_package_name()

            package_model.categories = []
            if package['grids']:
                if "/api/v1/grid/this-site/" in package['grids']:
                    package['grids'].remove("/api/v1/grid/this-site/")
                categories = session.query(Category).filter(Category.resource_uri.in_(package['grids']))
                for category in categories:
                    package_model.categories.append(category)

        session.commit()
        print "Packages updated"

        self._check_installed_packages()
Ejemplo n.º 2
0
    def update(self):
        """
        - Download new package list
        - Update locally loaded packages
        """

        dp_bootstrap = DjangoPackagesBootstrap(proxy=self.proxy)
        session = Session()

        puts_header("Updating categories...")
        categories = dp_bootstrap.grid_list()
        puts("Category list downloaded 1/1 OK")
        #progress_bar = progress.bar(len(categories))
        for category in progress.bar(categories):

            #progress_bar.next()

            filtered_args = [(key, val) for key, val in category.items()
                             if key in CATEGORY_FIELDS]
            category_model = session.query(Category).filter(
                Category.slug == category['slug']).first()
            if category_model:
                for key, val in filtered_args:
                    setattr(category_model, key, val)
            else:
                category_model = Category(**dict(filtered_args))
                session.add(category_model)
        session.commit()
        print "Categories updated"

        puts()

        puts_header("Updating packages...")
        packages = dp_bootstrap.app_list()
        puts("Package list downloaded 1/1 OK")
        for package in progress.bar(packages):
            filtered_args = [(key, val) for key, val in package.items()
                             if key in PACKAGE_FIELDS]
            package_model = session.query(Package).filter(
                Package.slug == package['slug']).first()
            #print "PACKAGE_MODEL", package_model
            if package_model:
                for key, val in filtered_args:
                    setattr(package_model, key, val)
            else:
                package_model = Package(**dict(filtered_args))
                session.add(package_model)

            package_model.set_package_name()

            package_model.categories = []
            if package['grids']:
                if "/api/v1/grid/this-site/" in package['grids']:
                    package['grids'].remove("/api/v1/grid/this-site/")
                categories = session.query(Category).filter(
                    Category.resource_uri.in_(package['grids']))
                for category in categories:
                    package_model.categories.append(category)

        session.commit()
        print "Packages updated"

        self._check_installed_packages()