Browse Source

[notebook] Open queries directly from the notebook page

Romain Rigaux 10 years ago
parent
commit
9c3e818

+ 5 - 2
desktop/core/src/desktop/models.py

@@ -170,7 +170,7 @@ class DocumentManager(models.Manager):
         Q(documentpermission__groups__in=user.groups.all())
     ).defer('description', 'extra').distinct()
 
-  def get_docs(self, user, model_class=None, extra=None):
+  def get_docs(self, user, model_class=None, extra=None, qfilter=None):
     docs = Document.objects.documents(user).exclude(name='pig-app-hue-script')
 
     if model_class is not None:
@@ -180,6 +180,9 @@ class DocumentManager(models.Manager):
     if extra is not None:
       docs = docs.filter(extra=extra)
 
+    if qfilter is not None:
+      docs = docs.filter(qfilter)
+
     return docs
 
   def get_doc_for_writing(self, doc_id, user):
@@ -799,7 +802,7 @@ class Document2(models.Model):
     elif self.type == 'oozie-bundle2':
       return reverse('oozie:edit_bundle') + '?bundle=' + str(self.id)
     elif self.type == 'query':
-      return reverse('notebook:query') + '?editor=' + str(self.id)
+      return reverse('notebook:editor') + '?editor=' + str(self.id)
     elif self.type == 'notebook':
       return reverse('notebook:notebook') + '?notebook=' + str(self.id)
     elif self.type == 'search-dashboard':

+ 2 - 2
desktop/libs/notebook/src/notebook/api.py

@@ -245,7 +245,7 @@ def historify(request):
 
   if parent:
     Document2.objects.get(id=parent['id']).dependencies.add(history_doc)
-    
+
   response['status'] = 0
   response['id'] = history_doc.id
   response['message'] = _('Notebook saved !')
@@ -255,7 +255,7 @@ def historify(request):
 
 def get_history(request):
   response = {'status': -1}
-  
+
   response['status'] = 0
   response['history'] = [{
       'name': doc.name,

+ 1 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -950,7 +950,7 @@
         console.log(data);
       });
     };
-   
+
     self.exportJupyterNotebook = function () {
       function addCell(type, code) {
         var cell = {

+ 1 - 1
desktop/libs/notebook/src/notebook/templates/notebooks.mako

@@ -78,7 +78,7 @@ ${ commonheader(_("Notebooks"), "spark", user, "60px") | n,unicode }
       <tr>
         <td data-bind="click: $root.handleSelect" class="center" style="cursor: default" data-row-selector-exclude="true">
           <div class="hueCheckbox fa" data-bind="multiCheck: '#notebookTable', css: {'fa-check': isSelected }" data-row-selector-exclude="true"></div>
-          <a data-bind="attr: { 'href': '${ url('notebook:notebook') }?notebook=' + id() }" data-row-selector="true"></a>
+          <a data-bind="attr: { 'href': absoluteUrl }" data-row-selector="true"></a>
         </td>
         <td data-bind="text: name"></td>
         <td data-bind="text: description"></td>

+ 4 - 3
desktop/libs/notebook/src/notebook/views.py

@@ -18,6 +18,7 @@
 import json
 import logging
 
+from django.db.models import Q
 from django.core.urlresolvers import reverse
 from django.utils.translation import ugettext as _
 
@@ -78,8 +79,8 @@ def editor(request):
   else:
     editor = Notebook()
     data = editor.get_data()
-    data['name'] = '%s Query' % editor_type.title()    
-    data['type'] = editor_type
+    data['name'] = '%s Query' % editor_type.title()
+    data['type'] = 'query'
     editor.data = json.dumps(data)
 
   autocomplete_base_url = ''
@@ -102,7 +103,7 @@ def new(request):
 
 
 def notebooks(request):
-  notebooks = [d.content_object.to_dict() for d in Document.objects.get_docs(request.user, Document2, extra='notebook') if not d.content_object.is_history]
+  notebooks = [d.content_object.to_dict() for d in Document.objects.get_docs(request.user, Document2, qfilter=Q(extra='notebook') | Q(extra='query')) if not d.content_object.is_history]
 
   return render('notebooks.mako', request, {
       'notebooks_json': json.dumps(notebooks, cls=JSONEncoderForHTML)