소스 검색

Merge branch 'minor' of sindre/Beelance into master

master
Sindre Stephansen 5 년 전
부모
커밋
5fee2971bd
11개의 변경된 파일69개의 추가작업 그리고 88개의 파일을 삭제
  1. +2
    -3
      src/app/models/project.py
  2. +1
    -12
      src/app/views/app.py
  3. +4
    -6
      src/app/views/apply.py
  4. +5
    -7
      src/app/views/index.py
  5. +3
    -5
      src/app/views/login.py
  6. +0
    -3
      src/app/views/logout.py
  7. +32
    -36
      src/app/views/new_project.py
  8. +2
    -5
      src/app/views/open_projects.py
  9. +4
    -6
      src/app/views/project.py
  10. +3
    -5
      src/app/views/register.py
  11. +13
    -0
      src/app/views/utils.py

+ 2
- 3
src/app/models/project.py 파일 보기

@@ -127,6 +127,8 @@ def get_user_permissions(userid, projectid):
try:
cursor.execute(query, (projectid, userid))
permissions = cursor.fetchall()
if len(permissions):
return permissions[0]
except mysql.connector.Error as err:
logger.error("Failed executing query: %s", err)
cursor.fetchall()
@@ -135,9 +137,6 @@ def get_user_permissions(userid, projectid):
cursor.close()
db.close()

if len(permissions):
return permissions[0]

return [0, 0, 0]




+ 1
- 12
src/app/views/app.py 파일 보기

@@ -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))



+ 4
- 6
src/app/views/apply.py 파일 보기

@@ -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)



+ 5
- 7
src/app/views/index.py 파일 보기

@@ -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)

+ 3
- 5
src/app/views/login.py 파일 보기

@@ -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)


+ 0
- 3
src/app/views/logout.py 파일 보기

@@ -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:



+ 32
- 36
src/app/views/new_project.py 파일 보기

@@ -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,
@@ -72,44 +70,42 @@ class New_project:
if len(data.user_name_0):
status = "in progress"

# Validate the input user names
for i in range(0, user_count):
if len(data["user_name_"+str(i)]) and not models.user.get_user_id_by_name(data["user_name_"+str(i)]):
return render.new_project(nav, project_form, project_buttons, "Invalid user: " + data["user_name_"+str(i)])

# Save the project to the database
projectid = models.project.set_project(data.category_name, str(session.userid),
data.project_title, data.project_description, status)
data.project_title, data.project_description, status)

# Save the tasks in the database
for i in range(0, task_count):
models.project.set_task(str(projectid), (data["task_title_" + str(i)]),
(data["task_description_" + str(i)]), (data["budget_" + str(i)]))
models.project.set_task(str(projectid),
(data["task_title_" + str(i)]),
(data["task_description_" + str(i)]),
(data["budget_" + str(i)]))

# Save the users in the database given that the input field is not empty
# Validate the input user names. If the user doesn't exist we silently ignore it
for i in range(0, user_count):
if len(data["user_name_"+str(i)]):
userid = models.user.get_user_id_by_name(data["user_name_"+str(i)])
read, write, modify = "FALSE", "FALSE", "FALSE"
try:
data["read_permission_"+str(i)]
read = "TRUE"
except Exception as e:
read = "FALSE"
pass
try:
data["write_permission_"+str(i)]
write = "TRUE"
except Exception as e:
write = "FALSE"
pass
try:
data["modify_permission_"+str(i)]
modify = "TRUE"
except Exception as e:
modify = "FALSE"
pass
models.project.set_projects_user(str(projectid), str(userid), read, write, modify)
username = data["user_name_"+str(i)]
if len(username):
userid = models.user.get_user_id_by_name(username)
if userid:
# Save the users in the database given that the input field is not empty
read, write, modify = 0, 0, 0
try:
data["read_permission_"+str(i)]
read = 1
except Exception as e:
pass
try:
data["write_permission_"+str(i)]
write = 1
except Exception as e:
pass
try:
data["modify_permission_"+str(i)]
modify = 1
except Exception as e:
pass
models.project.set_projects_user(projectid, userid, read, write, modify)

raise web.seeother('/?projects=my')

def compose_form(self, data, operation):


+ 2
- 5
src/app/views/open_projects.py 파일 보기

@@ -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)

+ 4
- 6
src/app/views/project.py 파일 보기

@@ -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):


+ 3
- 5
src/app/views/register.py 파일 보기

@@ -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():


+ 13
- 0
src/app/views/utils.py 파일 보기

@@ -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


불러오는 중...
취소
저장