Ejemplo n.º 1
0
def update_list_of_packages():
    package_names = memcache.get(PACKAGES_CACHE_KEY)
    package_index = memcache.get(PACKAGES_CHECKED_INDEX)
    
    
    if package_index is None:
        package_index = 0
    
    if package_names is None:
        package_names = pypi_parser.get_list_of_packages()
        memcache.add(PACKAGES_CACHE_KEY, package_names, 60 * 60 * 24)

    for name in package_names[package_index:package_index + DB_STEPS]:
        if name in TO_IGNORE:
            pass
        else:
            query = db.GqlQuery("SELECT __key__ FROM Package WHERE name = :name", name=name)
            if len(list(query)) == 0:
                p = Package(name=name)
                p.put()
        
        package_index += 1
        if package_index % 5 == 0:
            memcache.set(PACKAGES_CHECKED_INDEX, package_index, 60 * 60 * 24)
            
    if package_index == len(package_names):
        return -1
    
    return package_index
Ejemplo n.º 2
0
def update_list_of_packages():
    package_names = memcache.get(PACKAGES_CACHE_KEY)
    package_index = memcache.get(PACKAGES_CHECKED_INDEX)

    if package_index is None:
        package_index = 0

    if package_names is None:
        package_names = pypi_parser.get_list_of_packages()
        memcache.add(PACKAGES_CACHE_KEY, package_names, 60 * 60 * 24)

    for name in package_names[package_index : package_index + DB_STEPS]:
        if name in TO_IGNORE:
            pass
        else:
            query = db.GqlQuery("SELECT __key__ FROM Package WHERE name = :name", name=name)
            if len(list(query)) == 0:
                p = Package(name=name)
                p.put()

        package_index += 1
        if package_index % 5 == 0:
            memcache.set(PACKAGES_CHECKED_INDEX, package_index, 60 * 60 * 24)

    if package_index == len(package_names):
        return -1

    return package_index
Ejemplo n.º 3
0
    def post(self):
        # OK, we can process the rest now.
        name = self.request.get('name')
        arch = self.request.get('arch')
        vers = self.request.get('vers')
        sha1 = self.request.get('sha1')
        if not (name and arch and vers and sha1):
            self.badrequest()
            return

        try:
            uploaded = self.get_uploads()[0]
            uploaded_key = uploaded.key()
        except:
            self.badrequest()
            return

        fullname = '%s-%s-%s.pup' % (name, vers, arch)

        # Do we already know of a package like this?
        known_package = Package.query(Package.fullname == fullname).get()

        if not known_package:
            # Now create the record.
            package = Package(fullname=fullname, package_name=name,
                              architecture=arch, version=vers, sha1=sha1,
                              blob=uploaded_key)
            package.put()
        else:
            # Wipe out the created item in blobstore, we don't need it.
            item = blobstore.get(known_package.blob)
            item.delete()

            # Update the package contents.
            known_package.sha1 = sha1
            known_package.blob = uploaded_key
            known_package.put()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('ok')
Ejemplo n.º 4
0
    def post(self):
        name = self.request.get('name', None)
        version = self.request.get('version', None)
        action = self.request.get(':action', None)

        if action == 'file_upload':
            for key, value in self.request.params.items():
                if isinstance(value, cgi.FieldStorage):
                    uploaded_file = value

            fname = "/{bucket}/{filename}".format(
                bucket=app_identity.get_default_gcs_bucket_name(),
                filename=uploaded_file.filename.strip())

            with cloudstorage.open(fname, 'w') as f:
                f.write(uploaded_file.file.read())
            f.close()
            if name is not None and version is not None:
                pack = Package(name=name,
                               version=version,
                               content=uploaded_file.filename.strip())
                pack.put()