def get(self): self.response.out.write( '<html><head><title>eggs</title></head><body><pre>') files = Package.query() for file in files: self.response.out.write( '<a href="/gs/{bucket}/{filename}">{filename}</a>\n'.format( bucket=app_identity.get_default_gcs_bucket_name(), filename=file.content)) self.response.out.write('</pre></body></html>')
def doPackage(self): requested_package = self.request.path.strip('/') package = Package.query(Package.fullname == requested_package).get() if package and blobstore.get(package.blob): self.response.headers['Content-Type'] = 'application/octet-stream' self.send_blob(package.blob) else: self.error(404) self.response.write('That package does not exist.')
def doIndex(self): self.response.headers['Content-Type'] = 'text/html' query = Package.query(projection=['architecture'], distinct=True) archs = [x.architecture for x in query] # Load graphs. graphs = {} for dep in DepsModel.query().iter(): graphs[dep.deps_arch] = True packages = dedup_packages(Package.query().fetch(None)) template_data = { # TODO(miselin): this should be figured out from datastore. 'archs': archs, 'packages': packages, 'graphs': graphs, } template = JINJA_ENVIRONMENT.get_template('templates/index.html') self.response.write(template.render(template_data))
def doDatabase(self): packages = Package.query().iter() all_packages = dedup_packages(packages) result = {} for package in all_packages: name = package.package_name arch = package.architecture vers = package.version sha1 = package.sha1 result['%s-%s' % (name, arch)] = { 'architecture': arch, 'version': vers, 'name': name, 'sha1': sha1, } self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(result))
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')