From 808eac008bdce4d6b05df36bca056e1fba504434 Mon Sep 17 00:00:00 2001 From: Joar Wandborg Date: Wed, 11 Jul 2012 01:43:21 +0200 Subject: [PATCH] Processing panel improvements - Added admin processing panel - Minor fixes on the user processing panel template --- mediagoblin/admin/__init__.py | 16 +++ mediagoblin/admin/routing.py | 21 ++++ mediagoblin/admin/views.py | 46 ++++++++ mediagoblin/routing.py | 2 + .../templates/mediagoblin/admin/panel.html | 110 ++++++++++++++++++ .../user_pages/processing_panel.html | 5 +- 6 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 mediagoblin/admin/__init__.py create mode 100644 mediagoblin/admin/routing.py create mode 100644 mediagoblin/admin/views.py create mode 100644 mediagoblin/templates/mediagoblin/admin/panel.html diff --git a/mediagoblin/admin/__init__.py b/mediagoblin/admin/__init__.py new file mode 100644 index 00000000..719b56e7 --- /dev/null +++ b/mediagoblin/admin/__init__.py @@ -0,0 +1,16 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + diff --git a/mediagoblin/admin/routing.py b/mediagoblin/admin/routing.py new file mode 100644 index 00000000..ea768c24 --- /dev/null +++ b/mediagoblin/admin/routing.py @@ -0,0 +1,21 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from routes.route import Route + +admin_routes = [ + Route('mediagoblin.admin.panel', '/panel', + controller='mediagoblin.admin.views:admin_processing_panel')] diff --git a/mediagoblin/admin/views.py b/mediagoblin/admin/views.py new file mode 100644 index 00000000..e6a3eac3 --- /dev/null +++ b/mediagoblin/admin/views.py @@ -0,0 +1,46 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from mediagoblin.tools.response import render_to_response, render_404 +from mediagoblin.db.util import DESCENDING +from mediagoblin.decorators import require_active_login + + +@require_active_login +def admin_processing_panel(request): + ''' + Show the global processing panel for this instance + ''' + if not request.user.is_admin: + return render_404(request) + + processing_entries = request.db.MediaEntry.find( + {'state': u'processing'}).sort('created', DESCENDING) + + # Get media entries which have failed to process + failed_entries = request.db.MediaEntry.find( + {'state': u'failed'}).sort('created', DESCENDING) + + processed_entries = request.db.MediaEntry.find( + {'state': u'processed'}).sort('created', DESCENDING).limit(10) + + # Render to response + return render_to_response( + request, + 'mediagoblin/admin/panel.html', + {'processing_entries': processing_entries, + 'failed_entries': failed_entries, + 'processed_entries': processed_entries}) diff --git a/mediagoblin/routing.py b/mediagoblin/routing.py index 2ca18cc7..adbe6253 100644 --- a/mediagoblin/routing.py +++ b/mediagoblin/routing.py @@ -23,6 +23,7 @@ from mediagoblin.edit.routing import edit_routes from mediagoblin.listings.routing import tag_routes from mediagoblin.webfinger.routing import webfinger_well_known_routes, \ webfinger_routes +from mediagoblin.admin.routing import admin_routes def get_mapper(): @@ -40,5 +41,6 @@ def get_mapper(): mapping.extend(tag_routes, '/tag') mapping.extend(webfinger_well_known_routes, '/.well-known') mapping.extend(webfinger_routes, '/api/webfinger') + mapping.extend(admin_routes, '/a') return mapping diff --git a/mediagoblin/templates/mediagoblin/admin/panel.html b/mediagoblin/templates/mediagoblin/admin/panel.html new file mode 100644 index 00000000..0da3c18f --- /dev/null +++ b/mediagoblin/templates/mediagoblin/admin/panel.html @@ -0,0 +1,110 @@ +{# +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#} +{% extends "mediagoblin/base.html" %} + +{% block mediagoblin_content %} + +

{% trans %}Media processing panel{% endtrans %}

+ +

+ {% trans %}Here you can track the state of media being processed on this instance.{% endtrans %} +

+ +

{% trans %}Media in-processing{% endtrans %}

+ +{% if processing_entries.count() %} + + + + + + + + + {% for media_entry in processing_entries %} + + + + + + {% if media_entry.transcoding_progress %} + + {% else %} + + {% endif %} + + {% endfor %} +
IDUserTitleWhen submittedTranscoding progress
{{ media_entry._id }}{{ media_entry.get_uploader.username }}{{ media_entry.title }}{{ media_entry.created.strftime("%m-%d-%Y %I:%M %p") }}{{ media_entry.transcoding_progress }}%Unknown
+{% else %} +

{% trans %}No media in-processing{% endtrans %}

+{% endif %} + +

{% trans %}These uploads failed to process:{% endtrans %}

+{% if failed_entries.count() %} + + + + + + + + + + + {% for media_entry in failed_entries %} + + + + + + {% if media_entry.get_fail_exception() %} + + + {% else %} + + + {% endif %} + + {% endfor %} +
IDUserTitleWhen submittedReason for failureFailure metadata
{{ media_entry._id }}{{ media_entry.get_uploader.username }}{{ media_entry.title }}{{ media_entry.created.strftime("%m-%d-%Y %I:%M %p") }}{{ media_entry.get_fail_exception().general_message }}{{ media_entry.fail_metadata }}  
+{% else %} +

{% trans %}No failed entries!{% endtrans %}

+{% endif %} +

{% trans %}Last 10 successful uploads{% endtrans %}

+{% if processed_entries.count() %} + + + + + + + + + {% for media_entry in processed_entries %} + + + + + + + {% endfor %} +
IDUserTitleSubmitted
{{ media_entry._id }}{{ media_entry.get_uploader.username }}{{ media_entry.title }}{{ media_entry.created.strftime("%m-%d-%Y %I:%M %p") }}
+{% else %} +

{% trans %}No processed entries, yet!{% endtrans %}

+{% endif %} +{% endblock %} diff --git a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html index ac2fd44c..ecbfb409 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html +++ b/mediagoblin/templates/mediagoblin/user_pages/processing_panel.html @@ -52,8 +52,8 @@

{% trans %}No media in-processing{% endtrans %}

{% endif %} +

{% trans %}These uploads failed to process:{% endtrans %}

{% if failed_entries.count() %} -

{% trans %}These uploads failed to process:{% endtrans %}

@@ -81,8 +81,9 @@ {% else %}

{% trans %}No failed entries!{% endtrans %}

{% endif %} + +

{% trans %}Your last 10 successful uploads{% endtrans %}

{% if processed_entries.count() %} -

{% trans %}Your last 10 successful uploads{% endtrans %}

-- 2.25.1