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)
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)
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: extuser = ExtUser.objects.get(id=request.user.id) except ExtUser.DoesNotExist: return HttpResponseBadRequest("You do not have permission to use this API.") xforms = xforms.filter(domain=extuser.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)