Romain Rigaux пре 12 година
родитељ
комит
3097f25

+ 7 - 9
apps/beeswax/src/beeswax/views.py

@@ -118,10 +118,10 @@ def save_design(request, form, type, design, explicit_save):
     design.doc.update(name=design.name, description=design.desc)
   else:
     Document.objects.link(design, owner=design.owner, extra=design.type, name=design.name, description=design.desc)
-    
+
   if design.is_auto:
     design.doc.get().add_to_history()
-    
+
   return design
 
 
@@ -153,7 +153,7 @@ def delete_design(request):
   if request.method == 'POST':
     ids = request.POST.getlist('designs_selection')
     designs = dict([(design_id, authorized_get_design(request, design_id, owner_only=True)) for design_id in ids])
-    print designs
+
     if None in designs.values():
       LOG.error('Cannot delete non-existent design(s) %s' % ','.join([key for key, name in designs.items() if name is None]))
       return list_designs(request)
@@ -194,18 +194,16 @@ def clone_design(request, design_id):
     return list_designs(request)
 
   copy = design.clone()
-  copy_doc = design.doc.get()
+  copy_doc = design.doc.get().copy()
   copy.name = design.name + ' (copy)'
   copy.owner = request.user
   copy.save()
-  
-  copy_doc.pk = None
-  copy_doc.id = None
+
   copy_doc.owner = copy.owner
   copy_doc.name = copy.name
   copy_doc.save()
-  copy.doc.add(copy_doc)  
-  
+  copy.doc.add(copy_doc)
+
   messages.info(request, _('Copied design: %(name)s') % {'name': design.name})
 
   return format_preserving_redirect(request, reverse(get_app_name(request) + ':execute_query', kwargs={'design_id': copy.id}))

+ 3 - 3
desktop/conf.dist/hue.ini

@@ -296,14 +296,14 @@
       # Enter the filesystem uri
       fs_defaultfs=hdfs://localhost:8020
 
-      # Change this if your HDFS cluster is Kerberos-secured
-      ## security_enabled=false
-
       # Use WebHdfs/HttpFs as the communication mechanism.
       # This should be the web service root URL, such as
       # http://namenode:50070/webhdfs/v1
       ## webhdfs_url=
 
+      # Change this if your HDFS cluster is Kerberos-secured
+      ## security_enabled=false
+
       # Settings about this HDFS cluster. If you install HDFS in a
       # different location, you need to set the following.
 

+ 3 - 3
desktop/conf/pseudo-distributed.ini.tmpl

@@ -301,14 +301,14 @@
       # Enter the filesystem uri
       fs_defaultfs=hdfs://localhost:8020
 
-      # Change this if your HDFS cluster is Kerberos-secured
-      ## security_enabled=false
-
       # Use WebHdfs/HttpFs as the communication mechanism.
       # This should be the web service root URL, such as
       # http://namenode:50070/webhdfs/v1
       ## webhdfs_url=
 
+      # Change this if your HDFS cluster is Kerberos-secured
+      ## security_enabled=false
+
       # Settings about this HDFS cluster. If you install HDFS in a
       # different location, you need to set the following.
 

+ 4 - 3
desktop/core/src/desktop/models.py

@@ -57,7 +57,8 @@ class DocumentTagManager(models.Manager):
   def get_tags(self, user):
     # For now, the only shared tag is from 'sample' user and is named 'example'
     # Tag permissions will come later.
-    tags = Document.objects.documents(user)
+    # Share Tag from shared document will come later.
+    tags = self
 
     try:
       sample_user = auth_models.User.objects.get(username='sample')
@@ -65,7 +66,7 @@ class DocumentTagManager(models.Manager):
     except:
       tags = tags.filter(owner=user)
 
-    return tags.values('tags__id', 'tags__tag').distinct()
+    return tags.distinct()
 
   def create_tag(self, owner, tag_name):
     if tag_name in DocumentTag.RESERVED:
@@ -121,7 +122,7 @@ class DocumentTagManager(models.Manager):
       tag.delete()
 
     for doc in Document.objects.get_docs(owner).filter(tags=None):
