qmsk/web/json.py
author Tero Marttila <terom@paivola.fi>
Fri, 30 Jan 2015 14:28:15 +0200
changeset 111 530d215d5df1
parent 110 7af0b8ce698f
child 112 b5e0939124b1
permissions -rw-r--r--
qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
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
111
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
     8
    CORS_HEADERS = None
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
     9
    CORS_CREDENTIALS = None
110
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    10
    
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    11
    def headers (self):
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    12
        if self.CORS_ORIGIN:
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    13
            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
    14
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    15
        if self.CORS_METHODS:
7af0b8ce698f qmsk.web.json: CORS_ORIGIN/CORS_METHODS
Tero Marttila <terom@paivola.fi>
parents: 108
diff changeset
    16
            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
    17
111
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    18
        if self.CORS_HEADERS:
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    19
            yield 'Access-Control-Allow-Headers', ', '.join(self.CORS_HEADERS)
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    20
        
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    21
        if self.CORS_CREDENTIALS:
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    22
            yield 'Access-Control-Allow-Credentials', 'true'
530d215d5df1 qmsk.web.json: CORS_HEADERS CORS_CREDENTIALS
Tero Marttila <terom@paivola.fi>
parents: 110
diff changeset
    23
108
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    def render_json(self, **parms):
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
        raise NotImplementedError()
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    def render_response(self, **params):
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        data = self.render_json(**params)
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
        return json.dumps(data)
e77b7c324a32 qmsk.web.json
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31