def newpackage(db, method, data, username, gitfolder): distributions = db.query(Distribution).order_by(Distribution.id).all() form = forms.NewPackage(data) form.distributions.choices = [(d.id, d.name) for d in distributions] form.distributions.default = [d.id for d in distributions] result = Result({"form": form}) if method == "POST" and form.validate(): pkg = Package( name=form.name.data, summary=form.summary.data, description=form.description.data, owner=username, ) db.add(pkg) pkg.distributions = db.query(Distribution).filter( Distribution.id.in_(form.distributions.data)).all() try: db.commit() except SQLAlchemyError: result.flash.append( ("An error occurred while adding your " "package, please contact an administrator.", "danger")) else: result.flash.append(("Package successfully created!", "success")) result.redirect = ('package', {"name": pkg.name}) # Add git repo creation message try: status_message = create_git_repo(pkg.name, gitfolder) result.flash.append((status_message, "success")) except fresque.exceptions.FresqueException: result.flash.append(("An error occurred while creating git \ repository, please contact an administrator.", "danger")) return result
def package(db, name): try: package = db.query(Package).filter_by(name=name).one() except NoResultFound: return Result({"message": "Unknown package: {}".format(name)}, code=404) else: return Result({"package": package})
def user_packages(db, username): all_packages = db.query(Package).filter_by(owner=username).all() all_packages.sort(key=lambda p: p.last_review_activity) packages = [] old_packages = [] for package in all_packages: if package.active: packages.append(package) else: old_packages.append(package) return Result({"packages": packages, "old_packages": old_packages})
def index(db): recent_pkgs = db.query(Package).filter(Package.active ).order_by(Package.submitted.desc()).limit(10).all() updated_revs = db.query(Review).join(Comment ).order_by(Comment.date.desc()).limit(10).all() pkgs_without_rev = db.query(Package).filter( Package.active, ~Package.reviews.any() ).order_by(Package.submitted.desc()).limit(10).all() return Result({"recent_pkgs": recent_pkgs, "updated_revs": updated_revs, "pkgs_without_rev": pkgs_without_rev, })
def newpackage(db, method, data, username, gitfolder): distributions = db.query( Distribution).order_by(Distribution.id).all() form = forms.NewPackage(data) form.distributions.choices = [(d.id, d.name) for d in distributions] form.distributions.default = [d.id for d in distributions] result = Result({"form": form}) if method == "POST" and form.validate(): pkg = Package( name=form.name.data, summary=form.summary.data, description=form.description.data, owner=username, ) db.add(pkg) pkg.distributions = db.query(Distribution).filter( Distribution.id.in_(form.distributions.data)).all() try: db.commit() except SQLAlchemyError: result.flash.append(("An error occurred while adding your " "package, please contact an administrator.", "danger")) else: result.flash.append(("Package successfully created!", "success")) result.redirect = ('package', {"name": pkg.name}) # Add git repo creation message try: status_message = create_git_repo(pkg.name, gitfolder) result.flash.append(( status_message, "success")) except fresque.exceptions.FresqueException: result.flash.append(("An error occurred while creating git \ repository, please contact an administrator.", "danger")) return result
def packages(db): packages = db.query(Package).filter(Package.active).all() packages.sort(key=lambda p: p.last_review_activity) return Result({"packages": packages})
def user_reviews(db, username): reviews = db.query(Review).join(Reviewer).filter( Reviewer.reviewer_name == username ).order_by(Review.date_start).all() return Result({"reviews": reviews})