programs/urls.py: update views

This commit is contained in:
bkfox 2016-09-10 20:12:00 +02:00
parent edd4c7ec87
commit 2e4c97b846
7 changed files with 478 additions and 314 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-11 17:07+0200\n"
"POT-Creation-Date: 2016-09-10 17:54+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -42,557 +42,557 @@ msgstr ""
msgid "No publication found for this comment"
msgstr ""
#: cms/models.py:45
#: cms/models.py:44
msgid "favicon"
msgstr ""
#: cms/models.py:47
#: cms/models.py:46
msgid "small logo for the website displayed in the browser"
msgstr ""
#: cms/models.py:50 cms/models.py:250
#: cms/models.py:49 cms/models.py:249
msgid "tags"
msgstr ""
#: cms/models.py:53
#: cms/models.py:52
msgid "tags describing the website; used for referencing"
msgstr ""
#: cms/models.py:56
#: cms/models.py:55
msgid "public description"
msgstr ""
#: cms/models.py:59
#: cms/models.py:58
msgid "public description of the website; used for referencing"
msgstr ""
#: cms/models.py:63
#: cms/models.py:62
msgid "page for lists"
msgstr ""
#: cms/models.py:64
#: cms/models.py:63
msgid "page used to display the results of a search and other lists"
msgstr ""
#: cms/models.py:71 cms/models.py:75
#: cms/models.py:70 cms/models.py:74
msgid "publish comments automatically without verifying"
msgstr ""
#: cms/models.py:78
#: cms/models.py:77
msgid "success message"
msgstr ""
#: cms/models.py:79
#: cms/models.py:78
msgid "Your comment has been successfully posted!"
msgstr ""
#: cms/models.py:80
#: cms/models.py:79
msgid "message to display when a post has been posted"
msgstr ""
#: cms/models.py:83
#: cms/models.py:82
msgid "waiting message"
msgstr ""
#: cms/models.py:84
#: cms/models.py:83
msgid "Your comment is awaiting for approval."
msgstr ""
#: cms/models.py:85
#: cms/models.py:84
msgid "message to display when a post waits to be reviewed"
msgstr ""
#: cms/models.py:88
#: cms/models.py:87
msgid "error message"
msgstr ""
#: cms/models.py:89
#: cms/models.py:88
msgid "We could not save your message. Please correct the error(s) below."
msgstr ""
#: cms/models.py:90
#: cms/models.py:89
msgid "message to display there is an error an incomplete form."
msgstr ""
#: cms/models.py:94
#: cms/models.py:93
msgid "automatic publications"
msgstr ""
#: cms/models.py:97
#: cms/models.py:96
msgid ""
"Create automatically new publications for new programs and diffusions in the "
"timetable. If set, please complete other options of this panel"
msgstr ""
#: cms/models.py:104
#: cms/models.py:103
msgid "default program parent page"
msgstr ""
#: cms/models.py:107
#: cms/models.py:106
msgid ""
"Default parent page for program's pages. It is used to assign a page to the "
"publication of a newly created program and can be changed later"
msgstr ""
#: cms/models.py:123
#: cms/models.py:122
msgid "promotion"
msgstr ""
#: cms/models.py:130 cms/templates/cms/snippets/comments.html:6
#: cms/models.py:129 cms/templates/cms/snippets/comments.html:6
msgid "Comments"
msgstr ""
#: cms/models.py:134
#: cms/models.py:133
msgid "Programs and controls"
msgstr ""
#: cms/models.py:138
#: cms/models.py:137
msgid "website settings"
msgstr ""
#: cms/models.py:150
#: cms/models.py:149
msgid "public"
msgstr ""
#: cms/models.py:154
#: cms/models.py:153
msgid "author"
msgstr ""
#: cms/models.py:158 cms/models.py:366
#: cms/models.py:157 cms/models.py:365
msgid "email"
msgstr ""
#: cms/models.py:162
#: cms/models.py:161
msgid "website"
msgstr ""
#: cms/models.py:166 cms/models.py:213
#: cms/models.py:165 cms/models.py:212
msgid "date"
msgstr ""
#: cms/models.py:170
#: cms/models.py:169
msgid "comment"
msgstr ""
#. Translators: text shown in the comments list (in admin)
#: cms/models.py:176
#: cms/models.py:175
#, python-brace-format
msgid "{date}, {author}: {content}..."
msgstr ""
#: cms/models.py:219
#: cms/models.py:218
msgid "publish as program"
msgstr ""
#: cms/models.py:222
#: cms/models.py:221
msgid "use this program as the author of the publication"
msgstr ""
#: cms/models.py:225
#: cms/models.py:224
msgid "focus"
msgstr ""
#: cms/models.py:227
#: cms/models.py:226
msgid "the publication is highlighted;"
msgstr ""
#: cms/models.py:230 cms/models.py:232
#: cms/models.py:229 cms/models.py:231
msgid "allow comments"
msgstr ""
#: cms/models.py:238
#: cms/models.py:237
msgid "cover"
msgstr ""
#: cms/models.py:242
#: cms/models.py:241
msgid "image to use as cover of the publication"
msgstr ""
#: cms/models.py:245
#: cms/models.py:244
msgid "summary"
msgstr ""
#: cms/models.py:247
#: cms/models.py:246
msgid "summary of the publication"
msgstr ""
#: cms/models.py:256 cms/models.py:257
#: cms/models.py:255 cms/models.py:256
msgid "Publication"
msgstr ""
#: cms/models.py:264 cms/models.py:271 cms/models.py:592 cms/models.py:621
#: cms/models.py:263 cms/models.py:270 cms/models.py:590 cms/models.py:619
msgid "Content"
msgstr ""
#: cms/models.py:272
#: cms/models.py:271
msgid "Links"
msgstr ""
#: cms/models.py:359
#: cms/models.py:358
msgid "program"
msgstr ""
#: cms/models.py:369
#: cms/models.py:368
msgid "email is public"
msgstr ""
#: cms/models.py:371
#: cms/models.py:370
msgid "the email addess is accessible to the public"
msgstr ""
#: cms/models.py:375
#: cms/models.py:374
msgid "Program"
msgstr ""
#: cms/models.py:376 cms/wagtail_hooks.py:20 cms/wagtail_hooks.py:177
#: cms/models.py:375 cms/wagtail_hooks.py:20 cms/wagtail_hooks.py:177
msgid "Programs"
msgstr ""
#: cms/models.py:446
#: cms/models.py:444
msgid "diffusion"
msgstr ""
#: cms/models.py:455
#: cms/models.py:453
msgid "publish archive"
msgstr ""
#: cms/models.py:457
#: cms/models.py:455
msgid "publish the podcast of the complete diffusion"
msgstr ""
#: cms/models.py:461
#: cms/models.py:459
msgid "Diffusion"
msgstr ""
#: cms/models.py:462 cms/wagtail_hooks.py:28
#: cms/models.py:460 cms/wagtail_hooks.py:28
msgid "Diffusions"
msgstr ""
#: cms/models.py:465
#: cms/models.py:463
msgid "Tracks"
msgstr ""
#: cms/models.py:505
#: cms/models.py:503
#, python-format
msgid "Rerun of %(date)s"
msgstr ""
#: cms/models.py:509
#: cms/models.py:507
msgid "Cancelled"
msgstr ""
#: cms/models.py:572 cms/models.py:609
#: cms/models.py:570 cms/models.py:607
msgid "body"
msgstr ""
#: cms/models.py:574 cms/models.py:611
#: cms/models.py:572 cms/models.py:609
msgid "add an extra description for this list"
msgstr ""
#: cms/models.py:577
#: cms/models.py:575
msgid "list from the request"
msgstr ""
#: cms/models.py:580
#: cms/models.py:578
msgid ""
"if set, the page print a list based on the request made by the website "
"visitor, and its title will be adapted to this request. Can be usefull for "
"search pages, etc. and should only be set on one page."
msgstr ""
#: cms/models.py:596 cms/models.py:597
#: cms/models.py:594 cms/models.py:595
msgid "Generic Page"
msgstr ""
#: cms/models.py:654 cms/sections.py:860
#: cms/models.py:652 cms/sections.py:859
msgid "station"
msgstr ""
#: cms/models.py:657 cms/sections.py:863
#: cms/models.py:655 cms/sections.py:862
msgid "(required) the station on which the logs happened"
msgstr ""
#: cms/models.py:660
#: cms/models.py:658
msgid "maximum age"
msgstr ""
#: cms/models.py:662
#: cms/models.py:660
msgid "maximum days in the past allowed to be shown. 0 means no limit"
msgstr ""
#: cms/models.py:667 cms/models.py:668
#: cms/models.py:665 cms/models.py:666
msgid "Logs"
msgstr ""
#: cms/models.py:674
#: cms/models.py:672
msgid "Configuration"
msgstr ""
#: cms/models.py:709 cms/models.py:710
#: cms/models.py:707 cms/models.py:708
msgid "Timetable"
msgstr ""
#: cms/sections.py:85
#: cms/sections.py:84
msgid "url"
msgstr ""
#: cms/sections.py:87
#: cms/sections.py:86
msgid "URL of the link"
msgstr ""
#: cms/sections.py:95
#: cms/sections.py:94
msgid "Use a page instead of a URL"
msgstr ""
#: cms/sections.py:99
#: cms/sections.py:98
msgid "icon"
msgstr ""
#: cms/sections.py:103
#: cms/sections.py:102
msgid "icon to display before the url"
msgstr ""
#: cms/sections.py:111
#: cms/sections.py:110
msgid "text"
msgstr ""
#: cms/sections.py:114
#: cms/sections.py:113
msgid "text to display of the link"
msgstr ""
#: cms/sections.py:126
#: cms/sections.py:125
msgid "link"
msgstr ""
#: cms/sections.py:157
#: cms/sections.py:156
msgid "filter by date"
msgstr ""
#: cms/sections.py:164
#: cms/sections.py:163
msgid "filter by type"
msgstr ""
#: cms/sections.py:167
#: cms/sections.py:166
msgid "if set, select only elements that are of this type"
msgstr ""
#: cms/sections.py:172
#: cms/sections.py:171
msgid "filter by a related page"
msgstr ""
#: cms/sections.py:175
#: cms/sections.py:174
msgid "if set, select children or siblings related to this page"
msgstr ""
#: cms/sections.py:178
#: cms/sections.py:177
msgid "select siblings of related"
msgstr ""
#: cms/sections.py:180
#: cms/sections.py:179
msgid "if selected select related publications that are siblings of this one"
msgstr ""
#: cms/sections.py:184
#: cms/sections.py:183
msgid "ascending order"
msgstr ""
#: cms/sections.py:186
#: cms/sections.py:185
msgid "if selected sort list in the ascending order by date"
msgstr ""
#: cms/sections.py:197
#: cms/sections.py:196
msgid "filters"
msgstr ""
#: cms/sections.py:201
#: cms/sections.py:200
msgid "sorting"
msgstr ""
#: cms/sections.py:361
#: cms/sections.py:360
msgid "navigation days count"
msgstr ""
#: cms/sections.py:363
#: cms/sections.py:362
msgid "number of days to display in the navigation header when we use dates"
msgstr ""
#: cms/sections.py:367
#: cms/sections.py:366
msgid "navigation per week"
msgstr ""
#: cms/sections.py:369
#: cms/sections.py:368
msgid ""
"if selected, show dates navigation per weeks instead of show days equally "
"around the current date"
msgstr ""
#: cms/sections.py:380
#: cms/sections.py:379
msgid "Navigation"
msgstr ""
#: cms/sections.py:451
#: cms/sections.py:450
msgid "name"
msgstr ""
#: cms/sections.py:454
#: cms/sections.py:453
msgid "name of this section (not displayed)"
msgstr ""
#: cms/sections.py:457
#: cms/sections.py:456
msgid "position"
msgstr ""
#: cms/sections.py:460
#: cms/sections.py:459
msgid "name of the template block in which the section must be set"
msgstr ""
#: cms/sections.py:465
#: cms/sections.py:464
msgid "model"
msgstr ""
#: cms/sections.py:467
#: cms/sections.py:466
msgid ""
"this section is displayed only when the current page or publication is of "
"this type"
msgstr ""
#: cms/sections.py:473
#: cms/sections.py:472
msgid "page"
msgstr ""
#: cms/sections.py:475
#: cms/sections.py:474
msgid "this section is displayed only on this page"
msgstr ""
#: cms/sections.py:483 cms/sections.py:582
#: cms/sections.py:482 cms/sections.py:581
msgid "General"
msgstr ""
#: cms/sections.py:484
#: cms/sections.py:483
msgid "Section Items"
msgstr ""
#: cms/sections.py:518
#: cms/sections.py:517
msgid "item"
msgstr ""
#: cms/sections.py:562
#: cms/sections.py:561
msgid "title"
msgstr ""
#: cms/sections.py:567
#: cms/sections.py:566
msgid "show title"
msgstr ""
#: cms/sections.py:569
#: cms/sections.py:568
msgid "if set show a title at the head of the section"
msgstr ""
#: cms/sections.py:572
#: cms/sections.py:571
msgid "CSS class"
msgstr ""
#: cms/sections.py:575
#: cms/sections.py:574
msgid "section container's \"class\" attribute"
msgstr ""
#: cms/sections.py:644
#: cms/sections.py:643
msgid "is related"
msgstr ""
#: cms/sections.py:647
#: cms/sections.py:646
msgid ""
"if set, section is related to the page being processed e.g rendering a list "
"of links will use thoses of the publication instead of an assigned one."
msgstr ""
#: cms/sections.py:692
#: cms/sections.py:691
msgid "image"
msgstr ""
#: cms/sections.py:696
#: cms/sections.py:695
msgid ""
"If this item is related to the current page, this image will be used only "
"when the page has not a cover"
msgstr ""
#: cms/sections.py:701
#: cms/sections.py:700
msgid "width"
msgstr ""
#: cms/sections.py:703
#: cms/sections.py:702
msgid "if set and > 0, set a maximum width for the image"
msgstr ""
#: cms/sections.py:706
#: cms/sections.py:705
msgid "height"
msgstr ""
#: cms/sections.py:708
#: cms/sections.py:707
msgid "if set 0 and > 0, set a maximum height for the image"
msgstr ""
#: cms/sections.py:711
#: cms/sections.py:710
msgid "resize mode"
msgstr ""
#: cms/sections.py:714
#: cms/sections.py:713
msgid "if the image is resized, set the resizing mode"
msgstr ""
#: cms/sections.py:723
#: cms/sections.py:722
msgid "Resizing"
msgstr ""
#: cms/sections.py:777
#: cms/sections.py:776
msgid "links"
msgstr ""
#: cms/sections.py:778
#: cms/sections.py:777
msgid ""
"If the list is related to the current page, theses links will be used when "
"there is no links found for this publication"
msgstr ""
#: cms/sections.py:800
#: cms/sections.py:799
msgid "focus available"
msgstr ""
#: cms/sections.py:802
#: cms/sections.py:801
msgid "if true, highlight the first focused article found"
msgstr ""
#: cms/sections.py:805 cms/sections.py:866
#: cms/sections.py:804 cms/sections.py:865
msgid "count"
msgstr ""
#: cms/sections.py:807
#: cms/sections.py:806
msgid "number of items to display in the list"
msgstr ""
#: cms/sections.py:810
#: cms/sections.py:809
msgid "text of the url"
msgstr ""
#: cms/sections.py:813
#: cms/sections.py:812
msgid ""
"use this text to display an URL to the complete list. If empty, does not "
"print an address"
msgstr ""
#: cms/sections.py:822
#: cms/sections.py:821
msgid "Rendering"
msgstr ""
#: cms/sections.py:868
#: cms/sections.py:867
msgid "number of items to display in the list (max 100)"
msgstr ""
#: cms/sections.py:872
#: cms/sections.py:871
msgid "list of logs"
msgstr ""
#: cms/sections.py:873
#: cms/sections.py:872
msgid "lists of logs"
msgstr ""

