Explorar el Código

Make app.py to handle urls and session, then refactor

https
jakobsn hace 6 años
padre
commit
e9f9e78451
Se han modificado 5 ficheros con 72 adiciones y 62 borrados
  1. +1
    -1
      src/app/main.py
  2. +20
    -18
      src/app/templates/index.html
  3. +48
    -0
      src/app/views/app.py
  4. +2
    -42
      src/app/views/index.py
  5. +1
    -1
      src/app/views/utils.py

+ 1
- 1
src/app/main.py Ver fichero

@@ -1,4 +1,4 @@
from views.index import app
from views.app import app

if __name__ == "__main__":
app.run()


+ 20
- 18
src/app/templates/index.html Ver fichero

@@ -15,29 +15,31 @@ $def with (nav, project_bulk_one, project_bulk_two, projects)

<img src="static/honeybee.png" alt="Honeybee">

<h3>What would you like to do today?</h3>
$if session.username:

<div id="user_projects">
<div class="user_projects_category" onclick="location.href='/?projects=my'">My Projects</div>
<div class="user_projects_category" onclick="location.href='/?projects=customer'">Customer Projects</div>
<div class="user_projects_category" onclick="location.href='/?projects=finished'">Finished Projects</div>
</div>
<h3>What would you like to do today?</h3>

<div id="user_projects">
<div class="user_projects_category" onclick="location.href='/?projects=my'">My Projects</div>
<div class="user_projects_category" onclick="location.href='/?projects=customer'">Customer Projects</div>
<div class="user_projects_category" onclick="location.href='/?projects=finished'">Finished Projects</div>
</div>
$if projects == 'my':
<h3>Your open projects</h3>
$if projects == 'my':
<h3>Your open projects</h3>

<div class="projects">
$for project in project_bulk_one:
<div class="project" onclick="location.href='/project?projectid=$project[0]'"><h4>$project[3]</h4><p>$project[4]</p></div>
</div>
<div class="projects">
$for project in project_bulk_one:
<div class="project" onclick="location.href='/project?projectid=$project[0]'"><h4>$project[3]</h4><p>$project[4]</p></div>
</div>

$if projects == 'my':
<h3>Projects in progress</h3>
$if projects == 'my':
<h3>Projects in progress</h3>

<div class="projects">
$for project in project_bulk_two:
<div class="project" onclick="location.href='/project?projectid=$project[0]'"><h4>$project[3]</h4><p>$project[4]</p></div>
</div>
<div class="projects">
$for project in project_bulk_two:
<div class="project" onclick="location.href='/project?projectid=$project[0]'"><h4>$project[3]</h4><p>$project[4]</p></div>
</div>

</body>

+ 48
- 0
src/app/views/app.py Ver fichero

@@ -0,0 +1,48 @@
import web
from views.utils import get_nav_bar
from views.guestbook import Guestbook
from views.login import Login
from views.logout import Logout
from views.register import Register
from views.admin import Admin
from views.new_project import New_project
from views.open_projects import Open_projects
from views.project import Project
from views.index import Index

# Define application routes
urls = (
'/', 'Index',
'/login', 'Login',
'/logout', 'Logout',
'/register', 'Register',
'/guestbook', 'Guestbook',
'/new_project', 'New_project',
'/open_projects', 'Open_projects',
'/project', 'Project',
'/admin', 'Admin',
)
# Initialize application using the web py framework
app = web.application(urls, globals())

# Get html templates
render = web.template.render('templates/')

# Workaround to use sessions with reloader (debugger) http://webpy.org/cookbook/session_with_reloader
if web.config.get('_session') is None:
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"username": None})
web.config._session = session
else:
session = web.config._session

# Add session to global variables
render._add_global(session, 'session')

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


+ 2
- 42
src/app/views/index.py Ver fichero

@@ -1,55 +1,15 @@
import web
from views.utils import get_nav_bar
from views.guestbook import Guestbook
from views.login import Login
from views.logout import Logout
from views.register import Register
from views.admin import Admin
from views.new_project import New_project
from views.open_projects import Open_projects
from views.project import Project
import models.project

# Define application routes
urls = (
'/', 'Index',
'/login', 'Login',
'/logout', 'Logout',
'/register', 'Register',
'/guestbook', 'Guestbook',
'/new_project', 'New_project',
'/open_projects', 'Open_projects',
'/project', 'Project',
'/admin', 'Admin',
)
# Initialize application using the web py framework
app = web.application(urls, globals())
from views.utils import get_nav_bar

# Get html templates
render = web.template.render('templates/')

# Workaround to use sessions with reloader (debugger) http://webpy.org/cookbook/session_with_reloader
if web.config.get('_session') is None:
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer={"username": None})
web.config._session = session
else:
session = web.config._session

# Add session to global variables
render._add_global(session, 'session')

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

class Index:
# Get main page
def GET(self):
session = web.ctx.session
nav = get_nav_bar(session)
data = web.input(projects=None)
project_bulk_one = []


+ 1
- 1
src/app/views/utils.py Ver fichero

@@ -6,10 +6,10 @@ def get_nav_bar(session):
result += ' <li><a href="/">Home</a></li>'
if session.username:
result += ' <li><a href="logout">Logout</a></li>'
result += ' <li><a href="new_project">New</a></li>'
else:
result += ' <li><a href="register">Register</a></li>'
result += ' <li><a href="login">Login</a></li>'
result += ' <li><a href="new_project">New</a></li>'
result += ' <li><a href="open_projects">Projects</a></li>'
result += ' <li><a href="guestbook">Guestbook</a></li>'
result += ' </ul>'


Cargando…
Cancelar
Guardar