示例#1
0
    def test_custom_gettext(self):

        def my_gettext(message):
            return 'my_' + message

        set_gettext(my_gettext)
        assert gettext('hello') == 'my_hello'
示例#2
0
    def test_i18n(self):
        # i18n support should be kept, because it's pretty cool to have this !
        def my_gettext(message):
            return 'OMG !!! ' + message

        set_gettext(my_gettext)

        ma_schema_cls = self.User.schema.as_marshmallow_schema()
        ret = ma_schema_cls().load({'name': 'John', 'birthday': 'not_a_date', 'dummy_field': 'dummy'})
        assert ret.errors == {'birthday': ['OMG !!! Not a valid datetime.'],
                              '_schema': ['OMG !!! Unknown field name dummy_field.']}
示例#3
0
    def test_i18n(self):
        # i18n support should be kept, because it's pretty cool to have this !
        def my_gettext(message):
            return 'OMG !!! ' + message

        set_gettext(my_gettext)

        ma_schema_cls = self.User.schema.as_marshmallow_schema()
        ret = ma_schema_cls().load({'name': 'John', 'birthday': 'not_a_date', 'dummy_field': 'dummy'})
        assert ret.errors == {'birthday': ['OMG !!! Not a valid datetime.'],
                              '_schema': ['OMG !!! Unknown field name dummy_field.']}
示例#4
0
    def test_document_validation(self):

        class Client(Document):
            phone_number = fields.StrField(validate=validate.Regexp(r'^[0-9 ]+$'))

        def my_gettext(message):
            return message.upper()

        set_gettext(my_gettext)
        with pytest.raises(ValidationError) as exc:
            Client(phone_number='not a phone !')
        assert exc.value.args[0] == {'phone_number': ['STRING DOES NOT MATCH EXPECTED PATTERN.']}
示例#5
0
    def test_document_validation(self):
        class Client(Document):
            phone_number = fields.StrField(
                validate=validate.Regexp(r'^[0-9 ]+$'))

        def my_gettext(message):
            return message.upper()

        set_gettext(my_gettext)
        with pytest.raises(ValidationError) as exc:
            Client(phone_number='not a phone !')
        assert exc.value.args[0] == {
            'phone_number': ['STRING DOES NOT MATCH EXPECTED PATTERN.']
        }
示例#6
0
    def test_i18n(self):
        # i18n support should be kept, because it's pretty cool to have this !
        def my_gettext(message):
            return 'OMG !!! ' + message

        set_gettext(my_gettext)

        ma_schema_cls = self.User.schema.as_marshmallow_schema()
        with pytest.raises(marshmallow.ValidationError) as excinfo:
            ma_schema_cls().load({
                'name': 'John',
                'birthday': 'not_a_date',
                'dummy_field': 'dummy'
            })
        assert excinfo.value.messages == {
            'birthday': ['OMG !!! Not a valid datetime.'],
            'dummy_field': ['OMG !!! Unknown field.']
        }
示例#7
0
 def teardown_method(self, method):
     # Reset i18n config before each test
     set_gettext(None)
示例#8
0
 def teardown_method(self, method):
     # Reset i18n config before each test
     set_gettext(None)
示例#9
0
import json
import datetime
from twisted.internet import reactor
from twisted.internet.defer import inlineCallbacks, returnValue
from klein import Klein
from bson import ObjectId
from txmongo import MongoConnection
from klein_babel import gettext, locale_from_request

from umongo import Instance, Document, fields, ValidationError, set_gettext
from umongo.marshmallow_bonus import SchemaFromUmongo

app = Klein()
db = MongoConnection().demo_umongo
instance = Instance(db)
set_gettext(gettext)


class MongoJsonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (datetime.datetime, datetime.date)):
            return obj.isoformat()
        elif isinstance(obj, ObjectId):
            return str(obj)
        return json.JSONEncoder.default(self, obj)


def jsonify(request, *args, **kwargs):
    """
    jsonify with support for MongoDB ObjectId
    """
示例#10
0
from functools import partial

from umongo import Instance, Document, fields, ValidationError, set_gettext
from umongo.marshmallow_bonus import SchemaFromUmongo

import logging

logging.basicConfig(level=logging.DEBUG)

app = muffin.Application(__name__,
                         PLUGINS=('muffin_babel', ),
                         BABEL_LOCALES_DIRS=['translations'])
db = AsyncIOMotorClient()['demo_umongo']
instance = Instance(db)

set_gettext(app.ps.babel.gettext)


@app.ps.babel.locale_selector
def set_locale(request):
    """Get locale based on request Accept-Language header"""
    return app.ps.babel.select_locale_by_request(request)


class MongoJsonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (datetime.datetime, datetime.date)):
            return obj.isoformat()
        elif isinstance(obj, ObjectId):
            return str(obj)
        return json.JSONEncoder.default(self, obj)
示例#11
0
文件: app.py 项目: ajdavis/umongo
from datetime import datetime
from flask import Flask, abort, jsonify, request
from flask.ext.babel import Babel, gettext
from bson import ObjectId
from pymongo import MongoClient

from umongo import Document, fields, ValidationError, set_gettext


app = Flask(__name__)
db = MongoClient().demo_umongo
babel = Babel(app)
set_gettext(gettext)


# available languages
LANGUAGES = {
    'en': 'English',
    'fr': 'Français'
}


@babel.localeselector
def get_locale():
    return request.accept_languages.best_match(LANGUAGES.keys())


class User(Document):
    nick = fields.StrField(required=True, unique=True)
    firstname = fields.StrField()
    lastname = fields.StrField()
示例#12
0
    def test_custom_gettext(self):
        def my_gettext(message):
            return 'my_' + message

        set_gettext(my_gettext)
        assert gettext('hello') == 'my_hello'