-      doc.add(default_tag)
+      doc.add_tag(default_tag)
 
   def update_tags(self, owner, doc_id, tag_ids):
     doc = Document.objects.get_doc(doc_id, owner)

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

@@ -125,8 +125,8 @@ ${ commonheader(_('Welcome Home'), "home", user) | n,unicode }
            </li>
           <li class="nav-header tag-header">${_('Projects')} <div id="editTags" style="display: inline;cursor: pointer;margin-left: 6px" title="${ _('Edit projects') }"><i class="icon-tags"></i></div> </li>
           % for tag in tags:
-            % if tag['tags__tag'] not in ('trash', 'history'):
-            <li class="toggleTag" data-tag="${ tag['tags__tag'] }"><a href="javascript:void(0)">${ tag['tags__tag'] } <span class="tagCounter badge pull-right">0</span></a></li>
+            % if tag.tag not in ('trash', 'history'):
+            <li class="toggleTag" data-tag="${ tag.tag }"><a href="javascript:void(0)">${ tag.tag } <span class="tagCounter badge pull-right">0</span></a></li>
             % endif
           % endfor
 
@@ -239,8 +239,8 @@ ${ commonheader(_('Welcome Home'), "home", user) | n,unicode }
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript" charset="utf-8">
 
-var JSON_DOCS = ${json_documents|n};
-var JSON_TAGS = ${json_tags|n};
+var JSON_DOCS = ${json_documents | n};
+var JSON_TAGS = ${json_tags | n};
 var JSON_USERS_GROUPS;
 var documentsTable;
 

+ 36 - 30
desktop/core/src/desktop/tests.py

@@ -42,7 +42,7 @@ from desktop.lib.conf import validate_path
 from desktop.lib.django_util import TruncatingModel
 from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.test_utils import grant_access
-from desktop.views import check_config
+from desktop.views import check_config, home
 from desktop.models import DocumentTag , Document
 from pig.models import PigScript
 
@@ -80,6 +80,12 @@ def teardown_test_environment():
   django_mako.render_to_string = django_mako.render_to_string_normal
 teardown_test_environment.__test__ = False
 
+def test_home():
+  c = make_logged_in_client()
+  response = c.get(reverse(home))
+
+  assert_equal(200, response.status_code)
+
 def test_log_view():
   c = make_logged_in_client()
 
@@ -495,12 +501,12 @@ class TestDocModelTags():
   def setUp(self):
     self.client = make_logged_in_client(username="tag_user")
     self.client_not_me = make_logged_in_client(username="not_tag_user")
-    
+
     self.user = User.objects.get(username="tag_user")
     self.user_not_me = User.objects.get(username="not_tag_user")
 
     grant_access(self.user.username, self.user.username, "desktop")
-    grant_access(self.user_not_me.username, self.user_not_me.username, "desktop")        
+    grant_access(self.user_not_me.username, self.user_not_me.username, "desktop")
 
   def add_tag(self, name):
     response = self.client.post("/tag/add_tag", {'name': name})
@@ -513,73 +519,73 @@ class TestDocModelTags():
     return script, doc
 
   def test_add_tag(self):
-    response = self.client.get("/tag/add_tag")    
+    response = self.client.get("/tag/add_tag")
     assert_equal(-1, json.loads(response.content)['status'])
 
     tag_id = self.add_tag('my_tag')
 
-    assert_true(DocumentTag.objects.filter(id=tag_id).exists())
-  
+    assert_true(DocumentTag.objects.filter(id=tag_id, owner=self.user, tag='my_tag').exists())
+
   def test_remove_tags(self):
     response = self.client.post("/tag/add_tag", {'name': 'my_tag'})
     tag_id = json.loads(response.content)['tag_id']
-    
-    response = self.client.get("/tag/remove_tags")    
+
+    response = self.client.get("/tag/remove_tags")
     assert_equal(-1, json.loads(response.content)['status'])
 
-    response = self.client_not_me.post("/tag/remove_tags", {'data': json.dumps({'tag_ids': [tag_id]})})    
+    response = self.client_not_me.post("/tag/remove_tags", {'data': json.dumps({'tag_ids': [tag_id]})})
     assert_equal(-1, json.loads(response.content)['status'], response.content)
 
