helper.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from flask_sqlalchemy import SQLAlchemy
  2. from flask_login import UserMixin
  3. import json
  4. # This file contains all the databases.
  5. def createDb(app):
  6. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
  7. app.config['SECRET_KEY'] = 'hard to guess thing'
  8. db = SQLAlchemy(app)
  9. # Create the tables
  10. class Topic(db.Model):
  11. id = db.Column(db.Integer, primary_key=True)
  12. title = db.Column(db.Text)
  13. content = db.Column(db.Text)
  14. date = db.Column(db.Text)
  15. lastActivity = db.Column(db.Text)
  16. author = db.Column(db.Text)
  17. category = db.Column(db.Text)
  18. private = db.Column(db.Boolean)
  19. likes = db.Column(db.Text)
  20. replies = db.Column(db.Text)
  21. # Numbers
  22. likesNum = db.Column(db.Integer)
  23. repliesNum = db.Column(db.Integer)
  24. views = db.Column(db.Integer)
  25. def __init__(self, title, content, date, author, category, private=False):
  26. self.title = title
  27. self.content = content
  28. self.date = date
  29. self.author = author
  30. self.category = category
  31. self.private = private
  32. self.likesNum = 0
  33. self.repliesNum = 0
  34. self.views = 0
  35. self.likes = '[]'
  36. self.lastActivity = date
  37. # Create like and other def for this thing
  38. def like(self, username):
  39. l = json.loads(self.likes)
  40. if username in l:
  41. l.remove(username)
  42. self.likesNum -= 1
  43. self.likes = json.dumps(l)
  44. else:
  45. l.append(username)
  46. self.likesNum += 1
  47. self.likes = json.dumps(l)
  48. def reply(self, date):
  49. self.lastActivity = date
  50. self.repliesNum += 1
  51. class Reply(db.Model):
  52. id = db.Column(db.Integer, primary_key=True)
  53. content = db.Column(db.Text)
  54. date = db.Column(db.Text)
  55. author = db.Column(db.Text)
  56. inReplyTo = db.Column(db.Integer)
  57. likes = db.Column(db.Text)
  58. # Adding the numbers
  59. likesNum = db.Column(db.Integer)
  60. def __init__(self, content, date, author, inReplyTo):
  61. self.content = content
  62. self.date = date
  63. self.author = author
  64. self.inReplyTo = inReplyTo
  65. self.likesNum = 0
  66. self.likes = '[]'
  67. def like(self, username):
  68. l = json.loads(self.likes)
  69. if username in l:
  70. l.remove(username)
  71. self.likesNum -= 1
  72. self.likes = json.dumps(l)
  73. else:
  74. l.append(username)
  75. self.likesNum += 1
  76. self.likes = json.dumps(l)
  77. # Return the data
  78. return {'db': db, 'Topic': Topic, 'Reply': Reply}