def groups(cls, start=None, end=None, limit=25, userId=None): results = Group.by_visible_and_created(core.connect(), limit=25) if start and not end: return Group.joinData(core.objects(results[start:]), userId) if not start and end: return Group.joinData(core.objects(results[:end]), userId) if start and end: return Group.joinData(core.objects(results[start:end]), userId) return Group.joinData(core.objects(results), userId)
def feed(self, start=None, end=None, limit=25): # NOT IMPLEMENTED: will have to wait until we get to the point where # we're writing p2p code - David from server.models.shift import Shift results = Shift.by_created(core.connect(SSUser.feedDb(self.id)), limit=limit) if start and not end: return core.objects(results[start:]) if not start and end: return core.objects(results[:end]) if start and end: return core.objects(results[start:end]) return core.objects(results[start:end])
def messages(self, start=None, end=None, limit=25): from server.models.message import Message results = Message.by_created(core.connect(SSUser.messagesDb(self.id)), limit=limit) messages = [] if start and not end: messages = core.objects(results[start:]) elif not start and end: message = core.objects(results[:end]) elif start and end: messages = core.objects(results[start:end]) else: messages = core.objects(results) return Message.joinData(messages, userId=self.id)
def comments(self, start=None, end=None, limit=25): from server.models.comment import Comment if not self.hasThread(): return [] db = core.connect(Comment.db(self.id)) return Comment.joinData( core.objects(Comment.by_created(db, limit=limit)))
def shifts(self, start=None, end=None, limit=25, filter=False, query=None): from server.models.shift import Shift db = core.connect("shiftspace/shared") if not filter: if not start: start = [self.id] if not end: end = [self.id, {}] results = Shift.by_user_and_created(db, limit=limit) return Shift.joinData(core.objects(results[start:end])) else: lucene = core.lucene() queryString = "createdBy:%s" % self.id theFilter = core.dictToQuery(query) if theFilter: queryString = queryString + " AND " + theFilter try: print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" print queryString rows = lucene.search(db, "shifts", q=queryString, include_docs=True, sort="\modified") except Exception, err: print err return [] shifts = [row["doc"] for row in rows] return Shift.joinData(shifts, self.id)
def comments(self, start=None, end=None, limit=25): from server.models.comment import Comment db = core.connect("shiftspace/shared") if not start: start = [self.id] if not end: end = [self.id, {}] results = Comment.by_user_and_created(db, limit=limit) return core.objects(results[start:end])
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]))
def favorites(self, start=None, end=None, limit=25): from server.models.favorite import Favorite db = core.connect("shiftspace/shared") if not start: start = [self.id] if not end: end = [self.id, {}] results = Favorite.by_user_and_created(db, limit=limit) favs = core.objects(results[start:end]) return core.fetch(db, keys=[fav.shiftId for fav in favs])
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))]
def users(cls, start=None, end=None, limit=25, groupId=None): results = User.all_by_joined(core.connect(), limit=25) if start and not end: users = core.objects(results[start:]) elif not start and end: users = core.objects(results[:end]) elif start and end: users = core.objects(results[start:end]) else: users = core.objects(results) if groupId: from server.models.permission import Permission keys = [[user.id, groupId] for user in users] isMembers = core.fetch(core.connect(), view=Permission.is_member, keys=keys) for i in range(len(users)): if isMembers[i]: users[i]["member"] = True else: users[i]["member"] = False return users
def comments(self, start=None, end=None, limit=25): from server.models.comment import Comment if not self.hasThread(): return [] db = core.connect(Comment.db(self.id)) return Comment.joinData(core.objects(Comment.by_created(db, limit=limit)))