Blame main.py

3d8d28
3d8d28
from config import config
3d8d28
from server import Server
3d8d28
from request import Request
05525d
import db.holder
05525d
import exception
48408a
cbf076
3d8d28
server = Server(config)
3d8d28
cbf076
3d8d28
def application(env, start_response):
05525d
  try:
b838e2
    request = Request(server, env)
b838e2
    if request.method != 'GET' and request.method != 'POST':
b838e2
      result = request.answer.complete_error('405 Method Not Allowed')
b838e2
      return result.complete(start_response)
e5b0ac
    if request.path is None:
e5b0ac
      raise exception.HttpNotFound()
e5b0ac
    if request.path and request.path[0] == 'repo':
e5b0ac
      result = request.server.repoproxy.process(request, request.path[1:])
e5b0ac
      return result.complete(start_response)
b838e2
b838e2
    if request.method == 'POST':
e5b0ac
      request.read_postvars()
b838e2
      action = request.server.actions.get(request.action)
b838e2
      
b838e2
      if not action:
b838e2
        raise exception.HttpForbidden()
b838e2
      try:
b838e2
        with db.holder.Holder(request.server.dbpool, readonly = action.readonly) as connection:
b838e2
          request.create_model(connection)
b838e2
          result = action.process(request)
b838e2
          return result.complete(start_response)
b838e2
      except exception.ActionError as e:
b838e2
        postvars = request.postvars
b838e2
        request = Request(server, env)
b838e2
        request.answer.fields.update(postvars)
b838e2
        request.answer.errors += e.messages
b838e2
        
b838e2
    with db.holder.Holder(request.server.dbpool, readonly = True) as connection:
b838e2
      request.create_model(connection)
b838e2
      result = request.server.pageroot.process(request, request.path, list())
b838e2
      return result.complete(start_response)
b838e2
  except exception.HttpForbidden:
b838e2
    result = request.server.pageforbidden.process(request, list(), list())
b838e2
    return result.complete(start_response)
05525d
  except exception.HttpNotFound:
b838e2
    result = request.server.pagenotfound.process(request, list(), list())
b838e2
    return result.complete(start_response)
b838e2