You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.6KB

  1. import web
  2. from views.forms import register_form
  3. import models.register
  4. import models.login
  5. from views.utils import get_nav_bar
  6. import hashlib
  7. import re
  8. # Get html templates
  9. render = web.template.render('templates/')
  10. class Register:
  11. def GET(self):
  12. """
  13. Get the registration form
  14. :return: A page with the registration form
  15. """
  16. session = web.ctx.session
  17. nav = get_nav_bar(session)
  18. return render.register(nav, register_form, "")
  19. def POST(self):
  20. """
  21. Handle input data and register new user in database
  22. :return: Main page
  23. """
  24. session = web.ctx.session
  25. nav = get_nav_bar(session)
  26. data = web.input()
  27. message = ""
  28. # Check if user exists
  29. if models.login.get_user_id_by_name(data.username):
  30. message += "Invalid user, already exists. "
  31. # Check if email is valid
  32. if not re.match(r"[^@]+@[^@]+\.[^@]+", data.email):
  33. message += "Invalid email address. "
  34. # Check if password is valid
  35. if not len(data.password) > 5:
  36. message += "Invalid password, must be atleast 6 characters long. "
  37. # Register user if input is valid
  38. if len(message) == 0:
  39. models.register.set_user(data.username, hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest(),
  40. data.full_name, data.email, data.company, data.phone_number, data.street_address,
  41. data.city, data.state, data.postal_code, data.country)
  42. message += "User Registered. "
  43. return render.register(nav, register_form, message)