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
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
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')
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()