浏览代码

[doc2] Remove "all" flag from Document2Permission

Jenny Kim 9 年之前
父节点
当前提交
e348d13

+ 2 - 4
desktop/core/src/desktop/api2.py

@@ -217,7 +217,7 @@ def share_document(request):
   """
   """
   Set who else or which other group can interact with the document.
   Set who else or which other group can interact with the document.
 
 
-  Example of input: {'read': {'user_ids': [1, 2, 3], 'group_ids': [1, 2, 3], 'all': false}}
+  Example of input: {'read': {'user_ids': [1, 2, 3], 'group_ids': [1, 2, 3]}}
   """
   """
   perms_dict = json.loads(request.POST.get('data'))
   perms_dict = json.loads(request.POST.get('data'))
   uuid = json.loads(request.POST.get('uuid'))
   uuid = json.loads(request.POST.get('uuid'))
@@ -239,9 +239,7 @@ def share_document(request):
     else:
     else:
       groups = []
       groups = []
 
 
-    all = perm.get('all', False)
-
-    doc = doc.share(request.user, name=name, users=users, groups=groups, all=all)
+    doc = doc.share(request.user, name=name, users=users, groups=groups)
 
 
   return JsonResponse({
   return JsonResponse({
     'status': 0,
     'status': 0,

+ 125 - 0
desktop/core/src/desktop/migrations/0020_auto__del_field_document2permission_all.py

@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+from south.utils import datetime_utils as datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting field 'Document2Permission.all'
+        db.delete_column(u'desktop_document2permission', 'all')
+
+
+    def backwards(self, orm):
+        # Adding field 'Document2Permission.all'
+        db.add_column(u'desktop_document2permission', 'all',
+                      self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True),
+                      keep_default=False)
+
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'desktop.document': {
+            'Meta': {'unique_together': "(('content_type', 'object_id'),)", 'object_name': 'Document'},
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
+            'extra': ('django.db.models.fields.TextField', [], {'default': "''"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+            'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'doc_owner'", 'to': u"orm['auth.User']"}),
+            'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['desktop.DocumentTag']", 'db_index': 'True', 'symmetrical': 'False'}),
+            'version': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'})
+        },
+        u'desktop.document2': {
+            'Meta': {'ordering': "['-last_modified']", 'unique_together': "(('uuid', 'version', 'is_history'),)", 'object_name': 'Document2'},
+            'data': ('django.db.models.fields.TextField', [], {'default': "'{}'"}),
+            'dependencies': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'dependencies_rel_+'", 'db_index': 'True', 'to': u"orm['desktop.Document2']"}),
+            'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
+            'extra': ('django.db.models.fields.TextField', [], {'default': "''"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_history': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
+            'last_modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'db_index': 'True', 'blank': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'doc2_owner'", 'to': u"orm['auth.User']"}),
+            'parent_directory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'to': u"orm['desktop.Document2']"}),
+            'type': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '32', 'db_index': 'True'}),
+            'uuid': ('django.db.models.fields.CharField', [], {'default': "'27e617a2-b8bf-443a-be77-6a630add7b4d'", 'max_length': '36', 'db_index': 'True'}),
+            'version': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'db_index': 'True'})
+        },
+        u'desktop.document2permission': {
+            'Meta': {'unique_together': "(('doc', 'perms'),)", 'object_name': 'Document2Permission'},
+            'doc': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['desktop.Document2']"}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'db_index': 'True', 'to': u"orm['auth.Group']", 'db_table': "'documentpermission2_groups'", 'symmetrical': 'False'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'perms': ('django.db.models.fields.CharField', [], {'default': "'read'", 'max_length': '10', 'db_index': 'True'}),
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'db_index': 'True', 'to': u"orm['auth.User']", 'db_table': "'documentpermission2_users'", 'symmetrical': 'False'})
+        },
+        u'desktop.documentpermission': {
+            'Meta': {'unique_together': "(('doc', 'perms'),)", 'object_name': 'DocumentPermission'},
+            'doc': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['desktop.Document']"}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'db_index': 'True', 'to': u"orm['auth.Group']", 'db_table': "'documentpermission_groups'", 'symmetrical': 'False'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'perms': ('django.db.models.fields.CharField', [], {'default': "'read'", 'max_length': '10'}),
+            'users': ('django.db.models.fields.related.ManyToManyField', [], {'db_index': 'True', 'to': u"orm['auth.User']", 'db_table': "'documentpermission_users'", 'symmetrical': 'False'})
+        },
+        u'desktop.documenttag': {
+            'Meta': {'unique_together': "(('owner', 'tag'),)", 'object_name': 'DocumentTag'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}),
+            'tag': ('django.db.models.fields.SlugField', [], {'max_length': '50'})
+        },
+        u'desktop.settings': {
+            'Meta': {'object_name': 'Settings'},
+            'collect_usage': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'tours_and_tutorials': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'})
+        },
+        u'desktop.userpreferences': {
+            'Meta': {'object_name': 'UserPreferences'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'key': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
+            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}),
+            'value': ('django.db.models.fields.TextField', [], {'max_length': '4096'})
+        }
+    }
+
+    complete_apps = ['desktop']

+ 8 - 12
desktop/core/src/desktop/models.py

@@ -1059,15 +1059,15 @@ class Document2(models.Model):
     except Document2Permission.DoesNotExist:
     except Document2Permission.DoesNotExist:
       return None
       return None
 
 
-  def share(self, user, name='read', users=None, groups=None, all=False):
+  def share(self, user, name='read', users=None, groups=None):
     with transaction.atomic():
     with transaction.atomic():
