Esempio n. 1
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer('json3', 'django.core.serializers.json')

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn('json3', public_formats)
        self.assertIn('json2', public_formats)
        self.assertIn('xml', public_formats)
Esempio n. 2
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer("json3", "django.core.serializers.json")

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn("json3", public_formats)
        self.assertIn("json2", public_formats)
        self.assertIn("xml", public_formats)
Esempio n. 3
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer("json3", "django.core.serializers.json")

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn("json3", public_formats)
        self.assertIn("json2", public_formats)
        self.assertIn("xml", public_formats)
Esempio n. 4
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer('json3', 'django.core.serializers.json')

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn('json3', public_formats)
        self.assertIn('json2', public_formats)
        self.assertIn('xml', public_formats)
Esempio n. 5
0
    def test_unregister(self):
        "Unregistering a serializer doesn't cause the registry to be repopulated. Refs #14823"
        serializers.unregister_serializer('xml')
        serializers.register_serializer('json3', 'django.core.serializers.json')

        public_formats = serializers.get_public_serializer_formats()

        self.assertNotIn('xml', public_formats)
        self.assertIn('json3', public_formats)
Esempio n. 6
0
    def test_unregister(self):
        "Unregistering a serializer doesn't cause the registry to be repopulated. Refs #14823"
        serializers.unregister_serializer('xml')
        serializers.register_serializer('json3', 'django.core.serializers.json')

        public_formats = serializers.get_public_serializer_formats()

        self.assertNotIn('xml', public_formats)
        self.assertIn('json3', public_formats)
    def run(cls, instance):
        from django.core.serializers import register_serializer, serialize
        from django.db.models import Model

        if not isinstance(instance, Model):
            raise SkipBackend()

        register_serializer('bluedata', 'apification.utils.django_serializer')
        
        fake_qs = instance.__class__.objects.none()
        fake_qs.result_cache = [instance]
        return serialize("bluedata", fake_qs)[0]
Esempio n. 8
0
    def test_unregister(self):
        """
        Unregistering a serializer doesn't cause the registry to be
        repopulated.
        """
        serializers.unregister_serializer("xml")
        serializers.register_serializer("json3", "django.core.serializers.json")

        public_formats = serializers.get_public_serializer_formats()

        self.assertNotIn("xml", public_formats)
        self.assertIn("json3", public_formats)
Esempio n. 9
0
 def test_custom_serializer(self):
     register_serializer('custom', 'examples.django_roa_client.serializers')
     initial_roa_format_setting = settings.ROA_FORMAT
     settings.ROA_FORMAT = 'custom'
     page = RemotePage.objects.create(title=u'A custom serialized page')
     self.assertEqual(repr(page), '<RemotePage: A custom serialized page (1)>')
     r = Resource('http://127.0.0.1:8081/django_roa_server/remotepage/', filters=ROA_FILTERS)
     response = r.get(**{'format': 'custom'})
     self.assertEqual(repr(response.body_string()), '\'<?xml version="1.0" encoding="utf-8"?>\\n<django-test version="1.0">\\n <object pk="1" model="django_roa_server.remotepage">\\n  <field type="CharField" name="title">A custom serialized page</field>\\n </object>\\n</django-test>\'')
     self.assertEqual(len(RemotePage.objects.all()), 1)
     page = RemotePage.objects.get(id=page.id)
     self.assertEqual(repr(page), '<RemotePage: A custom serialized page (1)>')
     settings.ROA_FORMAT = initial_roa_format_setting
Esempio n. 10
0
    def ready(self):
        """
        Load modules returned by `get_load_modules_when_ready` by default
        when app is ready.
        """
        super().ready()

        serializers.register_serializer("json", "ralph.lib.serializers")

        package = self.module.__name__
        for module in self.get_load_modules_when_ready():
            try:
                import_module('{}.{}'.format(package, module))
            except ImportError:
                pass
Esempio n. 11
0
 def test_custom_serializer(self):
     register_serializer('custom', 'examples.django_roa_client.serializers')
     initial_roa_format_setting = settings.ROA_FORMAT
     settings.ROA_FORMAT = 'custom'
     page = RemotePage.objects.create(title=u'A custom serialized page')
     self.assertEqual(repr(page),
                      '<RemotePage: A custom serialized page (1)>')
     r = Resource('http://127.0.0.1:8081/django_roa_server/remotepage/',
                  filters=ROA_FILTERS)
     response = r.get(**{'format': 'custom'})
     self.assertEqual(
         repr(response.body_string()),
         '\'<?xml version="1.0" encoding="utf-8"?>\\n<django-test version="1.0">\\n <object pk="1" model="django_roa_server.remotepage">\\n  <field type="CharField" name="title">A custom serialized page</field>\\n </object>\\n</django-test>\''
     )
     self.assertEqual(len(RemotePage.objects.all()), 1)
     page = RemotePage.objects.get(id=page.id)
     self.assertEqual(repr(page),
                      '<RemotePage: A custom serialized page (1)>')
     settings.ROA_FORMAT = initial_roa_format_setting
Esempio n. 12
0
    def ready(self):
        """
        Register dbdiff.serializers.json and set debug.

        Enables debug if a DBDIFF_DEBUG environment variable is found.

        It is important to use serializers which dump data in a predictible way
        because this app relies on diff between an expected - user-generated
        and versioned - fixture and dumped database data. This method also
        overrides the default json serializer with dbdiff's.

        When dbdiff is installed, ``dumpdata`` will use its serializers which
        have predictible output and cross-database support, so fixtures dumped
        without dbdiff installed will have to be regenerated after dbdiff is
        installed to be usable with dbdiff.

        """
        self.debug = os.environ.get('DBDIFF_DEBUG', False)
        register_serializer('json', 'dbdiff.serializers.json')
        patch_transaction_test_case()
