예제 #1
0
 def get_page(self, request, error=None):
     title = "Create new test case"
     modelclass = models.TestCase
     resp = framework.ResponseDocument(request,
                                       testcase_create_constructor,
                                       title=title)
     resp.new_para(title)
     if error is not None:
         resp.new_para(error, class_="error")
     form = resp.add_form(action=request.resolver.get_url(testcase_create))
     outerfs = form.add_fieldset(modelclass.__name__)
     BR = form.get_new_element("Br")
     for colname in ('name', 'purpose', 'passcriteria', 'startcondition',
                     'endcondition', 'procedure', 'reference',
                     'testimplementation', 'functionalarea',
                     'prerequisites', 'automated', 'interactive'):
         metadata = TC_METAMAP[colname]
         webhelpers.new_input(outerfs, modelclass, metadata)
         outerfs.append(BR)
     for colname in ('priority', 'cycle', 'status'):
         metadata = TC_METAMAP[colname]
         webhelpers.new_input(outerfs, modelclass, metadata)
         outerfs.append(BR)
     form.add_input(type="submit", name="submit", value="submit")
     return resp
예제 #2
0
def view(request, tablename=None, rowid=None):
    klass = get_model(tablename)
    dbrow = webhelpers.get_row(klass, rowid)
    resp = framework.ResponseDocument(request,
                                      doc_constructor,
                                      title="Table %s %s" % (tablename, dbrow))
    NM = resp.nodemaker
    resp.new_para((
        NM("A", {"href": request.get_url(addentry, tablename=tablename)},
           resp.get_icon("add")),
        NM("A",
           {"href": request.get_url(edit, tablename=tablename, rowid=rowid)},
           resp.get_icon("edit")),
        NM("A",
           {"href": "javascript:doDeleteItem(%r, %r);" % (tablename, rowid)},
           resp.get_icon("delete")),
    ))
    cycler = itertools.cycle(["row1", "row2"])
    tbl = resp.doc.add_table(width="100%", class_="rowdisplay")
    tbl.caption("%s #%s" % (tablename, rowid))
    tbl.new_headings("Field", "Value")
    for metadata in sorted(models.get_metadata(klass)):
        row = tbl.new_row()
        setattr(row, "class_", cycler.next())
        row.new_column(metadata.colname)
        row.new_column(str(getattr(dbrow, metadata.colname)))
    return resp.finalize()
예제 #3
0
def main(request):
    resp = framework.ResponseDocument(request, doc_constructor, 
                title="Web Tools", 
                stylesheet=request.get_url("css", name="default.css"))
    resp.doc.header.add_header(1, "Web Utilities and Tools")
    resp.doc.nav.append(resp.anchor2(headers, "Request Headers"))
    return resp.finalize()
예제 #4
0
파일: views.py 프로젝트: llwang/powerdroid
def measure(request):
    resp = framework.ResponseDocument(request,
                                      _DocumentConstructor,
                                      title="Take A Measurement")
    resp.doc.javascriptlink = request.get_url("js", name="measure.js")
    resp.doc.header.add_header(1, "Take A Measurement")
    return resp.finalize()
예제 #5
0
파일: views.py 프로젝트: llwang/powerdroid
def main(request):
    resp = framework.ResponseDocument(request,
                                      _DocumentConstructor,
                                      title="Droid Tools")
    resp.doc.javascriptlink = request.get_url("js", name="main.js")
    resp.doc.header.add_header(1, "Lab Automation Utilities and Tools")
    return resp.finalize()
예제 #6
0
 def get(self, request, tcid):
     dbrow = get_testcase(tcid)
     title = "Testcase %r" % (dbrow.name, )
     resp = framework.ResponseDocument(request,
                                       testcase_view_constructor,
                                       title=title)
     doc = resp.doc
     NM = doc.nodemaker
     doc.new_para(
         NM(
             "Fragments",
             None,
             NM("A", {
                 "href":
                 request.resolver.get_url(testcase_run, tcid=dbrow.id)
             }, resp.get_icon("go")),
             NM("A", {
                 "href":
                 request.resolver.get_url(testcase_edit, tcid=dbrow.id)
             }, resp.get_icon("edit")),
             NM(
                 "A", {
                     "href":
                     "javascript:doDeleteRow(%r, %r);" %
                     ("TestCase", dbrow.id)
                 }, resp.get_icon("delete")),
         ))
     render_testcase(doc, dbrow)
     return resp.finalize()
예제 #7
0
파일: views.py 프로젝트: llwang/powerdroid
def charts(request):
    resp = framework.ResponseDocument(request,
                                      _DocumentConstructor,
                                      title="Get A Chart")
    resp.doc.javascriptlink = request.get_url("js", name="charts.js")
    resp.doc.header.add_header(1, "Get A Chart")
    return resp.finalize()
예제 #8
0
 def get(self, request, tcid):
     dbrow = get_testcase(tcid)
     title = "Run test case %r" % (dbrow.name, )
     resp = framework.ResponseDocument(request,
                                       testcase_run_constructor,
                                       title=title)
     render_testcase(resp.doc, dbrow)
     if not dbrow.automated:
         form = resp.doc.add_form(
             action=request.resolver.get_url(testcase_run, tcid=dbrow.id))
         BR = form.get_new_element("Br")
         outerfs = form.add_fieldset("Run the test.")
         outerfs.add_textinput("build", "Build")
         outerfs.new_para(
             "Build should have form: '<project>.<major>.<minor>.<subminor>.<build>'"
         )
         webhelpers.create_pick_list(outerfs,
                                     models.Environment,
                                     filtermap=None)
         outerfs.append(BR)
         outerfs.yes_no("Were you able to complete the test?",
                        name="completed")
         outerfs.append(BR)
         outerfs.yes_no("If so, did it pass?", name="passfail")
         outerfs.append(BR)
         outerfs.add_textinput("note", "Notes")
         form.add_hidden("starttime", str(models.tables.time_now()))
         form.add_input(type="submit", name="submit", value="OK")
     else:
         resp.doc.new_para("""
         This is an automated test. Running automated tests from the
         web interface is not yet supported.
         """,
                           class_="error")
     return resp.finalize()
예제 #9
0
def listtable(request, tablename=None):
    klass = get_model(tablename)
    resp = framework.ResponseDocument(request, doc_constructor,
             title="Table %s" % (tablename,))
    NM = resp.nodemaker
    resp.new_para(NM("A", {"href": request.get_url(addentry, tablename=tablename)},
            resp.get_icon("add")))
    cycler = itertools.cycle(["row1", "row2"]) # For alternating row styles.
    tbl = resp.doc.add_table(class_="sortable", width="100%")
    tbl.caption(tablename)
    colnames = models.get_rowdisplay(klass)
    tbl.new_headings("", *colnames)
    tbl.headings[0].class_ = "sorttable_nosort"
    tbl.new_footer("", *colnames)
    for dbrow in query(tablename, {}):
        row = tbl.new_row(id="rowid_%s" % dbrow.id, class_=cycler.next())
        col = row.new_column(
            NM("Fragments", {},
                NM("A", {"href": "edit/%s/" % (dbrow.id,)},
                    resp.get_small_icon("edit")),
                NM("A", {"href": "javascript:doDeleteRow(%r, %r);" % (tablename, dbrow.id)},
                    resp.get_small_icon("delete")),
            )
        )
        firstname = colnames[0]
        row.new_column(
            NM("A", {"href": request.get_url(view, tablename=tablename, rowid=dbrow.id)},
                    getattr(dbrow, firstname))
        )
        for colname in colnames[1:]:
            row.new_column(getattr(dbrow, colname))

    return resp.finalize()
예제 #10
0
파일: views.py 프로젝트: wildone/pycopia
def emailrequest(request):
    """Send HTTP request headers to provided email address."""
    resp = framework.ResponseDocument(request,
                                      doc_constructor,
                                      title="Web Responder")
    recipients = request.GET.getlist("recipient") + request.GET.getlist(
        "rcpt") or resp.config.ADMINS
    # some basic validation. Mailer shuould validate the rest.
    recipients = filter(lambda name: "@" in name, recipients)
    recipients = filter(lambda name: "." in name, recipients)

    if recipients:
        rpt = XHTML.new_document()
        get_header_table(rpt.body, request.environ)

        body = ezmail.AutoMessage(EMAILBODY)
        body["Content-Disposition"] = 'inline'
        msg = ezmail.AutoMessage(str(rpt),
                                 mimetype=rpt.MIMETYPE,
                                 charset=rpt.encoding)
        msg["Content-Disposition"] = 'attachment; filename=headers.html'
        ezmail.mail([body, msg],
                    To=recipients,
                    subject="Webtool header request from %s." %
                    (request.environ.get("REMOTE_ADDR", "<unknown>"), ))

    get_header_table(resp.doc.content, request.environ)

    if recipients:
        resp.doc.content.new_para("Header data emailed to %s." %
                                  (", ".join(recipients), ))
    else:
        resp.doc.content.new_para("No valid email recipients.")
    return resp.finalize()
예제 #11
0
 def get(self, request):
     resp = framework.ResponseDocument(request, testcase_list_constructor, title="Test cases")
     tableclass = models.TestCase
     NM = resp.nodemaker
     resp.new_para(NM("A", {"href": request.resolver.get_url(testcase_create)},
             resp.get_icon("add")))
     cycler = itertools.cycle(["row1", "row2"])
     tbl = resp.doc.add_table(width="100%")
     tbl.caption("Test Cases")
     colnames = ("name", "testimplementation")
     tbl.new_headings("", *colnames)
     for dbrow in webhelpers.query(tableclass, {}):
         row = tbl.new_row(id="rowid_%s" % dbrow.id, class_=cycler.next())
         col = row.new_column(
             NM("Fragments", {},
                 NM("A", {"href": "run/%s" % (dbrow.id,)},
                     resp.get_small_icon("go")),
                 NM("A", {"href": "edit/%s" % (dbrow.id,)},
                     resp.get_small_icon("edit")),
                 NM("A", {"href": "javascript:doDeleteRow(%r, %r);" % (tableclass.__name__, dbrow.id)},
                     resp.get_small_icon("delete")),
             )
         )
         firstname = colnames[0]
         row.new_column(
             NM("A", {"href": request.resolver.get_url(testcase_view, tcid=dbrow.id)},
                     getattr(dbrow, firstname))
         )
         for colname in colnames[1:]:
             row.new_column(getattr(dbrow, colname))
     return resp.finalize()
예제 #12
0
 def get(self, request, tablename=None):
     klass = get_model(tablename)
     title = "Creating new %s" % (tablename, )
     resp = framework.ResponseDocument(request, doc_constructor, title=title)
     resp.new_para(title)
     form = resp.add_form(action=request.get_url(addentry, tablename=tablename))
     webhelpers.build_add_form(form, klass)
     return resp.finalize()
예제 #13
0
    def post(self, request, tcid):
        dbrow = get_testcase(tcid)
        data = request.POST
        if data.get("completed") == "0": # yes
            if data.get("passfail") == "0": # yes
                result = webhelpers.PASSED
            else:
                result = webhelpers.FAILED
        else:
            result = webhelpers.INCOMPLETE

        username = request.session["username"]
        tester = models.User.get_by_username(webhelpers.dbsession, username)
        build=webhelpers.resolve_build(data.get("build"))

        rr = models.create(models.TestResult,
                objecttype=webhelpers.RUNNER,
                testcase=None,
                environment=webhelpers.resolve_environment(data.get("environment")),
                build=build,
                tester=tester,
                testversion=None,
                parent=None,
                starttime=data.get("starttime"),
                endtime=str(models.tables.time_now()),
                arguments=None,
                result=result,
                diagnostic=None,
                note=None,
                valid=True,
            )
        webhelpers.dbsession.add(rr)
        tr = models.create(models.TestResult,
                objecttype=webhelpers.TEST,
                testcase=dbrow,
                environment=None,
                build=build,
                tester=tester,
                testversion=None,
                parent=rr,
                starttime=data.get("starttime"),
                endtime=str(models.tables.time_now()),
                arguments=None,
                result=result,
                diagnostic=IF(result != webhelpers.PASSED, data.get("note")),
                note=IF(result == webhelpers.PASSED, data.get("note")),
                valid=True,
            )
        webhelpers.dbsession.add(tr)
        try:
            webhelpers.dbsession.commit()
        except (DataError, IntegrityError), err:
            webhelpers.dbsession.rollback()
            title = "Test runner error"
            resp = framework.ResponseDocument(request, testcase_run_constructor, title=title)
            resp.doc.new_para(err, class_="error")
            resp.doc.new_para("There was an error recording this test. Please try again.")
            return resp.finalize()
