예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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
예제 #6
0
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
    )