本文整理汇总了Python中casexml.apps.case.models.CommCareCase.fetch_case_attachment方法的典型用法代码示例。如果您正苦于以下问题:Python CommCareCase.fetch_case_attachment方法的具体用法?Python CommCareCase.fetch_case_attachment怎么用?Python CommCareCase.fetch_case_attachment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类casexml.apps.case.models.CommCareCase
的用法示例。
在下文中一共展示了CommCareCase.fetch_case_attachment方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get
# 需要导入模块: from casexml.apps.case.models import CommCareCase [as 别名]
# 或者: from casexml.apps.case.models.CommCareCase import fetch_case_attachment [as 别名]
def get(self, *args, **kwargs):
"""
https://github.com/dimagi/commcare/wiki/CaseAttachmentAPI
max_size The largest size (in bytes) for the attachment
max_image_width The largest width in pixels for an an image attachment
max_image_height The largest width in pixels for an an image attachment
"""
if self.request.couch_user.is_web_user() and not can_view_attachments(self.request):
return HttpResponseForbidden()
max_filesize = int(self.request.GET.get('max_size', 0)) #todo
img = self.request.GET.get('img', None)
size = self.request.GET.get('size', OBJECT_ORIGINAL) #alternative to abs size
max_width = int(self.request.GET.get('max_image_width', 0))
max_height = int(self.request.GET.get('max_image_height', 0))
case_id = kwargs.get('case_id', None)
if not case_id or not CommCareCase.get_db().doc_exist(case_id):
raise Http404
attachment_key = kwargs.get('attachment_id', None)
if img is not None:
if size == "debug_all":
case_doc = CommCareCase.get(case_id)
r = HttpResponse(content_type="text/html")
r.write('<html><body>')
r.write('<ul>')
for fsize in IMAGE_SIZE_ORDERING:
meta, stream = CommCareCase.fetch_case_image(case_id, attachment_key, filesize_limit=max_filesize, width_limit=max_width, height_limit=max_height, fixed_size=fsize)
r.write('<li>')
r.write('Size: %s<br>' % fsize)
r.write("Limit: max_size: %s" % max_filesize)
if max_width > 0:
r.write(", max_width: %s" % max_width)
if max_height > 0:
r.write(", max_height: %s" % max_height)
r.write("<br>")
if meta is not None:
r.write('Resolution: %d x %d<br>' % (meta['width'], meta['height']))
r.write('Filesize: %d<br>' % ( meta['content_length']))
r.write('<img src="%(attach_url)s?img&size=%(size_key)s&max_size=%(max_filesize)s&max_image_width=%(max_width)s&max_image_height=%(max_height)s">' %
{
"attach_url": reverse("api_case_attachment", kwargs={
"domain": self.request.domain,
"case_id": case_id,
"attachment_id": attachment_key,
}),
"domain": case_doc.domain, "case_id": case_id,
"attachment_key": attachment_key,
"size_key": fsize,
"max_filesize": max_filesize,
"max_width": max_width,
"max_height": max_height
}
)
else:
r.write('Not available')
r.write('</li>')
r.write('</ul></body></html>')
return r
else:
# image workflow
attachment_meta, attachment_stream = CommCareCase.fetch_case_image(case_id, attachment_key, filesize_limit=max_filesize, width_limit=max_width, height_limit=max_height, fixed_size=size)
else:
# default stream
attachment_meta, attachment_stream = CommCareCase.fetch_case_attachment(case_id, attachment_key)
if attachment_meta is not None:
mime_type = attachment_meta['content_type']
else:
mime_type = "plain/text"
response = StreamingHttpResponse(streaming_content=attachment_stream,
content_type=mime_type)
return response
示例2: local_attachment
# 需要导入模块: from casexml.apps.case.models import CommCareCase [as 别名]
# 或者: from casexml.apps.case.models.CommCareCase import fetch_case_attachment [as 别名]
def local_attachment(attachment, old_case_id, tag):
mime = attachment['server_mime']
size = attachment['attachment_size']
src = attachment['attachment_src']
attachment_meta, attachment_stream = CommCareCase.fetch_case_attachment(old_case_id, tag)
return UploadedFile(attachment_stream, src, size=size, content_type=mime)