qmsk/web/json.py
author Tero Marttila <terom@paivola.fi>
Fri, 30 Jan 2015 14:05:20 +0200
changeset 110 7af0b8ce698f
parent 108 e77b7c324a32
child 111 530d215d5df1
permissions -rw-r--r--
qmsk.web.json: CORS_ORIGIN/CORS_METHODS
108
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
import json
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
class JSONMixin:
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
    MIMETYPE = 'application/json'
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
110
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
     6
    CORS_ORIGIN = None
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
     7
    CORS_METHODS = None
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
     8
    
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
     9
    def headers (self):
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    10
        if self.CORS_ORIGIN:
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    11
            yield 'Access-Control-Allow-Origin', self.CORS_ORIGIN
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    12
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    13
        if self.CORS_METHODS:
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    14
            yield 'Access-Control-Allow-Methods', ', '.join(self.CORS_METHODS)
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    15
108
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    def render_json(self, **parms):
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
        raise NotImplementedError()
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    def render_response(self, **params):
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
        data = self.render_json(**params)
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
        return json.dumps(data)
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23