示例#1
0
 def groups(self, start=None, end=None, limit=25):
     from server.models.permission import Permission
     db = core.connect()
     if not start:
         start = [self.id]
     if not end:
         end = [self.id, {}]
     results = Permission.readable_by_user_and_created(db, limit=limit)
     return Permission.joinData(core.objects(results[start:end]))
示例#2
0
 def groups(self, start=None, end=None, limit=25):
     from server.models.permission import Permission
     db = core.connect()
     if not start:
         start = [self.id]
     if not end:
         end = [self.id, {}]
     results = Permission.readable_by_user_and_created(db, limit=limit)
     return Permission.joinData(core.objects(results[start:end]))
示例#3
0
    def inviteUser(self, aUser, otherUser):
        from server.models.permission import Permission
        from server.models.message import Message

        Permission.create(aUser.id, self.id, otherUser.id, 0)
        json = {
            "fromId": aUser.id,
            "toId": otherUser.id,
            "title": "%s invited you to join the group %s!" % (aUser.userName, self.longName),
            "text": "%s invited you to join the group %s!" % (aUser.userName, self.longName),
            "meta": "invite",
            "content": {"type": "group", "_id": self.id},
        }
        Message.create(**json)
示例#4
0
 def setPrivilege(self, aUser, level):
     from server.models.permission import Permission
     thePermission = Permission.readByUserAndGroup(aUser.id, self.id)
     if thePermission and level > 0:
         db = core.connect()
         thePermission.level = level
         thePermission.store(db)
示例#5
0
 def join(self, aUser):
     from server.models.permission import Permission
     thePermission = Permission.readByUserAndGroup(aUser.id, self.id)
     if thePermission and thePermission.level == 0:
         db = core.connect()
         thePermission.level = 2
         thePermission.store(db)
示例#6
0
 def inviteUser(self, aUser, otherUser):
     from server.models.permission import Permission
     from server.models.message import Message
     Permission.create(aUser.id, self.id, otherUser.id, 0)
     json = {
         "fromId": aUser.id,
         "toId": otherUser.id,
         "title": "%s invited you to join the group %s!" % (aUser.userName, self.longName),
         "text": "%s invited you to join the group %s!" % (aUser.userName, self.longName),
         "meta": "invite",
         "content": {
             "type": "group",
             "_id": self.id
             }
         }
     Message.create(**json)
示例#7
0
 def delete(self):
     from server.models.permission import Permission
     server = core.sharedServer()
     # delete the metadata
     db = core.connect()
     del db[self.id]
     # delete the group database
     del server[Group.db(self.id)]
     # delete all permissions
     [perm.delete() for perm in core.objects(Permission.by_group(core.connect(), key=self.id))]
示例#8
0
    def create(cls, groupJson):
        from server.models.permission import Permission
        from server.models.ssuser import SSUser

        userId = groupJson["createdBy"]

        # create the group metadata
        newGroup = Group(**utils.clean(groupJson))
        newGroup.source.server = core.serverName()
        newGroup.source.database =  Group.db(newGroup.id)
        # save the group metadata to the master db
        newGroup.store(core.connect())
        # create the root permission for this group
        Permission.create(userId, newGroup.id, userId, level=4)
        # create the group db
        server = core.sharedServer()
        server.create(Group.db(newGroup.id))
        # copy the group metadata to the db
        newGroup.copyTo(Group.db(newGroup.id))
        return newGroup
示例#9
0
    def create(cls, groupJson):
        from server.models.permission import Permission
        from server.models.ssuser import SSUser

        userId = groupJson["createdBy"]

        # create the group metadata
        newGroup = Group(**utils.clean(groupJson))
        newGroup.source.server = core.serverName()
        newGroup.source.database = Group.db(newGroup.id)
        # save the group metadata to the master db
        newGroup.store(core.connect())
        # create the root permission for this group
        Permission.create(userId, newGroup.id, userId, level=4)
        # create the group db
        server = core.sharedServer()
        server.create(Group.db(newGroup.id))
        # copy the group metadata to the db
        newGroup.copyTo(Group.db(newGroup.id))
        return newGroup
