def _create_enketo_urls(request, xform): """ Generate enketo urls for a form :param request: :param xform: :return: enketo urls """ form_url = get_form_url(request, xform.user.username, settings.ENKETO_PROTOCOL, xform_pk=xform.pk, generate_consistent_urls=True) data = {} try: enketo_urls = get_enketo_urls(form_url, xform.id_string) offline_url = enketo_urls.get("offline_url") MetaData.enketo_url(xform, offline_url) data['offline_url'] = offline_url if 'preview_url' in enketo_urls: preview_url = enketo_urls.get("preview_url") MetaData.enketo_preview_url(xform, preview_url) data['preview_url'] = preview_url if 'single_url' in enketo_urls: single_url = enketo_urls.get("single_url") MetaData.enketo_single_submit_url(xform, single_url) data['single_url'] = single_url except ConnectionError as e: logging.exception("Connection Error: %s" % e) except EnketoError as e: logging.exception("Enketo Error: %s" % e.message) return data