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 dashboard(request): content_user = request.user data = { 'form': QuickConverter(), 'content_user': content_user, 'url': request.build_absolute_uri("/%s" % request.user.username) } set_profile_data(data, content_user) return render(request, "dashboard.html", data)
def public_profile(request, username): content_user = check_and_set_user(request, username) if isinstance(content_user, HttpResponseRedirect): return content_user context = RequestContext(request) set_profile_data(context, content_user) context.is_owner = request.user == content_user audit = {} audit_log( Actions.PUBLIC_PROFILE_ACCESSED, request.user, content_user, _("Public profile accessed."), audit, request) return render_to_response("profile.html", context_instance=context)
def public_profile(request, username): content_user = check_and_set_user(request, username) if isinstance(content_user, HttpResponseRedirect): return content_user data = {} set_profile_data(data, content_user) data['is_owner'] = request.user == content_user audit = {} audit_log( Actions.PUBLIC_PROFILE_ACCESSED, request.user, content_user, _("Public profile accessed."), audit, request) return render(request, "profile.html", data)
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.url = request.build_absolute_uri("/%s" % request.user.username) 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): content_user = get_object_or_404(User, username__iexact=username) form = QuickConverterForm() data = {'form': form} # If the "Sync forms" button is pressed in the UI, a call to KPI's # `/migrate` endpoint is made to sync kobocat and KPI. if request.GET.get('sync_xforms') == 'true': migrate_response = _make_authenticated_request(request, content_user) message = {} if migrate_response.status_code == status.HTTP_200_OK: message['text'] = t( 'The migration process has started and may take several ' 'minutes. Please check the project list in the ' '<a href={}>regular interface</a> and ensure your projects have ' 'synced.').format(settings.KOBOFORM_URL) else: message['text'] = t( 'Something went wrong trying to migrate your forms. Please try ' 'again or reach out on the <a' 'href="https://community.kobotoolbox.org/">community forum</a> ' 'for assistance.') data['message'] = message # profile view... # for the same user -> dashboard if content_user == request.user: show_dashboard = True all_forms = content_user.xforms.count() request_url = request.build_absolute_uri("/%s" % request.user.username) url = request_url.replace('http://', 'https://') xforms = XForm.objects.filter(user=content_user)\ .select_related('user', 'instances') 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])) forms_shared_with = XForm.objects.filter( pk__in=shared_forms_pks).exclude(user=content_user)\ .select_related('user') # all forms to which the user has access published_or_shared = XForm.objects.filter( pk__in=shared_forms_pks).select_related('user') xforms_list = [{ 'id': 'published', 'xforms': user_xforms, 'title': t("Published Forms"), 'small': t("Export, map, and view submissions.") }, { 'id': 'shared', 'xforms': forms_shared_with, 'title': t("Shared Forms"), 'small': t("List of forms shared with you.") }, { 'id': 'published_or_shared', 'xforms': published_or_shared, 'title': t("Published Forms"), 'small': t("Export, map, and view submissions.") }] data.update({ 'all_forms': all_forms, 'show_dashboard': show_dashboard, 'form': form, 'url': url, 'user_xforms': user_xforms, 'xforms_list': xforms_list, 'forms_shared_with': forms_shared_with }) # for any other user -> profile set_profile_data(data, content_user) return render(request, "profile.html", data)