示例#10
0
 def testPublishToGroup(self):
     json = shiftJson()
     json["createdBy"] = self.fakemary.id
     newShift = Shift.create(json)
     json = groupJson()
     json["createdBy"] = self.fakemary.id
     newGroup = Group.create(json)
     # make sure fakemary owns the group
     newPerm = Permission.readByUserAndGroup(self.fakemary.id, newGroup.id)
     self.assertTrue(newPerm.level == 4)
     # create read permission for fakejohn
     newPerm = Permission.create("shiftspace", newGroup.id, self.fakejohn.id, level=1)
     fakejohn = SSUser.read(self.fakejohn.id)
     self.assertTrue(Group.db(newGroup.id) in fakejohn.readable())
     publishData = {
         "dbs": [Group.db(newGroup.id)]
         }
     newShift.publish(publishData)
     # should exists in shiftspace/shared
     db = core.connect("shiftspace/shared")
     theShift = Shift.load(db, newShift.id)
     self.assertEqual(theShift.summary, newShift.summary)
     newGroup.delete()
示例#11
0
 def testPublishToGroupAndUser(self):
     json = shiftJson()
     json["createdBy"] = self.fakemary.id
     newShift = Shift.create(json)
     json = groupJson()
     json["createdBy"] = self.fakemary.id
     newGroup = Group.create(json)
     newPerm = Permission.create("shiftspace", newGroup.id, self.fakejohn.id, level=1)
     publishData = {
         "dbs": [Group.db(newGroup.id), SSUser.db(self.fakebob.id)]
         }
     newShift.publish(publishData)
     # should exist in subscriber's feed
     db = core.connect("shiftspace/shared")
     theShift = Shift.load(db, newShift.id)
     self.assertEqual(theShift.summary, newShift.summary)
     newGroup.delete()
     # should exist in shiftspace/shared
     # TODO: inbox if user is peer - David 11/18/09
     theShift = Shift.load(core.connect("shiftspace/shared"), newShift.id)
     self.assertEqual(theShift.summary, newShift.summary)
示例#12
0
 def writeable(self):
     from server.models.permission import Permission
     return Permission.writeable(self.id)
示例#13
0
 def readable(self):
     from server.models.permission import Permission
     return Permission.readable(self.id)
示例#14
0
 def isMemberOf(self, aGroup):
     from server.models.permission import Permission
     thePermission = Permission.readByUserAndGroup(self.id, aGroup.id)
     return thePermission and Permission.level > 0
示例#15
0
 def canJoin(self, group):
     from server.models.permission import Permission
     perm = Permission.readByUserAndGroup(self.id, group.id)
     return (perm and perm.level == 0)
示例#16
0
 def setPrivilege(self, aUser, level):
     thePermission = Permission.readByUserAndGroup(aUser.id, self.id)
     if thePermission and level > 0:
         db = core.connect()
         thePermission.level = level
         thePermission.store(db)
示例#17
0
 def adminable(self):
     from server.models.permission import Permission
     return Permission.adminable(self.id)
示例#18
0
 def admins(self):
     from server.models.permission import Permission
     db = core.connect()
     return [row.value for row in Permission.admins(db, key=self.id).rows]
示例#19
0
 def readable(self):
     from server.models.permission import Permission
     return Permission.readable(self.id)
示例#20
0
 def isMemberOf(self, aGroup):
     from server.models.permission import Permission
     thePermission = Permission.readByUserAndGroup(self.id, aGroup.id)
     return thePermission and Permission.level > 0
示例#21
0
 def canJoin(self, group):
     from server.models.permission import Permission
     perm = Permission.readByUserAndGroup(self.id, group.id)
     return (perm and perm.level == 0)
示例#22
0
    def adminCount(self):
        from server.models.permission import Permission

        db = core.connect()
        return core.value(Permission.admin_count(db, key=self.id))
示例#23
0
    def members(self):
        from server.models.permission import Permission

        db = core.connect()
        return core.fetch(core.connect(), keys=[row.value for row in Permission.all_members(db, key=self.id).rows])
示例#24
0
 def members(self):
     from server.models.permission import Permission
     db = core.connect()
     return core.fetch(core.connect(), keys=[row.value for row in Permission.all_members(db, key=self.id).rows])
示例#25
0
 def adminable(self):
     from server.models.permission import Permission
     return Permission.adminable(self.id)
示例#26
0
 def writeable(self):
     from server.models.permission import Permission
     return Permission.writeable(self.id)
示例#27
0
    def admins(self):
        from server.models.permission import Permission

        db = core.connect()
        return [row.value for row in Permission.admins(db, key=self.id).rows]
示例#28
0
 def adminCount(self):
     from server.models.permission import Permission
     db = core.connect()
     return core.value(Permission.admin_count(db, key=self.id))