Ejemplo n.º 1
0
    def __init__(self, queryset, responders=None, **kwargs):
        """
        Replaces the responder in Collection.__init__ with responders, which
        maybe a list of responders or None. In the case of None, default
        responders are allocated to the colelction.

        See Collection.__init__ for more details
        """
        if responders is None:
            responders = {"json": JSONResponder(), "xml": XMLResponder()}
        self.responders = {}
        for k, r in responders.items():
            Collection.__init__(self, queryset, r, **kwargs)
            self.responders[k] = self.responder
Ejemplo n.º 2
0
    def __init__(self, queryset, responders=None, **kwargs):
        '''
        Replaces the responder in Collection.__init__ with responders, which
        maybe a list of responders or None. In the case of None, default
        responders are allocated to the colelction.

        See Collection.__init__ for more details
        '''
        if responders is None:
            responders = {
                'json': JSONResponder(),
                'xml': XMLResponder(),
            }
        self.responders = {}
        for k, r in responders.items():
            Collection.__init__(self, queryset, r, **kwargs)
            self.responders[k] = self.responder
Ejemplo n.º 3
0
 def __call__(self, request, format, *args, **kwargs):
     '''
     urls.py must contain .(?P<format>\w+) at the end of the url
     for rest resources, such that it would match one of the keys
     in self.responders
     '''
     error_code = 400
     errors = ErrorDict({'info': ["An error has occured"]})
     if format in self.responders:
         self.responder = self.responders[format]
         try:
             return Collection.__call__(self, request, *args, **kwargs)
         except InputValidationException, e:
             errors = ErrorDict({'info': [str(e)]})
             error_code = 412
Ejemplo n.º 4
0
    def __call__(self, request, format, *args, **kwargs):
        """
        urls.py must contain .(?P<format>\w+) at the end of the url
        for rest resources, such that it would match one of the keys
        in self.responders
        """
        error_code = 400
        errors = ErrorDict({"info": ["An error has occured"]})
        if format in self.responders:
            self.responder = self.responders[format]
            try:
                return Collection.__call__(self, request, *args, **kwargs)
            except search.SearchAddressDisambiguateError, e:
                return self.responder.error(request, 412, ErrorDict({"info": [str(e)], "possible_addresses": addrs}))

            except InputValidationException, e:
                errors = ErrorDict({"info": [str(e)]})
                error_code = 412
Ejemplo n.º 5
0
    def __call__(self, request, format, *args, **kwargs):
        '''
        urls.py must contain .(?P<format>\w+) at the end of the url
        for rest resources, such that it would match one of the keys
        in self.responders
        '''
        error_code = 400
        errors = ErrorDict({'info': ["An error has occured"]})
        if format in self.responders:
            self.responder = self.responders[format]
            try:
                return Collection.__call__(self, request, *args, **kwargs)
            except search.SearchAddressDisambiguateError, e:
                return self.responder.error(
                    request, 412,
                    ErrorDict({
                        'info': [str(e)],
                        'possible_addresses': addrs
                    }))

            except InputValidationException, e:
                errors = ErrorDict({'info': [str(e)]})
                error_code = 412
Ejemplo n.º 6
0
        return self.responder.list(request, reports)

    def create(self, request, *args, **kwargs):
        report = self.api.post(request)
        return self.responder.list(request, report)


# These use the django-rest-api library.
mobile_report_rest = MobileReportRest(
    queryset=Report.objects.all(),
    permitted_methods=['GET', 'POST'],
    expose_fields=MobileReportAPI.EXPOSE_FIELDS)

json_poll_resource = Collection(
    queryset=ReportCategory.objects.all(),
    expose_fields=('id', 'name_en', 'name_fr'),
    #permitted_methods = ('GET'),
    responder=JSONResponder())

# These classes do not use the django-rest-api library


class MobileReportAPIError(models.Model):
    EXPOSE_FIELDS = ('error', )
    error = models.CharField(max_length=255)


def mobile_reports(request, format):
    api = MobileReportAPI()
    supported_formats = ['xml', 'json']
    if not format in supported_formats: