Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 16.29 KB | None | 0 0
  1. """
  2. Creating blog
  3. Homework for python-courses
  4. """
  5.  
  6. import pymysql.cursors
  7. import hashlib
  8. import uuid
  9. import time
  10. from collections import defaultdict
  11.  
  12.  
  13. class BlogApp:
  14.  
  15.     tokens_dict = defaultdict(list)
  16.  
  17.     def add_new_user(self, user_username, user_email, user_password):
  18.         connection = pymysql.connect(host='localhost',
  19.                                      user='BlogApp_User',
  20.                                      password='BlogApp_Password',
  21.                                      db='BlogApp',
  22.                                      charset='utf8mb4',
  23.                                      cursorclass=pymysql.cursors.DictCursor)
  24.  
  25.         # salt = b'some_salt'
  26.         # hash_obj = hashlib.md5()
  27.         # hash_obj.update(salt)
  28.         # hash_obj.update(user_password.encode('utf-8'))
  29.  
  30.         try:
  31.             with connection.cursor() as cursor:
  32.                 sql = "INSERT INTO User (Username, Email, Password) VALUES (%s, %s, %s)"
  33.                 cursor.execute(sql, (user_username, user_email, user_password))
  34.             connection.commit()
  35.  
  36.             with connection.cursor() as cursor:
  37.                 sql = "SELECT UserID, Username, Password FROM User WHERE Email=%s"
  38.                 cursor.execute(sql, user_email)
  39.                 result = cursor.fetchone()
  40.                 print(result)
  41.         finally:
  42.             connection.close()
  43.  
  44.     def authentication_user(self, user_email, user_password):
  45.         connection = pymysql.connect(host='localhost',
  46.                                      user='BlogApp_User',
  47.                                      password='BlogApp_Password',
  48.                                      db='BlogApp',
  49.                                      charset='utf8mb4',
  50.                                      cursorclass=pymysql.cursors.DictCursor)
  51.  
  52.         try:
  53.             with connection.cursor() as cursor:
  54.                 sql = "SELECT UserID FROM User WHERE Email=%s AND Password=%s"
  55.                 cursor.execute(sql, (user_email, user_password))
  56.                 user_id = cursor.fetchone()
  57.                 if user_id is not None:
  58.                     user_token = uuid.uuid4()
  59.                     self.tokens_dict[user_token].append(user_id)
  60.                 else:
  61.                     raise KeyError('Login | Password Error')
  62.                 connection.commit()
  63.  
  64.         finally:
  65.             connection.close()
  66.  
  67.         return user_token
  68.  
  69.     def get_users_list(self):
  70.         connection = pymysql.connect(host='localhost',
  71.                                      user='BlogApp_User',
  72.                                      password='BlogApp_Password',
  73.                                      db='BlogApp',
  74.                                      charset='utf8mb4',
  75.                                      cursorclass=pymysql.cursors.DictCursor)
  76.  
  77.         try:
  78.             with connection.cursor() as cursor:
  79.                 sql = "SELECT Username FROM User"
  80.                 cursor.execute(sql)
  81.                 result = cursor.fetchall()
  82.                 connection.commit()
  83.  
  84.         finally:
  85.             connection.close()
  86.         print(result)
  87.         return result
  88.  
  89.     def get_auth_user_blogs_list(self, user_token):
  90.         connection = pymysql.connect(host='localhost',
  91.                                      user='BlogApp_User',
  92.                                      password='BlogApp_Password',
  93.                                      db='BlogApp',
  94.                                      charset='utf8mb4',
  95.                                      cursorclass=pymysql.cursors.DictCursor)
  96.  
  97.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  98.         if user_id is None:
  99.             raise KeyError('Incorrect user token')
  100.  
  101.         try:
  102.             with connection.cursor() as cursor:
  103.                 sql = "SELECT BlogID, BlogName, BlogDescription FROM Blog WHERE UserID=%s"
  104.                 cursor.execute(sql, user_id)
  105.                 result = cursor.fetchall()
  106.                 connection.commit()
  107.         finally:
  108.             connection.close()
  109.         return result
  110.  
  111.     def get_blogs_list(self):
  112.         connection = pymysql.connect(host='localhost',
  113.                                      user='BlogApp_User',
  114.                                      password='BlogApp_Password',
  115.                                      db='BlogApp',
  116.                                      charset='utf8mb4',
  117.                                      cursorclass=pymysql.cursors.DictCursor)
  118.  
  119.         try:
  120.             with connection.cursor() as cursor:
  121.                 sql = "SELECT BlogName, BlogDescription FROM Blog"
  122.                 cursor.execute(sql)
  123.                 result = cursor.fetchall()
  124.                 connection.commit()
  125.  
  126.         finally:
  127.             connection.close()
  128.         print(result)
  129.         return result
  130.  
  131.     def create_blog(self, blog_name, blog_description, user_token):
  132.         connection = pymysql.connect(host='localhost',
  133.                                      user='BlogApp_User',
  134.                                      password='BlogApp_Password',
  135.                                      db='BlogApp',
  136.                                      charset='utf8mb4',
  137.                                      cursorclass=pymysql.cursors.DictCursor)
  138.  
  139.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  140.         if user_id is None:
  141.             raise KeyError('Incorrect user token')
  142.         try:
  143.             with connection.cursor() as cursor:
  144.                 sql = "INSERT INTO Blog (BlogDescription, UserID, BlogName) VALUES (%s, %s, %s)"
  145.                 cursor.execute(sql, (blog_description, user_id, blog_name))
  146.             connection.commit()
  147.  
  148.             with connection.cursor() as cursor:
  149.                 sql = "SELECT * FROM Blog WHERE BlogName=%s"
  150.                 cursor.execute(sql, blog_name)
  151.                 result = cursor.fetchall()
  152.                 print(result)
  153.         finally:
  154.             connection.close()
  155.  
  156.     def edit_blog(self, user_token, blog_id, changed_name=None, changed_description=None):
  157.         connection = pymysql.connect(host='localhost',
  158.                                      user='BlogApp_User',
  159.                                      password='BlogApp_Password',
  160.                                      db='BlogApp',
  161.                                      charset='utf8mb4',
  162.                                      cursorclass=pymysql.cursors.DictCursor)
  163.  
  164.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  165.         print(user_id)
  166.         if user_id is None:
  167.             raise KeyError('Incorrect user token')
  168.         try:
  169.             with connection.cursor() as cursor:
  170.                 sql = "SELECT UserID FROM Blog WHERE BlogID=%s"
  171.                 cursor.execute(sql, blog_id)
  172.                 blogs_user_id = cursor.fetchone()
  173.                 print(blogs_user_id.get('UserID'))
  174.             connection.commit()
  175.  
  176.             if blogs_user_id.get('UserID') == user_id:
  177.                 with connection.cursor() as cursor:
  178.                     if changed_name is not None:
  179.                         sql = "UPDATE Blog SET BlogName=%s WHERE BlogID=%s"
  180.                         cursor.execute(sql, (changed_name, blog_id))
  181.                     if changed_description is not None:
  182.                         sql = "UPDATE Blog SET BlogDescription=%s WHERE BlogID=%s"
  183.                         cursor.execute(sql, (changed_description, blog_id))
  184.                 connection.commit()
  185.             else:
  186.                 raise ValueError('You don\'t have enough permission to edit someones blog')
  187.         finally:
  188.             connection.close()
  189.  
  190.     def delete_blog(self, blog_id, user_token):
  191.         connection = pymysql.connect(host='localhost',
  192.                                      user='BlogApp_User',
  193.                                      password='BlogApp_Password',
  194.                                      db='BlogApp',
  195.                                      charset='utf8mb4',
  196.                                      cursorclass=pymysql.cursors.DictCursor)
  197.  
  198.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  199.         if user_id is None:
  200.             raise KeyError('Incorrect user token')
  201.         try:
  202.             with connection.cursor() as cursor:
  203.                 sql = "SELECT UserID FROM Blog WHERE BlogID=%s"
  204.                 cursor.execute(sql, blog_id)
  205.                 blogs_user_id = cursor.fetchone()
  206.                 print(blogs_user_id.get('UserID'))
  207.             connection.commit()
  208.  
  209.             if blogs_user_id.get('UserID') == user_id:
  210.                 with connection.cursor() as cursor:
  211.                     sql = "DELETE FROM Blog WHERE BlogID=%s"
  212.                     cursor.execute(sql, blog_id)
  213.                 connection.commit()
  214.             else:
  215.                 raise ValueError('You don\'t have enough permission to delete someones blog')
  216.         finally:
  217.             connection.close()
  218.  
  219.     def create_post(self, user_token, blog_id, post_description, post_name):
  220.         connection = pymysql.connect(host='localhost',
  221.                                      user='BlogApp_User',
  222.                                      password='BlogApp_Password',
  223.                                      db='BlogApp',
  224.                                      charset='utf8mb4',
  225.                                      cursorclass=pymysql.cursors.DictCursor)
  226.  
  227.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  228.         if user_id is None:
  229.             raise KeyError('Incorrect user token')
  230.         try:
  231.             with connection.cursor() as cursor:
  232.                 sql = "INSERT INTO Post (UserID, BlogID, PostDescription, PostName) VALUES (%s, %s, %s, %s)"
  233.                 cursor.execute(sql, (user_id, blog_id, post_description, post_name))
  234.             connection.commit()
  235.         finally:
  236.             connection.close()
  237.  
  238.     def edit_post(self, user_token, post_id, changed_name=None, changed_description=None):
  239.         connection = pymysql.connect(host='localhost',
  240.                                      user='BlogApp_User',
  241.                                      password='BlogApp_Password',
  242.                                      db='BlogApp',
  243.                                      charset='utf8mb4',
  244.                                      cursorclass=pymysql.cursors.DictCursor)
  245.  
  246.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  247.         if user_id is None:
  248.             raise KeyError('Incorrect user token')
  249.         try:
  250.             with connection.cursor() as cursor:
  251.                 sql = "SELECT UserID FROM Post WHERE PostID=%s"
  252.                 cursor.execute(sql, post_id)
  253.                 post_user_id = cursor.fetchone()
  254.                 if post_user_id is None:
  255.                     raise ValueError('There is no your post with this post_id')
  256.             connection.commit()
  257.  
  258.             if post_user_id.get('UserID') == user_id:
  259.                 with connection.cursor() as cursor:
  260.                     if changed_name is not None:
  261.                         sql = "UPDATE Post SET PostName=%s WHERE PostID=%s"
  262.                         cursor.execute(sql, (changed_name, post_id))
  263.                     if changed_description is not None:
  264.                         sql = "UPDATE Post SET PostDescription=%s WHERE PostID=%s"
  265.                         cursor.execute(sql, (changed_description, post_id))
  266.                 connection.commit()
  267.             else:
  268.                 raise ValueError('You don\'t have enough permission to edit someones post')
  269.         finally:
  270.             connection.close()
  271.  
  272.     def delete_post(self, user_token, post_id):
  273.         connection = pymysql.connect(host='localhost',
  274.                                      user='BlogApp_User',
  275.                                      password='BlogApp_Password',
  276.                                      db='BlogApp',
  277.                                      charset='utf8mb4',
  278.                                      cursorclass=pymysql.cursors.DictCursor)
  279.  
  280.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  281.         if user_id is None:
  282.             raise KeyError('Incorrect user token')
  283.         try:
  284.             with connection.cursor() as cursor:
  285.                 sql = "SELECT UserID FROM Post WHERE PostID=%s"
  286.                 cursor.execute(sql, post_id)
  287.                 post_user_id = cursor.fetchone()
  288.                 if post_user_id is None:
  289.                     raise ValueError('There is no your post with this post_id')
  290.             connection.commit()
  291.  
  292.             if post_user_id.get('UserID') == user_id:
  293.                 with connection.cursor() as cursor:
  294.                     sql = "DELETE FROM Post WHERE PostID=%s"
  295.                     cursor.execute(sql, post_id)
  296.                     connection.commit()
  297.             else:
  298.                 raise ValueError('You don\'t have enough permission to delete someones blog')
  299.         finally:
  300.             connection.close()
  301.  
  302.     def add_comment(self, user_token, comment_body, post_id, parrent_id=None):
  303.         connection = pymysql.connect(host='localhost',
  304.                                      user='BlogApp_User',
  305.                                      password='BlogApp_Password',
  306.                                      db='BlogApp',
  307.                                      charset='utf8mb4',
  308.                                      cursorclass=pymysql.cursors.DictCursor)
  309.  
  310.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  311.         if user_id is None:
  312.             raise KeyError('Incorrect user token')
  313.         try:
  314.             if parrent_id is not None:
  315.                 with connection.cursor() as cursor:
  316.                     sql = "SELECT CommentID FROM Comment WHERE PostID=%s"
  317.                     cursor.execute(sql, post_id)
  318.                     result = cursor.fetchall()
  319.                     if result is None:
  320.                         raise ValueError('There is no comment with this comment_id')
  321.  
  322.                 for comment in result:
  323.                     if parrent_id == comment.get('CommentID'):
  324.                         with connection.cursor() as cursor:
  325.                             sql = "INSERT INTO Comment (UserID, CommentBody, PostID, ParrentID) VALUES (%s, %s, %s, %s)"
  326.                             cursor.execute(sql, (user_id, comment_body, post_id, parrent_id))
  327.                         break
  328.             else:
  329.                 with connection.cursor() as cursor:
  330.                     sql = "INSERT INTO Comment (UserID, CommentBody, PostID) VALUES (%s, %s, %s)"
  331.                     cursor.execute(sql, (user_id, comment_body, post_id))
  332.             connection.commit()
  333.         finally:
  334.             connection.close()
  335.  
  336.     def get_user_comments(self, user_token):
  337.         connection = pymysql.connect(host='localhost',
  338.                                      user='BlogApp_User',
  339.                                      password='BlogApp_Password',
  340.                                      db='BlogApp',
  341.                                      charset='utf8mb4',
  342.                                      cursorclass=pymysql.cursors.DictCursor)
  343.  
  344.         user_id = self.tokens_dict.get(user_token)[0].get('UserID')
  345.         if user_id is None:
  346.             raise KeyError('Incorrect user token')
  347.  
  348.         try:
  349.             with connection.cursor() as cursor:
  350.                 sql = "SELECT CommentID, CommentBody FROM Comment WHERE UserID=%s"
  351.                 cursor.execute(sql, user_id)
  352.                 result = cursor.fetchall()
  353.                 connection.commit()
  354.         finally:
  355.             connection.close()
  356.         return result
  357.  
  358.  
  359. blog = BlogApp()
  360.  
  361. # print(a.tokens_dict)
  362. # blog.add_new_user('sexybeast', '111@gmail.com', '111')
  363. # print(blog.tokens_dict)
  364. user_token = blog.authentication_user('111@gmail.com', '111')
  365. # print(blog.tokens_dict)
  366. # blog.create_blog('say my name', 'you god damn right', user_token)
  367. # blog.edit_blog(5, user_token, 'son', 'where did you find this???')
  368. # blog.delete_blog(5, user_token)
  369. # my_blogs = blog.get_auth_user_blogs_list(user_token)
  370. # for blog in my_blogs:
  371. #   print(blog)
  372. # blog.create_post(user_token, 2, 'read a few pages of this shit, it\'s fucking awesome', 'new experience')
  373. # blog.delete_post(user_token, 2)
  374. # blog.edit_post(user_token, 2, 'more_new_experience', 'ziga-zaga-hoi-hoi-hoi')
  375. # blog.add_comment(user_token, 'god knows it would be the first time', 2)
  376. # blog.add_comment(user_token, 'replying your gay-gay-shit back', 2, 4)
  377.  
  378. # my_comments = blog.get_user_comments(user_token)
  379. # for comment in my_comments:
  380. #    print(comment)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement