Пример #1
0
def plugin_widgets(request, placeholder_uid, workspace=None, position=None, \
                   template_name='dash/plugin_widgets.html', template_name_ajax='dash/plugin_widgets_ajax.html'):
    """
    Plugin widgets view. Lists all the widgets for the placeholder and workspace given.

    :param django.http.HttpRequest request:
    :param string placeholder_uid: Placeholder UID.
    :param int position: Position on the dashboard to which the widget is to be added.
    :param string template_name:
    :param string template_name_ajax: Tempalte used for AJAX requests.
    :return django.http.HttpResponse:
    """
    # Getting dashboard settings for the user. Then get users' layout.
    dashboard_settings = get_or_create_dashboard_settings(request.user)
    layout = get_layout(layout_uid=dashboard_settings.layout_uid, as_instance=True)

    placeholder = layout.get_placeholder(placeholder_uid)

    if not validate_placeholder_uid(layout, placeholder_uid):
        raise Http404(_("Invalid placeholder: {0}").format(placeholder_uid))

    occupied_cells = build_cells_matrix(request.user, layout, placeholder, workspace=workspace)

    context = {
        'layout': layout,
        'grouped_widgets': get_widgets(
            layout,
            placeholder,
            request.user,
            workspace=workspace,
            position=position,
            occupied_cells=occupied_cells
            ),
        'dashboard_settings': dashboard_settings
    }

    if request.is_ajax():
        template_name = template_name_ajax
    return render_to_response(template_name, context, context_instance=RequestContext(request))
Пример #2
0
def plugin_widgets(request, placeholder_uid, workspace=None, position=None, \
                   template_name='dash/plugin_widgets.html', \
                   template_name_ajax='dash/plugin_widgets_ajax.html'):
    """
    Plugin widgets view. Lists all the widgets for the placeholder and
    workspace given.

    :param django.http.HttpRequest request:
    :param string placeholder_uid: Placeholder UID.
    :param int position: Position on the dashboard to which the widget is to
        be added.
    :param string template_name:
    :param string template_name_ajax: Tempalte used for AJAX requests.
    :return django.http.HttpResponse:
    """
    # Getting dashboard settings for the user. Then get users' layout.  
    dashboard_settings = get_or_create_dashboard_settings(request.user)
    layout = get_layout(
        layout_uid = dashboard_settings.layout_uid,
        as_instance = True
        )
    placeholder = layout.get_placeholder(placeholder_uid)

    if not validate_placeholder_uid(layout, placeholder_uid):
        raise Http404(_("Invalid placeholder: {0}").format(placeholder_uid))

    occupied_cells = build_cells_matrix(
        request.user,
        layout,
        placeholder,
        workspace = workspace
        )

    # Here we checking if clipboard contains a plugin which is suitable for
    # being pasted into the cell given.
    paste_from_clipboard_url = None

    # First get the clipboard data.
    clipboard_plugin_data = get_plugin_data_from_clipboard(request, layout.uid)

    # If clipboard data is not empty, check if the data is suitable for
    # being pasted into the position given.
    if clipboard_plugin_data:
        can_paste_from_clipboard = can_paste_entry_from_clipboard(
            request = request,
            layout = layout,
            placeholder_uid = placeholder_uid,
            position = position,
            workspace = workspace
            )

        if can_paste_from_clipboard:
            kwargs = {
                'placeholder_uid': placeholder_uid,
                'position': position
            }
            if workspace:
                kwargs.update({'workspace': workspace,})

            paste_from_clipboard_url = reverse(
                'dash.paste_dashboard_entry',
                kwargs = kwargs
                )

    if int(position) in occupied_cells:
        registered_plugins = get_user_plugins(request.user)
        user_plugin_uids = [uid for uid, repr in registered_plugins]

        dashboard_entries = DashboardEntry._default_manager.get_for_user(user=request.user,
                                                                         layout_uid=layout.uid, workspace=workspace)\
                                                                        .select_related('workspace', 'user')\
                                                                        .filter(plugin_uid__in=user_plugin_uids)\
                                                                        .filter(placeholder_uid=placeholder.uid)\
                                                                        .order_by('placeholder_uid', 'position')[:]

        for dashboard_entry in dashboard_entries:
            if int(position) == dashboard_entry.position:
                occupied_cells = get_occupied_cells(
                                layout,
                                placeholder,
                                dashboard_entry.plugin_uid,
                                dashboard_entry.position
                                )

        context = {
            'layout': layout,
            'grouped_widgets': get_widgets(
                layout,
                placeholder,
                request.user,
                workspace = workspace,
                position = position,
                occupied_cells = occupied_cells
                ),
            'dashboard_settings': dashboard_settings,
            'paste_from_clipboard_url': paste_from_clipboard_url,
        }

    else:
        context = {
            'layout': layout,
            'grouped_widgets': get_widgets(
                layout,
                placeholder,
                request.user,
                workspace = workspace,
                position = position,
                occupied_cells = occupied_cells
                ),
            'dashboard_settings': dashboard_settings,
            'paste_from_clipboard_url': paste_from_clipboard_url,
        }
    if request.is_ajax():
        template_name = layout.plugin_widgets_template_name_ajax
    return render_to_response(
        template_name,
        context,
        context_instance = RequestContext(request)
        )
