def get(self): q = Package.select( Package.name, Package.is_proxy, Package.owner, Users.login, ).join( Users, peewee.JOIN.LEFT_OUTER ).order_by( Package.is_proxy.asc(), Package.lower_name.asc(), ) self.response( list( map( lambda x: dict( name=x.name, owner={ 'id': x.owner_id, 'name': x.owner.login if x.owner else None }, is_proxy=x.is_proxy, ), q ) ) )
def get(self): q = Package.select( Package, Users.login, ).join( Users, peewee.JOIN.LEFT_OUTER ).order_by( Package.is_proxy.asc(), Package.lower_name.asc(), ) self.response( list( map( lambda x: dict( name=x.name, owner={ 'id': x.owner_id, 'name': x.owner.login }, is_proxy=x.is_proxy, ), q ) ) )
def packages_list(cls, package): q = Package.select().join(PackageVersion).join(PackageFile).where( Package.lower_name == package.lower()).limit(1) exists = q.count() is_proxy = q.where(Package.is_proxy == True).count() return exists, is_proxy, q[0] if exists else None
def get_package(package): q = Package.select().where( Package.lower_name == package.lower() or Package.lower_name == normalize_package_name(package)).limit(1) if not q.count(): raise HTTPError(404) return q[0]
def get_package(package): q = Package.select().where( Package.lower_name == package.lower() or Package.lower_name == normalize_package_name(package) ).limit(1) if not q.count(): raise HTTPError(404) return q[0]
def action_submit(self): name = self.get_body_argument('name') q = Package.select().where(Package.name == name, Package.owner == self.current_user) if q.count(): raise HTTPError(409) if not self.current_user.is_admin: q = Package.select().where(Package.name == name, Package.owner != self.current_user) if q.count(): raise HTTPError(403) pkg = Package(name=name, lower_name=name.lower(), owner=self.current_user) pkg.save()
def action_submit(self): name = self.get_body_argument('name') q = Package.select().where( Package.name == name, Package.owner == self.current_user ) if q.count(): raise HTTPError(409) if not self.current_user.is_admin: q = Package.select().where( Package.name == name, Package.owner != self.current_user ) if q.count(): raise HTTPError(403) pkg = Package(name=name, lower_name=name.lower(), owner=self.current_user) pkg.save()
def packages_list(cls, package): q = Package.select().join( PackageVersion ).join( PackageFile ).where( Package.lower_name == package.lower() ).limit(1) exists = q.count() is_proxy = q.where(Package.is_proxy == True).count() return exists, is_proxy, q[0] if exists else None
def action_file_upload(self): with DB.transaction(): package_name = self.get_body_argument('name').lower() if not Package.select().where( Package.lower_name == package_name).count(): raise HTTPError(404) package = Package.get(lower_name=package_name) if package.owner != self.current_user and not self.current_user.is_admin: raise HTTPError(403) version = package.create_version(self.get_body_argument('version')) uploaded_file = self.request.files['content'][0] if not str(hashlib.md5(uploaded_file.body).hexdigest()) == str( self.get_body_argument('md5_digest')): raise HTTPError(406) list_values = (u'classifiers', u'keywords') for key in self.METADATA_KEYS: val = self.get_body_argument(key, 'UNKNOWN') if key in list_values and not isinstance(val, (list, tuple)): val = [val] setattr(version, key, val) version.save() try: pkg_file = version.create_file(uploaded_file.filename) pkg_file.fetched = True pkg_file.md5 = str(self.get_body_argument('md5_digest')) if pkg_file.exists(): raise HTTPError(409) with pkg_file.open("wb+") as f: f.write(uploaded_file.body) pkg_file.save() except peewee.DataError: raise HTTPError(409)
def action_file_upload(self): with DB.transaction(): package_name = self.get_body_argument('name').lower() if not Package.select().where(Package.lower_name == package_name).count(): raise HTTPError(404) package = Package.get(lower_name=package_name) if package.owner != self.current_user and not self.current_user.is_admin: raise HTTPError(403) version = package.create_version(self.get_body_argument('version')) uploaded_file = self.request.files['content'][0] if not str(hashlib.md5(uploaded_file.body).hexdigest()) == str(self.get_body_argument('md5_digest')): raise HTTPError(406) list_values = (u'classifiers', u'keywords') for key in self.METADATA_KEYS: val = self.get_body_argument(key, 'UNKNOWN') if key in list_values and not isinstance(val, (list, tuple)): val = [val] setattr(version, key, val) version.save() try: pkg_file = version.create_file(uploaded_file.filename) pkg_file.fetched = True pkg_file.md5 = str(self.get_body_argument('md5_digest')) if pkg_file.exists(): raise HTTPError(409) with pkg_file.open("wb+") as f: f.write(uploaded_file.body) pkg_file.save() except peewee.DataError: raise HTTPError(409)
def rpc_list_packages(cls): return list(map(lambda x: x.name, Package.select()))
def rpc_package_releases(cls, package_name, show_hidden=False): package = Package.select().where(Package.name == package_name) return list(map(lambda x: str(x.name), package.versions()))
def pkg_list(cls): return list(Package.select().order_by(Package.lower_name))