def survey_responses(request, instance_id): pi = get_object_or_404(ParsedInstance, instance=instance_id) xform, is_owner, can_edit, can_view = get_xform_and_perms( pi.instance.user.username, pi.instance.xform.id_string, request ) # no access if not (xform.shared_data or can_view or request.session.get("public_link")): return HttpResponseRedirect("/") data = pi.to_dict() # get rid of keys with leading underscores data_for_display = {} for k, v in data.items(): if not k.startswith(u"_"): data_for_display[k] = v xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [(parse_label_for_display(pi, xpath), data_for_display[xpath]) for xpath in xpaths] languages = label_value_pairs[-1][0] return render_to_response( "survey.html", { "label_value_pairs": label_value_pairs, "image_urls": image_urls(pi.instance), "languages": languages, "default_language": languages[0][0], }, )
def survey_responses(request, instance_id): pi = get_object_or_404(ParsedInstance, instance=instance_id) xform, is_owner, can_edit, can_view = get_xform_and_perms(\ pi.instance.user.username, pi.instance.xform.id_string, request) # no access if not (xform.shared_data or can_view or request.session.get('public_link')): return HttpResponseRedirect('/') data = pi.to_dict() # get rid of keys with leading underscores data_for_display = {} for k, v in data.items(): if not k.startswith(u"_"): data_for_display[k] = v xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (parse_label_for_display(pi, xpath), data_for_display[xpath]) for xpath in xpaths ] languages = label_value_pairs[-1][0] return render_to_response('survey.html', { 'label_value_pairs': label_value_pairs, 'image_urls': image_urls(pi.instance), 'languages': languages, 'default_language': languages[0][0] })
def kml_export(request, username, id_string): # read the locations from the database context = RequestContext(request) context.message = "HELLO!!" owner = get_object_or_404(User, username=username) xform = get_object_or_404(XForm, id_string=id_string, user=owner) if not has_permission(xform, owner, request): return HttpResponseForbidden(_(u"Not shared.")) dd = DataDictionary.objects.get(id_string=id_string, user=owner) pis = ParsedInstance.objects.filter( instance__user=owner, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False ) data_for_template = [] labels = {} def cached_get_labels(xpath): if xpath in labels.keys(): return labels[xpath] labels[xpath] = dd.get_label(xpath) return labels[xpath] for pi in pis: # read the survey instances data_for_display = pi.to_dict() xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (cached_get_labels(xpath), data_for_display[xpath]) for xpath in xpaths if not xpath.startswith(u"_") ] table_rows = [] for key, value in label_value_pairs: table_rows.append("<tr><td>%s</td><td>%s</td></tr>" % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append( { "name": id_string, "id": pi.id, "lat": pi.lat, "lng": pi.lng, "image_urls": img_urls, "table": '<table border="1"><a href="#"><img width="210" ' 'class="thumbnail" src="%s" alt=""></a>%s' "</table>" % (img_url, "".join(table_rows)), } ) context.data = data_for_template response = render_to_response( "survey.kml", context_instance=context, mimetype="application/vnd.google-earth.kml+xml" ) response["Content-Disposition"] = disposition_ext_and_date(id_string, "kml") return response
def kml_export_data(id_string, user): from odk_viewer.models import DataDictionary, ParsedInstance dd = DataDictionary.objects.get(id_string=id_string, user=user) pis = ParsedInstance.objects.filter(instance__user=user, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False) data_for_template = [] labels = {} def cached_get_labels(xpath): if xpath in labels.keys(): return labels[xpath] labels[xpath] = dd.get_label(xpath) return labels[xpath] for pi in pis: # read the survey instances data_for_display = pi.to_dict() xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [(cached_get_labels(xpath), data_for_display[xpath]) for xpath in xpaths if not xpath.startswith(u"_")] table_rows = [] for key, value in label_value_pairs: table_rows.append('<tr><td>%s</td><td>%s</td></tr>' % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append({ 'name': id_string, 'id': pi.id, 'lat': pi.lat, 'lng': pi.lng, 'image_urls': img_urls, 'table': '<table border="1"><a href="#"><img width="210" ' 'class="thumbnail" src="%s" alt=""></a>%s' '</table>' % (img_url, ''.join(table_rows)) }) return data_for_template
def kml_export(request, username, id_string): # read the locations from the database context = RequestContext(request) context.message="HELLO!!" owner = get_object_or_404(User, username=username) xform = get_object_or_404(XForm, id_string=id_string, user=owner) if not has_permission(xform, owner, request): return HttpResponseForbidden('Not shared.') dd = DataDictionary.objects.get(id_string=id_string, user=owner) pis = ParsedInstance.objects.filter(instance__user=owner, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False) data_for_template = [] labels = {} def cached_get_labels(xpath): if xpath in labels.keys(): return labels[xpath] labels[xpath] = dd.get_label(xpath) return labels[xpath] for pi in pis: # read the survey instances data_for_display = pi.to_dict() xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (cached_get_labels(xpath), data_for_display[xpath]) for xpath in xpaths if not xpath.startswith(u"_")] table_rows = [] for key, value in label_value_pairs: table_rows.append('<tr><td>%s</td><td>%s</td></tr>' % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append({ 'name':id_string, 'id': pi.id, 'lat': pi.lat, 'lng': pi.lng, 'image_urls': img_urls, 'table': '<table border="1"><a href="#"><img width="210" class="thumbnail" src="%s" alt=""></a>%s</table>' % (img_url,''.join(table_rows))}) context.data = data_for_template response = render_to_response("survey.kml", context_instance=context, mimetype="application/vnd.google-earth.kml+xml") response['Content-Disposition'] = disposition_ext_and_date(id_string, 'kml') return response
def survey_responses(request, instance_id): pi = get_object_or_404(ParsedInstance, instance=instance_id) xform, is_owner, can_edit, can_view = \ get_xform_and_perms(pi.instance.user.username, pi.instance.xform.id_string, request) # no access if not (xform.shared_data or can_view or request.session.get('public_link') == xform.uuid): return HttpResponseRedirect('/') data = pi.to_dict() # get rid of keys with leading underscores data_for_display = {} for k, v in data.items(): if not k.startswith(u"_"): data_for_display[k] = v xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (parse_label_for_display(pi, xpath), data_for_display[xpath]) for xpath in xpaths ] languages = label_value_pairs[-1][0] audit = { "xform": xform.id_string, "instance_id": instance_id } audit_log( Actions.FORM_DATA_VIEWED, request.user, xform.user, _("Requested survey with id '%(instance_id)s' on '%(id_string)s'.") % { 'id_string': xform.id_string, 'instance_id': instance_id }, audit, request) return render_to_response('survey.html', { 'label_value_pairs': label_value_pairs, 'image_urls': image_urls(pi.instance), 'languages': languages, 'default_language': languages[0][0] })
def kml_export_data(id_string, user): from odk_viewer.models import DataDictionary, ParsedInstance dd = DataDictionary.objects.get(id_string=id_string, user=user) pis = ParsedInstance.objects.filter(instance__user=user, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False) data_for_template = [] labels = {} def cached_get_labels(xpath): if xpath in labels.keys(): return labels[xpath] labels[xpath] = dd.get_label(xpath) return labels[xpath] for pi in pis: # read the survey instances data_for_display = pi.to_dict() xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (cached_get_labels(xpath), data_for_display[xpath]) for xpath in xpaths if not xpath.startswith(u"_")] table_rows = [] for key, value in label_value_pairs: table_rows.append('<tr><td>%s</td><td>%s</td></tr>' % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append({ 'name': id_string, 'id': pi.id, 'lat': pi.lat, 'lng': pi.lng, 'image_urls': img_urls, 'table': '<table border="1"><a href="#"><img width="210" ' 'class="thumbnail" src="%s" alt=""></a>%s' '</table>' % (img_url, ''.join(table_rows))}) return data_for_template
def kml_export(request, username, id_string): # read the locations from the database context = RequestContext(request) context.message="HELLO!!" owner = User.objects.get(username=username) xform = XForm.objects.get(id_string=id_string, user=owner) if not has_permission(xform, owner, request): return HttpResponseForbidden('Not shared.') dd = DataDictionary.objects.get(id_string=id_string, user=owner) pis = ParsedInstance.objects.filter(instance__user=owner, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False) data_for_template = [] for pi in pis: # read the survey instances data = pi.to_dict() # get rid of keys with leading underscores data_for_display = {} for k, v in data.items(): if not k.startswith(u"_"): data_for_display[k] = v xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (pi.data_dictionary.get_label(xpath), data_for_display[xpath]) for xpath in xpaths] table_rows = [] for key, value in label_value_pairs: table_rows.append('<tr><td>%s</td><td>%s</td></tr>' % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append({"name":id_string, "id": pi.id, "lat": pi.lat, "lng": pi.lng,'image_urls': img_urls, "table": '<table border="1"><a href="#"><img width="210" class="thumbnail" src="%s" alt=""></a><%s</table>' % (img_url,''.join(table_rows))}) context.data = data_for_template response = render_to_response("survey.kml", context_instance=context, mimetype="application/vnd.google-earth.kml+xml") response['Content-Disposition'] = disposition_ext_and_date(id_string, 'kml') return response
def kml_export(request, username, id_string): # read the locations from the database context = RequestContext(request) context.message = "HELLO!!" owner = get_object_or_404(User, username=username) xform = get_object_or_404(XForm, id_string=id_string, user=owner) helper_auth_helper(request) if not has_permission(xform, owner, request): return HttpResponseForbidden(_(u'Not shared.')) dd = DataDictionary.objects.get(id_string=id_string, user=owner) pis = ParsedInstance.objects.filter(instance__user=owner, instance__xform__id_string=id_string, lat__isnull=False, lng__isnull=False) data_for_template = [] labels = {} def cached_get_labels(xpath): if xpath in labels.keys(): return labels[xpath] labels[xpath] = dd.get_label(xpath) return labels[xpath] for pi in pis: # read the survey instances data_for_display = pi.to_dict() xpaths = data_for_display.keys() xpaths.sort(cmp=pi.data_dictionary.get_xpath_cmp()) label_value_pairs = [ (cached_get_labels(xpath), data_for_display[xpath]) for xpath in xpaths if not xpath.startswith(u"_")] table_rows = [] for key, value in label_value_pairs: table_rows.append('<tr><td>%s</td><td>%s</td></tr>' % (key, value)) img_urls = image_urls(pi.instance) img_url = img_urls[0] if img_urls else "" data_for_template.append({ 'name': id_string, 'id': pi.id, 'lat': pi.lat, 'lng': pi.lng, 'image_urls': img_urls, 'table': '<table border="1"><a href="#"><img width="210" ' 'class="thumbnail" src="%s" alt=""></a>%s' '</table>' % (img_url, ''.join(table_rows))}) context.data = data_for_template response = \ render_to_response("survey.kml", context_instance=context, mimetype="application/vnd.google-earth.kml+xml") response['Content-Disposition'] = \ disposition_ext_and_date(id_string, 'kml') audit = { "xform": xform.id_string, "export_type": Export.KML_EXPORT } audit_log(Actions.EXPORT_CREATED, request.user, owner, _("Created KML export on '%(id_string)s'.") %\ { 'id_string': xform.id_string, }, audit, request) # log download as well audit_log(Actions.EXPORT_DOWNLOADED, request.user, owner, _("Downloaded KML export on '%(id_string)s'.") %\ { 'id_string': xform.id_string, }, audit, request) return response