Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
radiopanik
panikweb
Commits
02075d37
Commit
02075d37
authored
Aug 14, 2013
by
Simon Daron
Browse files
Merge branch 'master' of
ssh://git.domainepublic.net/panikweb
parents
2aabe7ef
4853b9ea
Changes
6
Hide whitespace changes
Inline
Side-by-side
panikweb/paniktags/__init__.py
0 → 100644
View file @
02075d37
panikweb/paniktags/templatetags/__init__.py
0 → 100644
View file @
02075d37
panikweb/paniktags/templatetags/paniktags.py
0 → 100644
View file @
02075d37
from
django
import
template
register
=
template
.
Library
()
@
register
.
filter
(
name
=
'zip'
)
def
zip_lists
(
a
,
b
):
return
zip
(
a
,
b
)
panikweb/settings.py
View file @
02075d37
...
...
@@ -125,6 +125,7 @@ INSTALLED_APPS = (
'django.contrib.admin'
,
'django.contrib.admindocs'
,
'panikweb_templates'
,
'panikweb.paniktags'
,
'jquery'
,
'ckeditor'
,
'emissions'
,
...
...
panikweb/views.py
View file @
02075d37
import
datetime
import
math
from
django.views.generic.base
import
TemplateView
...
...
@@ -19,6 +20,120 @@ class ProgramView(TemplateView):
program
=
ProgramView
.
as_view
()
class
TimeCell
:
emissions
=
None
nonstop
=
None
w
=
1
h
=
1
def
__init__
(
self
,
i
,
j
):
self
.
x
=
i
self
.
y
=
j
self
.
emissions
=
[]
def
add_emission
(
self
,
emission
):
self
.
emissions
.
append
(
emission
)
def
__unicode__
(
self
):
if
self
.
emissions
:
return
', '
.
join
([
x
.
title
for
x
in
self
.
emissions
])
else
:
return
self
.
nonstop
def
__eq__
(
self
,
other
):
return
(
unicode
(
self
)
==
unicode
(
other
))
class
Grid
(
TemplateView
):
template_name
=
'grid.html'
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
Grid
,
self
).
get_context_data
(
**
kwargs
)
schedules
=
Schedule
.
objects
.
all
().
order_by
(
'datetime'
)
nb_lines
=
2
*
24
# the cells are half hours
grid
=
[]
times
=
[
'%02d:%02d'
%
(
x
/
2
,
x
%
2
*
30
)
for
x
in
range
(
nb_lines
)]
# grid starts at 5am
times
=
times
[
2
*
5
:]
+
times
[:
2
*
5
]
nonstops
=
[[
0
,
2
,
'Biodiversite'
],
[
2
,
5
,
'Reveries'
],
[
5
,
7.5
,
'La Panique'
],
[
7.5
,
10
,
'Matin tranquille'
],
[
10
,
12
,
'Up Beat Tempo'
],
[
12
,
13
,
'L
\'
heure de pointe'
],
[
13
,
16
,
'Le Mange Disque'
],
[
16
,
19
,
'Hop Bop and co'
],
[
19
,
22
,
'Acouphene'
],
[
22
,
24
,
'Biodiversite'
]
]
for
i
in
range
(
nb_lines
):
grid
.
append
([])
for
j
in
range
(
7
):
grid
[
-
1
].
append
(
TimeCell
(
i
,
j
))
nonstop
=
[
x
for
x
in
nonstops
if
i
>=
x
[
0
]
*
2
and
i
<
x
[
1
]
*
2
][
0
]
for
time_cell
in
grid
[
-
1
]:
time_cell
.
nonstop
=
nonstop
[
2
]
for
schedule
in
Schedule
.
objects
.
all
():
row_start
=
schedule
.
datetime
.
hour
*
2
+
\
int
(
math
.
ceil
(
schedule
.
datetime
.
minute
/
30
))
day_no
=
schedule
.
get_weekday
()
for
step
in
range
(
int
(
math
.
ceil
(
schedule
.
emission
.
duration
/
30
))):
if
grid
[
row_start
+
step
][
day_no
]
is
None
:
print
'creating a time cell at'
,
row_start
+
step
,
day_no
grid
[
row_start
+
step
][
day_no
]
=
TimeCell
()
grid
[
row_start
+
step
][
day_no
].
add_emission
(
schedule
.
emission
)
# start grid at 5am
grid
=
grid
[
2
*
5
:]
+
grid
[:
2
*
5
]
# merge adjacent cells
for
i
in
range
(
nb_lines
):
for
j
,
cell
in
enumerate
(
grid
[
i
]):
if
grid
[
i
][
j
]
is
None
:
continue
t
=
1
try
:
while
grid
[
i
][
j
+
t
]
==
cell
:
cell
.
w
+=
1
grid
[
i
][
j
+
t
]
=
None
t
+=
1
except
IndexError
:
pass
grid
[
i
]
=
[
x
for
x
in
grid
[
i
]
if
x
is
not
None
]
for
i
in
range
(
nb_lines
):
grid
[
i
]
=
[
x
for
x
in
grid
[
i
]
if
x
is
not
None
]
for
j
,
cell
in
enumerate
(
grid
[
i
]):
if
grid
[
i
][
j
]
is
None
:
continue
t
=
1
try
:
while
True
:
same_cell_below
=
[(
bj
,
x
)
for
bj
,
x
in
enumerate
(
grid
[
i
+
cell
.
h
])
if
x
==
cell
and
x
.
y
==
cell
.
y
and
x
.
w
==
cell
.
w
]
if
not
same_cell_below
:
break
bj
,
same_cell_below
=
same_cell_below
[
0
]
del
grid
[
i
+
cell
.
h
][
bj
]
cell
.
h
+=
1
except
IndexError
:
pass
context
[
'grid'
]
=
grid
context
[
'times'
]
=
times
return
context
grid
=
Grid
.
as_view
()
class
Home
(
TemplateView
):
template_name
=
'home.html'
...
...
panikweb_templates/templates/grid.html
0 → 100644
View file @
02075d37
{% extends "base.html" %}
{% load paniktags %}
{% block content %}
<h2>
Grille
</h2>
<table
border=
1
>
{% for time_header, time_cells in times|zip:grid %}
<tr>
<td>
{{ time_header }}
</td>
{% for cell in time_cells %}
<td
{%
if
cell.w
>
1 %}colspan="{{cell.w}}"{% endif %}
{% if cell.h > 1 %}rowspan="{{cell.h}}"{% endif %}>{{ cell }}
</td>
{% endfor %}
<td>
{{ time_header }}
</td>
</tr>
{% endfor %}
</table>
{% endblock %}
{% block news %}
{% endblock %}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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