def record_vote(yourname, submitter_name, pid, cid=None): """XXX Todo: expose as web api/v1/vote and require nonce?""" def inc_vote(user): user['votes'].append(pid) return user submitter = User.get(submitter_name) submitter['karma'] +=1 User.replace(submitter_name, submitter) return User.update(yourname, func=inc_vote)
def record_comment(commenter_name, pid, cid): """XXX add karma to comment voting later - you get 1 karma for commenting """ u = User.get(commenter_name) u['comments'].append((pid, cid)) return User.replace(commenter_name, u)
def record_submission(submitter_name, pid): """Move to openjoural specific user api. Pushes pid onto user's posts set """ u = User.get(submitter_name) u['posts'].append(pid) return User.replace(submitter_name, u)
def record_submission(submitter_name, pid, cid=None): """A submission can be a paper or a journal""" u = User.get(submitter_name) if cid: u['comments'].append((pid, cid)) else: u['posts'].append(pid) return User.replace(submitter_name, u)
def record_comment(commenter_name, pid, cid): """XXX add karma to comment voting later - you get 1 karma for commenting """ pid, cid = map(int, (pid, cid)) u = User.get(commenter_name) u['comments'].append((pid, cid)) return User.replace(commenter_name, u)
def test_users(self): """Test whether waltz.User (of base type Account) interfaces with LazyDB correctly and behaves expectedly """ # Setting up waltz web.py env variables for db() web.ctx.waltz = storage() web.ctx.waltz.db = "db" u1 = User.register(USERNAME, PASSWD, **USER_FIELDS) u1.email = EMAIL u1.save() u2 = User.get(USERNAME) u3 = User.register(USERNAME[::-1], PASSWD, **USER_FIELDS) self.assertTrue(u1["username"] == USERNAME, "<waltz.User.register> Registration " "returned invalid user dict") print User.get(USERNAME) self.assertTrue(User.get(USERNAME).email == EMAIL, "Failed to save / update User record") self.assertTrue(u1.authenticate(PASSWD), "User.authenticate Failed") self.assertTrue( u2 is not None, "<waltz.User.register> " "Registration failed, no such entry " "indexed by {'username': '******'}" % USERNAME, ) self.assertTrue( all(item in u2.items() for item in USER_FIELDS.items()), "<waltz.User.get> Expected stored data did not match " "actual data indexed by waltz 'user' LazyDB.", ) User.replace(USERNAME, u3) self.assertTrue( User.get(USERNAME)["username"] == USERNAME[::-1], "<waltz.User.replace> Failed to replace username" ) u4 = User.get(USERNAME[::-1], safe=True) self.assertTrue( not getattr(u4, "uhash", False), "User.get(%s, safe=True) did not remove uhash field " "as would be expected" % USERNAME[::-1], ) users = User.getall() self.assertTrue(len(users) == 2, "Users db has incorrect # users: " "%s (%s)" % (len(users), users)) users2 = User.getall(safe=True) self.assertTrue( "uhash" not in users2[USERNAME].keys(), "User.getall(safe=True) did not remove uhash field " "as would be expected", ) self.assertTrue( User.delete(USERNAME) is not None, "<waltz.User.delete> " "Failed to delete user: %s" % USERNAME )
def record_submission(submitter_name, pid, cid=None): """Pushes paper pid onto user's posts set. A submission can be a paper or a journal """ u = User.get(submitter_name) if cid: u.comments.append((pid, cid)) else: u.posts.append(pid) return User.replace(submitter_name, dict(u))