functions.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import smtplib
  2. from json import loads
  3. from email.message import EmailMessage
  4. from data.roles import Roles
  5. from data.users import User
  6. from data.staff_projects import StaffProjects
  7. from data import db_session
  8. import uuid
  9. def check_password(password=''):
  10. smb = 'qwertyuiopasdfghjklzxcvbnm'
  11. if len(password) < 6:
  12. return 'Пароль должен быть длиннее 6 символов'
  13. elif False in [True if i.isalpha() and i.lower() in smb or i.isdigit() else False for i in password]:
  14. return 'Пароль может содержать только буквы латинского алфавита и цифры'
  15. elif True not in [True if i.isdigit() else False for i in password]:
  16. return 'Пароль должен содержать буквы разного регистра и цифры'
  17. elif False not in [True if i.islower() and i.isalpha() else False for i in password]:
  18. return 'Пароль должен содержать буквы разного регистра и цифры'
  19. else:
  20. return 'OK'
  21. def mail(msg, to, topic='Подтверждение почты'):
  22. with open('incepted.config', 'r', encoding='utf-8').read() as file:
  23. file = loads(file)
  24. login, password = file["mail_login"], file["mail_password"]
  25. email_server = "smtp.yandex.ru"
  26. sender = "incepted@yandex.ru"
  27. em = EmailMessage()
  28. em.set_content(msg)
  29. em['To'] = to
  30. em['From'] = sender
  31. em['Subject'] = topic
  32. mailServer = smtplib.SMTP(email_server)
  33. mailServer.set_debuglevel(1)
  34. mailServer.ehlo()
  35. mailServer.starttls()
  36. mailServer.ehlo()
  37. mailServer.login(login, password)
  38. mailServer.ehlo()
  39. mailServer.send_message(em)
  40. mailServer.quit()
  41. def init_db_default():
  42. data_session = db_session.create_session()
  43. roles = [['admin', 2], ['moderator', 1], ['user', 0]]
  44. for i in roles:
  45. role = Roles(
  46. name=i[0],
  47. rights=i[1]
  48. )
  49. data_session.add(role)
  50. data_session.commit()
  51. data_session.close()
  52. def get_user_data(user):
  53. resp = {
  54. 'id': user.id,
  55. 'name': user.name,
  56. 'surname': user.surname,
  57. 'login': user.login,
  58. 'email': user.email,
  59. 'photo': user.photo,
  60. 'role': user.role
  61. }
  62. return resp
  63. def get_projects_data(project):
  64. data_session = db_session.create_session()
  65. staff = data_session.query(StaffProjects.user).filter(StaffProjects.project == project.id).all()
  66. resp = {
  67. 'id': project.id,
  68. 'name': project.name,
  69. 'logo': project.photo,
  70. 'description': project.description,
  71. 'staff': list(map(lambda x: get_user_data(x), data_session.query(User).filter(
  72. User.id.in_(list(map(lambda x: x[0], staff)))).all())) if staff else []
  73. }
  74. resp['staff'].insert(0, get_user_data(data_session.query(User).filter(User.id == project.creator).first()))
  75. return resp
  76. def save_project_logo(photo):
  77. filename = f'static/app_files/project_logo/{uuid.uuid4()}.png'
  78. with open(filename, 'wb') as f:
  79. photo.save(f)
  80. return filename