Exemplo n.º 1
0
 def _make_one(self, project, post=None, **kwargs):
     from yait.forms import make_add_issue_form
     if isinstance(post, dict):
         # test helper
         from webob.multidict import MultiDict
         post = MultiDict(post)
     form = make_add_issue_form(project, self.session, post, **kwargs)
     return form
Exemplo n.º 2
0
Arquivo: issue.py Projeto: dbaty/Yait
def add_form(request, form=None):
    session = DBSession()
    project_name = request.matchdict['project_name']
    try:
        project = session.query(Project).filter_by(name=project_name).one()
    except NoResultFound:
        raise HTTPNotFound()
    if not has_permission(request, PERM_PARTICIPATE_IN_PROJECT, project):
        raise HTTPForbidden()
    if form is None:
        form = make_add_issue_form(project, session)
    can_see_priv = has_permission(
        request, PERM_SEE_PRIVATE_TIMING_INFO, project)
    can_manage_project = has_permission(request, PERM_MANAGE_PROJECT, project)
    return {'api': TemplateAPI(request, _(u'Add issue')),
            'project': project,
            'form': form,
            'can_see_private_time_info': can_see_priv,
            'can_manage_project': can_manage_project}
Exemplo n.º 3
0
Arquivo: issue.py Projeto: dbaty/Yait
def add(request):
    session = DBSession()
    project_name = request.matchdict['project_name']
    try:
        project = session.query(Project).filter_by(name=project_name).one()
    except NoResultFound:
        raise HTTPNotFound()
    if not has_permission(request, PERM_PARTICIPATE_IN_PROJECT, project):
        raise HTTPForbidden()
    form = make_add_issue_form(project, session, request.POST)
    if not form.validate():
        return add_form(request, form)

    last_ref = session.execute(
        'SELECT MAX(ref) FROM issues '
        'WHERE project_id=%d' % project.id).fetchone()[0]
    if last_ref is None:
        last_ref = 0
    ref = last_ref + 1
    reporter = request.user.id
    now = datetime.utcnow()
    issue = Issue(project_id=project.id,
                  date_created=now,
                  date_edited=now,
                  reporter=reporter,
                  ref=ref)
    form.populate_obj(issue)
    session.add(issue)
    session.flush()
    change = Change(project_id=project.id,
                    issue_id=issue.id,
                    type=CHANGE_TYPE_OPENING,
                    author=reporter,
                    date=now,
                    changes={})
    form.populate_obj(change)
    session.add(change)
    route_args = {'project_name': project_name, 'issue_ref': issue.ref}
    url = request.route_url('issue_view', **route_args)
    return HTTPSeeOther(location=url)