View File

@ -7,7 +7,7 @@
</div>
<script>
var player = new Player('player', '{% url 'controllers.on_air' %}');
var player = new Player('player', '{% url 'aircox.on_air' %}');
var sound = player.playlist.add(
new Sound(
'{{ self.live_title }}',

View File

@ -190,6 +190,8 @@ class Source:
"""
Related source
"""
name = 'dealer'
path = ''
"""
Path to the Source's playlist file. Optional.
@ -226,6 +228,8 @@ class Source:
self.connector = self.station.streamer.connector
self.__dict__.update(kwargs)
self.__init_playlist()
if self.program:
self.name = self.program.name
#
# Playlist

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-11 17:07+0200\n"
"POT-Creation-Date: 2016-09-10 17:54+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,244 +18,300 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: programs/admin.py:89 programs/models.py:461
#: programs/admin.py:82 programs/models.py:648
msgid "Schedule"
msgstr ""
#: programs/admin.py:119 programs/models.py:632
#: programs/admin.py:112 programs/models.py:451
msgid "end"
msgstr ""
#: programs/admin.py:160
#: programs/admin.py:153
msgid "Program"
msgstr ""
#: programs/admin.py:164
#: programs/admin.py:157
msgid "Day"
msgstr ""
#: programs/admin.py:168
#: programs/admin.py:161
msgid "Rerun"
msgstr ""
#: programs/models.py:95
#: programs/models.py:98
msgid "name"
msgstr ""
#: programs/models.py:128
msgid "diffusion"
#: programs/models.py:131
msgid "path"
msgstr ""
#: programs/models.py:130
msgid "this is set for scheduled programs"
#: programs/models.py:132
msgid "path to the working directory"
msgstr ""
#: programs/models.py:133 programs/models.py:671
msgid "type"
#: programs/models.py:295 programs/models.py:995 programs/models.py:1050
msgid "station"
msgstr ""
#: programs/models.py:138
msgid "file"
msgstr ""
#: programs/models.py:147
msgid "embed HTML code"
msgstr ""
#: programs/models.py:149
msgid "HTML code used to embed a sound from external plateform"
msgstr ""
#: programs/models.py:152 programs/models.py:298
msgid "duration"
msgstr ""
#: programs/models.py:154
msgid "duration of the sound"
msgstr ""
#: programs/models.py:157
msgid "modification time"
msgstr ""
#: programs/models.py:159
msgid "last modification date and time"
msgstr ""
#: programs/models.py:162
msgid "good quality"
msgstr ""
#: programs/models.py:164
msgid "sound's quality is okay"
msgstr ""
#: programs/models.py:167
msgid "public"
msgstr ""
#: programs/models.py:169
msgid "the sound is accessible to the public"
msgstr ""
#: programs/models.py:267
msgid "Sound"
msgstr ""
#: programs/models.py:268
msgid "Sounds"
msgstr ""
#: programs/models.py:294 programs/models.py:618
msgid "related program"
msgstr ""
#: programs/models.py:296
msgid "date"
msgstr ""
#: programs/models.py:299
msgid "regular duration"
msgstr ""
#: programs/models.py:302
msgid "frequency"
msgstr ""
#: programs/models.py:305
msgid "first week of the month"
msgstr ""
#: programs/models.py:306
msgid "second week of the month"
msgstr ""
#: programs/models.py:307
msgid "third week of the month"
msgstr ""
#: programs/models.py:308
msgid "fourth week of the month"
msgstr ""
#: programs/models.py:309
msgid "last week of the month"
msgstr ""
#: programs/models.py:310
msgid "first and third weeks of the month"
msgstr ""
#: programs/models.py:311
msgid "second and fourth weeks of the month"
msgstr ""
#: programs/models.py:312
msgid "every week"
msgstr ""
#: programs/models.py:313
msgid "one week on two"
msgstr ""
#: programs/models.py:319 programs/models.py:676
msgid "initial"
msgstr ""
#: programs/models.py:462
msgid "Schedules"
msgstr ""
#: programs/models.py:479
#: programs/models.py:298 programs/models.py:1003
msgid "active"
msgstr ""
#: programs/models.py:481
#: programs/models.py:300
msgid "if not set this program is no longer active"
msgstr ""
#: programs/models.py:621
#: programs/models.py:437 programs/models.py:481
msgid "related program"
msgstr ""
#: programs/models.py:440
msgid "delay"
msgstr ""
#: programs/models.py:623
#: programs/models.py:442
msgid "delay between two sound plays"
msgstr ""
#: programs/models.py:626
#: programs/models.py:445
msgid "begin"
msgstr ""
#: programs/models.py:628 programs/models.py:634
#: programs/models.py:447 programs/models.py:453
msgid "used to define a time range this stream isplayed"
msgstr ""
#: programs/models.py:667
#: programs/models.py:483 programs/models.py:1062
msgid "date"
msgstr ""
#: programs/models.py:485 programs/models.py:812
msgid "duration"
msgstr ""
#: programs/models.py:486
msgid "regular duration"
msgstr ""
#: programs/models.py:489
msgid "frequency"
msgstr ""
#: programs/models.py:492
msgid "first week of the month"
msgstr ""
#: programs/models.py:493
msgid "second week of the month"
msgstr ""
#: programs/models.py:494
msgid "third week of the month"
msgstr ""
#: programs/models.py:495
msgid "fourth week of the month"
msgstr ""
#: programs/models.py:496
msgid "last week of the month"
msgstr ""
#: programs/models.py:497
msgid "first and third weeks of the month"
msgstr ""
#: programs/models.py:498
msgid "second and fourth weeks of the month"
msgstr ""
#: programs/models.py:499
msgid "every week"
msgstr ""
#: programs/models.py:500
msgid "one week on two"
msgstr ""
#: programs/models.py:506 programs/models.py:689
msgid "initial"
msgstr ""
#: programs/models.py:649
msgid "Schedules"
msgstr ""
#: programs/models.py:680 programs/models.py:782
msgid "program"
msgstr ""
#: programs/models.py:678
#: programs/models.py:684 programs/models.py:793 programs/models.py:998
#: programs/models.py:1044
msgid "type"
msgstr ""
#: programs/models.py:691
msgid "the diffusion is a rerun of this one"
msgstr ""
#: programs/models.py:680
#: programs/models.py:693
msgid "start of the diffusion"
msgstr ""
#: programs/models.py:681
#: programs/models.py:694
msgid "end of the diffusion"
msgstr ""
#: programs/models.py:748
#: programs/models.py:761
msgid "Diffusion"
msgstr ""
#: programs/models.py:749
#: programs/models.py:762
msgid "Diffusions"
msgstr ""
#: programs/models.py:752
#: programs/models.py:765
msgid "edit the diffusion's planification"
msgstr ""
#: programs/models.py:765
#: programs/models.py:784
msgid "program related to it"
msgstr ""
#: programs/models.py:788
msgid "diffusion"
msgstr ""
#: programs/models.py:790
msgid "initial diffusion related it"
msgstr ""
#: programs/models.py:798
msgid "file"
msgstr ""
#: programs/models.py:807
msgid "embed HTML code"
msgstr ""
#: programs/models.py:809
msgid "HTML code used to embed a sound from external plateform"
msgstr ""
#: programs/models.py:814
msgid "duration of the sound"
msgstr ""
#: programs/models.py:817
msgid "modification time"
msgstr ""
#: programs/models.py:819
msgid "last modification date and time"
msgstr ""
#: programs/models.py:822
msgid "good quality"
msgstr ""
#: programs/models.py:824
msgid "sound's quality is okay"
msgstr ""
#: programs/models.py:827
msgid "public"
msgstr ""
#: programs/models.py:829
msgid "the sound is accessible to the public"
msgstr ""
#: programs/models.py:927
msgid "Sound"
msgstr ""
#: programs/models.py:928
msgid "Sounds"
msgstr ""
#: programs/models.py:940
msgid "title"
msgstr ""
#: programs/models.py:769
#: programs/models.py:944
msgid "artist"
msgstr ""
#: programs/models.py:773
#: programs/models.py:948
msgid "tags"
msgstr ""
#: programs/models.py:777
#: programs/models.py:952
msgid "information"
msgstr ""
#: programs/models.py:780
#: programs/models.py:955
msgid ""
"additional informations about this track, such as the version, if is it a "
"remix, features, etc."
msgstr ""
#: programs/models.py:785
#: programs/models.py:960
msgid "position in the playlist"
msgstr ""
#: programs/models.py:788
#: programs/models.py:963
msgid "in seconds"
msgstr ""
#: programs/models.py:790
#: programs/models.py:965
msgid "position in the playlist is expressed in seconds"
msgstr ""
#: programs/models.py:797
#: programs/models.py:972
msgid "Track"
msgstr ""
#: programs/models.py:798
#: programs/models.py:973
msgid "Tracks"
msgstr ""
#: programs/models.py:1005
msgid "this output is active"
msgstr ""
#: programs/models.py:1008
msgid "output settings"
msgstr ""
#: programs/models.py:1009
msgid ""
"list of comma separated params available; this is put in the output config "
"as raw code; plugin related"
msgstr ""
#: programs/models.py:1051
msgid "station on which the event occured"
msgstr ""
#: programs/models.py:1056
msgid "source"
msgstr ""
#: programs/models.py:1058
msgid "source id that make it happen on the station"
msgstr ""
#: programs/models.py:1066
msgid "comment"
msgstr ""
#: programs/templates/aircox/controllers/monitor.html:107
#: programs/templates/aircox/controllers/monitor.html:117
msgid "skip"
msgstr ""
#: programs/templates/aircox/controllers/monitor.html:108
msgid "update"
msgstr ""

View File

@ -141,30 +141,27 @@ class Station(Nameable):
__dealer = None
__streamer = None
def __prepare(self):
import aircox.programs.controllers as controllers
if not self.__streamer:
self.__streamer = controllers.Streamer(station = self)
self.__dealer = controllers.Source(station = self)
self.__sources = [
controllers.Source(station = self, program = program)
for program in Program.objects.filter(stream__isnull = False)
] + [ self.__dealer ]
@property
def sources(self):
"""
Audio sources, dealer included
"""
# force streamer creation
streamer = self.streamer
if not self.__sources:
import aircox.programs.controllers as controllers
self.__sources = [
controllers.Source(station = self, program = program)
for program in Program.objects.filter(stream__isnull = False)
] + [ self.dealer ]
self.__prepare()
return self.__sources
@property
def dealer(self):
# force streamer creation
streamer = self.streamer
if not self.__dealer:
import aircox.programs.controllers as controllers
self.__dealer = controllers.Source(station = self)
self.__prepare()
return self.__dealer
@property
@ -172,9 +169,7 @@ class Station(Nameable):
"""
Audio controller for the station
"""
if not self.__streamer:
import aircox.programs.controllers as controllers
self.__streamer = controllers.Streamer(station = self)
self.__prepare()
return self.__streamer
def get_played(self, models, archives = True):
@ -262,7 +257,7 @@ class Station(Nameable):
else:
diffs = Diffusion.objects
diffs = diffs.filter(station = self) \
diffs = diffs.filter(program__station = self) \
.filter(type = Diffusion.Type.normal) \
.filter(start__lte = tz.now())
return self.__mix_logs_and_diff(diffs, logs, count)

View File

@ -60,7 +60,7 @@ var Monitor = {
params += '&&source=' + source;
var req = new XMLHttpRequest()
req.open('POST', '{% url 'controllers.monitor' %}', false);
req.open('POST', '{% url 'aircox.monitor' %}', false);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
@ -75,7 +75,7 @@ var Monitor = {
update: function(timeout) {
var req = new XMLHttpRequest()
req.open('GET', '{% url 'controllers.monitor' %}', true);
req.open('GET', '{% url 'aircox.monitor' %}', true);
req.onreadystatechange = function() {
if(req.readyState != 4 || (req.status != 200 && req.status != 0))
return;

View File

@ -1,15 +1,124 @@
from django.db import models
from django.shortcuts import render
from django.core.serializers.json import DjangoJSONEncoder
from django.utils import timezone, dateformat
import json
from django.views.generic import ListView
from django.views.generic import DetailView
from django.utils.translation import ugettext as _, ugettext_lazy
from django.views.generic.base import View, TemplateResponseMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpResponse, Http404
from django.shortcuts import render
from django.utils.translation import ugettext as _, ugettext_lazy
from django.utils import timezone as tz
from aircox.programs.models import *
import aircox.programs.settings
import aircox.programs.utils
import aircox.programs.models as models
class Stations:
stations = models.Station.objects.all()
update_timeout = None
fetch_timeout = None
def fetch(self):
if self.fetch_timeout and self.fetch_timeout > tz.now():
return
self.fetch_timeout = tz.now() + tz.timedelta(seconds = 5)
for station in self.stations:
station.streamer.fetch()
stations = Stations()
def on_air(request):
try:
import aircox.cms.models as cms
except:
cms = None
station = request.GET.get('station');
if station:
station = stations.stations.filter(name = station)
else:
station = stations.stations.first()
last = station.on_air(count = 1)
if not last:
return HttpResponse('')
last = last[0]
if type(last) == models.Log:
last = {
'type': 'track',
'artist': last.related.artist,
'title': last.related.title,
'date': last.date,
}
else:
try:
publication = None
if cms:
publication = \
cms.DiffusionPage.objects.filter(
diffusion = last.initial or last).first() or \
cms.ProgramPage.objects.filter(
program = last.program).first()
except:
pass
last = {
'type': 'diffusion',
'title': last.program.name,
'date': last.start,
'url': publication.specific.url if publication else None,
}
last['date'] = str(last['date'])
return HttpResponse(json.dumps(last))
# TODO:
# - login url
class Monitor(View,TemplateResponseMixin,LoginRequiredMixin):
template_name = 'aircox/controllers/monitor.html'
def get_context_data(self, **kwargs):
stations.fetch()
return { 'stations': stations.stations }
def get (self, request = None, **kwargs):
if not request.user.is_active:
return Http404()
self.request = request
context = self.get_context_data(**kwargs)
return render(request, self.template_name, context)
def post (self, request = None, **kwargs):
if not request.user.is_active:
return Http404()
if not ('action' or 'station') in request.POST:
return HttpResponse('')
POST = request.POST
controller = POST.get('controller')
action = POST.get('action')
station = stations.stations.filter(name = POST.get('station')) \
.first()
if not station:
return HttpResponse('')
station.prepare(fetch=True)
source = None
if 'source' in POST:
source = next([ s for s in station.sources
if s.name == POST['source']], None)
if station and action == 'skip':
if source:
source.skip()
else:
station.streamer.skip()
return HttpResponse('')