예제 #14
0
def headers(request):
    resp = framework.ResponseDocument(request, doc_constructor, 
             title="Request Headers",
             stylesheet=request.get_url("css", name="headers.css"))
    resp.doc.nav.append(resp.anchor2(main, "Web Tools"))
    get_header_table(resp.doc.content, request.META)
    frm = resp.doc.content.add_form(method="get", action=request.get_url(emailrequest))
    frm.add_textinput("rcpt", "Email")
    frm.add_input(type="submit", value="Send")
    return resp.finalize()
예제 #15
0
    def get(self, request):
        resp = framework.ResponseDocument(request, main_constructor)
        NM = resp.doc.nodemaker
        resp.new_para("Test Management.")
        resp.doc.append(
          NM("UL", None,
            NM("LI", None,
                    NM("A", {"href": request.resolver.get_url(testcase_list)}, "Test cases."),
            ),
#            NM("LI", None,
#                    NM("A", {"href": request.resolver.get_url(testresults_list)}, "Latest test results."),
#            ),
          )
        )
        return resp.finalize()
예제 #16
0
def listall(request):
    resp = framework.ResponseDocument(request, doc_constructor,
             title="Tables")
    cycler = itertools.cycle(["row1", "row2"])
    tbl = resp.doc.add_table(width="100%")
    tbl.caption("Tables")
    tbl.new_headings("Model name")
    for tname in sorted(list(get_tables())):
        if not hasattr(getattr(models, tname), "ROW_DISPLAY"):
            continue
        row = tbl.new_row()
        setattr(row, "class_", cycler.next())
        col = row.new_column(resp.nodemaker("A",
                {"href": request.get_url(listtable, tablename=tname)},  tname))
    return resp.finalize()
예제 #17
0
파일: views.py 프로젝트: wildone/pycopia
def headers(request):
    resp = framework.ResponseDocument(request,
                                      doc_constructor,
                                      title="Request Headers",
                                      stylesheet=request.get_url(
                                          "css", name="headers.css"))
    resp.doc.nav.append(resp.anchor2("/", "Home"))
    resp.doc.nav.append(resp.anchor2(main, "Web Tools"))
    resp.doc.header.new_para(
        "These are the headers your browser sent. You can mail a table of them to yourself."
    )
    get_header_table(resp.doc.content, request.environ)
    frm = resp.doc.content.add_form(method="get",
                                    action=request.get_url(emailrequest))
    frm.add_textinput("rcpt", "Email")
    frm.add_input(type="submit", value="Send")
    return resp.finalize()
예제 #18
0
def main(request):
    resp = framework.ResponseDocument(request,
                                      ts_page_constructor,
                                      title="TestSuite Editor")
    return resp.finalize()
예제 #19
0
파일: db.py 프로젝트: tijmengit/pycopia
def metadata(request):
    resp = framework.ResponseDocument(request,
                                      metadata_page_constructor,
                                      title="Metadata Viewer")
    return resp.finalize()
예제 #20
0
파일: db.py 프로젝트: tijmengit/pycopia
def main(request):
    resp = framework.ResponseDocument(request,
                                      dbedit_page_constructor,
                                      title="Database Editor")
    return resp.finalize()
예제 #21
0
파일: eqedit.py 프로젝트: tijmengit/pycopia
def main(request):
    resp = framework.ResponseDocument(request, eqedit_constructor)
    return resp.finalize()
예제 #22
0
def main(request):
    resp = framework.ResponseDocument(request,
                                      cs_page_constructor,
                                      title="Countryset Editor")
    return resp.finalize()
예제 #23
0
def config_main(request):
    resp = framework.ResponseDocument(request,
                                      config_page_constructor,
                                      title="Config Editor")
    return resp.finalize()