functions.py 3.1 KB

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