Esempio n. 13
0
class ReviewTestCase(TestCase):
    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = [
        'api/tests/fixtures/user.yml', 'api/tests/fixtures/climb.yml',
        'api/tests/fixtures/review.yml'
    ]

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()

    def test_review_viewset_list_route(self):
        request = self.factory.get('/api/review')
        view = ReviewViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 5)

    def test_review_viewset_list_route_filters_by_climb(self):
        request = self.factory.get('/api/review?climb=1')
        view = ReviewViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_review_viewset_list_route_filters_by_user(self):
        request = self.factory.get('/api/review?user=1')
        view = ReviewViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_review_viewset_list_route_for_auth_user(self):
        request = self.factory.get('/api/review/me')
        view = ReviewViewSet.as_view(actions={'get': 'me'})
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_review_viewset_list_route_for_auth_user_with_auth_error(self):
        request = self.factory.get('/api/review/me')
        view = ReviewViewSet.as_view(actions={'get': 'me'})
        response = view(request)
        self.assertEqual(response.status_code, 403)

    def test_review_viewset_retrieve_route(self):
        request = self.factory.get('/api/review')
        view = ReviewViewSet.as_view(actions={'get': 'retrieve'})
        response = view(request, pk=1)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            set(response.data.keys()),
            set([
                'id', 'climb', 'user', 'text', 'score', 'created_at',
                'updated_at'
            ]))
        self.assertEqual(response.data['climb'], 1)

    def test_review_viewset_create_route(self):
        view = ReviewViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 3, 'score': 4, 'text': "Review"}
        request = self.factory.post('/api/review', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['climb'], 3)
        self.assertEqual(response.data['score'], 4)

    def test_review_viewset_create_route_with_invalid_data(self):
        view = ReviewViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 3, 'score': 8, 'text': "Review"}
        request = self.factory.post('/api/review', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()), set(['score']))

    def test_review_viewset_create_route_with_invalid_repeat_data(self):
        view = ReviewViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 1, 'score': 2, 'text': "Review"}
        request = self.factory.post('/api/review', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_review_viewset_fails_to_create_if_no_user_is_authenticated(self):
        view = ReviewViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 3, 'score': 4, 'text': "Review"}
        request = self.factory.post('/api/review', data=data, format='json')
        response = view(request)
        self.assertEqual(response.status_code, 401)

    def test_review_viewset_update_route_updates_data(self):
        view = ReviewViewSet.as_view(actions={'put': 'update'})
        data = {
            'score': 4,
        }
        request = self.factory.put('/api/review', data=data)
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['score'], 4)
        self.assertEqual(response.data['climb'], 1)

    def test_review_viewset_update_route_fails_to_update_if_no_user_autenticated(
            self):
        view = ReviewViewSet.as_view(actions={'put': 'update'})
        data = {
            'score': 4,
        }
        request = self.factory.put('/api/review', data=data)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_review_viewset_update_route_fails_to_update_if_wrong_user_autenticated(
            self):
        view = ReviewViewSet.as_view(actions={'put': 'update'})
        data = {
            'score': 4,
        }
        request = self.factory.put('/api/review', data=data)
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)

        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)

    def test_review_viewset_destroy_route(self):
        view = ReviewViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/review')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 204)

    def test_review_viewset_delete_route_fails_if_no_user_autenticated(self):
        view = ReviewViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/review')
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_review_viewset_update_route_fails_if_wrong_user_autenticated(
            self):
        view = ReviewViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/review')
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)
Esempio n. 14
0
from django.core.serializers import register_serializer

register_serializer('roughage', 'roughage.serializers')

from roughage.base import Seed

__all__ = ['Seed']
Esempio n. 15
0
CompactCsvSerializer = Serializer


def parser(stream, **options):
    reader = CsvReader(stream)
    headers = reader.next()
    label, pk = headers[0].split(':')
    yield {label: [pk] + headers[1:]}
    for row in reader:
        yield row


class Deserializer(compact_python.Deserializer):
    "Deserialize a stream or string of compact CSV into DeserializedValuesObject instances."
    multiple_streams = True

    def __init__(self, stream_or_string, **options):
        if isinstance(stream_or_string, bytes):
            stream_or_string = stream_or_string.decode('utf-8')
        if isinstance(stream_or_string, six.string_types):
            self.stream = six.StringIO(stream_or_string)
        else:
            self.stream = stream_or_string
        super(Deserializer, self).__init__(parser(self.stream), **options)


CompactCsvDeserializer = Deserializer

register_serializer('compact_csv', __name__)
Esempio n. 16
0
CompactYamlSerializer = Serializer


def parser(stream):
    lines = []
    for line in iter(stream.readline, ''):
        if len(lines) >= 1000 and line.startswith('-'):
            for obj in yaml.load(''.join(lines)):
                yield obj
            lines = []
        lines.append(line)
    for obj in yaml.load(''.join(lines), Loader=SafeLoader):
        yield obj


class Deserializer(compact_python.Deserializer):
    "Deserialize a stream or string of compact YAML into DeserializedValuesObject instances."

    def __init__(self, stream_or_string, **options):
        if isinstance(stream_or_string, bytes):
            stream_or_string = stream_or_string.decode('utf-8')
        if isinstance(stream_or_string, six.string_types):
            self.stream = six.StringIO(stream_or_string)
        else:
            self.stream = stream_or_string
        super(Deserializer, self).__init__(parser(self.stream), **options)

CompactYamlDeserializer = Deserializer

register_serializer('compact_yaml', __name__)
Esempio n. 17
0
    delegate_position_form_factory,
    FeeForm,
    DatePenaltyForm,
)
from regimun_app.models import Conference, Committee, Country, DelegatePosition, School, Payment, Fee, DatePenalty
from regimun_app.utils import UnicodeCSVDictReader
from regimun_app.views.school_admin import is_school_registered
from regimun_app.views.secretariat_admin import secretariat_authenticate
import csv
import exceptions
import inspect
import settings
import string

if "jsondisplay" not in get_serializer_formats():
    register_serializer("jsondisplay", "regimun_app.serializers.DisplayNameJsonSerializer")


@login_required
def conference_ajax_functions(request, conference_slug, func_name):
    conference = get_object_or_404(Conference, url_name=conference_slug)
    func_name = string.replace(func_name, "-", "_")

    if (
        secretariat_authenticate(request, conference)
        and func_name in globals()
        and inspect.isfunction(globals()[func_name])
    ):
        return_value = globals()[func_name](request, conference)
        if return_value != None:
            if isinstance(return_value, HttpResponse):
from django.db.models.loading import get_model
from django.db.models.fields.related import ManyToManyField, RelatedField
from django.db.models.query import QuerySet
from django.core.serializers import deserialize, register_serializer
from django.contrib.contenttypes.models import ContentType
from django.db.models.signals import post_save, pre_delete, pre_save, post_delete
from django.utils.encoding import force_text

from reversion.models import Revision, Version, VERSION_ADD, VERSION_CHANGE, VERSION_DELETE, has_int_pk, pre_revision_commit, post_revision_commit
from celery import current_app
from celery.contrib.methods import task_method
from celery.utils.log import get_task_logger
from celery import current_task

