Esempio n. 1
0
    def __init__(self, request, context=None):
        # Models are isolated by user.
        parent_id = self.get_parent_id(request)

        # Authentication to storage is transmitted as is (cf. cloud_storage).
        auth = request.headers.get('Authorization')

        # ID generator by resource name in settings.
        default_id_generator = request.registry.id_generators['']
        resource_name = context.resource_name if context else ''
        id_generator = request.registry.id_generators.get(resource_name,
                                                          default_id_generator)

        self.model = self.default_model(
            storage=request.registry.storage,
            id_generator=id_generator,
            collection_id=classname(self),
            parent_id=parent_id,
            auth=auth)

        self.request = request
        self.context = context
        self.record_id = self.request.matchdict.get('id')
        self.force_patch_update = False

        # Log resource context.
        logger.bind(collection_id=self.model.collection_id,
                    collection_timestamp=self.timestamp)
Esempio n. 2
0
    def __init__(self, request, context=None):
        self.request = request
        self.context = context
        self.record_id = self.request.matchdict.get("id")
        self.force_patch_update = False

        content_type = str(self.request.headers.get("Content-Type")).lower()
        self._is_json_patch = content_type == "application/json-patch+json"
        self._is_merge_patch = content_type == "application/merge-patch+json"

        # Models are isolated by user.
        parent_id = self.get_parent_id(request)

        # Authentication to storage is transmitted as is (cf. cloud_storage).
        auth = request.headers.get("Authorization")

        if not hasattr(self, "model"):
            self.model = self.default_model(
                storage=request.registry.storage,
                id_generator=self.id_generator,
                collection_id=classname(self),
                parent_id=parent_id,
                auth=auth,
            )

        # Initialize timestamp as soon as possible.
        self.timestamp
Esempio n. 3
0
    def __init__(self, request, context=None):
        # Models are isolated by user.
        parent_id = self.get_parent_id(request)

        # Authentication to storage is transmitted as is (cf. cloud_storage).
        auth = request.headers.get('Authorization')

        # ID generator by resource name in settings.
        default_id_generator = request.registry.id_generators['']
        resource_name = context.resource_name if context else ''
        id_generator = request.registry.id_generators.get(resource_name,
                                                          default_id_generator)

        self.model = self.default_model(
            storage=request.registry.storage,
            id_generator=id_generator,
            collection_id=classname(self),
            parent_id=parent_id,
            auth=auth)

        self.request = request
        self.context = context
        self.record_id = self.request.matchdict.get('id')
        self.force_patch_update = False

        # Log resource context.
        logger.bind(collection_id=self.model.collection_id,
                    collection_timestamp=self.timestamp)
Esempio n. 4
0
    def __init__(self, request, context=None):
        self.request = request
        self.context = context
        self.record_id = self.request.matchdict.get('id')
        self.force_patch_update = False

        content_type = str(self.request.headers.get('Content-Type')).lower()
        self._is_json_patch = content_type == 'application/json-patch+json'
        self._is_merge_patch = content_type == 'application/merge-patch+json'

        # Models are isolated by user.
        parent_id = self.get_parent_id(request)

        # Authentication to storage is transmitted as is (cf. cloud_storage).
        auth = request.headers.get('Authorization')

        if not hasattr(self, 'model'):
            self.model = self.default_model(
                storage=request.registry.storage,
                id_generator=self.id_generator,
                collection_id=classname(self),
                parent_id=parent_id,
                auth=auth)

        # Initialize timestamp as soon as possible.
        self.timestamp
Esempio n. 5
0
 def watch_execution_time(self, obj, prefix='', classname=None):
     classname = classname or utils.classname(obj)
     members = dir(obj)
     for name in members:
         value = getattr(obj, name)
         is_method = isinstance(value, types.MethodType)
         if not name.startswith('_') and is_method:
             statsd_key = "{}.{}.{}".format(prefix, classname, name)
             decorated_method = self.timer(statsd_key)(value)
             setattr(obj, name, decorated_method)
Esempio n. 6
0
 def watch_execution_time(self, obj, prefix="", classname=None):
     classname = classname or utils.classname(obj)
     members = dir(obj)
     for name in members:
         value = getattr(obj, name)
         is_method = isinstance(value, types.MethodType)
         if not name.startswith("_") and is_method:
             statsd_key = f"{prefix}.{classname}.{name}"
             decorated_method = self.timer(statsd_key)(value)
             setattr(obj, name, decorated_method)
Esempio n. 7
0
 def watch_execution_time(self, obj, prefix='', classname=None):
     classname = classname or utils.classname(obj)
     members = dir(obj)
     for name in members:
         value = getattr(obj, name)
         is_method = isinstance(value, types.MethodType)
         if not name.startswith('_') and is_method:
             statsd_key = '{}.{}.{}'.format(prefix, classname, name)
             decorated_method = self.timer(statsd_key)(value)
             setattr(obj, name, decorated_method)
Esempio n. 8
0
    def __init__(self, request, context=None):
        """
        :param request:
            The current request object.
        :param context:
            The resulting context obtained from :class:`kinto.core.authorization.AuthorizationPolicy`.
        """
        self.request = request
        self.context = context
        self.object_id = self.request.matchdict.get("id")

        content_type = str(self.request.headers.get("Content-Type")).lower()
        self._is_json_patch = content_type == "application/json-patch+json"
        self._is_merge_patch = content_type == "application/merge-patch+json"

        # Models are isolated by user.
        parent_id = self.get_parent_id(request)

        # Authentication to storage is transmitted as is (cf. cloud_storage).
        auth = request.headers.get("Authorization")

        # The principal of an anonymous is system.Everyone
        current_principal = self.request.prefixed_userid or Everyone

        if not hasattr(self, "model"):
            self.model = self.default_model(
                storage=request.registry.storage,
                permission=request.registry.permission,
                id_generator=self.id_generator,
                resource_name=classname(self),
                parent_id=parent_id,
                current_principal=current_principal,
                prefixed_principals=request.prefixed_principals,
                auth=auth,
            )

        # Initialize timestamp as soon as possible.
        self.timestamp

        if self.context:
            self.model.get_permission_object_id = functools.partial(
                self.context.get_permission_object_id, self.request)