add dumpdata view in ldt_utils admin.
authorcavaliet
Thu, 13 Dec 2012 17:27:20 +0100
changeset 1027 5e50a61acf4c
parent 1026 f60f05ce77fe
child 1028 57bb8c9fe1ff
add dumpdata view in ldt_utils admin.
src/ldt/ldt/ldt_utils/admin.py
src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html
src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/dumpdata.html
--- a/src/ldt/ldt/ldt_utils/admin.py	Thu Dec 13 14:33:48 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/admin.py	Thu Dec 13 17:27:20 2012 +0100
@@ -8,6 +8,10 @@
 from ldt.ldt_utils.models import Content, Project, Media, Author
 from ldt.ldt_utils.stat import update_stat_content
 from guardian.admin import GuardedModelAdmin
+from django.http import HttpResponse
+from StringIO import StringIO
+from django.core.management import call_command
+import logging
 
 
 class ProjectAdmin(GuardedModelAdmin):
@@ -95,18 +99,38 @@
             form = StatAnnotationForm()
             
         return render_to_response('admin/ldt_utils/content/stats_form.html', {'form': form, 'message':message, 'current_app': self.admin_site.name, 'current_action' : 'stats' }, context_instance=RequestContext(request))
-            
+    
+    
+    def dumpdata(self, request):
+        # do we dump the datas ?
+        dump_str = request.REQUEST.get("dump")
+        app_str = request.REQUEST.get("app", "")
+        dump_bool = False
+        if dump_str:
+            dump_bool = {'true': True, 'false': False, "0": False, "1": True}.get(dump_str.lower())
+        if dump_bool:
+            content = StringIO()
+            if app_str=="":
+                call_command("dumpdata", indent=1, stdout=content)
+            else:
+                call_command("dumpdata", app_str, indent=1, stdout=content)
+            content.seek(0)
+            out = content.getvalue()
+            content.close()
+            res = HttpResponse(out, mimetype='application/json')
+            res["Content-Disposition"] = "attachment; filename=dumpdata_ldt.json"
+            return res
+        return render_to_response('admin/ldt_utils/content/dumpdata.html', {}, context_instance=RequestContext(request))
+      
 
     def get_urls(self):
         urls = super(ContentAdmin, self).get_urls()
         content_urls = patterns('',
             url(r'^reindex/$', self.admin_site.admin_view(self.reindex), name="ldt_content_reindex"),
-    # (r'^admin/ldt/content/import/upload/$', 'ldt.ldt_utils.views.uploadFile'),                                
             url(r'^import/$', self.admin_site.admin_view(self.import_file), name="ldt_content_import_file"),
-            url(r'^stats/$', self.admin_site.admin_view(self.stats_annotations), name="ldt_project_compute_stats")
-
+            url(r'^stats/$', self.admin_site.admin_view(self.stats_annotations), name="ldt_project_compute_stats"),
+            url(r'^dumpdata/$', self.admin_site.admin_view(self.dumpdata), name="ldt_admin_dump_data"),
         )
-        
         return content_urls + urls
 
 
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html	Thu Dec 13 14:33:48 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html	Thu Dec 13 17:27:20 2012 +0100
@@ -14,26 +14,32 @@
 		<caption>Import</caption>
 		<tr>
 			<th><a href="{% absurl admin:ldt_content_import_file %}">Import
-			an ldt</a></th>
+			an ldt</a>
+			</th>
+			<td>&nbsp;</td>
+		</tr>
+		<tr>
+			<th><a href="{% absurl admin:ldt_content_reindex %}">Reindex</a>
+			</th>
+			<td>&nbsp;</td>
+		</tr>
+		<tr>
+			<th><a href="{% absurl admin:ldt_project_compute_stats %}">Compute stats</a>
+			</th>
 			<td>&nbsp;</td>
-			<!--tr>
-	                    <th>            
-	                        <a href="content/export/form">Generate ldt</a>
-	                    </th>
-	                    <td>&nbsp;</td>
-	                </tr-->
-			<tr>
-				<th><a href="{% absurl admin:ldt_content_reindex %}">Reindex</a>
-				</th>
-				<td>&nbsp;</td>
-			</tr>
-			<tr>
-				<th><a href="{% absurl admin:ldt_project_compute_stats %}">Compute stats</a>
-				</th>
-				<td>&nbsp;</td>
-			</tr>
+		</tr>
 	</table>
 	</div>
+	<div class="module">
+    <table summary="Data">
+        <caption>Data</caption>
+        <tr>
+            <th><a href="{% absurl admin:ldt_admin_dump_data %}">Dump data</a>
+            </th>
+            <td>&nbsp;</td>
+        </tr>
+    </table>
+	</div>
 </div>
 
 {% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/dumpdata.html	Thu Dec 13 17:27:20 2012 +0100
@@ -0,0 +1,16 @@
+{% extends "admin/ldt_utils/app_action.html" %}
+{% load i18n %}
+{% load absurl %}
+{# DUMP DATA #}
+{% block content %}
+{% if message %}
+<div>
+<p>{{ message }}</p>
+</div>
+{% endif %}
+<div>
+<p>Click <a href="{% absurl admin:ldt_admin_dump_data %}?dump=1">HERE</a> if you want to download the dumpdata's json. It can be long to load. The dumpdata is full and raw, without natural keys.</p>
+</div>
+
+<a href="{% absurl admin:app_list 'ldt_utils' %}">Back to administration page</a>
+{% endblock %}