Ver código fonte

HUE-2033 [core] Cleanup and tests update

Romain Rigaux 11 anos atrás
pai
commit
0ac366c

+ 6 - 50
desktop/core/src/desktop/api.py

@@ -33,23 +33,15 @@ from desktop.models import Document, DocumentTag
 LOG = logging.getLogger(__name__)
 
 
-def list_docs(request):
+def _get_docs(user):
+  history_tag = DocumentTag.objects.get_history_tag(user)  
+  trash_tag = DocumentTag.objects.get_trash_tag(user)
   docs = itertools.chain(
-      Document.objects.get_docs(request.user).order_by('-last_modified').exclude(tags__tag__in=['history'])[:500],
-      Document.objects.get_docs(request.user).order_by('-last_modified').filter(tags__tag__in=['history'])[:100]
+      Document.objects.get_docs(user).exclude(tags__in=[trash_tag]).filter(tags__in=[history_tag]).order_by('-last_modified')[:500],
+      Document.objects.get_docs(user).exclude(tags__in=[history_tag]).order_by('-last_modified')[:100]
   )
-  docs = list(docs)
-  return HttpResponse(json.dumps(massaged_documents_for_json_old(docs, request.user)), mimetype="application/json")
-
+  return list(docs)  
 
-def list_tags(request):
-  docs = itertools.chain(
-      Document.objects.get_docs(request.user).order_by('-last_modified').exclude(tags__tag__in=['history'])[:500],
-      Document.objects.get_docs(request.user).order_by('-last_modified').filter(tags__tag__in=['history'])[:100]
-  )
-  docs = list(docs)
-  tags = list(set([tag for doc in docs for tag in doc.tags.all()] + [tag for tag in DocumentTag.objects.get_tags(user=request.user)])) # List of all personal and share tags
-  return HttpResponse(json.dumps(massaged_tags_for_json_old(tags, request.user)), mimetype="application/json")
 
 def massaged_tags_for_json(docs, user):
   """
@@ -160,24 +152,6 @@ def massaged_documents_for_json(documents, user):
   return docs
 
 
-def massage_doc_for_json_new(doc):
-  return {
-      'id': doc.id,
-      'contentType': doc.content_type.name,
-      'icon': doc.icon,
-      'name': doc.name,
-      'url': doc.content_object.get_absolute_url(),
-      'description': doc.description,
-      'tags': [{'id': tag.id, 'name': tag.tag} for tag in doc.tags.all()],
-      'owner': doc.owner.username,
-      'lastModified': doc.last_modified.strftime("%x %X"),
-      'lastModifiedInMillis': time.mktime(doc.last_modified.timetuple())
-    }
-
-def massaged_documents_for_json_old(documents, user):
-  return [massage_doc_for_json(doc, user) for doc in documents]
-
-
 def massage_doc_for_json(doc, user):
   perms = doc.list_permissions()
   return {
@@ -200,24 +174,6 @@ def massage_doc_for_json(doc, user):
       'lastModifiedInMillis': time.mktime(doc.last_modified.timetuple())
     }
 
-def massaged_tags_for_json_old(tags, user):
-  ts = []
-  trash = DocumentTag.objects.get_trash_tag(user)
-  history = DocumentTag.objects.get_history_tag(user)
-
-  for tag in tags:
-    massaged_tag = {
-      'id': tag.id,
-      'name': tag.tag,
-      'owner': tag.owner.username,
-      'isTrash': tag.id == trash.id,
-      'isHistory': tag.id == history.id,
-      'isExample': tag.tag == DocumentTag.EXAMPLE,
-      'isMine': tag.owner.username == user.username
-    }
-    ts.append(massaged_tag)
-
-  return ts
 
 def add_tag(request):
   response = {'status': -1, 'message': ''}

+ 24 - 24
desktop/core/src/desktop/api_tests.py

@@ -31,6 +31,7 @@ from desktop.lib.test_utils import grant_access
 from desktop.models import DocumentTag , Document
 from pig.models import PigScript
 from useradmin.models import get_default_user_group
+from desktop.api import massaged_documents_for_json, _get_docs
 
 
 class TestDocModelTags():
@@ -48,7 +49,7 @@ class TestDocModelTags():
   def add_tag(self, name):
     response = self.client.post("/desktop/api/tag/add_tag", {'name': name})
     assert_equal(0, json.loads(response.content)['status'], response.content)
-    return json.loads(response.content)['tag_id']
+    return json.loads(response.content)['id']
 
   def add_doc(self, name):
     script = PigScript.objects.create(owner=self.user)
@@ -89,30 +90,28 @@ class TestDocModelTags():
 
   def test_remove_tags(self):
     response = self.client.post("/desktop/api/tag/add_tag", {'name': 'my_tag'})
-    tag_id = json.loads(response.content)['tag_id']
+    tag_id = json.loads(response.content)['id']
 
-    response = self.client.get("/desktop/api/tag/remove_tags")
+    response = self.client.get("/desktop/api/tag/remove_tag")
     assert_equal(-1, json.loads(response.content)['status'])
 
-    response = self.client_not_me.post("/desktop/api/tag/remove_tags", {'data': json.dumps({'tag_ids': [tag_id]})})
+    response = self.client_not_me.post("/desktop/api/tag/remove_tag", {'tag_id': tag_id})
     assert_equal(-1, json.loads(response.content)['status'], response.content)
 
-    response = self.client.post("/desktop/api/tag/remove_tags", {'data': json.dumps({'tag_ids': [tag_id]})})
+    response = self.client.post("/desktop/api/tag/remove_tag", {'tag_id': tag_id})
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     assert_false(DocumentTag.objects.filter(id=tag_id).exists())
 
-  def test_list_tags(self):
-    tag_id = self.add_tag('my_list_tags')
+  def test_massaged_documents_for_json(self):
+    docs = _get_docs(self.user)
+    assert_equal({}, massaged_documents_for_json(docs, self.user))
 
-    response = self.client.get("/desktop/api/tag/list_tags")
-    assert_true([tag for tag in json.loads(response.content) if tag['id'] == tag_id], response.content)
+    tag_name = 'test_massaged_documents_for_json'
+    script, doc = self.add_doc('test_massaged_documents_for_json')
 
-  def test_list_docs(self):
-    script, doc = self.add_doc('test-pig')
-
-    response = self.client.get("/desktop/api/doc/list_docs")
-    assert_true([doc for doc in json.loads(response.content) if doc['id'] == script.id], response.content)
+    docs = _get_docs(self.user)
+    assert_not_equal({}, massaged_documents_for_json(docs, self.user))
 
   def test_tag(self):
     script, doc = self.add_doc('tag_pig')
@@ -185,17 +184,18 @@ class TestDocModelPermissions():
   def test_share_document_permissions(self):
     # No doc
     response = self.client.get('/home')
-    assert_equal([], list(response.context['documents']))
+    assert_equal({}, json.loads(response.context['json_documents']))
     response = self.client_not_me.get('/home')
-    assert_equal([], list(response.context['documents']))
+    assert_equal({}, json.loads(response.context['json_documents']))
 
     # Add doc
     script, doc = self._add_doc('test_update_permissions')
+    doc_id = '%s' % doc.id
 
     response = self.client.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))
     response = self.client_not_me.get('/home')
-    assert_equal([], list(response.context['documents']))
+    assert_false(doc_id in json.loads(response.context['json_documents']))
 
     # Share by user
     response = self.client.post("/desktop/api/doc/update_permissions", {
@@ -206,9 +206,9 @@ class TestDocModelPermissions():
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     response = self.client.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))
     response = self.client_not_me.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))
 
     # Un-share
     response = self.client.post("/desktop/api/doc/update_permissions", {
@@ -219,9 +219,9 @@ class TestDocModelPermissions():
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     response = self.client.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))
     response = self.client_not_me.get('/home')
-    assert_equal([], list(response.context['documents']))
+    assert_false(doc_id in json.loads(response.context['json_documents']))
 
     # Share by group
     default_group = get_default_user_group()
@@ -234,6 +234,6 @@ class TestDocModelPermissions():
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
     response = self.client.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))
     response = self.client_not_me.get('/home')
-    assert_equal([doc], list(response.context['documents']))
+    assert_true(doc_id in json.loads(response.context['json_documents']))

+ 2 - 2
desktop/core/src/desktop/templates/home.mako

@@ -171,8 +171,8 @@ ${ commonheader(_('Welcome Home'), "home", user) | n,unicode }
 
     <div class="span10">
       <div class="card card-home" style="margin-top: 0">
-        <input id="searchInput" type="text" placeholder="Search for name, description, etc..." class="input-xlarge search-query pull-right" style="margin-right: 10px;margin-top: 3px">
-        <h2 class="card-heading simple">${_('My Documents')}</h2>
+        <input id="searchInput" type="text" placeholder="Search for name, description, etc..." class="input-xlarge search-query" style="margin-left: 20px;margin-top: 5px">
+        ##<h2 class="card-heading simple">${_('My Documents')}</h2>
 
         <div class="card-body">
           <p>

+ 0 - 2
desktop/core/src/desktop/urls.py

@@ -81,8 +81,6 @@ dynamic_patterns += patterns('desktop.api',
   # Tags
   (r'^desktop/api/tag/add_tag$', 'add_tag'),
   (r'^desktop/api/tag/remove_tag$', 'remove_tag'),
-  (r'^desktop/api/tag/list_tags$', 'list_tags'),
-  (r'^desktop/api/doc/list_docs$', 'list_docs'),
   (r'^desktop/api/doc/tag$', 'tag'),
   (r'^desktop/api/doc/update_tags$', 'update_tags'),
 

+ 7 - 12
desktop/core/src/desktop/views.py

@@ -15,7 +15,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import itertools
 import json
 import logging
 import os
@@ -34,30 +33,26 @@ from django.shortcuts import redirect
 from django.utils.translation import ugettext as _
 import django.views.debug
 
-from desktop.api import massaged_tags_for_json, massaged_documents_for_json
+import desktop.conf
+import desktop.log.log_buffer
+
+from desktop.api import massaged_tags_for_json, massaged_documents_for_json,\
+  _get_docs
 from desktop.lib import django_mako
 from desktop.lib.conf import GLOBAL_CONFIG
 from desktop.lib.django_util import login_notrequired, render_json, render
 from desktop.lib.i18n import smart_str
 from desktop.lib.paths import get_desktop_root
 from desktop.log.access import access_log_level, access_warn
-from desktop.models import UserPreferences, Settings, Document, DocumentTag
+from desktop.models import UserPreferences, Settings
 from desktop import appmanager
-import desktop.conf
-import desktop.log.log_buffer
 
 
 LOG = logging.getLogger(__name__)
 
 
 def home(request):
-  history_tag = DocumentTag.objects.get_history_tag(request.user)  
-  trash_tag = DocumentTag.objects.get_trash_tag(request.user)
-  docs = itertools.chain(
-      Document.objects.get_docs(request.user).exclude(tags__in=[trash_tag]).filter(tags__in=[history_tag]).order_by('-last_modified')[:500],
-      Document.objects.get_docs(request.user).exclude(tags__in=[history_tag]).order_by('-last_modified')[:100]
-  )
-  docs = list(docs)
+  docs = _get_docs(request.user)
 
   apps = appmanager.get_apps_dict(request.user)
 

+ 2 - 1
desktop/core/static/js/home.vm.js

@@ -144,6 +144,7 @@ function HomeViewModel(json_tags, json_docs) {
           $(doc.tags).each(function (cnt, item) {
             if (tag.id() == item.id && tag.docs().indexOf(doc.id) == -1) {
               tag.docs().push(doc.id);
+              tag.docs.valueHasMutated();
             }
             if (tag.docs().indexOf(doc.id) > -1 && tag.id() == item.id) {
               _removeDocFromTag = false;
@@ -151,6 +152,7 @@ function HomeViewModel(json_tags, json_docs) {
           });
           if (_removeDocFromTag) {
             tag.docs().splice(tag.docs().indexOf(doc.id), 1);
+            tag.docs.valueHasMutated();
           }
         });
       }
@@ -195,5 +197,4 @@ function HomeViewModel(json_tags, json_docs) {
   self.deleteTag = function (tag) {
     self.tags.mine.remove(tag);
   }
-
 }