Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
django-panik-emissions
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
radiopanik
django-panik-emissions
Commits
9920f560
Commit
9920f560
authored
Oct 15, 2020
by
fred
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
allow episode owner to add diffusions
parent
353c8c88
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
2 deletions
+34
-2
emissions/forms.py
emissions/forms.py
+29
-0
emissions/views.py
emissions/views.py
+5
-2
No files found.
emissions/forms.py
View file @
9920f560
...
...
@@ -263,6 +263,23 @@ class SoundFileEditForm(forms.ModelForm):
self
.
fields
.
keyOrder
=
[
'title'
,
'format'
,
'podcastable'
,
'fragment'
,
'license'
]
class
DiffusionDateTimeWidget
(
forms
.
Select
):
def
__init__
(
self
,
emission
,
*
args
,
**
kwargs
):
super
().
__init__
(
*
args
,
**
kwargs
)
self
.
choices
=
list
(
self
.
options
(
emission
))
def
options
(
self
,
emission
):
dates
=
[]
for
i
in
range
(
10
):
if
dates
:
since
=
dates
[
-
1
]
+
datetime
.
timedelta
(
minutes
=
10
)
else
:
since
=
datetime
.
datetime
.
now
()
-
datetime
.
timedelta
(
days
=
1
)
dates
.
append
(
emission
.
get_next_planned_date
(
since
))
for
date
in
dates
:
yield
(
date
,
date
.
strftime
(
'%d/%m/%Y %H:%M'
))
class
DiffusionForm
(
forms
.
ModelForm
):
class
Meta
:
model
=
Diffusion
...
...
@@ -272,6 +289,18 @@ class DiffusionForm(forms.ModelForm):
'datetime'
:
DateTimeWidget
(),
}
def
__init__
(
self
,
*
args
,
**
kwargs
):
user
=
kwargs
.
pop
(
'user'
,
None
)
super
().
__init__
(
*
args
,
**
kwargs
)
episode
=
kwargs
.
get
(
'initial'
,
{}).
get
(
'episode'
)
emission
=
episode
.
emission
if
(
user
and
user
.
has_perm
(
'emissions.add_diffusion'
))
or
not
emission
.
schedule_set
.
exists
():
date
=
emission
.
get_next_planned_date
()
self
.
fields
[
'datetime'
].
initial
=
date
self
.
fields
[
'datetime'
].
widget
=
DateTimeWidget
()
else
:
self
.
fields
[
'datetime'
].
widget
=
DiffusionDateTimeWidget
(
emission
)
class
NewsItemForm
(
forms
.
ModelForm
):
class
Meta
:
...
...
emissions/views.py
View file @
9920f560
...
...
@@ -396,14 +396,17 @@ class EpisodeAddDiffusionView(CreateView):
}
def
get_form
(
self
,
*
args
,
**
kwargs
):
if
not
self
.
request
.
user
.
has_perm
(
'emissions.add_diffusion'
):
raise
PermissionDenied
()
episode
=
Episode
.
objects
.
get
(
slug
=
self
.
kwargs
.
get
(
'slug'
),
emission__slug
=
self
.
kwargs
.
get
(
'emission_slug'
))
if
not
self
.
request
.
user
.
can_manage
(
episode
):
raise
PermissionDenied
()
return
super
(
EpisodeAddDiffusionView
,
self
).
get_form
(
*
args
,
**
kwargs
)
def
get_form_kwargs
(
self
):
kwargs
=
super
().
get_form_kwargs
()
kwargs
[
'user'
]
=
self
.
request
.
user
return
kwargs
def
get_success_url
(
self
):
messages
.
success
(
self
.
request
,
SUCCESS_MESSAGE
)
return
self
.
object
.
episode
.
get_absolute_url
()
...
...
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