logger = get_task_logger(__name__)
register_serializer('yaml_custom_m2m', "reversion.serializer.yaml_serializer_custom")

was_changed_message = u'Изменен {0}:'
changes_template = u"\t- {verbose_name}: \"{value_from}\" -> \"{value_to}\""
no_value_message = u'Нет значения.'
saved_without_changes_message = u"Сохранен без изменений {0}."
was_created_message = u'Создан {0}.'
was_deleted_message = u'Удален {0}.'


def get_object_smart_repr(object):
    return u"{0} {1}".format(force_text(object._meta.verbose_name.capitalize()), force_text(object.__unicode__()))


class VersionAdapter(object):
Esempio n. 19
0
def json_deserializer():
    get_serializer_formats()
    from django.core.serializers import _serializers
    register_serializer('json', 'tb_website.serializers', _serializers)
Esempio n. 20
0
from django.core.serializers import register_serializer
from django.db.models.base import ModelBase
from django.db.models.loading import get_app, get_models
from django.db.models.query import QuerySet

from nicedjango._compat import basestring
from nicedjango.graph.dumper import Dumper
from nicedjango.graph.loader import Loader
from nicedjango.graph.node import Node
from nicedjango.graph.utils import nodes_as_string, sort_nodes
from nicedjango.utils import coerce_tuple, divide_model_def, queryset_from_def, RememberingSet
from nicedjango.utils.py.iter import filter_attrs
from nicedjango.utils.py.string import divide_string

register_serializer('compact_csv', 'nicedjango.serializers.compact_csv')
register_serializer('compact_python', 'nicedjango.serializers.compact_python')
register_serializer('compact_yaml', 'nicedjango.serializers.compact_yaml')

__all__ = ['ModelGraph']


class ModelGraph(object):

    def __init__(self, queries=None, relations=None, app=None, chunksize=100000):
        self.nodes = {}
        self.includes = set()
        self._new_nodes = RememberingSet()
        if app:
            if queries or relations:
                raise ValueError('queries or relations can\'t be defined '
Esempio n. 21
0
# coding=utf-8
from django.core import serializers


serializers.register_serializer('json', 'djmoney.serializers')
Esempio n. 22
0

def parser(stream):
    lines = []
    for line in iter(stream.readline, ''):
        if len(lines) >= 1000 and line.startswith('-'):
            for obj in yaml.load(''.join(lines)):
                yield obj
            lines = []
        lines.append(line)
    for obj in yaml.load(''.join(lines), Loader=SafeLoader):
        yield obj


class Deserializer(compact_python.Deserializer):
    "Deserialize a stream or string of compact YAML into DeserializedValuesObject instances."

    def __init__(self, stream_or_string, **options):
        if isinstance(stream_or_string, bytes):
            stream_or_string = stream_or_string.decode('utf-8')
        if isinstance(stream_or_string, six.string_types):
            self.stream = six.StringIO(stream_or_string)
        else:
            self.stream = stream_or_string
        super(Deserializer, self).__init__(parser(self.stream), **options)


CompactYamlDeserializer = Deserializer

register_serializer('compact_yaml', __name__)
Esempio n. 23
0
import copy
from django.db import models
from django.core import serializers
from django.core.exceptions import ValidationError
from django.utils import timezone

WING_JSON_FORMAT = 'wing_json'
serializers.register_serializer(WING_JSON_FORMAT, __package__ + '.serializer_json')


def create_model_from_request(mod, request):
    if request.method == 'GET':
        data = request.GET
    elif request.method == 'POST':
        data = request.POST
    else:
        raise Exception('unsupported method')

    return create_model_from_dict(mod, data)


ESCAPE_KEYS = ['id']


def create_model_from_dict(mod, dicta):
    m = mod()
    for k, v in dicta.items():
        if k in ESCAPE_KEYS:
            continue

        if hasattr(m, k):
Esempio n. 24
0
                obj = self.model._default_manager.db_manager(using).get_by_natural_key(*self.identifier)
                return obj
            except self.model.DoesNotExist:
                # Pass, since it could be a list of PKs
                pass
        # Is self.identifier the PK value of an instance of the related model?
        else:
            try:
                obj = self.model._default_manager.db_manager(using).get(pk=self.identifier)
                return obj
            except self.model.DoesNotExist:
                raise RelatedObjectError('No %s objects with primary key %s exist.' % \
                    (self.model._meta.object_name, self.identifier)
                )


class DelayedMilkmanDelivery(dict):
    """
    No-op dictionary subclass to aid in identifying the use of Milkman in the
    loader methods. Not the most pythonic way, relying on isinstance for it,
    but the least work to fit this in with the logic that existed before
    Milkman support.
    """
    pass


from django.core.serializers import register_serializer
# Not thread safe according to the register_serializer docstring, don't know
# if it matters here or not.
register_serializer('class', 'class_fixtures.serializer')
Esempio n. 25
0
from regimun_app.forms import jEditableForm, BasicConferenceInfoForm, \
    NewCommitteeForm, NewCountryForm, UploadFileForm, NewPaymentForm, \
    delegate_position_form_factory, FeeForm, DatePenaltyForm
from regimun_app.models import Conference, Committee, Country, DelegatePosition, \
    School, Payment, Fee, DatePenalty
from regimun_app.utils import UnicodeCSVDictReader
from regimun_app.views.school_admin import is_school_registered
from regimun_app.views.secretariat_admin import secretariat_authenticate
import csv
import exceptions
import inspect
import settings
import string

if 'jsondisplay' not in get_serializer_formats():
    register_serializer('jsondisplay', 'regimun_app.serializers.DisplayNameJsonSerializer')

@login_required
def conference_ajax_functions(request, conference_slug, func_name):
    conference = get_object_or_404(Conference, url_name=conference_slug)
    func_name = string.replace(func_name, "-", "_")
    
    if secretariat_authenticate(request, conference) and func_name in globals() and inspect.isfunction(globals()[func_name]):
        return_value = globals()[func_name](request, conference)
        if return_value != None:
            if isinstance(return_value, HttpResponse):
                return return_value
            else:
                return HttpResponse(return_value, mimetype='application/javascript')
                #return HttpResponse("<html><body>" + return_value + "</body></html>")
    
class AchievementTestCase(TestCase):
    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = [
        'api/tests/fixtures/user.yml', 'api/tests/fixtures/climb.yml',
        'api/tests/fixtures/achievement.yml'
    ]

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()

    def test_achievement_viewset_list_route(self):
        request = self.factory.get('/api/achievement')
        view = AchievementViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 6)

    def test_achievement_viewset_list_route_filters_by_climb(self):
        request = self.factory.get('/api/achievement?climb=1')
        view = AchievementViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_achievement_viewset_list_route_filters_by_user(self):
        request = self.factory.get('/api/achievement?user=1')
        view = AchievementViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 4)

    def test_achievement_viewset_list_route_for_auth_user(self):
        request = self.factory.get('/api/achievement/me')
        view = AchievementViewSet.as_view(actions={'get': 'me'})
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(len(response.data['results']), 4)

    def test_achievement_viewset_list_route_for_auth_user_with_auth_error(
            self):
        request = self.factory.get('/api/achievement/me')
        view = AchievementViewSet.as_view(actions={'get': 'me'})
        response = view(request)
        self.assertEqual(response.status_code, 403)

    def test_achievement_viewset_retrieve_route(self):
        request = self.factory.get('/api/achievement')
        view = AchievementViewSet.as_view(actions={'get': 'retrieve'})
        response = view(request, pk=1)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            set(response.data.keys()),
            set(['id', 'climb', 'user', 'time', 'date', 'created_at']))
        self.assertEqual(response.data['climb'], 1)

    def test_achievement_viewset_create_route(self):
        view = AchievementViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 1, 'time': 3600, 'date': "2019-02-12"}
        request = self.factory.post('/api/achievement',
                                    data=data,
                                    format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['climb'], 1)

    def test_achievement_viewset_create_route_with_undefined_required_data(
            self):
        view = AchievementViewSet.as_view(actions={'post': 'create'})
        data = {'time': 3600, 'date': "2019-02-12"}
        request = self.factory.post('/api/achievement',
                                    data=data,
                                    format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()), set(['climb']))

    def test_achievement_viewset_create_route_with_undefined_non_required_data(
            self):
        view = AchievementViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/achievement',
                                    data=data,
                                    format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['climb'], 1)
        self.assertEqual(response.data['time'], None)
        self.assertEqual(response.data['date'], str(date.today()))

    def test_achievement_viewset_fails_to_create_if_no_user_is_authenticated(
            self):
        view = AchievementViewSet.as_view(actions={'post': 'create'})
        data = {'climb': 1, 'time': 3600, 'date': "2019-02-12"}
        request = self.factory.post('/api/achievement',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 401)

    def test_achievement_viewset_update_route_updates_data(self):
        view = AchievementViewSet.as_view(actions={'put': 'update'})
        data = {'time': 1000}
        request = self.factory.put('/api/achievement', data=data)
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['time'], 1000)
        self.assertEqual(response.data['climb'], 1)

    def test_achievement_viewset_update_route_fails_to_update_if_no_user_autenticated(
            self):
        view = AchievementViewSet.as_view(actions={'put': 'update'})
        data = {'time': 1000}
        request = self.factory.put('/api/achievement', data=data)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_achievement_viewset_update_route_fails_to_update_if_wrong_user_autenticated(
            self):
        view = AchievementViewSet.as_view(actions={'put': 'update'})
        data = {'time': 1000}
        request = self.factory.put('/api/achievement', data=data)
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)

        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)

    def test_achievement_viewset_destroy_route(self):
        view = AchievementViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/achievement')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 204)

    def test_achievement_viewset_delete_route_fails_if_no_user_autenticated(
            self):
        view = AchievementViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/achievement')
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_achievement_viewset_update_route_fails_if_wrong_user_autenticated(
            self):
        view = AchievementViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/achievement')
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)
Esempio n. 27
0
# -*- coding: utf-8 -*-
from django.core import serializers