-    response = self.client.post("/tag/remove_tags", {'data': json.dumps({'tag_ids': [tag_id]})})    
+    response = self.client.post("/tag/remove_tags", {'data': json.dumps({'tag_ids': [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):    
+
+  def test_list_tags(self):
     tag_id = self.add_tag('my_list_tags')
 
-    response = self.client.get("/tag/list_tags")        
+    response = self.client.get("/tag/list_tags")
     assert_true([tag for tag in json.loads(response.content) if tag['id'] == tag_id], response.content)
-  
+
   def test_list_docs(self):
     script, doc = self.add_doc('test-pig')
 
-    response = self.client.get("/doc/list_docs")        
+    response = self.client.get("/doc/list_docs")
     assert_true([doc for doc in json.loads(response.content) if doc['id'] == script.id], response.content)
-  
+
   def test_tag(self):
     script, doc = self.add_doc('tag_pig')
-    
-    response = self.client.post("/doc/tag", {'data': json.dumps({'doc_id': doc.id, 'tag': 'pig'})})        
+
+    response = self.client.post("/doc/tag", {'data': json.dumps({'doc_id': doc.id, 'tag': 'pig'})})
     assert_equal(0, json.loads(response.content)['status'], response.content)
-    
+
     tag2_id = self.add_tag('pig2')
-    
+
     response = self.client.post("/doc/tag", {'data': json.dumps({'doc_id': doc.id, 'tag_id': tag2_id})})
     assert_equal(0, json.loads(response.content)['status'], response.content)
 
   def test_update_tags(self):
     script, doc = self.add_doc('update_tags')
-    
+
     tag1_id = self.add_tag('update_tags_1')
     tag2_id = self.add_tag('update_tags_2')
-    
-    response = self.client.post("/doc/update_tags", {'data': json.dumps({'doc_id': doc.id, 'tag_ids': [tag1_id, tag2_id]})})        
-    assert_equal(0, json.loads(response.content)['status'], response.content)  
+
+    response = self.client.post("/doc/update_tags", {'data': json.dumps({'doc_id': doc.id, 'tag_ids': [tag1_id, tag2_id]})})
+    assert_equal(0, json.loads(response.content)['status'], response.content)
 
 
 
 class TestDocModelPermissions():
-  
+
   def setUp(self):
     self.client = make_logged_in_client(username="perm_user")
     self.client_not_me = make_logged_in_client(username="not_perm_user")
-    
+
     self.user = User.objects.get(username="perm_user")
     self.user_not_me = User.objects.get(username="not_perm_user")
 
     grant_access(self.user.username, self.user.username, "desktop")
-    grant_access(self.user_not_me.username, self.user_not_me.username, "desktop")        
+    grant_access(self.user_not_me.username, self.user_not_me.username, "desktop")
 
   def add_doc(self, name):
     script = PigScript.objects.create(owner=self.user)
@@ -588,10 +594,10 @@ class TestDocModelPermissions():
 
   def test_update_permissions(self):
     script, doc = self.add_doc('test_update_permissions')
-    
+
     response = self.client.post("/doc/update_permissions", {
         'doc_id': doc.id,
         'data': json.dumps({'read': {'user_ids': [1, 2], 'group_ids': [1]}})
     })
-        
+
     assert_equal(0, json.loads(response.content)['status'], response.content)

+ 5 - 5
desktop/core/src/desktop/views.py

@@ -105,11 +105,11 @@ def massaged_tags_for_json(tags, user):
 
   for tag in tags:
     massaged_tag = {
-      'id': tag['tags__id'],
-      'name': tag['tags__tag'],
-      'isTrash': tag['tags__id'] == trash.id,
-      'isHistory': tag['tags__id'] == history.id,
-      'isExample': tag['tags__tag'] == DocumentTag.EXAMPLE
+      'id': tag.id,
+      'name': tag.tag,
+      'isTrash': tag.id == trash.id,
+      'isHistory': tag.id == history.id,
+      'isExample': tag.tag == DocumentTag.EXAMPLE
     }
     ts.append(massaged_tag)