def profile(request, username): context = RequestContext(request) content_user = None context.num_surveys = Instance.objects.count() context.form = QuickConverter() # xlsform submission... if request.method == 'POST' and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey return { 'type': 'alert-success', 'text': 'Successfully published %s.' % survey.id_string, } context.message = publish_form(set_form) # profile view... content_user = get_object_or_404(User, username=username) # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.user_surveys = content_user.surveys.count() context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri("/%s" % request.user.username) # for any other user -> profile profile, created = UserProfile.objects.get_or_create(user=content_user) set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = None context.num_surveys = Instance.objects.count() context.form = QuickConverter() # xlsform submission... if request.method == "POST" and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey return {"type": "alert-success", "text": "Successfully published %s." % survey.id_string} context.message = publish_form(set_form) # profile view... content_user = get_object_or_404(User, username=username) # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.user_surveys = content_user.surveys.count() context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri("/%s" % request.user.username) # for any other user -> profile profile, created = UserProfile.objects.get_or_create(user=content_user) set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def index(request): context = RequestContext(request) context.title = "XLS2XForm v2.0-beta1" context.form = CreateXForm() context.page_name = "Home" if request.method == "POST": id_string = request.POST.get(u'id_string') title = request.POST.get(u'title') submitted_form = CreateXForm({ 'id_string': id_string, 'title': title, 'user': request.user }) if submitted_form.is_valid(): xf_data = submitted_form.cleaned_data xf_data['user'] = request.user xf = XForm.objects.create(**xf_data) return HttpResponseRedirect("/edit/%s" % xf.id_string) else: #passed back to the page to display errors. context.form = submitted_form context.xforms = request.user.xforms.all() return render_to_response("index.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = get_object_or_404(User, username=username) context.form = QuickConverter() # xlsform submission... if request.method == 'POST' and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey audit = {} audit_log( Actions.FORM_PUBLISHED, request.user, content_user, _("Published form '%(id_string)s'.") % { 'id_string': survey.id_string, }, audit, request) enketo_webform_url = reverse( enter_data, kwargs={'username': username, 'id_string': survey.id_string} ) return { 'type': 'alert-success', 'text': _(u'Successfully published %(form_id)s.' u' <a href="%(form_url)s">Enter Web Form</a>') % {'form_id': survey.id_string, 'form_url': enketo_webform_url} } context.message = publish_form(set_form) # profile view... # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.user_surveys = content_user.surveys.count() context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri( "/%s" % request.user.username) crowdforms = XForm.objects.filter( metadata__data_type=MetaData.CROWDFORM_USERS, metadata__data_value=username ) context.crowdforms = crowdforms # forms shared with user xfct = ContentType.objects.get(app_label='odk_logger', model='xform') fsw = {} for xf in content_user.userobjectpermission_set\ .filter(content_type=xfct): if isinstance(xf.content_object, XForm): fsw[xf.content_object.pk] = xf.content_object context.forms_shared_with = list(fsw.values()) # for any other user -> profile set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def dashboard(request): context = RequestContext(request) context.form = QuickConverter() content_user = request.user set_profile_data(context, content_user) context.url = request.build_absolute_uri("/%s" % request.user.username) return render_to_response("dashboard.html", context_instance=context)
def request_identifier(request): context = RequestContext(request) site=request.session.get('assigned_site') site = Site.objects.get(slug=site) form = IdentifierForm() if request.POST: form = IdentifierForm(request.POST) if form.is_valid(): requested_id = form.cleaned_data['total_requested'] z = IssuedIdentifier.objects.filter(site=site) unused = Identifier.objects.filter(~Q(identifier__in=[x.identifier for x in z])).count() if requested_id > unused: context.error = _(u"Only %d Identifiers are available. \ Please request less Identifiers") % unused c = IdentifierRequest() c.site = site c.total_requested = requested_id c.save() printhid.apply_async((), {'obj': c}) if c: return HttpResponseRedirect("/report") context.form = form return render(request, "request-form.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = None context.num_surveys = Instance.objects.count() context.form = QuickConverter() # xlsform submission... if request.method == 'POST' and request.user.is_authenticated(): try: form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey context.message = { 'type': 'success', 'text': 'Successfully published %s.' % survey.id_string, } except (PyXFormError, XLSFormError) as e: context.message = { 'type': 'error', 'text': unicode(e), } except IntegrityError as e: context.message = { 'type': 'error', 'text': 'Form with this id already exists.', } # profile view... content_user = get_object_or_404(User, username=username) # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.user_surveys = content_user.surveys.count() context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri("/%s" % request.user.username) # for any other user -> profile profile, created = UserProfile.objects.get_or_create(user=content_user) set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def quick_converter(request): if request.method == 'POST': form = QuickConverter(request.POST, request.FILES) if form.is_valid(): return form.get_xform() else: form = QuickConverter() context = RequestContext(request) context.form = form context.page_name = "Home" return render_to_response( 'quick_converter.html', context_instance=context )
def add_commcare_report(request): context = RequestContext(request) form = CommcareReportForm() if request.POST: form = CommcareReportForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] url = form.cleaned_data['source_url'] if not CommcareReport.objects.filter( name=name, source_url=url).count(): form.save() return HttpResponseRedirect(reverse(index)) else: context.error = _(u"There already exists a report with the" u" same name and url!") context.form = form; return render(request, "report-form.html", context_instance=context)
def dashboard(request): context = RequestContext(request) context.form = QuickConverter() context.odk_url = request.build_absolute_uri("/%s" % request.user.username) if request.method == 'POST': try: form = QuickConverter(request.POST, request.FILES) survey = form.get_survey() publish(request.user, survey) context.message = { 'type': 'success', 'text': 'Successfully published %s.' % survey.id_string, } except PyXFormError as e: context.message = { 'type': 'error', 'text': unicode(e), } return render_to_response("dashboard.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = get_object_or_404(User, username=username) context.form = QuickConverter() # xlsform submission... if request.method == 'POST' and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey audit = {} audit_log( Actions.FORM_PUBLISHED, request.user, content_user, _("Published form '%(id_string)s'.") % { 'id_string': survey.id_string, }, audit, request) enketo_webform_url = reverse( enter_data, kwargs={'username': username, 'id_string': survey.id_string} ) return { 'type': 'alert-success', 'preview_url': reverse(enketo_preview, kwargs={ 'username': username, 'id_string': survey.id_string }), 'text': _(u'Successfully published %(form_id)s.' u' <a href="%(form_url)s">Enter Web Form</a>' u' or <a href="#preview-modal" data-toggle="modal">' u'Preview Web Form</a>') % {'form_id': survey.id_string, 'form_url': enketo_webform_url}, 'form_o': survey } form_result = publish_form(set_form) if form_result['type'] == 'alert-success': # comment the following condition (and else) # when we want to enable sms check for all. # until then, it checks if form barely related to sms if is_sms_related(form_result.get('form_o')): form_result_sms = check_form_sms_compatibility(form_result) context.message_list = [form_result, form_result_sms] else: context.message = form_result else: context.message = form_result # profile view... # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() request_url = request.build_absolute_uri( "/%s" % request.user.username) context.url = request_url.replace('http://', 'https://') xforms = XForm.objects.filter(user=content_user)\ .select_related('user', 'instances') context.user_xforms = xforms # forms shared with user xfct = ContentType.objects.get(app_label='logger', model='xform') xfs = content_user.userobjectpermission_set.filter(content_type=xfct) shared_forms_pks = list(set([xf.object_pk for xf in xfs])) context.forms_shared_with = XForm.objects.filter( pk__in=shared_forms_pks).exclude(user=content_user)\ .select_related('user') context.xforms_list = [ { 'id': 'published', 'xforms': context.user_xforms, 'title': _(u"Published Forms"), 'small': _("Export, map, and view submissions.") }, { 'id': 'shared', 'xforms': context.forms_shared_with, 'title': _(u"Shared Forms"), 'small': _("List of forms shared with you.") } ] # for any other user -> profile set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = get_object_or_404(User, username=username) context.form = QuickConverter() # xlsform submission... if request.method == "POST" and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey audit = {} audit_log( Actions.FORM_PUBLISHED, request.user, content_user, _("Published form '%(id_string)s'.") % {"id_string": survey.id_string}, audit, request, ) enketo_webform_url = reverse(enter_data, kwargs={"username": username, "id_string": survey.id_string}) return { "type": "alert-success", "preview_url": reverse(enketo_preview, kwargs={"username": username, "id_string": survey.id_string}), "text": _( u"Successfully published %(form_id)s." u' <a href="%(form_url)s">Enter Web Form</a>' u' or <a href="#preview-modal" data-toggle="modal">' u"Preview Web Form</a>" ) % {"form_id": survey.id_string, "form_url": enketo_webform_url}, "form_o": survey, } form_result = publish_form(set_form) if form_result["type"] == "alert-success": # comment the following condition (and else) # when we want to enable sms check for all. # until then, it checks if form barely related to sms if is_sms_related(form_result.get("form_o")): form_result_sms = check_form_sms_compatibility(form_result) context.message_list = [form_result, form_result_sms] else: context.message = form_result else: context.message = form_result # profile view... # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri("/%s" % request.user.username) xforms = XForm.objects.filter(user=content_user).select_related("user", "surveys") context.user_xforms = xforms crowdforms = XForm.objects.filter( metadata__data_type=MetaData.CROWDFORM_USERS, metadata__data_value=username ).select_related("user") context.crowdforms = crowdforms # forms shared with user xfct = ContentType.objects.get(app_label="odk_logger", model="xform") xfs = content_user.userobjectpermission_set.filter(content_type=xfct) shared_forms_pks = list(set([xf.object_pk for xf in xfs])) context.forms_shared_with = ( XForm.objects.filter(pk__in=shared_forms_pks).exclude(user=content_user).select_related("user") ) # for any other user -> profile set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)
def profile(request, username): context = RequestContext(request) content_user = get_object_or_404(User, username=username) context.form = QuickConverter() # xlsform submission... if request.method == 'POST' and request.user.is_authenticated(): def set_form(): form = QuickConverter(request.POST, request.FILES) survey = form.publish(request.user).survey audit = {} audit_log( Actions.FORM_PUBLISHED, request.user, content_user, _("Published form '%(id_string)s'.") % { 'id_string': survey.id_string, }, audit, request) enketo_webform_url = reverse( enter_data, kwargs={'username': username, 'id_string': survey.id_string} ) return { 'type': 'alert-success', 'preview_url': reverse(enketo_preview, kwargs={ 'username': username, 'id_string': survey.id_string }), 'text': _(u'Successfully published %(form_id)s.' u' <a href="%(form_url)s">Enter Web Form</a>' u' or <a href="#preview-modal" data-toggle="modal">Preview Web Form</a>') % {'form_id': survey.id_string, 'form_url': enketo_webform_url}, 'form_o': survey } form_result = publish_form(set_form) if form_result['type'] == 'alert-success': # comment the following condition (and else) # when we want to enable sms check for all. # until then, it checks if form barely related to sms if is_sms_related(form_result.get('form_o')): form_result_sms = check_form_sms_compatibility(form_result) context.message_list = [form_result, form_result_sms] else: context.message = form_result else: context.message = form_result # profile view... # for the same user -> dashboard if content_user == request.user: context.show_dashboard = True context.user_surveys = content_user.surveys.count() context.all_forms = content_user.xforms.count() context.form = QuickConverterFile() context.form_url = QuickConverterURL() context.odk_url = request.build_absolute_uri( "/%s" % request.user.username) from django.db.models import Count xforms = XForm.objects.filter(user=content_user)\ .select_related('user')\ .extra( select={ 'submission_count': 'SELECT COUNT(*) FROM ' 'odk_logger_instance WHERE ' 'odk_logger_instance.xform_id=odk_logger_xform.id ' 'AND odk_logger_instance.is_deleted=\'0\'' }) context.user_xforms = xforms crowdforms = XForm.objects.filter( metadata__data_type=MetaData.CROWDFORM_USERS, metadata__data_value=username,)\ .select_related('user')\ .extra( select={ 'submission_count': 'SELECT COUNT(*) FROM ' 'odk_logger_instance WHERE ' 'odk_logger_instance.xform_id=odk_logger_xform.id ' 'AND odk_logger_instance.is_deleted=\'0\'' }) context.crowdforms = crowdforms # forms shared with user xfct = ContentType.objects.get(app_label='odk_logger', model='xform') xfs = content_user.userobjectpermission_set.filter(content_type=xfct) context.forms_shared_with = XForm.objects.filter( pk__in=[xf.object_pk for xf in xfs])\ .select_related('user')\ .extra( select={ 'submission_count': 'SELECT COUNT(*) FROM ' 'odk_logger_instance WHERE ' 'odk_logger_instance.xform_id=odk_logger_xform.id ' 'AND odk_logger_instance.is_deleted=\'0\'' }) # for any other user -> profile set_profile_data(context, content_user) return render_to_response("profile.html", context_instance=context)