serializers.register_serializer("json", "djmoney.serializers")
Esempio n. 28
0
from django.core.serializers import register_serializer
register_serializer("xlsx", 'expenses.core.serializers.excel')
Esempio n. 29
0
from django.core import serializers as serializers

serializers.register_serializer("json", 'djmoney.serializers')
Esempio n. 30
0
        
        if app_model in self:
            self[app_model] += (mod,)
        else:
            self[app_model] = (mod,)

    def get_for_model(self, app_model):
        try:
            return self[app_model]
        except KeyError:
            return ()
        
transform = Transformer()        

# Django's
register_serializer("xml", "django.core.serializers.xml_serializer")

# Wad O' Stuff
register_serializer("python","apibuilder.wadofstuff.python")
register_serializer("json", "apibuilder.wadofstuff.json")

# Extras
register_serializer('html','apibuilder.serializers.html')
register_serializer('csv','apibuilder.serializers.csv_')
register_serializer('pickle','apibuilder.serializers.pickle')

try:
    register_serializer("yaml", "django.core.serializers.pyyaml")
except ImportError:
    pass
try:
Esempio n. 31
0
class BookmarkTestCase(TestCase):
    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = [
        'api/tests/fixtures/user.yml', 'api/tests/fixtures/climb.yml',
        'api/tests/fixtures/bookmark.yml'
    ]

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()

    def test_bookmark_viewset_list_route(self):
        request = self.factory.get('/api/bookmark')
        view = BookmarkViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 4)

    def test_bookmark_viewset_list_route_fills_climb_data(self):
        request = self.factory.get('/api/bookmark')
        view = BookmarkViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        climb = response.data['results'][0]['climb']
        self.assertEqual(
            set(climb.keys()),
            set([
                'id', 'name', 'altitude', 'extent', 'gradient', 'gain',
                'distance', 'center'
            ]))

    def test_bookmark_viewset_list_route_filters_by_climb(self):
        request = self.factory.get('/api/bookmark?climb=1')
        view = BookmarkViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_bookmark_viewset_list_route_filters_by_user(self):
        request = self.factory.get('/api/bookmark?user=1')
        view = BookmarkViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_bookmark_viewset_list_route_for_auth_user(self):
        request = self.factory.get('/api/bookmark/me')
        view = BookmarkViewSet.as_view(actions={'get': 'me'})
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(len(response.data['results']), 2)

    def test_bookmark_viewset_list_route_for_auth_user_with_auth_error(self):
        request = self.factory.get('/api/bookmark/me')
        view = BookmarkViewSet.as_view(actions={'get': 'me'})
        response = view(request)
        self.assertEqual(response.status_code, 403)

    def test_bookmark_viewset_retrieve_route(self):
        request = self.factory.get('/api/bookmark')
        view = BookmarkViewSet.as_view(actions={'get': 'retrieve'})
        response = view(request, pk=1)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(set(response.data.keys()),
                         set(['id', 'climb', 'user', 'created_at']))
        self.assertEqual(response.data['user'], 1)

    def test_bookmark_viewset_create_route(self):
        view = BookmarkViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 3,
        }
        request = self.factory.post('/api/bookmark', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['climb'], 3)

    def test_bookmark_viewset_fails_to_create_if_data_is_a_duplicate(self):
        view = BookmarkViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/bookmark', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_booomark_viewset_fails_to_create_if_no_user_is_authenticated(
            self):
        view = BookmarkViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/bookmark', data=data, format='json')
        response = view(request)
        self.assertEqual(response.status_code, 401)

    def test_bookmark_viewset_destroy_route(self):
        view = BookmarkViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/bookmark')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 204)

    def test_bookmark_viewset_delete_route_fails_if_no_user_autenticated(self):
        view = BookmarkViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/bookmark')
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_bookmark_viewset_update_route_fails_if_wrong_user_autenticated(
            self):
        view = BookmarkViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/bookmark')
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)
Esempio n. 32
0
 def ready(self):
     register_serializer('yml', 'django.core.serializers.pyyaml')
