__init__.py
3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import logging
import colander
from pyramid.httpexceptions import (
HTTPFound, HTTPForbidden, HTTPNotFound, HTTPInternalServerError,
HTTPSeeOther)
from pyramid.interfaces import IRoutesMapper
from pyramid.view import view_config
from opensipkd.base import get_params, get_home
from pyramid.renderers import render_to_response
#, get_urls
from .base_views import BaseView
#, DataTables
from datetime import timedelta
from opensipkd.detable import *
from .common import ColumnDT, DataTables
from opensipkd.tools import mem_tmp_store
from deform import (
Form, ValidationFailure, widget, Button, FileData)
one_hour = timedelta(1.0 / 24)
two_minutes = timedelta(1.0 / 24 / 60)
@view_config(context=HTTPNotFound, renderer='templates/404.pt')
def not_found(request):
path = request.path
registry = request.registry
mapper = registry.queryUtility(IRoutesMapper)
if mapper is not None and path.endswith('/'):
noslash_path = path.rstrip('/')
for route in mapper.get_routes():
if route.match(noslash_path) is not None:
qs = request.query_string
if qs:
noslash_path += '?' + qs
return HTTPFound(location=noslash_path)
request.response.status = 404
return {}
log = logging.getLogger(__name__)
@view_config(context=HTTPInternalServerError, renderer='templates/500.pt')
def internal_server_error(request):
return {}
@view_config(context=HTTPForbidden, renderer='templates/403.pt')
def http_forbidden(request):
if not request.is_authenticated:
# next_url = get_urls(
# request.route_url(
# 'login', _query={'next': request.url}))
next_url = request.route_url('base-login', _query={'next': request.url})
return HTTPSeeOther(location=next_url)
request.response.status = 403
return {"url": request.url}
class Validator(object):
def __init__(self, row):
self.row = row
class FileSchema(colander.Schema):
file_name = colander.SchemaNode(
FileData(),
widget=widget.FileUploadWidget(mem_tmp_store, size=104857600),
missing=colander.drop,
title="File"
)
description = colander.SchemaNode(
colander.String(),
missing=colander.drop,
validator=colander.Length(max=256),
)
class FilesSchema(colander.SequenceSchema):
file_name = FileSchema()
def after_bin(self, node, kw):
self["file_name"].title = ""
class Home(BaseView):
# @view_config(route_name='home', renderer='templates/home.pt')
def view_home(self):
request = self.req
# session = request.session
modules = request.menus
modules_default = get_params('modules_default')
submodules_default = get_params('submenus')
# request.session['modules'] = modules
# request.session['modules_default'] = modules_default
log.info(request.session.peek_flash())
if modules_default:
if request.user and request.has_permission(modules_default):
return HTTPFound(location=request.route_url(modules_default))
# return HTTPFound(location=get_urls(request.route_url(modules_default)))
elif request.user and len(request.session.peek_flash('error')) < 2:
return HTTPFound(location=request.route_url(modules_default))
# return HTTPFound(location=get_urls(request.route_url(modules_default)))
elif not request.user:
return HTTPFound(location=request.route_url(modules_default))
# return HTTPFound(location=get_urls(request.route_url(modules_default)))
logo = get_params('logo', "static/img/logo.png")
home_tpl = get_params("home_tpl")
if home_tpl:
return render_to_response(
home_tpl,
dict(modules=modules, logo=logo, submodules=[]),
request=request
)
return dict(modules=modules, logo=logo, submodules=[])