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
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
def main(request): resp = framework.ResponseDocument(request, ts_page_constructor, title="TestSuite Editor") return resp.finalize()
def metadata(request): resp = framework.ResponseDocument(request, metadata_page_constructor, title="Metadata Viewer") return resp.finalize()
def main(request): resp = framework.ResponseDocument(request, dbedit_page_constructor, title="Database Editor") return resp.finalize()
def main(request): resp = framework.ResponseDocument(request, eqedit_constructor) return resp.finalize()
def main(request): resp = framework.ResponseDocument(request, cs_page_constructor, title="Countryset Editor") return resp.finalize()
def config_main(request): resp = framework.ResponseDocument(request, config_page_constructor, title="Config Editor") return resp.finalize()