Esempio n. 33
0
from django.core.serializers import register_serializer

register_serializer('json-no-escape', 'serializers.json_no_escape')
Esempio n. 34
0
from django.core.serializers import register_serializer

register_serializer('pure', 'pure_natural.serializers.pure')
Esempio n. 35
0
        # Grand-parent super
        return super(compact_python.Serializer, self).getvalue()

CompactCsvSerializer = Serializer


def parser(stream, **options):
    reader = CsvReader(stream)
    headers = reader.next()
    label, pk = headers[0].split(':')
    yield {label: [pk] + headers[1:]}
    for row in reader:
        yield row


class Deserializer(compact_python.Deserializer):
    "Deserialize a stream or string of compact CSV into DeserializedValuesObject instances."
    multiple_streams = True

    def __init__(self, stream_or_string, **options):
        if isinstance(stream_or_string, bytes):
            stream_or_string = stream_or_string.decode('utf-8')
        if isinstance(stream_or_string, six.string_types):
            self.stream = six.StringIO(stream_or_string)
        else:
            self.stream = stream_or_string
        super(Deserializer, self).__init__(parser(self.stream), **options)
CompactCsvDeserializer = Deserializer

register_serializer('compact_csv', __name__)
Esempio n. 36
0
class ClimbTestCase(TestCase):
    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = [
        'api/tests/fixtures/user.yml',
        'api/tests/fixtures/climb.yml'
    ]

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()

        self.test_climb = Climb.objects.get(id=1)
        self.listSerializer = ClimbListSerializer(instance=self.test_climb)
        self.oneSerializer = ClimbOneSerializer(instance=self.test_climb)
        self.altimeterSerializer = AltimeterSerializer(instance=self.test_climb)
 
    def test_climb_peak_name(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.peak_name, "Santillana")

    def test_climb_virtual_name(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.name, "Santillana por Ohanes")

    def test_climb_virtual_altitude(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.altitude, 1358.0)

    def test_climb_virtual_extent(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.extent, (-2.754625, 37.005069, -2.718852, 37.090495))

    def test_climb_virtual_gradient(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.gradient, 4.910263399292802)

    def test_climb_virtual_gain(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.gain, 887.0)

    def test_climb_virtual_distance(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.distance, 18.064204053243856)

    def test_climb_virtual_center(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(climb.center, {
            "type": "Point",
            "coordinates": [
                -2.731412423189668, 
                37.04294132621043
            ]
        })

    def test_climb_virtual_kilometers_points(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(len(climb.kilometers),20)
        self.assertEqual(climb.kilometers[1], {
            "altitude": 512.0,
            "distance": 1.0,
            "kmGradient": 4.1
        })
        self.assertEqual(climb.kilometers[19],{
            "altitude": 1358.0,
            "distance": 18.064204053243856,
            "kmGradient": 2.887914419236268
        })

    def test_climb_virtual_area(self):
        climb = Climb.objects.get(pk=1)
        self.assertEqual(len(climb.area),182)
        self.assertEqual(climb.area[0],{
            'altitude': 471.0, 
            'distance': 0.0, 
            'x': 0.0, 
            'y': 0.0
        })
        self.assertEqual(climb.area[-1],{
            "altitude": 1358.0,
            "distance": 18.064204053243856,
            "x": 18.064204053243856,
            "y": 887.0
        })

    def test_list_serializer_contains_expected_geo_fields(self):
        data = self.listSerializer.data
        self.assertEqual(set(data.keys()), set(['id','type','geometry','properties']))

    def test_properties_contains_expected_in_list_serializer(self):
        data = self.listSerializer.data
        self.assertEqual(data['properties'],{ 'name': 'Santillana por Ohanes' })

    def test_list_serializer_contains_geojson_point(self):
        data = self.listSerializer.data
        self.assertEqual(data['geometry']['coordinates'],[-2.719262, 37.005069, 471.0])
        self.assertEqual(data['geometry']['type'], 'Point')

    def test_one_serializer_contains_expected_geo_fields(self):
        data = self.oneSerializer.data
        self.assertEqual(set(data.keys()), set(['id','type','geometry','properties']))

    def test_properties_contains_expected_in_one_serializer(self):
        data = self.oneSerializer.data
        self.assertEqual(set(data['properties'].keys()), set(['name', 'location', 'altitude', 'extent', 'gradient', 'gain', 
            'distance', 'center', 'area', 'kilometers']))

    def test_one_serializer_contains_geojson_point(self):
        data = self.oneSerializer.data
        self.assertEqual(data['geometry']['type'], 'LineString')
        self.assertEqual(len(data['geometry']['coordinates']),670)

    def test_altimeter_serializer_contains_expected_fields(self):
        data = self.altimeterSerializer.data
        self.assertEqual(set(data.keys()), set(['id', 'name', 'altitude', 'extent', 'gradient', 'gain', 
            'distance', 'center', 'kilometers', 'area']))

    def test_climb_viewset_list_route(self):
        request = self.factory.get('/api/climb')
        view = ClimbViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(response.status_code, 200) 
        self.assertEqual(response.data['type'],"FeatureCollection")
        self.assertEqual(len(response.data['features']),3)
    
    def test_climb_viewset_retrieve_route(self):
        request = self.factory.get('/api/climb')
        view = ClimbViewSet.as_view(actions={'get': 'retrieve'})
        response = view(request,pk=1)
        self.assertEqual(response.status_code, 200) 
        self.assertEqual(set(response.data.keys()), set(['id','type','geometry','properties']))

    
    def test_climb_viewset_create_route(self):
        view = ClimbViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb_name': 'Climb',
            'peak_name': 'The Top',
            'path': [(0,0,10),(0.5,0.5,50),(1,1,100),(1.5,1.5,150)],
            'start': [0,0,10],
            'location': [0,0,10],
            'summit': [1.5,1.5,150]
        }
        request = self.factory.post('/api/climb', data=data, format='json')
        auth_user = User.objects.get(id=1)
        force_authenticate(request,user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(response.data['properties']["name"],"The Top por Climb")

    def test_climb_viewset_fails_to_create_if_no_user_is_authenticated(self):
        view = ClimbViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb_name': 'Climb',
            'peak_name': 'The Top',
            'path': [(0,0,10),(0.5,0.5,50),(1,1,100),(1.5,1.5,150)],
            'start': [0,0,10],
            'location': [0,0,10],
            'summit': [1.5,1.5,150]
        }
        request = self.factory.post('/api/climb', data=data, format='json')
        response = view(request)
        self.assertEqual(response.status_code, 401)
    
    
    def test_climb_viewset_update_route_updates_data(self):
        view = ClimbViewSet.as_view(actions={'put': 'update'})
        data = {
            'climb_name':"Ohanes pueblo", 
            'peak_name':"Santillia de Almeria",
        }
        request = self.factory.put('/api/climb', data=data)
        auth_user = User.objects.get(id=1)
        force_authenticate(request,user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 200) 
        self.assertEqual(response.data['properties']['name'],'Santillia de Almeria por Ohanes pueblo')

    def test_climb_viewset_update_route_fails_to_update_if_no_user_autenticated(self):
        view = ClimbViewSet.as_view(actions={'put': 'update'})
        data = {
            'climb_name':"Ohanes pueblo", 
            'peak_name':"Santillia de Almeria",
        }
        request = self.factory.put('/api/climb', data=data)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401) 

    def test_climb_viewset_update_route_fails_to_update_if_wrong_user_autenticated(self):
        view = ClimbViewSet.as_view(actions={'put': 'update'})
        data = {
            'climb_name':"Ohanes pueblo", 
            'peak_name':"Santillia de Almeria",
        }
        request = self.factory.put('/api/climb', data=data)
        wrong_user = User.objects.get(id=2)
        force_authenticate(request,user=wrong_user)

        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403) 

    
    def test_climb_viewset_destroy_route(self):
        view = ClimbViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/climb')
        auth_user = User.objects.get(id=1)
        force_authenticate(request,user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 204) 

    def test_climb_viewset_delete_route_fails_if_no_user_autenticated(self):
        view = ClimbViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/climb')
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401) 

    def test_climb_viewset_update_route_fails_if_wrong_user_autenticated(self):
        view = ClimbViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/climb')
        wrong_user = User.objects.get(id=2)
        force_authenticate(request,user=wrong_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403) 
