예제 #1
0
 def _get_list_response(self,request,**kwargs):
     '''
     Return a deserialized list of dicts
     '''
     includes = kwargs.pop('includes', '*')
     try:
         logger.debug(
             'get internal list response %s, %s ', 
             self._meta.resource_name, kwargs)
         kwargs.setdefault('limit', 0)
         response = self.get_list(
             request,
             format='json',
             includes=includes,
             **kwargs)
         logger.debug('response: %r', response)
         _data = self._meta.serializer.deserialize(
             LimsSerializer.get_content(response), response['Content-Type'])
         _data = _data[self._meta.collection_name]
         logger.debug(' data: %s'% _data)
         return _data
     except Http404:
         return []
     except Exception as e:
         # FIXME: temporary travis debug
         logger.exception('on get list')
         return []
예제 #2
0
class ApiClient(django.test.client.Client):
    
    def __init__(self, username, password, serializer=None):
        self.serializer = serializer
        self.username = username
        self.password = password
        
        if not self.serializer:
            self.serializer = LimsSerializer()

        super(ApiClient, self).__init__(
            enforce_csrf_checks=False,
            SERVER_NAME='localhost')

    def deserialize(self, resp):

        return self.serializer.deserialize(
            self.serializer.get_content(resp), resp['Content-Type'])

    def create_basic(self, username, password):
        """
        Creates & returns the HTTP ``Authorization`` header for use with BASIC
        Auth.
        """
        import base64
        return 'Basic %s' % base64.b64encode(
            ':'.join([username, password]).encode('utf-8')).decode('utf-8')
    
    def get_credentials(self):
        return self.create_basic(username=self.username, password=self.password)

    def request(self, **request):
        
        # Default to JSON for background client requests
        if DJANGO_ACCEPT_PARAM not in request:
            request[DJANGO_ACCEPT_PARAM] = JSON_MIMETYPE
        
        if 'HTTP_AUTHORIZATION' not in request:
            request['HTTP_AUTHORIZATION'] = self.get_credentials()
        
        return django.test.client.Client.request(self, **request)
예제 #3
0
 def _get_detail_response(self,request,**kwargs):
     '''
     Return the detail response as a dict
     '''
     logger.info('_get_detail_response: %r, %r', self._meta.resource_name, kwargs)
     try:
         response = self.get_detail(
             request,
             format='json',
             includes='*',
             **kwargs)
         _data = []
         if response.status_code == 200:
             _data = self._meta.serializer.deserialize(
                 LimsSerializer.get_content(response), response['Content-Type'])
         else:
             logger.info(
                 'no data found for %r, %r', self._meta.resource_name, kwargs)
         return _data
     except Http404:
         return []
예제 #4
0
class ApiClient(django.test.client.Client):
    def __init__(self, username, password, serializer=None):
        self.serializer = serializer
        self.username = username
        self.password = password

        if not self.serializer:
            self.serializer = LimsSerializer()

        super(ApiClient, self).__init__(enforce_csrf_checks=False,
                                        SERVER_NAME='localhost')

    def deserialize(self, resp):

        return self.serializer.deserialize(self.serializer.get_content(resp),
                                           resp['Content-Type'])

    def create_basic(self, username, password):
        """
        Creates & returns the HTTP ``Authorization`` header for use with BASIC
        Auth.
        """
        import base64
        return 'Basic %s' % base64.b64encode(':'.join(
            [username, password]).encode('utf-8')).decode('utf-8')

    def get_credentials(self):
        return self.create_basic(username=self.username,
                                 password=self.password)

    def request(self, **request):

        # Default to JSON for background client requests
        if DJANGO_ACCEPT_PARAM not in request:
            request[DJANGO_ACCEPT_PARAM] = JSON_MIMETYPE

        if 'HTTP_AUTHORIZATION' not in request:
            request['HTTP_AUTHORIZATION'] = self.get_credentials()

        return django.test.client.Client.request(self, **request)