Example #1
0
def show_form(cursor):
    return """
    <form action="web.py" method="post" accept-charset="utf-8" style="padding:10px;">
        <input type="hidden" name="mode" id="mode" value="emulate_user" />
        
        <table border="0" cellspacing="0" cellpadding="5">
            <tr>
                <td><label for="user_id">User:</label></td>
                <td>{user_id}</td>
            </tr>
            <tr>
                <td><label for="emulate_mode">Mode:</label></td>
                <td><input type="text" name="emulate_mode" id="emulate_mode" value="" /></td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" value="Emulate" style="width:95%;" />
                </td>
            </tr>
        </table>
    </form>
    """.format(
        user_id = html_f.option_box("user_id", common_q.get_all(cursor, user.User), element_property="username"),
    )
Example #2
0
def main(cursor, query_filter=""):
    query_filter = common_f.get_val("filter", query_filter)

    if query_filter == "":
        error_dict = common_q.get_all(cursor, error.Error, where="fixed = False", orderby="timestamp DESC")

    elif query_filter == "today":
        today = datetime.date.today()
        today = time.mktime(today.timetuple())
        error_dict = common_q.get_all(
            cursor, error.Error, where="timestamp >= %d AND fixed = False" % today, orderby="timestamp DESC"
        )

    else:
        error_dict = common_q.get_all(
            cursor,
            error.Error,
            where="mode='%s' and fixed = False" % database_f.escape(query_filter),
            orderby="timestamp DESC",
        )

    output = []

    if len(error_dict) > 0:
        user_dict = common_q.get_all(cursor, user.User)
        user_dict[-1] = user.User(username="******")
        output.append(
            """<table border="0" cellspacing="0" cellpadding="5" style="width:100%;">
            <tr class="row2">
                <th>Date</th>
                <th>Mode</th>
                <th>Func Call</th>
                <th>Type</th>
                <th>User</th>
                <th colspan="2">&nbsp;</th>
            </tr>
            """
        )

        i = 1
        for error_id, the_error in error_dict.items():
            i += 1

            the_date = the_error.timestamp

            output.append(
                """
            <tr class="row{row}" id="row{error_id}">
                <td>{date}</td>
                <td>{mode}</td>
                <td>{function_call}</td>
                <td>{etype}</td>
                <td>{user}</td>
                <td class="block_cell"><a href="web.py?mode=edit_error&amp;error={error_id}">View</a></td>
                <td class="block_cell"><a href="#" onclick="{onclick}">Fix</a></td>
            </tr>""".format(
                    error_id=error_id,
                    row=i % 2,
                    etype=the_error.exception_type,
                    date=common_f.display_date(the_date, "%d of %B at %H:%M"),
                    mode="No mode specified" if the_error.mode == "" else the_error.mode,
                    function_call="" if the_error.function_call == "" else the_error.function_call,
                    user=user_dict[the_error.user_id].username,
                    onclick="""$('#ajax_target').load('web.py', {'mode':'edit_error', 'error':'%d', 'sub_mode':'fix'}); $('#row%d').hide(); return false;"""
                    % (error_id, error_id),
                )
            )

        output.append("</table>")

    else:
        output.append("<div style='padding:10px;'>No errors found</div>")

    modes = {}

    # Select all the groups possible
    query = """SELECT mode FROM errors GROUP BY mode"""
    try:
        cursor.execute(query)
    except Exception as e:
        raise Exception("Database error: %s\nQuery: %s" % (str(e.args[0]).replace("\n", ""), query))
    for row in cursor:
        modes[row["mode"]] = row["mode"]

    page_data["Rows"] = len(error_dict)
    page_data["Title"] = "Error list (%d)" % len(error_dict)
    page_data[
        "Filters"
    ] = """
        <form action="web.py" method="get" accept-charset="utf-8" style="float: left;">
            <a href="web.py?mode=list_errors">All errors</a>
            <a href="web.py?mode=list_errors&amp;filter=today">Todays errors</a>
            
            &nbsp;&nbsp;&nbsp;
            
            <input type="hidden" name="mode" value="list_errors" />
            
            {}
            
            <input type="submit" value="Sort by mode" />
        </form>
    """.format(
        html_f.option_box("filter", modes, selected=query_filter)
    )

    return "".join(output)
Example #3
0
 def test_form_elements(self):
     """There won't be a lot gained from testing the actual output of these
     functions so what we're going to do is ensure we get _some_ output
     and that we don't cause an exception"""
     
     self.test_targets.extend([
         html_f.check_box,
         html_f.doubleclick_text,
         html_f.doubleclick_text_full,
         html_f.live_option_box,
         html_f.option_box,
         html_f.text_box,
         html_f.textarea,
     ])
     
     # check_box(name, checked=False, custom_id=''):
     vals = itertools.product(
         ["name1", "name2"],
         [True, False],
         ["", "custom_id"],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.check_box(*args), "")
     
     # doubleclick_text(table, field, where_id, value, label_style="", size=10):
     vals = itertools.product(
         ["table1", ""],
         ["field1", ""],
         [0, 1, 2],
         ["value1", 5],
         ["", "font-weight:bold;"],
         [0, 5, 10],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.doubleclick_text(*args), "")
     
     # doubleclick_text_full(table, field, where_field, value, label_style="", size=10):
     vals = itertools.product(
         ["table1", ""],
         ["field1", ""],
         ["id=5", "name='x'"],
         [0, 1, "X"],
         ["", "font-weight:bold;"],
         [0, 5, 10],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.doubleclick_text_full(*args), "")
     
     # live_option_box(elements, table, field, where_id, value, tab_index = -1, style="", disabled=[], element_property="name", sort=True):
     vals = itertools.product(
         [{"1":"a","2":"b","3":"c"}],
         ["table1", ""],
         ["field1", ""],
         [0, 1, 2],
         ["value1", 5],
         [-1, 10, 1000000],
         ["", "font-weight:bold;"],
         [[1,2,3], []],
         ["name", "property-name"],
         [True, False],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.live_option_box(*args), "")
     
     # option_box(name, elements, selected="", tab_index = -1, custom_id="<>", onchange="", style="", disabled=[], insert_dud=False, element_property="name", sort=True):
     vals = itertools.product(
         ["name1", ""],
         [{"1":"a","2":"b","3":"c"}],
         ["selected", ""],
         [-1, 10, 1000000],
         ["custom_id", "<>", ""],
         ["onchange", ""],
         ["style", ""],
         [[1,2,3], []],
         ["Insert dud", False],
         ["", "element property"],
         [True, False],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.option_box(*args), "")
     
     # text_box(name, text='', size=15, tabIndex=-1, onchange='', custom_id='<>', style="", warn_on=None, disabled=False):
     vals = itertools.product(
         ["name1", ""],
         ["", "some text"],
         [0, 1, 15, 2000],
         [-1, 10, 1000000],
         ["onchange", ""],
         ["custom_id", "<>", ""],
         ["style", ""],
         [None],# Needs to be a function or none
         [True, False],
     )
     
     for args in vals:
         self.assertNotEqual(html_f.text_box(*args), "")
     
     # textarea(name, text='', rows=6, cols=30, tabIndex=-1, onchange='', custom_id='<>', style="", warn_on=None):
     vals = itertools.product(
         ["name1", ""],
         ["", "some text"],
         [0, 6, 100],
         [0, 30, 1000],
         [-1, 30, 1000],
         ["onchange", ""],
         ["custom_id", "<>", ""],
         ["style", ""],
         [None],# Needs to be a function or none
     )
     
     for args in vals:
         self.assertNotEqual(html_f.textarea(*args), "")