Esempio n. 37
0
    NewCommitteeForm, NewCountryForm, UploadFileForm, NewPaymentForm, \
    delegate_position_form_factory, FeeForm, DatePenaltyForm
from regimun_app.models import Conference, Committee, Country, DelegatePosition, \
    School, Payment, Fee, DatePenalty
from regimun_app.utils import UnicodeCSVDictReader
from regimun_app.views.school_admin import is_school_registered
from regimun_app.views.secretariat_admin import secretariat_authenticate
import csv
import exceptions
import inspect
import string

from django.conf import settings

if 'jsondisplay' not in get_serializer_formats():
    register_serializer('jsondisplay', 'regimun_app.serializers.DisplayNameJsonSerializer')

@login_required
def conference_ajax_functions(request, conference_slug, func_name):
    conference = get_object_or_404(Conference, url_name=conference_slug)
    func_name = string.replace(func_name, "-", "_")
    
    if secretariat_authenticate(request, conference) and func_name in globals() and inspect.isfunction(globals()[func_name]):
        return_value = globals()[func_name](request, conference)
        if return_value != None:
            if isinstance(return_value, HttpResponse):
                return return_value
            else:
                return HttpResponse(return_value, mimetype='application/javascript')
                #return HttpResponse("<html><body>" + return_value + "</body></html>")
    
