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))
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) )
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) )