Example #1
0
 def read(self, request, formdef_id):
     """  lists all metadata associated with all instances submitted 
     to a particular schema
     
     """
     # CSV
     metadata = Metadata.objects.filter(formdefmodel=formdef_id).order_by('id')
     if not metadata:
         return HttpResponseBadRequest("Metadata of schema with id %s not found." % formdef_id)
     if request.REQUEST.has_key('start-id'):
         metadata = metadata.filter(pk__gte=request.GET['start-id'])
     if request.REQUEST.has_key('end-id'):
         metadata = metadata.filter(pk__lte=request.GET['end-id'])
     if request.REQUEST.has_key('start-date'):
         date = datetime.strptime(request.GET['start-date'],"%Y-%m-%d")
         metadata = metadata.filter(attachment__submission__submit_time__gte=date)
     if request.REQUEST.has_key('end-date'):
         date = datetime.strptime(request.GET['end-date'],"%Y-%m-%d")
         metadata = metadata.filter(attachment__submission__submit_time__lte=date)
     if request.REQUEST.has_key('format'):
         if request.GET['format'].lower() == 'xml':
             response = HttpResponse(mimetype='text/xml')
             xml_serializer = serializers.get_serializer("xml")()
             xml_serializer.serialize(metadata, stream=response, fields = \
                 ('formname','formversion','deviceid','timestart','timeend',\
                  'username','chw_id','uid','raw_data') )
             return response
     return get_csv_from_django_query(metadata)
Example #2
0
 def read(self, request, formdef_id, form_id):
     """ lists metadata associated with a partiocular instance """
     # CSV
     metadatum = Metadata.objects.filter(formdefmodel=formdef_id, raw_data=form_id)
     if not metadatum:
         return HttpResponseBadRequest(\
             "Metadatum of form (id=%s) with schema (id=%s) not found." % (form_id, formdef_id) )
     if request.REQUEST.has_key('format'):
         if request.GET['format'].lower() == 'xml':
             response = HttpResponse(mimetype='text/xml')
             xml_serializer = serializers.get_serializer("xml")()
             xml_serializer.serialize(metadatum, stream=response, fields = \
                 ('formname','formversion','deviceid','timestart','timeend',\
                  'username','chw_id','uid','raw_data') )
             return response
     return get_csv_from_django_query(metadatum)
Example #3
0
 def read(self, request, template= 'api_/xforms.xml'):
     xforms = FormDefModel.objects.order_by('id')
     if not request.REQUEST.has_key('format') or request.GET['format'].lower() != 'sync':
         # temporary measure until we get server-server authentication working
         # TODO - remove
         try:
             domain = request.user.selected_domain
         except Exception:
             return HttpResponseBadRequest("You do not have permission to use this API.")
         xforms = xforms.filter(domain=domain)
     # using django's lazy queryset evaluation awesomeness
     if request.REQUEST.has_key('start-id'):
         xforms = xforms.filter(pk__gte=request.GET['start-id'])
     if request.REQUEST.has_key('end-id'):
         xforms = xforms.filter(pk__lte=request.GET['end-id'])
     if request.REQUEST.has_key('start-date'):
         date = datetime.strptime(request.GET['start-date'],"%Y-%m-%d")
         xforms = xforms.filter(submit_time__gte=date)
     if request.REQUEST.has_key('end-date'):
         date = datetime.strptime(request.GET['end-date'],"%Y-%m-%d")
         xforms = xforms.filter(submit_time__lte=date)
     if not xforms:
         logging.info("No schemas have been registered.")
         return HttpResponse("No schemas have been registered.")
     for xform in xforms:
         # do NOT save this!!! This is just for display
         xform.xsd_file_location = "http://%s/xforms/show/%s?show_schema=yes" % \
                                   (request.get_host(), xform.pk)
     fields = ('form_name','form_display_name','target_namespace','submit_time','xsd_file_location')
     if request.REQUEST.has_key('format'):
         response = HttpResponse()
         if request.GET['format'].lower() == 'json':
             json_serializer = serializers.get_serializer("json")()
             json_serializer.serialize(xforms, ensure_ascii=False, stream=response, fields = \
                 fields)
             response['mimetype'] = 'text/json'
             return response
         elif request.GET['format'].lower() == 'xml': 
             xml_serializer = serializers.get_serializer("xml")()
             xml_serializer.serialize(xforms, stream=response, fields = \
                 fields)
             response['mimetype'] = 'text/xml'
             return response
     # default to CSV
     return get_csv_from_django_query(xforms, fields)