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
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}
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)