Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. from flask import g
  2. from flask.views import View
  3.  
  4.  
  5. class BaseController(View):
  6. """Base Controller
  7.  
  8. The base controller of this module, it shows how to make
  9. 'class based controller' with 'Flask Pluggable view'.
  10. You can make controller inherited from BaseController
  11. not from Flask.View
  12.  
  13. class ExampleController(BaseController):
  14. # your methods
  15.  
  16. """
  17.  
  18. methods = []
  19. decorators = []
  20.  
  21. def is_form_valid(self, form):
  22. """Validate form
  23.  
  24. It wraps the flask-wtf `validate_on_submit`, it needs flask-wtf
  25. form object to be passed in.
  26. """
  27. return form.validate_on_submit()
  28.  
  29. def get_site_data(self):
  30. """Placeholder of site data
  31.  
  32. It gets site data from `site_setting` decorator.
  33. """
  34. return g.school
  35.  
  36. def dispatch_request(self):
  37. pass
  38.  
  39. from flask import g, flash, url_for
  40. from flask.views import View
  41. from openedoo.core.libs import (Blueprint, render_template, request, redirect,
  42. session)
  43. from openedoo.core.libs.tools import (hashing_werkzeug, check_werkzeug,
  44. session_encode)
  45. from modules.module_employee.forms import LoginForm, AddEmployeeForm, flash_errors
  46. from .base_controller import BaseController
  47. from modules.module_employee.views.decorators import site_setting, login_required
  48. from modules.module_employee import models as model
  49.  
  50. class EmployeeLogin(BaseController):
  51. """Employee login controller."""
  52.  
  53. methods = ['GET', 'POST']
  54. decorators = [site_setting]
  55.  
  56. def dispatch_request(self):
  57. loginForm = LoginForm()
  58. isFormValid = self.is_form_valid(loginForm)
  59. if isFormValid:
  60. username = request.form['username']
  61. password = request.form['password']
  62. employee = model.Employee.query.filter_by(username=username).first()
  63. if employee and check_werkzeug(employee.password, password):
  64. encodeUsername = session_encode(employee.username)
  65. session['username'] = encodeUsername
  66. return redirect(url_for('module_employee.dashboard'))
  67. flash(u'Username or password did not match.', 'error')
  68. flash_errors(loginForm)
  69. return render_template('admin/login.html',
  70. school=self.get_site_data(),
  71. form=loginForm)
  72.  
  73.  
  74. class EmployeeLogout(BaseController):
  75. """Employee logout controller."""
  76.  
  77. methods = ['GET']
  78. decorators = [site_setting, login_required]
  79.  
  80. def dispatch_request(self):
  81. session['username'] = False
  82. return render_template('admin/logout.html', school=self.get_site_data())
  83.  
  84.  
  85. class AddEmployee(BaseController):
  86. """Add employee controller.
  87.  
  88. A new employee can only be added by existing employee.
  89. """
  90.  
  91. methods = ['GET', 'POST']
  92. decorators = [site_setting, login_required]
  93.  
  94. def dispatch_request(self):
  95. addEmployeeForm = AddEmployeeForm()
  96. isAddEmployeeValid = self.is_form_valid(addEmployeeForm)
  97. if isAddEmployeeValid:
  98. employee = {
  99. 'username': request.form['username'],
  100. 'fullname': request.form['fullname'],
  101. 'password': hashing_werkzeug(request.form['password']),
  102. 'nip': request.form['nip'],
  103. 'created': datetime.datetime.now()
  104. }
  105. employeeData = User(employee)
  106. db.session.add(employeeData)
  107. db.session.commit()
  108. flash(u'Employee Successfully Added.')
  109. return redirect(url_for('module_employee.dashboard'))
  110. else:
  111. flash_errors(addEmployeeForm)
  112.  
  113. # A flag to show admin in the navigation bar
  114. showAdminNav = True
  115. return render_template('admin/add-employee.html',
  116. form=addEmployeeForm,
  117. school=self.get_site_data(),
  118. showAdminNav=showAdminNav)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement