Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
redl
redeleitsystem
Commits
b0aeb601
Commit
b0aeb601
authored
Sep 11, 2015
by
YSelf Tool
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added time view, single template for update javascript files
parent
d067165e
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
58 additions
and
59 deletions
+58
-59
modules/admin.py
modules/admin.py
+10
-10
modules/speech.py
modules/speech.py
+11
-6
server.py
server.py
+22
-8
shared.py
shared.py
+6
-1
templates/content_time.html
templates/content_time.html
+1
-0
templates/layout.html
templates/layout.html
+5
-0
templates/update.js
templates/update.js
+3
-4
templates/update_show.js
templates/update_show.js
+0
-30
No files found.
modules/admin.py
View file @
b0aeb601
from
flask
import
Blueprint
,
render_template
,
redirect
,
url_for
,
request
,
flash
,
abort
,
send_file
,
Response
from
flask
import
Blueprint
,
redirect
,
url_for
,
request
,
flash
,
abort
,
send_file
,
Response
from
flask.ext.login
import
login_required
from
passlib.hash
import
pbkdf2_sha256
from
models.database
import
User
,
Event
from
models.forms
import
AdminUserForm
,
NewUserForm
,
NewEventForm
from
shared
import
db
,
admin_permission
from
shared
import
db
,
admin_permission
,
render_layout
admin
=
Blueprint
(
"admin"
,
__name__
)
...
...
@@ -16,14 +16,14 @@ admin = Blueprint("admin", __name__)
def
index
():
users
=
User
.
query
.
limit
(
10
).
all
()
events
=
Event
.
query
.
limit
(
10
).
all
()
return
render_
template
(
"admin_index.html"
,
users
=
users
,
events
=
events
)
return
render_
layout
(
"admin_index.html"
,
users
=
users
,
events
=
events
)
@
admin
.
route
(
"/user/"
)
@
login_required
@
admin_permission
.
require
()
def
user
():
users
=
User
.
query
.
all
()
return
render_
template
(
"admin_user_index.html"
,
users
=
users
)
return
render_
layout
(
"admin_user_index.html"
,
users
=
users
)
@
admin
.
route
(
"/user/edit"
,
methods
=
[
"GET"
,
"POST"
])
@
login_required
...
...
@@ -38,7 +38,7 @@ def user_edit():
db
.
session
.
commit
()
return
redirect
(
url_for
(
".index"
))
else
:
return
render_
template
(
"admin_user_edit.html"
,
form
=
form
,
id
=
user_id
)
return
render_
layout
(
"admin_user_edit.html"
,
form
=
form
,
id
=
user_id
)
else
:
return
redirect
(
url_for
(
".index"
))
...
...
@@ -66,7 +66,7 @@ def user_new():
db
.
session
.
add
(
user
)
db
.
session
.
commit
()
return
redirect
(
url_for
(
".user"
))
return
render_
template
(
"admin_user_new.html"
,
form
=
form
)
return
render_
layout
(
"admin_user_new.html"
,
form
=
form
)
@
admin
.
route
(
"/event/new"
,
methods
=
[
"GET"
,
"POST"
])
...
...
@@ -77,12 +77,12 @@ def event_new():
if
form
.
validate_on_submit
():
if
Event
.
query
.
filter_by
(
name
=
form
.
name
.
data
).
count
()
>
0
:
flash
(
"There already is an event with that name."
,
"alert-error"
)
return
render_
template
(
"admin_event_new.html"
,
form
=
form
)
return
render_
layout
(
"admin_event_new.html"
,
form
=
form
)
event
=
Event
(
form
.
name
.
data
,
form
.
date
.
data
)
db
.
session
.
add
(
event
)
db
.
session
.
commit
()
return
redirect
(
url_for
(
".event"
))
return
render_
template
(
"admin_event_new.html"
,
form
=
form
)
return
render_
layout
(
"admin_event_new.html"
,
form
=
form
)
@
admin
.
route
(
"/event/delete"
)
@
login_required
...
...
@@ -109,7 +109,7 @@ def event_edit():
db
.
session
.
commit
()
return
redirect
(
url_for
(
".index"
))
else
:
return
render_
template
(
"admin_event_edit.html"
,
form
=
form
,
id
=
event_id
)
return
render_
layout
(
"admin_event_edit.html"
,
form
=
form
,
id
=
event_id
)
else
:
return
redirect
(
url_for
(
".index"
))
...
...
@@ -119,4 +119,4 @@ def event_edit():
def
event
():
events
=
Event
.
query
.
all
()
print
(
events
)
return
render_
template
(
"admin_event_index.html"
,
events
=
events
)
return
render_
layout
(
"admin_event_index.html"
,
events
=
events
)
modules/speech.py
View file @
b0aeb601
from
flask
import
Blueprint
,
render_template
,
redirect
,
url_for
,
request
,
flash
,
abort
,
send_file
,
Response
from
flask
import
Blueprint
,
redirect
,
url_for
,
request
,
flash
,
abort
,
send_file
,
Response
from
flask.ext.login
import
login_required
from
models.database
import
User
,
Statement
,
Speaker
,
Event
from
models.forms
import
AddStatementForm
from
shared
import
db
,
admin_permission
,
user_permission
from
shared
import
db
,
admin_permission
,
user_permission
,
render_layout
from
datetime
import
datetime
import
json
import
config
speech
=
Blueprint
(
"speech"
,
__name__
)
def
transpose
(
arr
):
...
...
@@ -41,7 +43,7 @@ def index():
form
.
event
.
data
=
event
.
id
meta
.
append
((
query_statements
(
mode
,
event
.
id
),
form
,
event
))
event_id
=
-
1
return
render_
template
(
"speech_index.html"
,
meta
=
meta
,
event_id
=
event_id
)
return
render_
layout
(
"speech_index.html"
,
meta
=
meta
,
event_id
=
event_id
)
@
speech
.
route
(
"/show"
)
def
show
():
...
...
@@ -54,7 +56,7 @@ def show():
else
:
for
event
in
Event
.
query
.
all
():
meta
.
append
((
query_statements
(
mode
,
event
.
id
),
event
))
return
render_
template
(
"speech_show.html"
,
mode
=
mode
,
meta
=
meta
,
event_id
=
event_id
)
return
render_
layout
(
"speech_show.html"
,
mode
=
mode
,
meta
=
meta
,
event_id
=
event_id
)
@
speech
.
route
(
"/update"
)
def
update
():
...
...
@@ -67,7 +69,7 @@ def update():
else
:
for
event
in
Event
.
query
.
all
():
meta
.
append
((
query_statements
(
mode
,
event
.
id
),
event
))
return
render_
template
(
"speech_content_show.html"
,
mode
=
mode
,
meta
=
meta
)
return
render_
layout
(
"speech_content_show.html"
,
mode
=
mode
,
meta
=
meta
)
@
speech
.
route
(
"/add"
,
methods
=
[
"GET"
,
"POST"
])
...
...
@@ -130,7 +132,10 @@ def done():
@
speech
.
route
(
"/update_show.js"
)
def
update_show_js
():
update_interval
=
config
.
UPDATE_SHOW_INTERVAL
or
1
div
=
"rede-content-div"
mode
=
request
.
args
.
get
(
"mode"
,
"pending"
)
event_id
=
request
.
args
.
get
(
"event"
,
-
1
)
return
render_template
(
"update_show.js"
,
mode
=
mode
,
event_id
=
event_id
)
target_url
=
url_for
(
".update"
,
mode
=
mode
,
event
=
event_id
)
return
render_layout
(
"update.js"
,
update_interval
=
update_interval
,
div
=
div
,
target_url
=
target_url
)
server.py
View file @
b0aeb601
#!/usr/bin/env python3
from
flask
import
Flask
,
g
,
current_app
,
request
,
render_template
,
session
,
flash
,
redirect
,
url_for
,
abort
from
flask
import
Flask
,
g
,
current_app
,
request
,
session
,
flash
,
redirect
,
url_for
,
abort
from
flask.ext.login
import
login_user
,
logout_user
,
login_required
,
current_user
from
flask.ext.principal
import
Principal
,
Identity
,
AnonymousIdentity
,
identity_changed
,
identity_loaded
,
UserNeed
,
RoleNeed
from
passlib.hash
import
pbkdf2_sha256
import
config
from
shared
import
db
,
login_manager
from
shared
import
db
,
login_manager
,
render_layout
from
models.forms
import
LoginForm
,
NewUserForm
from
models.database
import
User
,
Statement
,
Speaker
,
Event
...
...
@@ -41,7 +41,7 @@ def index():
no_speaker
=
Speaker
(
"No Speaker"
,
event
)
no_statement
=
Statement
(
no_speaker
,
event
)
meta
.
append
((
ls
[
0
]
if
len
(
ls
)
>
0
else
(
no_statement
,
no_speaker
,
()),
event
))
return
render_
template
(
"index.html"
,
meta
=
meta
)
return
render_
layout
(
"index.html"
,
meta
=
meta
)
@
app
.
route
(
"/update"
)
def
update
():
...
...
@@ -52,11 +52,25 @@ def update():
no_speaker
=
Speaker
(
"No Speaker"
,
event
)
no_statement
=
Statement
(
no_speaker
,
event
)
meta
.
append
((
ls
[
0
]
if
len
(
ls
)
>
0
else
(
no_statement
,
no_speaker
,
()),
event
))
return
render_
template
(
"content_index.html"
,
meta
=
meta
)
return
render_
layout
(
"content_index.html"
,
meta
=
meta
)
@
app
.
route
(
"/update.js"
)
def
update_js
():
return
render_template
(
"update_index.js"
)
update_interval
=
config
.
UPDATE_INDEX_INTERVAL
or
1
div
=
"rede-content-div"
target_url
=
url_for
(
".update"
)
return
render_layout
(
"update.js"
,
update_interval
=
update_interval
,
div
=
div
,
target
=
target_url
)
@
app
.
route
(
"/update_time"
)
def
update_time
():
return
render_layout
(
"content_time.html"
)
@
app
.
route
(
"/update_time.js"
)
def
update_time_js
():
update_interval
=
config
.
UPDATE_TIME_INTERVAL
or
10
div
=
"rede-time-div"
target_url
=
url_for
(
"update_time"
)
return
render_layout
(
"update.js"
,
update_interval
=
update_interval
,
div
=
div
,
target_url
=
target_url
)
@
app
.
route
(
"/login"
,
methods
=
[
"GET"
,
"POST"
])
def
login
():
...
...
@@ -70,7 +84,7 @@ def login():
return
redirect
(
request
.
args
.
get
(
"next"
)
or
url_for
(
".index"
))
else
:
flash
(
"Invalid username or wrong password"
,
"alert-error"
)
return
render_
template
(
"login.html"
,
form
=
form
)
return
render_
layout
(
"login.html"
,
form
=
form
)
@
app
.
route
(
"/logout"
,
methods
=
[
"GET"
,
"POST"
])
@
login_required
...
...
@@ -89,14 +103,14 @@ def register():
length
=
len
(
db
.
session
.
query
(
User
).
filter_by
(
username
=
form
.
username
.
data
).
all
())
if
length
>
0
:
flash
(
"There already is a user with that name."
)
return
render_
template
(
"register.html"
,
form
=
form
)
return
render_
layout
(
"register.html"
,
form
=
form
)
password
=
pbkdf2_sha256
.
encrypt
(
form
.
password
.
data
,
rounds
=
200000
,
salt_size
=
16
)
user
=
User
(
fullname
,
username
,
password
,
[])
db
.
session
.
add
(
user
)
db
.
session
.
commit
()
flash
(
"Your account has been created, you may now log in with it."
)
return
redirect
(
url_for
(
".login"
))
return
render_
template
(
"register.html"
,
form
=
form
)
return
render_
layout
(
"register.html"
,
form
=
form
)
@
identity_loaded
.
connect_via
(
app
)
def
on_identity_loaded
(
sender
,
identity
):
...
...
shared.py
View file @
b0aeb601
from
flask
import
abort
from
flask
import
abort
,
render_template
from
flask.ext.sqlalchemy
import
SQLAlchemy
from
flask.ext.login
import
LoginManager
from
flask.ext.principal
import
Permission
,
RoleNeed
from
datetime
import
datetime
db
=
SQLAlchemy
()
login_manager
=
LoginManager
()
...
...
@@ -9,3 +10,7 @@ login_manager = LoginManager()
admin_permission
=
Permission
(
RoleNeed
(
"admin"
))
user_permission
=
Permission
(
RoleNeed
(
"user"
))
roles
=
[
"user"
,
"admin"
]
def
render_layout
(
template
,
**
kwargs
):
current_time
=
datetime
.
now
()
return
render_template
(
template
,
current_time
=
current_time
,
**
kwargs
)
templates/content_time.html
0 → 100644
View file @
b0aeb601
{{ current_time.strftime("%H:%M") }}
templates/layout.html
View file @
b0aeb601
...
...
@@ -12,6 +12,7 @@
<meta
name=
"mobile-web-app-capable"
content=
"yes"
>
<link
rel=
"stylesheet"
href=
"{{ url_for('static', filename='css/style.css') }}"
/>
<title>
{% block title %}Unknown Page{% endblock %} - Redeleitsystem
</title>
<script
src=
"{{ url_for("
update_time_js
")
}}"
async
></script>
{% block additional_js %}
<!-- Place to insert more .js-files -->
{% endblock %}
...
...
@@ -23,6 +24,10 @@
<div
class=
"mdl-layout__header-row"
>
<a
href=
"{{ url_for('index') }}"
><span
class=
"mdl-layout-title"
>
Redeleitsystem
</span></a>
<div
class=
"mdl-layout-spacer"
></div>
<span
id=
"rede-time-div"
class=
"mdl-layout-title"
>
{% include "content_time.html" %}
</span>
<div
class=
"mdl-layout-spacer"
></div>
<button
class=
"mdl-button mdl-js-button mdl-js-ripple-effet mdl-button--icon"
id=
"hdrbtn"
>
<i
class=
"material-icons"
>
more_vert
</i>
</button>
...
...
templates/update
_index
.js
→
templates/update.js
View file @
b0aeb601
...
...
@@ -11,20 +11,19 @@ function request() {
update
(
xmlhttp
.
responseText
);
}
};
var
target
=
"
{{
url_for('.update')
}}
"
;
var
target
=
"
{{
target_url
}}
"
;
xmlhttp
.
open
(
"
GET
"
,
target
,
true
);
xmlhttp
.
send
();
}
function
update
(
data
)
{
if
(
data
!=
last_content
)
{
document
.
getElementById
(
"
rede-content-div
"
).
innerHTML
=
data
;
document
.
getElementById
(
"
{{ div }}
"
).
innerHTML
=
data
;
last_content
=
data
;
}
}
window
.
onload
=
function
()
{
window
.
setInterval
(
request
,
1000
);
window
.
setInterval
(
request
,
1000
*
{{
update_interval
}}
);
}
templates/update_show.js
deleted
100644 → 0
View file @
d067165e
var
returned
=
true
;
var
last_content
=
""
;
function
request
()
{
if
(
!
returned
)
return
;
returned
=
false
;
var
xmlhttp
=
new
XMLHttpRequest
();
xmlhttp
.
onreadystatechange
=
function
()
{
if
(
xmlhttp
.
readyState
==
4
&&
xmlhttp
.
status
==
200
)
{
returned
=
true
;
update
(
xmlhttp
.
responseText
);
}
};
var
target
=
"
{{ url_for('.update', mode=mode, event=event_id) }}
"
;
xmlhttp
.
open
(
"
GET
"
,
target
,
true
);
xmlhttp
.
send
();
}
function
update
(
data
)
{
if
(
data
!=
last_content
)
{
document
.
getElementById
(
"
rede-content-div
"
).
innerHTML
=
data
;
last_content
=
data
;
}
}
window
.
onload
=
function
()
{
window
.
setInterval
(
request
,
1000
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment