def do_project_issues(request, **kw): session = Session.get_session(request) if session: values = {"user": '******' % encode_html(session.user.name)} else: values = {"user": '******'} pid = request.normpath.split("/")[2] prj = issuebase.projects.query_one(project_id=pid) values["project_id"] = prj.project_id values["project_name"] = prj.name values["project_description"] = prj.description ilist = "" for issue in issuebase.issues.query_iter(project_id=prj.pid): if issue.creator_id is not None: creator = issuebase.users[issue.creator_id].name else: creator = "unknown" shorttitle = re.sub("[^A-Za-z0-9\s/]", "", issue.title) shorttitle = re.sub("\s+", "_", shorttitle) ilist += """<tr><td class="number">#%i</td><td class="info"> <div><b><a href="/issues/%i/%s">%s</a></b>%s <p class="subinfo">by %s at %s</p> </td></tr>""" % ( issue.iid, issue.iid, shorttitle, issue.title, "<span class='pull-right label label-warning'>new</span>" if issue.bug_status == "unconfirmed" else "", creator, issue.creation_date, ) values["issues"] = ilist return TemplateResponse("templates/project_issues.html", values)
def do_project_summary(request, **kw): session = Session.get_session(request) if session: values = {"user": '******' % encode_html(session.user.name)} else: values = {"user": '******'} pid = request.normpath.split("/")[2] prj = issuebase.projects.query_one(project_id=pid) values["project_id"] = prj.project_id values["project_name"] = prj.name dd = prj.description.split("\n") values["project_description"] = "<p><b>%s</b></p><p>%s</p>" % ( encode_html(dd[0]), "</p><p>".join(map(encode_html, dd[1:])), ) return TemplateResponse("templates/project_summary.html", values)
def do_project_browse(request, **kw): pid = request.normpath.split("/")[2] session = Session.get_session(request) if session is None: raise RedirectLocation("/login.html?hint=2&project=%s" % pid) prj = issuebase.projects.query_one(project_id=pid) values = {"user": '******' % encode_html(session.user.name)} values["project_id"] = prj.project_id values["project_name"] = prj.name values["project_description"] = prj.description values["title"] = kw.get("title", "") values["comment"] = kw.get("comment", "") return TemplateResponse("templates/project_browse.html", values)
def do_list(request, **kw): session = Session.get_session(request) if session: values = {"user": '******' % encode_html(session.user.name)} else: values = {"user": '******'} list = "" for prj in issuebase.projects: list += """<li class="span4"> <a class="thumbnail" href="/projects/%s/"> <table><tr><td valign="top"><img src="/projects/%s/icon.jpg" width='64' height='64' alt=""></td><td style="padding-left:5px;color:black"> <h5>%s</h5> <p>%s</p> </td></tr></table></a> </li>""" % ( prj.project_id, prj.project_id, encode_html(prj.name), encode_html(prj.description.split("\n")[0]), ) values["list"] = list return TemplateResponse("templates/list.html", values)
def do_project_newissue(request, submit=None, **kw): pid = request.normpath.split("/")[2] session = Session.get_session(request) if session is None: raise RedirectLocation("/login.html?hint=2&project=%s" % pid) prj = issuebase.projects.query_one(project_id=pid) values = {"user": '******' % encode_html(session.user.name)} values["project_id"] = prj.project_id values["project_name"] = prj.name values["project_description"] = prj.description values["title"] = kw.get("title", "") values["comment"] = kw.get("comment", "") if submit == "submit": script = "" if not kw.get("title"): script += """ $('#title').parent().parent().addClass('error') $('#title').after('<span class="help-inline">no title given</span>') """ if not script: try: iss = issuebase.issues.new() iss.creator_id = session.user.uid iss.creation_date = str(datetime.datetime.now()).split(".")[0] iss.modification_date = str(datetime.datetime.now()).split(".")[0] iss.project_id = prj.pid iss.title = kw["title"] iss.bug_status = "unconfirmed" iss.assignee_id = prj.creator_id iss.bug_severity = kw.get("severity", "normal") iss.priority = kw.get("priority", "medium") iss.commit() if kw["comment"]: cmt = issuebase.comments.new() cmt.issue_id = iss._rowid cmt.is_private = 0 cmt.creator_id = session.user.uid cmt.creation_date = str(datetime.datetime.now()).split(".")[0] cmt.text = kw["comment"] cmt.commit() if kw.get("notify") == "notify": no = issuebase.notify.new() no.issue_id = iss._rowid no.user_id = session.user.uid no.commit() except Exception, e: print type(e), e raise RedirectLocation("/projects/%s/issues.html" % prj.project_id) values["script"] = script
def do_issue(request, **kw): iid = request.normpath.split("/")[2] session = Session.get_session(request) if session: values = {"user": '******' % encode_html(session.user.name)} else: values = {"user": '******'} print kw iss = issuebase.issues[int(iid)] if kw.get("submit") == "submit" and session: iss.modification_date = str(datetime.datetime.now()).split(".")[0] ass = issuebase.users.query_one(login=kw.get("assigned_to")) if ass is not None: iss.assignee_id = ass.uid if kw.get("title"): iss.title = kw["title"] for elem in ("bug_status", "resolution", "priority", "bug_severity", "bug_file_loc", "status_whiteboard"): if elem in kw: setattr(iss, elem, kw[elem]) iss.commit() if kw.get("new_comment", "").strip(): cmt = issuebase.comments.new() cmt.issue_id = iss._rowid cmt.is_private = 0 cmt.creator_id = session.user.uid if session else None cmt.creation_date = str(datetime.datetime.now()).split(".")[0] cmt.text = kw["new_comment"] cmt.commit() pass no = issuebase.notify.query_one(issue_id=iss._rowid, user_id=session.user.uid) print no if kw.get("notify") == "notify": if no is None: no = issuebase.notify.new() no.issue_id = iss._rowid no.user_id = session.user.uid no.commit() elif no: no.delete() prj = issuebase.projects[iss.project_id] values["project_id"] = prj.project_id values["project_name"] = encode_html(prj.name) values["iid"] = iid values["creator_name"] = issuebase.users[iss.creator_id].name values["creation_date"] = iss.creation_date values["title"] = iss.title print iss.assignee_id values["assigned_to"] = issuebase.users[iss.assignee_id].name if iss.assignee_id else "unassigned" values["s_" + (iss.bug_severity or "normal")] = 'selected="selected"' values["s_" + (iss.priority or "medium")] = 'selected="selected"' values["s_" + (re.sub("[^a-z]", "", iss.bug_status or "unconfirmed"))] = 'selected="selected"' values["s_" + (re.sub("[^a-z]", "", iss.resolution or "none"))] = 'selected="selected"' comments = "" for cmm in issuebase.comments.query_iter(issue_id=iid): try: cc = encode_html(issuebase.users[cmm.creator_id].name) except: cc = "unknown" comments += "<div><h5>by %s at %s</h5><p><pre>%s</pre></p></div>" % ( cc, cmm.creation_date, encode_html(cmm.text), ) values["comments"] = comments or '<span class="help-block">none</span>' if session: no = issuebase.notify.query_one(issue_id=iss._rowid, user_id=session.user.uid) if no: values["notify"] = 'checked="checked"' return TemplateResponse( "templates/project_issue.html" if session else "templates/project_issue_disabled.html", values )