Esempio n. 1
0
 def post_detail(self, request, **kwargs):
     pk = kwargs['pk'].strip("/")
     metric = Metric.objects.get(pk=pk)
     obs_class = metric.unit.observation_type.model_class()
     if obs_class is RatioObservation:
         return HttpNotImplemented()
     else:
         from_dt = iso8601.parse_date(request.POST['from_datetime']).replace(tzinfo=None)
         to_dt = iso8601.parse_date(request.POST['to_datetime']).replace(tzinfo=None)
         metric_obs = metric.related_observations
         try:
             ob = metric_obs.get(
                 metric = metric,
                 from_datetime = from_dt,
                 to_datetime = to_dt,
             )
         except obs_class.DoesNotExist:
             ob = obs_class.objects.create(
                 metric = metric,
                 from_datetime = from_dt,
                 to_datetime = to_dt,
             )
         rawvalue = request.POST.get('value', None)
         ob.value = self.deserialize(request, rawvalue)
         ob.save()
         url = "/observation/%s/" % ob.pk
         return HttpCreated(location=url)
Esempio n. 2
0
 def test_various_statuses(self):
     created = HttpCreated(location='http://example.com/thingy/1/')
     self.assertEqual(created.status_code, 201)
     self.assertEqual(created['Location'], 'http://example.com/thingy/1/')
     # Regression.
     created_2 = HttpCreated()
     self.assertEqual(created_2.status_code, 201)
     self.assertEqual(created_2['Location'], '')
     accepted = HttpAccepted()
     self.assertEqual(accepted.status_code, 202)
     no_content = HttpNoContent()
     self.assertEqual(no_content.status_code, 204)
     see_other = HttpSeeOther()
     self.assertEqual(see_other.status_code, 303)
     not_modified = HttpNotModified()
     self.assertEqual(not_modified.status_code, 304)
     bad_request = HttpBadRequest()
     self.assertEqual(bad_request.status_code, 400)
     unauthorized = HttpUnauthorized()
     self.assertEqual(unauthorized.status_code, 401)
     not_found = HttpNotFound()
     self.assertEqual(not_found.status_code, 404)
     not_allowed = HttpMethodNotAllowed()
     self.assertEqual(not_allowed.status_code, 405)
     conflict = HttpConflict()
     self.assertEqual(conflict.status_code, 409)
     gone = HttpGone()
     self.assertEqual(gone.status_code, 410)
     toomanyrequests = HttpTooManyRequests()
     self.assertEqual(toomanyrequests.status_code, 429)
     not_implemented = HttpNotImplemented()
     self.assertEqual(not_implemented.status_code, 501)
Esempio n. 3
0
    def post_detail(self, request, **kwargs):
        """
        Creates a new subcollection of the resource under a resource.

        This is not implemented by default because most people's data models
        aren't self-referential.

        If a new resource is created, return ``HttpCreated`` (201 Created).
        """
        return HttpNotImplemented()
Esempio n. 4
0
 def serialize(self, bundle, format='application/json', options={}):
     try:
         return super(MySerializer, self).serialize(bundle, format, options)
     except (ImproperlyConfigured, UnsupportedFormat):
         raise ImmediateHttpResponse(
             HttpNotImplemented(settings.HTTP_NOT_IMPLEMENTED_ERROR))
     except ImmediateHttpResponse:
         raise
     except Exception:
         raise ImmediateHttpResponse(
             HttpApplicationError(settings.HTTP_APPLICATION_ERROR))
Esempio n. 5
0
    def apply_filters(self, request, applicable_filters):
        """An ORM-specific implementation of ``apply_filters``.

        The default simply applies the ``applicable_filters`` as ``**kwargs``,
        but should make it possible to do more advanced things.
        """
        # List units only when a filter criterion was provided.
        if not applicable_filters:
            raise ImmediateHttpResponse(response=HttpNotImplemented())
        return super(UnitResource, self).apply_filters(request,
                                                       applicable_filters)
Esempio n. 6
0
    def dispatch(self, request_type, request, **kwargs):
        """
        From original Tastypie structure:
        - lookup the API method
        - authenticate
        Other modifications:
        - use of the "downloadID" cookie
        """
        
        request_method = request.method.lower()
        method = getattr(self, "%s_%s" 
            % (request_method, request_type), None)

        if method is None:
            raise ImmediateHttpResponse(response=HttpNotImplemented())

#         self.is_authenticated(request)
        convert_post_to_put(request)
        logger.info('calling method: %s.%s_%s', 
            self._meta.resource_name, request_method, request_type)
        response = method(request, **kwargs)

        # # If what comes back isn't a ``HttpResponse``, assume that the
        # # request was accepted and that some action occurred. This also
        # # prevents Django from freaking out.
        if not isinstance(response, HttpResponseBase):
            return HttpNoContent()
        
        # Custom ICCB parameter: set cookie to tell the browser javascript
        # UI that the download request is finished
        downloadID = request.GET.get('downloadID', None)
        if downloadID:
            logger.info('set cookie "downloadID" %r', downloadID )
            response.set_cookie('downloadID', downloadID)
        else:
            logger.debug('no downloadID: %s' % request.GET )

        return response
Esempio n. 7
0
 def obj_delete(self, request=None, **kwargs):
     #obj = Result.objects.get(pk=kwargs['pk'])
     #obj.delete()
     return HttpNotImplemented()
Esempio n. 8
0
 def obj_delete_list(self, request=None, **kwargs):
     return HttpNotImplemented()
Esempio n. 9
0
 def get_multiple(self, request, **kwargs):
     return HttpNotImplemented()
Esempio n. 10
0
 def patch_list(self, request, **kwargs):
     return HttpNotImplemented()
Esempio n. 11
0
 def patch_detail(self, request, **kwargs):
     return HttpNotImplemented()
Esempio n. 12
0
 def delete_detail(self, request, **kwargs):
     return HttpNotImplemented()