Esempio n. 38
0
class AuthTestCase(TestCase):

    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = ['api/tests/fixtures/user.yml']

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()

    def test_registration_viewset_creates_user(self):
        view = RegistrationView.as_view()
        data = {
            'email': '*****@*****.**',
            'password': '******',
            'username': '******'
        }
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(set(response.data.keys()),
                         set(['email', 'username', 'token', 'refresh_token']))

    def test_registration_viewset_errors_with_missing_email(self):
        view = RegistrationView.as_view()
        data = {'password': '******', 'username': '******'}
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()), set(['email']))

    def test_registration_viewset_errors_with_invalid_email(self):
        view = RegistrationView.as_view()
        data = {
            'email': 'user2email.com',
            'password': '******',
            'username': '******'
        }
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()), set(['email']))

    def test_registration_viewset_errors_with_missing_username(self):
        view = RegistrationView.as_view()
        data = {
            'email': '*****@*****.**',
            'password': '******',
        }
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()),
                         set(['username']))

    def test_registration_viewset_errors_with_missing_password(self):
        view = RegistrationView.as_view()
        data = {'email': '*****@*****.**', 'username': '******'}
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()),
                         set(['password']))

    def test_registration_viewset_errors_with_duplicate_email(self):
        view = RegistrationView.as_view()
        data = {
            'email': '*****@*****.**',
            'username': '******',
            'password': '******'
        }
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()), set(['email']))

    def test_registration_viewset_errors_with_duplicate_username(self):
        view = RegistrationView.as_view()
        data = {
            'email': '*****@*****.**',
            'username': '******',
            'password': '******'
        }
        request = self.factory.post('/api/auth/register',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(set(response.data['errors'].keys()),
                         set(['username']))

    def test_login_viewset_logins_user(self):
        view = LoginView.as_view()
        data = {'email': '*****@*****.**', 'password': '******'}
        request = self.factory.post('/api/auth/login',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(set(response.data.keys()),
                         set(['email', 'username', 'token', 'refresh_token']))

    def test_login_viewset_fails_with_incorrect_password(self):
        view = LoginView.as_view()
        data = {'email': '*****@*****.**', 'password': '******'}
        request = self.factory.post('/api/auth/login',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_refresh_viewset_refreshes_users_token(self):
        view = RefreshView.as_view()
        data = {
            'refresh_token':
            "b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxNTgwMjM1MjI0fQ.WF2NjpSJOYrIZ9dBK_eClBXi0VX9zxCVpkPCZ61NRXo'",
        }
        request = self.factory.post('/api/auth/refresh',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(set(response.data.keys()),
                         set(['email', 'username', 'token', 'refresh_token']))
        self.assertEqual(response.data['email'], '*****@*****.**')

    def test_refresh_viewset_fails_with_incorrect_refresh_token(self):
        view = RefreshView.as_view()
        data = {'refresh_token': 'a-nonsense-string'}
        request = self.factory.post('/api/auth/refresh',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_forgot_password_viewset_sets_refresh_token(self):
        view = ForgotPasswordView.as_view()
        data = {
            'email': "*****@*****.**",
        }
        request = self.factory.post('/api/auth/forgot-password',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 200)
        user_model = User.objects.get(id=2)
        self.assertIsNotNone(user_model.reset_password_token)

    def test_forgot_password_viewset_fails_with_invalid_email(self):
        view = ForgotPasswordView.as_view()
        data = {
            'email': "*****@*****.**",
        }
        request = self.factory.post('/api/auth/forgot-password',
                                    data=data,
                                    format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_reset_password_viewset_sets_new_password(self):
        forgotPasswordView = ForgotPasswordView.as_view()
        requestTokenData = {'email': "*****@*****.**"}
        requestToken = self.factory.post('/api/auth/forgot-password',
                                         data=requestTokenData,
                                         format='json')
        forgotPasswordView(requestToken)
        user_model = User.objects.get(id=1)
        token = user_model.reset_password_token

        view = ResetPasswordView.as_view()
        url = "/api/auth/reset-password?id={}&token={}".format(1, token)
        data = {
            'password': "******",
        }
        request = self.factory.post(url, data=data, format='json')

        response = view(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(set(response.data.keys()),
                         set(['email', 'username', 'token', 'refresh_token']))
        user_model = User.objects.get(id=1)
        self.assertIsNone(user_model.reset_password_token)

    def test_reset_password_viewset_fails_with_no_password_passed(self):
        forgotPasswordView = ForgotPasswordView.as_view()
        requestTokenData = {'email': "*****@*****.**"}
        requestToken = self.factory.post('/api/auth/forgot-password',
                                         data=requestTokenData,
                                         format='json')
        forgotPasswordView(requestToken)
        user_model = User.objects.get(id=1)
        token = user_model.reset_password_token

        view = ResetPasswordView.as_view()
        url = "/api/auth/reset-password?id={}&token={}".format(1, token)
        request = self.factory.post(url, data={}, format='json')

        response = view(request)
        self.assertEqual(response.status_code, 400)

    def test_reset_password_viewset_fails_with_invalid_token_data(self):
        view = ResetPasswordView.as_view()
        url = "/api/auth/reset-password?id={}&token={}".format(2, "nothing")
        data = {
            'password': "******",
        }
        request = self.factory.post(url, data=data, format='json')
        response = view(request)
        self.assertEqual(response.status_code, 400)
Esempio n. 39
0
            # Little hack to prevent serializer from picking up fields we don't want
            self._selected_fields = self.selected_fields
            self.selected_fields = obj.__public__.keys()

    def end_object(self, obj):
        if hasattr(self, '_selected_fields'):
            self.selected_fields = self._selected_fields
            del self._selected_fields

        if hasattr(obj, '__public__'):
            current = self._current
            data = {}
            for attr, alias in obj.__public__.iteritems():
                if attr in current:
                    data[alias] = current[attr]
                elif hasattr(obj, attr):
                    attribute = getattr(obj, attr)
                    if callable(attribute):
                        data[alias] = attribute()
                    else:
                        data[alias] = attribute
            self._current = data

        super(Serializer, self).end_object(obj)

    def get_dump_object(self, obj):
        return self._current


register_serializer('public', 'mozbadges.utils.serializers.public')
Esempio n. 40
0
# -*- coding: utf-8 -*-
from django.core import serializers

serializers.register_serializer('json', 'djmoney.serializers')
Esempio n. 41
0
from django.core.serializers import register_serializer
register_serializer("xlsx", 'django_excel_fixture.serializers.xlsx_serializer')

Esempio n. 42
0
from django.core.serializers import register_serializer
from django.db.models.base import ModelBase
from django.db.models.loading import get_app, get_models
from django.db.models.query import QuerySet

from nicedjango._compat import basestring
from nicedjango.graph.dumper import Dumper
from nicedjango.graph.loader import Loader
from nicedjango.graph.node import Node
from nicedjango.graph.utils import nodes_as_string, sort_nodes
from nicedjango.utils import coerce_tuple, divide_model_def, queryset_from_def, RememberingSet
from nicedjango.utils.py.iter import filter_attrs
from nicedjango.utils.py.string import divide_string

register_serializer('compact_csv', 'nicedjango.serializers.compact_csv')
register_serializer('compact_python', 'nicedjango.serializers.compact_python')
register_serializer('compact_yaml', 'nicedjango.serializers.compact_yaml')

__all__ = ['ModelGraph']


class ModelGraph(object):
    def __init__(self,
                 queries=None,
                 relations=None,
                 app=None,
                 chunksize=100000):
        self.nodes = {}
        self.includes = set()
        self._new_nodes = RememberingSet()
Esempio n. 43
0
class PhotoTestCase(TestCase):
    register_serializer('yml', 'django.core.serializers.pyyaml')
    fixtures = [
        'api/tests/fixtures/user.yml', 'api/tests/fixtures/climb.yml',
        'api/tests/fixtures/photo.yml'
    ]

    def setUp(self):
        self.client = APIClient()
        self.factory = APIRequestFactory()
        self.image_url = '/home/david/Sites/cycling_climbs_api/api/tests/fixtures/image.jpeg'
        self.pdf_url = '/home/david/Sites/cycling_climbs_api/api/tests/fixtures/image.pdf'

    def test_photo_virtual_url(self):
        photo = Photo.objects.get(pk=1)
        self.assertEqual(photo.url,
                         settings.BASE_URL + "assets/1/photos/20200128-183635")

    def test_properties_contains_expected_in_serializer(self):
        photo = Photo.objects.get(id=1)
        serializer = PhotoSerializer(instance=photo)
        self.assertEqual(
            set(serializer.data.keys()),
            set([
                'id', 'climb', 'user', 'text', 'path', 'url', 'fileType',
                'fileSize', 'created_at'
            ]))

    def test_photo_viewset_list_route(self):
        request = self.factory.get('/api/photo')
        view = PhotoViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 9)

    def test_photo_viewset_list_route_filters_by_climb(self):
        request = self.factory.get('/api/photo?climb=1')
        view = PhotoViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 5)

    def test_photo_viewset_list_route_filters_by_user(self):
        request = self.factory.get('/api/photo?user=1')
        view = PhotoViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 7)

    def test_photo_viewset_list_route_filters_by_user_and_climb(self):
        request = self.factory.get('/api/photo?user=1&climb=1')
        view = PhotoViewSet.as_view(actions={'get': 'list'})
        response = view(request)
        self.assertEqual(len(response.data['results']), 4)

    def test_photo_viewset_list_route_for_auth_user(self):
        request = self.factory.get('/api/photo/me')
        view = PhotoViewSet.as_view(actions={'get': 'me'})
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(len(response.data['results']), 7)

    def test_photo_viewset_list_route_for_auth_user_with_auth_error(self):
        request = self.factory.get('/api/photo/me')
        view = PhotoViewSet.as_view(actions={'get': 'me'})
        response = view(request)
        self.assertEqual(response.status_code, 403)

    def test_photo_viewset_retrieve_route(self):
        request = self.factory.get('/api/photo')
        view = PhotoViewSet.as_view(actions={'get': 'retrieve'})
        response = view(request, pk=1)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            set(response.data.keys()),
            set([
                'id', 'climb', 'user', 'text', 'path', 'url', 'fileType',
                'fileSize', 'created_at'
            ]))
        self.assertEqual(response.data['climb'], 1)

    def test_photo_viewset_create_route(self):
        view = PhotoViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/photo/',
                                    data=data,
                                    format='multipart')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)

        with File(open(self.image_url, "rb")) as f:
            request.FILES['photo'] = f
            response = view(request)
            self.assertEqual(response.status_code, 201)
            self.assertEqual(response.data['climb'], 1)
            self.assertEqual(
                set(response.data.keys()),
                set([
                    'id', 'climb', 'user', 'url', 'text', 'path', 'fileType',
                    'fileSize', 'created_at'
                ]))

    def test_photo_viewset_create_route_fails_with_wrong_file_type(self):
        view = PhotoViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/photo/',
                                    data=data,
                                    format='multipart')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)

        with File(open(self.pdf_url, "rb")) as f:
            request.FILES['photo'] = f
            response = view(request)
            self.assertEqual(response.status_code, 406)
            self.assertEqual(response.data['detail'],
                             "Image can only be jpeg or png")

    def test_photo_viewset_create_route_fails_with_missing_file(self):
        view = PhotoViewSet.as_view(actions={'post': 'create'})
        data = {
            'climb': 1,
        }
        request = self.factory.post('/api/photo/',
                                    data=data,
                                    format='multipart')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request)
        self.assertEqual(response.status_code, 406)
        self.assertEqual(response.data['detail'],
                         "No photo was attached to the request")

    def test_photo_viewset_fails_to_create_if_no_user_is_authenticated(self):
        view = PhotoViewSet.as_view(actions={'post': 'create'})
        data = {
            'file': 'image.jpeg',
            'climb': 1,
        }
        request = self.factory.post('/api/photo',
                                    data=data,
                                    format='multipart')
        response = view(request)
        self.assertEqual(response.status_code, 401)

    def test_photo_viewset_update_route_updates_data(self):
        view = PhotoViewSet.as_view(actions={'put': 'update'})
        data = {
            'text': 'some text',
        }
        request = self.factory.put('/api/photo', data=data)
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['text'], 'some text')
        self.assertEqual(response.data['climb'], 1)

    def test_photo_viewset_update_route_fails_to_update_if_no_user_autenticated(
            self):
        view = PhotoViewSet.as_view(actions={'put': 'update'})
        data = {
            'text': 'some text',
        }
        request = self.factory.put('/api/photo', data=data)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_photo_viewset_update_route_fails_to_update_if_wrong_user_autenticated(
            self):
        view = PhotoViewSet.as_view(actions={'put': 'update'})
        data = {
            'text': 'some text',
        }
        request = self.factory.put('/api/photo', data=data)
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)

        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)

    def test_photo_viewset_destroy_route(self):
        view = PhotoViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/photo')
        auth_user = User.objects.get(id=1)
        force_authenticate(request, user=auth_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 204)

    def test_photo_viewset_delete_route_fails_if_no_user_autenticated(self):
        view = PhotoViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/photo')
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 401)

    def test_photo_viewset_update_route_fails_if_wrong_user_autenticated(self):
        view = PhotoViewSet.as_view(actions={'delete': 'destroy'})
        request = self.factory.delete('/api/photo')
        wrong_user = User.objects.get(id=2)
        force_authenticate(request, user=wrong_user)
        response = view(request, pk=1, format='json')
        self.assertEqual(response.status_code, 403)
