def add(cls, user, name, selected_chroots, repos=None, description=None, instructions=None, check_for_duplicates=False, group=None, **kwargs): copr = models.Copr(name=name, repos=repos or u"", owner_id=user.id, description=description or u"", instructions=instructions or u"", created_on=int(time.time()), **kwargs) if group is not None: UsersLogic.raise_if_not_in_group(user, group) copr.group = group # form validation checks for duplicates CoprsLogic.new(user, copr, check_for_duplicates=check_for_duplicates) CoprChrootsLogic.new_from_names(copr, selected_chroots) db.session.flush() ActionsLogic.send_create_gpg_key(copr) return copr
def add(cls, user, name, selected_chroots, repos=None, description=None, instructions=None, check_for_duplicates=False, group=None, persistent=False, auto_prune=True, use_bootstrap_container=False, follow_fedora_branching=False, **kwargs): if not user.admin and persistent: raise exceptions.NonAdminCannotCreatePersistentProject() if not user.admin and not auto_prune: raise exceptions.NonAdminCannotDisableAutoPrunning() # form validation checks for duplicates cls.new(user, name, group, check_for_duplicates=check_for_duplicates) copr = models.Copr(name=name, repos=repos or u"", user=user, description=description or u"", instructions=instructions or u"", created_on=int(time.time()), persistent=persistent, auto_prune=auto_prune, use_bootstrap_container=use_bootstrap_container, follow_fedora_branching=follow_fedora_branching, **kwargs) if group is not None: UsersLogic.raise_if_not_in_group(user, group) copr.group = group copr_dir = models.CoprDir(main=True, name=name, copr=copr) db.session.add(copr_dir) db.session.add(copr) CoprChrootsLogic.new_from_names(copr, selected_chroots) db.session.flush() ActionsLogic.send_create_gpg_key(copr) return copr
def process_pinned_projects_post(owner, url_on_success): if isinstance(owner, models.Group): UsersLogic.raise_if_not_in_group(flask.g.user, owner) form = PinnedCoprsForm() if not form.validate_on_submit(): return render_pinned_projects(owner, form=form) PinnedCoprsLogic.delete_by_owner(owner) for i, copr_id in enumerate(filter(None, form.copr_ids.data)): PinnedCoprsLogic.add(owner, int(copr_id), i) db.session.commit() return flask.redirect(url_on_success)
def add(cls, user, name, selected_chroots, repos=None, description=None, instructions=None, check_for_duplicates=False, group=None, **kwargs): copr = models.Copr(name=name, repos=repos or u"", owner_id=user.id, description=description or u"", instructions=instructions or u"", created_on=int(time.time()), **kwargs) if group is not None: UsersLogic.raise_if_not_in_group(user, group) copr.group = group # form validation checks for duplicates CoprsLogic.new(user, copr, check_for_duplicates=check_for_duplicates) CoprChrootsLogic.new_from_names(copr, selected_chroots) return copr
def render_pinned_projects(owner, form=None): pinned = [pin.copr for pin in PinnedCoprsLogic.get_by_owner(owner)] if isinstance(owner, models.Group): UsersLogic.raise_if_not_in_group(flask.g.user, owner) coprs = CoprsLogic.get_multiple_by_group_id(owner.id).filter( models.Copr.unlisted_on_hp.is_(False)).all() else: coprs = ComplexLogic.get_coprs_permissible_by_user(owner) coprs = sorted(coprs, key=lambda copr: copr.full_name) selected = [copr.id for copr in pinned] selected += (app.config["PINNED_PROJECTS_LIMIT"] - len(pinned)) * [None] for i, copr_id in enumerate(form.copr_ids.data if form else []): selected[i] = int(copr_id) if copr_id else None graph = BuildsLogic.get_small_graph_data('30min') return flask.render_template("pinned.html", owner=owner, pinned=pinned, selected=selected, coprs=coprs, form=form, tasks_info=ComplexLogic.get_queue_sizes(), graph=graph)
def raise_if_cant_delete(cls, user, copr): """ Raise InsufficientRightsException if given copr cant be deleted by given user. Return None otherwise. """ if user.admin: return if copr.group: return UsersLogic.raise_if_not_in_group(user, copr.group) if user == copr.user: return raise exceptions.InsufficientRightsException( "Only owners may delete their projects.")