| @@ -1,6 +1,5 @@ | |||
| import os | |||
| import web | |||
| from views.utils import get_nav_bar, csrf_field | |||
| from views.login import Login | |||
| from views.logout import Logout | |||
| from views.register import Register | |||
| @@ -13,7 +12,7 @@ from views.apply import Apply | |||
| # Connect to smtp server, enables web.sendmail() | |||
| try: | |||
| smtp_server = os.getenv("smtp_server") + ":25" | |||
| web.config.smtp_server = smtp_server | |||
| web.config.smtp_server = smtp_server | |||
| except: | |||
| smtp_server = "molde.idi.ntnu.no:25" | |||
| web.config.smtp_server = smtp_server | |||
| @@ -39,9 +38,6 @@ urls = ( | |||
| # Initialize application using the web py framework | |||
| app = web.application(urls, globals()) | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| # Set session timeout | |||
| web.config.session_parameters['timeout'] = 15000000 | |||
| @@ -52,16 +48,9 @@ if web.config.get('_session') is None: | |||
| else: | |||
| session = web.config._session | |||
| # Add session to global variables | |||
| render._add_global(session, 'session') | |||
| # Add CSRF field to global variables | |||
| web.template.Template.globals['csrf_field'] = csrf_field | |||
| # Make the session available cross modules through webctx | |||
| def session_hook(): | |||
| web.ctx.session = session | |||
| web.template.Template.globals['session'] = session | |||
| app.add_processor(web.loadhook(session_hook)) | |||
| @@ -1,11 +1,9 @@ | |||
| import web | |||
| import models.project | |||
| from models.user import get_user_name_by_id | |||
| from views.utils import get_nav_bar, get_element_count, csrf_protected | |||
| from views.utils import get_nav_bar, get_element_count, csrf_protected, get_render | |||
| from views.forms import get_apply_form, get_apply_permissions_form | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Apply: | |||
| @@ -30,8 +28,7 @@ class Apply: | |||
| apply_permissions_form = get_apply_permissions_form() | |||
| applicants = [[session.userid, session.username]] | |||
| permissions = [["TRUE", "TRUE", "TRUE"]] | |||
| render = web.template.render('templates/', globals={"get_apply_permissions_form":get_apply_permissions_form, 'session':session}) | |||
| render = get_render(globals={"get_apply_permissions_form": get_apply_permissions_form}) | |||
| return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants, permissions) | |||
| @csrf_protected | |||
| @@ -49,7 +46,8 @@ class Apply: | |||
| apply_permission_form = get_apply_permissions_form() | |||
| # Prepare globals | |||
| render = web.template.render('templates/', globals={"get_apply_permissions_form":get_apply_permissions_form, 'session':session}) | |||
| render = get_render(globals={"get_apply_permissions_form": get_apply_permissions_form}) | |||
| if data.projectid: | |||
| project = models.project.get_project_by_id(data.projectid) | |||
| @@ -1,17 +1,15 @@ | |||
| import web | |||
| import models.project | |||
| from views.utils import get_nav_bar | |||
| from views.utils import get_nav_bar, get_render | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Index: | |||
| def GET(self): | |||
| """ | |||
| """ | |||
| Get main page using the projects URL input variable to | |||
| determine which projects to show. | |||
| :return: index page | |||
| """ | |||
| session = web.ctx.session | |||
| @@ -31,4 +29,4 @@ class Index: | |||
| project_bulk_one = models.project.get_projects_by_status_and_owner(str(session.userid), "finished") | |||
| project_bulk_two = models.project.get_projects_by_participant_and_status(str(session.userid), "finished") | |||
| return render.index(nav, project_bulk_one, project_bulk_two, data.projects, categories) | |||
| return get_render().index(nav, project_bulk_one, project_bulk_two, data.projects, categories) | |||
| @@ -1,6 +1,6 @@ | |||
| import web | |||
| from views.forms import login_form | |||
| from views.utils import get_nav_bar, csrf_protected | |||
| from views.utils import get_nav_bar, csrf_protected, get_render | |||
| import models.session | |||
| import models.user | |||
| import logging | |||
| @@ -11,9 +11,6 @@ import time | |||
| logger = logging.getLogger(__name__) | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| # The remember cookie should be valid for a week | |||
| remember_timeout = 3600*24*7 | |||
| @@ -39,7 +36,7 @@ class Login(): | |||
| # Log the user in if the rememberme cookie is set and valid | |||
| self.check_rememberme() | |||
| return render.login(nav, login_form, "") | |||
| return get_render().login(nav, login_form, "") | |||
| @csrf_protected | |||
| def POST(self): | |||
| @@ -50,6 +47,7 @@ class Login(): | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| data = web.input(username="", password="", remember=False) | |||
| render = get_render() | |||
| # Validate login credential with database query | |||
| user = models.user.get_user(data.username) | |||
| @@ -2,9 +2,6 @@ import web | |||
| from views.utils import get_nav_bar | |||
| import models.session | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Logout: | |||
| @@ -1,13 +1,10 @@ | |||
| import web | |||
| from web import form | |||
| from views.forms import get_task_form_elements, get_project_form_elements, get_user_form_elements, project_buttons | |||
| from views.utils import get_nav_bar, get_element_count, csrf_protected | |||
| from views.utils import get_nav_bar, get_element_count, csrf_protected, get_render | |||
| import models.project | |||
| import models.user | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class New_project: | |||
| def GET(self): | |||
| @@ -24,7 +21,7 @@ class New_project: | |||
| task_form_elements = get_task_form_elements() | |||
| user_form_elements = get_user_form_elements() | |||
| project_form = form.Form(*(project_form_elements + task_form_elements + user_form_elements)) | |||
| return render.new_project(nav, project_form, project_buttons, "") | |||
| return get_render().new_project(nav, project_form, project_buttons, "") | |||
| @csrf_protected | |||
| def POST(self): | |||
| @@ -35,6 +32,7 @@ class New_project: | |||
| """ | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| render = get_render() | |||
| # Try the different URL input parameters to determine how to generate the form | |||
| data = web.input(add_user=None, remove_user=None, | |||
| @@ -1,10 +1,7 @@ | |||
| import web | |||
| from views.utils import get_nav_bar | |||
| from views.utils import get_nav_bar, get_render | |||
| from models.project import get_categories, get_projects_by_status_and_category | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Open_projects: | |||
| def GET(self): | |||
| @@ -20,4 +17,4 @@ class Open_projects: | |||
| open_projects = get_projects_by_status_and_category(data.categoryid, "open") | |||
| nav = get_nav_bar(session) | |||
| categories = get_categories() | |||
| return render.open_projects(nav, categories, open_projects) | |||
| return get_render().open_projects(nav, categories, open_projects) | |||
| @@ -1,13 +1,10 @@ | |||
| import web | |||
| import models.project | |||
| from views.utils import get_nav_bar, csrf_protected | |||
| from views.utils import get_nav_bar, csrf_protected, get_render | |||
| from views.forms import project_form | |||
| import os | |||
| from time import sleep | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Project: | |||
| @@ -38,8 +35,9 @@ class Project: | |||
| else: | |||
| project = [[]] | |||
| tasks = [[]] | |||
| render = web.template.render('templates/', globals={'get_task_files':models.project.get_task_files, 'session':session}) | |||
| return render.project(nav, project_form, project, tasks,permissions, categories) | |||
| render = get_render(globals={'get_task_files': models.project.get_task_files}) | |||
| return render.project(nav, project_form, project, tasks, permissions, categories) | |||
| @csrf_protected | |||
| def POST(self): | |||
| @@ -1,6 +1,6 @@ | |||
| import web | |||
| from views.forms import register_form | |||
| from views.utils import get_nav_bar, csrf_protected, password_weakness | |||
| from views.utils import get_nav_bar, csrf_protected, password_weakness, get_render | |||
| import models.register | |||
| import models.user | |||
| import logging | |||
| @@ -9,9 +9,6 @@ import re | |||
| logger = logging.getLogger(__name__) | |||
| # Get html templates | |||
| render = web.template.render('templates/') | |||
| class Register: | |||
| @@ -23,7 +20,7 @@ class Register: | |||
| """ | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| return render.register(nav, register_form, "") | |||
| return get_render().register(nav, register_form, "") | |||
| @csrf_protected | |||
| def POST(self): | |||
| @@ -35,6 +32,7 @@ class Register: | |||
| session = web.ctx.session | |||
| nav = get_nav_bar(session) | |||
| data = web.input() | |||
| render = get_render() | |||
| register = register_form() | |||
| if not register.validates(): | |||
| @@ -2,6 +2,19 @@ import web | |||
| from uuid import uuid4 | |||
| def get_render(path='templates/', globals={}, **kwargs): | |||
| default_globals = { | |||
| 'session': web.config._session, | |||
| 'csrf_field': csrf_field, | |||
| } | |||
| return web.template.render( | |||
| path, | |||
| globals={**default_globals, **globals}, | |||
| **kwargs, | |||
| ) | |||
| def get_nav_bar(session): | |||
| """ | |||
| Generates the page nav bar | |||