Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)