Esempio n. 44
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer('xliff', 'xliff.xliff_serializer')

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn('xliff', public_formats)
Esempio n. 45
0
    def test_register(self):
        "Registering a new serializer populates the full registry. Refs #14823"
        serializers.register_serializer('xliff', 'xliff.xliff_serializer')

        public_formats = serializers.get_public_serializer_formats()
        self.assertIn('xliff', public_formats)
Esempio n. 46
0
from django.core import serializers
from django.utils import simplejson as json
from django.http import HttpResponse
from django.views.generic import View
from django.core.serializers.json import Serializer as JsonSerializer, DjangoJSONEncoder

class Serializer(JsonSerializer):
    def end_serialization(self):
        if json.__version__.split('.') >= ['2', '1', '3']:
            # Use JS strings to represent Python Decimal instances (ticket #16850)
            self.options.update({'use_decimal': False})
        data = { 'result': self.objects }
        json.dump(data, self.stream, cls=DjangoJSONEncoder, **self.options)

serializers.register_serializer('jsonrpc', Serializer)

class JSONResponseMixin(object):
    def render_to_response(self, context):
        "Returns a JSON response containing 'context' as payload"
        if not hasattr(context,'__iter__'): context = (context,)
        response = HttpResponse(mimetype='application/json')
        serializers.serialize('jsonrpc', context, stream=response)
        return response

class JSONResponseView(JSONResponseMixin, View):
    def post(self, request, *args, **kwargs):
        #print request.is_ajax()
        if( request.META.get('CONTENT_TYPE','').split(';')[0] == 'application/json'
            and hasattr(self, 'get_context_data')
            and callable(self.get_context_data)
        ):