-      self.update_permission(user, name, users, groups, all)
+      self.update_permission(user, name, users, groups)
       # For directories, update all children recursively with same permissions
       # For directories, update all children recursively with same permissions
       for child in self.children.all():
       for child in self.children.all():
-        child.share(user, name, users, groups, all)
+        child.share(user, name, users, groups)
     return self
     return self
 
 
-  def update_permission(self, user, name='read', users=None, groups=None, all=False):
+  def update_permission(self, user, name='read', users=None, groups=None):
     # TODO check in settings if user can sync, re-share, which perms...
     # TODO check in settings if user can sync, re-share, which perms...
 
 
     perm, created = Document2Permission.objects.get_or_create(doc=self, perms=name)
     perm, created = Document2Permission.objects.get_or_create(doc=self, perms=name)
@@ -1080,8 +1080,6 @@ class Document2(models.Model):
     if groups is not None:
     if groups is not None:
       perm.groups = groups
       perm.groups = groups
 
 
-    perm.all = all
-
     perm.save()
     perm.save()
 
 
   def _massage_permissions(self):
   def _massage_permissions(self):
@@ -1089,8 +1087,8 @@ class Document2(models.Model):
     Returns the permissions for a given document as a dictionary
     Returns the permissions for a given document as a dictionary
     """
     """
     permissions = {
     permissions = {
-      'read': {'users': [], 'groups': [], 'all': False},
-      'write': {'users': [], 'groups': [], 'all': False}
+      'read': {'users': [], 'groups': []},
+      'write': {'users': [], 'groups': []}
     }
     }
 
 
     read_perms = self.get_permission(perm='read')
     read_perms = self.get_permission(perm='read')
@@ -1176,7 +1174,6 @@ class Document2Permission(models.Model):
 
 
   users = models.ManyToManyField(auth_models.User, db_index=True, db_table='documentpermission2_users')
   users = models.ManyToManyField(auth_models.User, db_index=True, db_table='documentpermission2_users')
   groups = models.ManyToManyField(auth_models.Group, db_index=True, db_table='documentpermission2_groups')
   groups = models.ManyToManyField(auth_models.Group, db_index=True, db_table='documentpermission2_groups')
-  all = models.BooleanField(db_index=True, default=False, help_text=_t('Specify users/groups or ALL'))
 
 
   perms = models.CharField(default=READ_PERM, max_length=10, db_index=True, choices=( # one perm
   perms = models.CharField(default=READ_PERM, max_length=10, db_index=True, choices=( # one perm
     (READ_PERM, 'read'),
     (READ_PERM, 'read'),
@@ -1194,8 +1191,7 @@ class Document2Permission(models.Model):
     return {
     return {
       self.perms: {
       self.perms: {
         'users': [{'id': perm_user.id, 'username': perm_user.username} for perm_user in self.users.all()],
         'users': [{'id': perm_user.id, 'username': perm_user.username} for perm_user in self.users.all()],
-        'groups': [{'id': perm_group.id, 'name': perm_group.name} for perm_group in self.groups.all()],
-        'all': self.all
+        'groups': [{'id': perm_group.id, 'name': perm_group.name} for perm_group in self.groups.all()]
       }
       }
     }
     }
 
 
@@ -1203,7 +1199,7 @@ class Document2Permission(models.Model):
     """
     """
     Returns true if the given user has permissions based on users, groups, or all flag
     Returns true if the given user has permissions based on users, groups, or all flag
     """
     """
-    return self.groups.filter(id__in=user.groups.all()).exists() or user in self.users.all() or self.all
+    return self.groups.filter(id__in=user.groups.all()).exists() or user in self.users.all()
 
 
 
 
 def get_data_link(meta):
 def get_data_link(meta):

+ 2 - 4
desktop/core/src/desktop/tests_doc2.py

@@ -275,14 +275,14 @@ class TestDocument2Permissions(object):
 
 
 
 
   def test_default_permissions(self):
   def test_default_permissions(self):
-    # Tests that for a new doc by default, read/write perms are set to no users, groups, or all
+    # Tests that for a new doc by default, read/write perms are set to no users and no groups
     new_doc = Document2.objects.create(name='new_doc', type='query-hive', owner=self.user, data={}, parent_directory=self.home_dir)
     new_doc = Document2.objects.create(name='new_doc', type='query-hive', owner=self.user, data={}, parent_directory=self.home_dir)
 
 
     response = self.client.get('/desktop/api2/doc/get', {'uuid': new_doc.uuid})
     response = self.client.get('/desktop/api2/doc/get', {'uuid': new_doc.uuid})
     data = json.loads(response.content)
     data = json.loads(response.content)
     assert_equal(new_doc.uuid, data['uuid'], data)
     assert_equal(new_doc.uuid, data['uuid'], data)
     assert_true('perms' in data)
     assert_true('perms' in data)
-    assert_equal({'read': {'users': [], 'groups': [], 'all': False}, 'write': {'users': [], 'groups': [], 'all': False}},
+    assert_equal({'read': {'users': [], 'groups': []}, 'write': {'users': [], 'groups': []}},
                  data['perms'])
                  data['perms'])
 
 
 
 
@@ -309,12 +309,10 @@ class TestDocument2Permissions(object):
             self.user_not_me.id
             self.user_not_me.id
           ],
           ],
           'group_ids': [],
           'group_ids': [],
-          'all': False
         },
         },
         'write': {
         'write': {
           'user_ids': [],
           'user_ids': [],
           'group_ids': [],
           'group_ids': [],
-          'all': False
         }
         }
       })
       })
     })
     })