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