Пример #3
0
def plugin_widgets(request, placeholder_uid, workspace=None, position=None, \
                   template_name='dash/plugin_widgets.html', \
                   template_name_ajax='dash/plugin_widgets_ajax.html'):
    """
    Plugin widgets view. Lists all the widgets for the placeholder and
    workspace given.

    :param django.http.HttpRequest request:
    :param string placeholder_uid: Placeholder UID.
    :param int position: Position on the dashboard to which the widget is to
        be added.
    :param string template_name:
    :param string template_name_ajax: Tempalte used for AJAX requests.
    :return django.http.HttpResponse:
    """
    # Getting dashboard settings for the user. Then get users' layout.
    dashboard_settings = get_or_create_dashboard_settings(request.user)
    layout = get_layout(
        layout_uid = dashboard_settings.layout_uid,
        as_instance = True
        )

    placeholder = layout.get_placeholder(placeholder_uid)

    if not validate_placeholder_uid(layout, placeholder_uid):
        raise Http404(_("Invalid placeholder: {0}").format(placeholder_uid))

    occupied_cells = build_cells_matrix(
        request.user,
        layout,
        placeholder,
        workspace = workspace
        )

    # Here we checking if clipboard contains a plugin which is suitable for
    # being pasted into the cell given.
    paste_from_clipboard_url = None

    # First get the clipboard data.
    clipboard_plugin_data = get_plugin_data_from_clipboard(request, layout.uid)

    # If clipboard data is not empty, check if the data is suitable for
    # being pasted into the position given.
    if clipboard_plugin_data:
        can_paste_from_clipboard = can_paste_entry_from_clipboard(
            request = request,
            layout = layout,
            placeholder_uid = placeholder_uid,
            position = position,
            workspace = workspace
            )

        if can_paste_from_clipboard:
            kwargs = {
                'placeholder_uid': placeholder_uid,
                'position': position
            }
            if workspace:
                kwargs.update({'workspace': workspace,})

            paste_from_clipboard_url = reverse(
                'dash.paste_dashboard_entry',
                kwargs = kwargs
                )

    context = {
        'layout': layout,
        'grouped_widgets': get_widgets(
            layout,
            placeholder,
            request.user,
            workspace = workspace,
            position = position,
            occupied_cells = occupied_cells
            ),
        'dashboard_settings': dashboard_settings,
        'paste_from_clipboard_url': paste_from_clipboard_url,
    }

    if request.is_ajax():
        template_name = layout.plugin_widgets_template_name_ajax

    return render_to_response(
        template_name,
        context,
        context_instance = RequestContext(request)
        )