def test_refresh(self): dateklass = Registry.getDBAPIClass("Date") args = {'first_name': "a", "last_name": "b", "age": 10} u = yield User(**args).save() # mess up the props, then refresh u.first_name = "something different" u.last_name = "another thing" yield u.refresh() for key, value in args.items(): self.assertEqual(getattr(u, key), value)
def test_update(self): dateklass = Registry.getDBAPIClass("Date") args = {'first_name': "a", "last_name": "b", "age": 10} u = yield User(**args).save() args = {'first_name': "b", "last_name": "a", "age": 100} for key, value in args.items(): setattr(u, key, value) yield u.save() u = yield User.find(u.id) for key, value in args.items(): self.assertEqual(getattr(u, key), value)
def sendMessage(subject, body, sender_id, receiver_id): now = datetime.now() Timestamp = Registry.getDBAPIClass("Timestamp") # save message to datastore message = Message( subject=subject, body=body, sender_id=sender_id, receiver_id=receiver_id, sent_at=Timestamp(now.year, now.month, now.day, now.hour, now.minute, now.second) ) message.save() # js client is subscribed to topic with name inbox_user_<user_id> so it will publish to their list self.publish('com.vik.inbox_user_' + str(message.receiver_id), formatMessage(message))
def test_creation(self): # test creating blank object u = yield User().save() self.assertTrue(type(u.id) == int or type(u.id) == long) # test creating object with props that don't correspond to columns u = yield User(a_fake_column="blech").save() self.assertTrue(type(u.id) == int or type(u.id) == long) # Test table doesn't exist f = FakeObject(blah = "something") self.failUnlessFailure(f.save(), ImaginaryTableError) dateklass = Registry.getDBAPIClass("Date") args = {'first_name': "a", "last_name": "b", "age": 10, "dob": dateklass(2000, 1, 1)} u = yield User(**args).save() for key, value in args.items(): self.assertEqual(getattr(u, key), value)
def _setupCache(self): self.penguin.penguin.recentStamps = [] database_penguin = self.penguin.dbpenguin self.cache.avatar = yield database_penguin.avatar.get() if self.cache.avatar is None: self.cache.avatar = yield Avatar( penguin_id=self.penguin['id']).save() yield self.cache.avatar.refresh() self.cache.inventories = yield database_penguin.inventories.get() self.cache.assets = yield database_penguin.assets.get() self.cache.friends = yield database_penguin.friends.get() self.cache.requests = [] friends_data = [] for friend in self.cache.friends: friendObj = (yield Penguin.find(where=['swid = ?', friend.friend], limit=1)) if friendObj is None: continue friend.friend_id = friendObj.id friend.onlinePresence = {'online_status': False} data = [ int(friendObj.id), friendObj.nickname, friendObj.swid, friend.bff ] friends_data.append('|'.join(map(str, data))) self.penguin.send('fl', (yield database_penguin.requests.count()), *friends_data) self.cache.ignores = yield database_penguin.ignores.get() self.cache.careItems = yield database_penguin.careItems.get() self.cache.stamps = yield database_penguin.stamps.get() self.cache.mails = yield database_penguin.mails.get() self.cache.bans = yield database_penguin.bans.get() self.cache.puffles = yield database_penguin.puffles.get() self.cache.stampCovers = yield database_penguin.stampCovers.get() self.cache.igloos = deque() igloos = yield database_penguin.igloos.get(limit=6) for igloo in igloos: iglooCache = PenguinObject() iglooCache.igloo = igloo iglooCache.iglooFurnitures = yield igloo.iglooFurnitures.get( limit=99) iglooCache.iglooLikes = yield igloo.iglooLikes.get() self.cache.igloos.append(iglooCache) self.cache.memberships = yield database_penguin.memberships.get() self.cacheHandlers.inventories = self.handleInventory self.cacheHandlers.assets = self.handleAssets self.cacheHandlers.friends = self.handleFriends self.cacheHandlers.requests = self.handleRequests self.cacheHandlers.ignores = self.handleIgnores self.cacheHandlers.careItems = self.handleCareItems self.cacheHandlers.stamps = self.handleStamps self.cacheHandlers.mails = self.handleMails self.cacheHandlers.bans = self.handleBans self.cacheHandlers.puffles = self.handlePuffles self.cacheHandlers.stampCovers = self.handleStampCovers self.cacheHandlers.igloos = self.handleIgloos self.penguin.penguin.coins = (yield Registry.getConfig().\ execute("SELECT COALESCE(SUM(transaction), 0) FROM coins where penguin_id = %s" % self.penguin['id']))[0][0] self.penguin.penguin.igloo = yield self.initPenguinIglooRoom( self.penguin['id']) if self.penguin['igloo']._id not in self.getIgloos(): igloo = yield database_penguin.igloos.get( where=['id = ?', self.penguin['igloo']._id], limit=1) iglooCache = PenguinObject() iglooCache.igloo = igloo iglooCache.iglooFurnitures = yield igloo.iglooFurnitures.get( limit=99) iglooCache.iglooLikes = yield igloo.iglooLikes.get() self.cache.igloos.append(iglooCache) self.penguin.penguin.currentIgloo = self.getIgloos()[ self.penguin.dbpenguin.igloo].igloo self.setupCJMats() membership = yield database_penguin.memberships.get( orderby='expires desc', limit=1) if membership is None: #no membership records, give a free 7 day trial trialExpiry = time.time() + 7 * 24 * 60 * 60 membership = yield \ Membership(penguin_id=self.penguin['id'], expires=Registry.getDBAPIClass("TimestampFromTicks")(trialExpiry), comments='Redeemed 7-day auto free trial membership. - Timeline Server').save() self.penguin.penguin.member = MembershipHandler( membership, self.penguin) self.cache.avatar = yield database_penguin.avatar.get() if self.cache.avatar is None: self.cache.avatar = yield Avatar( penguin_id=self.penguin['id']).save() GeneralEvent('Setup-Cache', self) self.CacheInitializedDefer.callback(True)