Example #1
0
import simplejson as json

from flask import g
from flask import Flask
from flask import request

import r3d2msa as r3d

import mimerender


app = Flask(__name__, static_url_path='/r3d-2-msa/static')

# Define some content types
# TODO: Are these good types?
mimerender.register_mime('fasta', ('text/fasta',))
mimerender.register_mime('stockholm', ('text/stockholm',))
mimerender.register_mime('clustal', ('text/clustal',))
mimerender = mimerender.FlaskMimeRender()


def examples():
    """Get all known examples. This loads a JSON file for examples as this is
    pretty basic configuration stuff and doesn't need a connection to a
    database.

    :returns: A list of the examples used.
    """

    with open(app.config['examples'], 'rb') as raw:
        return json.load(raw)
Example #2
0
import mimerender

mimerender.register_mime('pdf', ('application/pdf', ))
mimerender = mimerender.FlaskMimeRender(global_charset='UTF-8')


def render_pdf(html):
    from xhtml2pdf import pisa
    from cStringIO import StringIO
    pdf = StringIO()
    pisa.CreatePDF(StringIO(html.encode('utf-8')), pdf)
    resp = pdf.getvalue()
    pdf.close()
    return resp


@app.route('/invoice/<invoice_id>/', methods=['GET'])
@login_required
@mimerender(default='html',
            html=lambda html: html,
            pdf=render_pdf,
            override_input_key='format')
def view_invoice(org_id, invoice_id):
    html = render_template('invoice.html', id=invoice_id)
    return {'html': html}  # mimerender requires a dict
Example #3
0
import os.path
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q
from elasticsearch_dsl.query import MultiMatch, Match
from elasticsearch.exceptions import NotFoundError
import yaml
import sys
import json
from rdflib import Graph, plugin
import mimerender
import cgi
import html
import re
from json import dumps

mimerender.register_mime("turtle", ("text/turtle","text/n3"))
mimerender.register_mime("rdfxml", ("application/rdf+xml", "application/xml"))
mimerender.register_mime("nt", ("application/n-triples",))
#mimerender.register_mime("jsonld", ("application/ld+json",))
produces = mimerender.BottleMimeRender()

conf = {}

def find_static():
    cwd = None
    try:
        cwd = os.path.dirname(__file__)
    except NameError:
        cwd = "."
    return os.path.abspath(os.path.join(cwd, "static"))
Example #4
0
import json
import time
import logging
from logging.handlers import RotatingFileHandler

from flask import current_app, Flask, request, Response, render_template, Markup
from weasyprint import HTML, CSS
import mimerender

from queremos import generate_base_letter


mimerender.register_mime('pdf', ('application/pdf',))
mimerender = mimerender.FlaskMimeRender(global_charset='UTF-8')

app = Flask(__name__)
formatter = logging.Formatter("%(asctime)s \t %(message)s") 
handler = RotatingFileHandler('solicitudes.log', maxBytes=100000, backupCount=1)
handler.setFormatter(formatter)
app.logger.addHandler(handler)
app.logger.setLevel(logging.INFO)

def render_pdf(html):
    page_settings = [CSS(string='@page { size: A3; margin: 1cm }')]
    pdf = HTML(string=html).write_pdf(stylesheets=page_settings)
    return pdf

def form_to_json_request(form_answers):
    print(list(form_answers.keys()))
    answers = {
           "fecha": time.strftime("%d/%m/%Y"),
Example #5
0
            raise ArticleNotFound(self.path)

    def __exit__(self, exc_type, exc_val, exc_tb):
        pass


class DefaultConfig(object):
    DEBUG = True
    BLOGROOT = "."
    THEME = "simplex"
    BLOGTITLE = "Powered by Blogstrap"
    HOMEPAGE_MESSAGE = "SUCCESS"

# Registering markdown as a valid MIME.
# More info: https://tools.ietf.org/html/rfc7763
mimerender.register_mime('markdown', ('text/markdown',))

mimerender = mimerender.FlaskMimeRender()


def create_app(config_file=None):
    app = flask.Flask(__name__)
    if config_file:
        app.config.from_pyfile(config_file)
    else:
        app.config.from_object(DefaultConfig)

    def render_html(message):
        return flask.render_template("strapdown.html",
                                     theme=app.config['THEME'],
                                     text=message,
Example #6
0
import json

from mimerender import FlaskMimeRender, register_mime, MimeRenderException

render = FlaskMimeRender()
try:
    register_mime('jsonld', ('application/ld+json', ))
except MimeRenderException:
    # assume already registered
    pass

from flask import render_template
from mimerender import FlaskMimeRender

from config import DEBUG
from error import NotFound

# Following http://stackoverflow.com/q/13480675
render_xml_exception = lambda exception: '<exception>%s</exception>'%exception
render_json_exception = lambda exception: json.dumps({ 'exception' : '; '.join(exception.args)})
render_html_exception = lambda exception: '<html><body>%s</body></html>'%exception
render_txt_exception = lambda exception: exception

def map_exceptions(f):
    mapping = [(NotFound, '404 Not Found')]  # always mapped
    if not DEBUG:
        # only mapped when w/o Werkzeug
        mapping.append([
                (ValueError, '500 Internal Server Error'),
                (NameError, '500 Internal Server Error'),
                ])
Example #7
0
from botocore.errorfactory import ClientError
from flask import render_template, request
from flask.views import MethodView
from flask_sse import sse
from mimerender import FlaskMimeRender, register_mime
from werkzeug.exceptions import NotFound, Unauthorized

from flask_mongorest import methods
from flask_mongorest.exceptions import ValidationError
from flask_mongorest.utils import encode_default

TIMEOUT = 55 # in seconds
BUCKET = os.environ.get("S3_DOWNLOADS_BUCKET", "mongorest-downloads")
s3_client = boto3.client("s3")
flask_mimerender = FlaskMimeRender(global_override_input_key="short_mime")
register_mime("gz", ("application/gzip",))


def render_json(**payload):
    return ujson.dumps(payload, allow_nan=True, default=encode_default)


def render_html(**payload):
    d = ujson.dumps(payload, default=encode_default, sort_keys=True, indent=4)
    return render_template("mongorest/debug.html", data=d)


def render_gz(**payload):
    s3 = payload.get("s3")

    if s3 and s3["update"]: