def create_html_tag(tag, body=None, escape_body=False, escape_attr=True, indent=0, attrs=None, **other_attrs): """ Create an HTML tag. This function create a full HTML tag, putting toghether an optional inner body and a dictionary of attributes. >>> print create_html_tag ("select", create_html_tag("h1", ... "hello", other_attrs={'class': "foo"})) <select> <h1 class="foo"> hello </h1> </select> @param tag: the tag (e.g. "select", "body", "h1"...). @type tag: string @param body: some text/HTML to put in the body of the tag (this body will be indented WRT the tag). @type body: string @param escape_body: wether the body (if any) must be escaped. @type escape_body: boolean @param escape_attr: wether the attribute values (if any) must be escaped. @type escape_attr: boolean @param indent: number of level of indentation for the tag. @type indent: integer @param attrs: map of attributes to add to the tag. @type attrs: dict @return: the HTML tag. @rtype: string """ if attrs is None: attrs = {} attrs.update(other_attrs) out = "<%s" % tag for key, value in attrs.iteritems(): if escape_attr: value = escape_html(value, escape_quotes=True) out += ' %s="%s"' % (key, value) if body: out += ">\n" if escape_body: body = escape_html(body) out += indent_text(body, 1) out += "</%s>" % tag else: out += " />" out = indent_text(out, indent) out = out[:-1] # Let's remove trailing new line return out
def create_tag(tag, escaper=EscapedHTMLString, opening_only=False, body=None, escape_body=False, escape_attr=True, indent=0, attrs=None, **other_attrs): """ Create an XML/HTML tag. This function create a full XML/HTML tag, putting toghether an optional inner body and a dictionary of attributes. >>> print create_html_tag ("select", create_html_tag("h1", ... "hello", other_attrs={'class': "foo"})) <select> <h1 class="foo"> hello </h1> </select> @param tag: the tag (e.g. "select", "body", "h1"...). @type tag: string @param body: some text/HTML to put in the body of the tag (this body will be indented WRT the tag). @type body: string @param escape_body: wether the body (if any) must be escaped. @type escape_body: boolean @param escape_attr: wether the attribute values (if any) must be escaped. @type escape_attr: boolean @param indent: number of level of indentation for the tag. @type indent: integer @param attrs: map of attributes to add to the tag. @type attrs: dict @return: the HTML tag. @rtype: string """ if attrs is None: attrs = {} for key, value in other_attrs.iteritems(): if value is not None: if key.endswith('_'): attrs[key[:-1]] = value else: attrs[key] = value out = "<%s" % tag for key, value in attrs.iteritems(): if escape_attr: value = escaper(value, escape_quotes=True) out += ' %s="%s"' % (key, value) if body is not None: if callable(body) and body.__name__ == 'handle_body': body = body() out += ">" if escape_body and not isinstance(body, EscapedString): body = escaper(body) out += body if not opening_only: out += "</%s>" % tag elif not opening_only: out += " />" if indent: out = indent_text(out, indent)[:-1] return EscapedString(out)
def log_sql_query(sql, param=None): """Log SQL query into prefix/var/log/dbquery.log log file. In order to enable logging of all SQL queries, please uncomment one line in run_sql() above. Useful for fine-level debugging only! """ from invenio.config import CFG_LOGDIR from invenio.dateutils import convert_datestruct_to_datetext from invenio.textutils import indent_text log_path = CFG_LOGDIR + '/dbquery.log' date_of_log = convert_datestruct_to_datetext(time.localtime()) message = date_of_log + '-->\n' message += indent_text('Query:\n' + indent_text(str(sql), 2, wrap=True), 2) message += indent_text('Params:\n' + indent_text(str(param), 2, wrap=True), 2) message += '-----------------------------\n\n' try: log_file = open(log_path, 'a+') log_file.writelines(message) log_file.close() except: pass
def log_sql_query_cached(key, result, hit_p): """Log SQL query cached into prefix/var/log/dbquery.log log file. In order to enable logging of all SQL queries, please uncomment two lines in run_sql_cached() above. Useful for fine-level debugging only! """ from invenio.config import CFG_LOGDIR from invenio.dateutils import convert_datestruct_to_datetext from invenio.textutils import indent_text log_path = CFG_LOGDIR + '/dbquery.log' date_of_log = convert_datestruct_to_datetext(time.localtime()) message = date_of_log + '-->\n' message += indent_text('Key:\n' + indent_text(str(key), 2, wrap=True), 2) message += indent_text('Result:\n' + indent_text(str(result) + (hit_p and ' HIT' or ' MISS'), 2, wrap=True), 2) message += 'Cached queries: %i\n\n' % len(_db_cache) try: log_file = open(log_path, 'a+') log_file.writelines(message) log_file.close() except: pass
def log_sql_query(dbhost, sql, param=None): """Log SQL query into prefix/var/log/dbquery.log log file. In order to enable logging of all SQL queries, please uncomment one line in run_sql() above. Useful for fine-level debugging only! """ from flask import current_app from invenio.config import CFG_LOGDIR from invenio.dateutils import convert_datestruct_to_datetext from invenio.textutils import indent_text date_of_log = convert_datestruct_to_datetext(time.localtime()) message = date_of_log + '-->\n' message += indent_text('Host:\n' + indent_text(str(dbhost), 2, wrap=True), 2) message += indent_text('Query:\n' + indent_text(str(sql), 2, wrap=True), 2) message += indent_text('Params:\n' + indent_text(str(param), 2, wrap=True), 2) message += '-----------------------------\n\n' try: current_app.logger.info(message) except: pass