Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. pony.orm.select(u for u in User if u.available and u.friends > 0 and ...)
  2.  
  3. from datetime import datetime, timedelta
  4. from pony.orm import *
  5.  
  6. db = Database('sqlite', ':memory:')
  7.  
  8. class User(db.Entity):
  9. username = Required(str, unique=True)
  10. password = Required(str)
  11. friends = Set("User", reverse='friends') # many-to-many symmetric relation
  12. online = Required(bool, default=False) # if user is currently online
  13. last_visit = Optional(datetime) # last visit time
  14. disabled = Required(bool, default=False) # if user is disabled by administrator
  15.  
  16. sql_debug(True)
  17. db.generate_mapping(create_tables=True)
  18.  
  19. def active_users():
  20. return User.select(lambda user: not user.disabled)
  21.  
  22. def active_users():
  23. return select(u for u in User if not user.disabled)
  24.  
  25. users = active_users().filter(lambda user: user.name.startswith('A'))
  26. .order_by(User.name)[:10]
  27.  
  28. def recent_users(days=1):
  29. return active_users().filter(lambda u: u.last_visit > datetime.now() - timedelta(days))
  30.  
  31. def users_with_at_least_n_friends(n=1):
  32. return active_users().filter(lambda u: count(u.friends) >= n)
  33.  
  34. def online_users():
  35. return User.select(lambda u: u.online)
  36.  
  37. def online_users_with_at_least_n_online_friends(n=1):
  38. return online_users().filter(lambda u: count(f for f in u.friends if f.online) >= n)
  39.  
  40. users = online_users_with_at_least_n_online_friends(n=10)
  41. .order_by(User.name)[:10]
  42.  
  43. class User(db.Entity):
  44. username = Required(str, unique=True)
  45. ...
  46. @classmethod
  47. def name_starts_with(cls, prefix):
  48. return cls.select(lambda user: not user.disabled
  49. and user.name.startswith(prefix))
  50.  
  51. ...
  52. users = User.name_starts_with('A').order_by(desc(User.last_visit))[:10]
  53.  
  54. def select_active(cls):
  55. return cls.select(lambda obj: not obj.deleted)
  56.  
  57. select_active(Message).filter(lambda msg: msg.author == current_user)
  58.  
  59. def active_users():
  60. return User.select(lambda user: not user.disabled)
  61.  
  62. def name_starts_with(query, prefix):
  63. return query.filter(lambda user: user.name.startswith('prefix'))
  64.  
  65. users1 = name_starts_with(active_users(), 'A').order_by(User.last_visited)
  66. users2 = name_starts_with(recent_users(), 'B').filter(lambda user: user.online)
  67.  
  68. select(u for u in User).recent(days=3).name_starts_with('A')[:10]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement