forked from rc/aircox
file moves...
This commit is contained in:
parent
c3d584c787
commit
0511ec5bc3
10
manage.py
10
manage.py
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "instance.settings")
|
|
||||||
|
|
||||||
from django.core.management import execute_from_command_line
|
|
||||||
|
|
||||||
execute_from_command_line(sys.argv)
|
|
|
@ -1,46 +0,0 @@
|
||||||
import copy
|
|
||||||
|
|
||||||
from django.contrib import admin
|
|
||||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
|
||||||
from django.contrib.contenttypes.admin import GenericStackedInline
|
|
||||||
|
|
||||||
import aircox.programs.models as programs
|
|
||||||
from website.models import *
|
|
||||||
|
|
||||||
|
|
||||||
def add_inline (base_model, post_model, prepend = False):
|
|
||||||
class InlineModel (admin.StackedInline):
|
|
||||||
model = post_model
|
|
||||||
extra = 1
|
|
||||||
max_num = 1
|
|
||||||
verbose_name = _('Post')
|
|
||||||
|
|
||||||
fieldsets = [
|
|
||||||
(None, {
|
|
||||||
'fields': ['title', 'content', 'image', 'tags']
|
|
||||||
}),
|
|
||||||
(None, {
|
|
||||||
'fields': ['date', 'published', 'author', 'thread_pk', 'thread_type']
|
|
||||||
})
|
|
||||||
]
|
|
||||||
|
|
||||||
registry = admin.site._registry
|
|
||||||
if not base_model in registry:
|
|
||||||
raise TypeError(str(base_model) + " not in admin registry")
|
|
||||||
|
|
||||||
inlines = list(registry[base_model].inlines) or []
|
|
||||||
if prepend:
|
|
||||||
inlines.insert(0, InlineModel)
|
|
||||||
else:
|
|
||||||
inlines.append(InlineModel)
|
|
||||||
|
|
||||||
registry[base_model].inlines = inlines
|
|
||||||
|
|
||||||
|
|
||||||
add_inline(programs.Program, Program, True)
|
|
||||||
# add_inline(programs.Episode, Episode, True)
|
|
||||||
|
|
||||||
admin.site.register(Program)
|
|
||||||
# admin.site.register(Episode)
|
|
||||||
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
import autocomplete_light.shortcuts as al
|
|
||||||
from aircox.programs.models import *
|
|
||||||
|
|
||||||
from taggit.models import Tag
|
|
||||||
al.register(Tag)
|
|
||||||
|
|
||||||
|
|
||||||
class OneFieldAutocomplete(al.AutocompleteModelBase):
|
|
||||||
choice_html_format = u'''
|
|
||||||
<span class="block" data-value="%s">%s</span>
|
|
||||||
'''
|
|
||||||
|
|
||||||
def choice_html (self, choice):
|
|
||||||
value = choice[self.search_fields[0]]
|
|
||||||
return self.choice_html_format % (self.choice_label(choice),
|
|
||||||
self.choice_label(value))
|
|
||||||
|
|
||||||
|
|
||||||
def choices_for_request(self):
|
|
||||||
#if not self.request.user.is_staff:
|
|
||||||
# self.choices = self.choices.filter(private=False)
|
|
||||||
filter_args = { self.search_fields[0] + '__icontains': self.request.GET['q'] }
|
|
||||||
|
|
||||||
self.choices = self.choices.filter(**filter_args)
|
|
||||||
self.choices = self.choices.values(self.search_fields[0]).distinct()
|
|
||||||
return self.choices
|
|
||||||
|
|
||||||
|
|
||||||
class TrackArtistAutocomplete(OneFieldAutocomplete):
|
|
||||||
search_fields = ['artist']
|
|
||||||
model = Track
|
|
||||||
|
|
||||||
al.register(TrackArtistAutocomplete)
|
|
||||||
|
|
||||||
|
|
||||||
class TrackNameAutocomplete(OneFieldAutocomplete):
|
|
||||||
search_fields = ['name']
|
|
||||||
model = Track
|
|
||||||
|
|
||||||
|
|
||||||
al.register(TrackNameAutocomplete)
|
|
||||||
|
|
||||||
|
|
||||||
#class DiffusionAutocomplete(OneFieldAutocomplete):
|
|
||||||
# search_fields = ['episode', 'program', 'start', 'stop']
|
|
||||||
# model = Diffusion
|
|
||||||
#
|
|
||||||
#al.register(DiffusionAutocomplete)
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
from django import forms
|
|
||||||
from django.contrib.admin import widgets
|
|
||||||
|
|
||||||
import autocomplete_light.shortcuts as al
|
|
||||||
from autocomplete_light.contrib.taggit_field import TaggitWidget
|
|
||||||
|
|
||||||
from aircox.programs.models import *
|
|
||||||
|
|
||||||
|
|
||||||
class TrackForm (forms.ModelForm):
|
|
||||||
class Meta:
|
|
||||||
model = Track
|
|
||||||
fields = ['artist', 'name', 'tags', 'position']
|
|
||||||
widgets = {
|
|
||||||
'artist': al.TextWidget('TrackArtistAutocomplete'),
|
|
||||||
'name': al.TextWidget('TrackNameAutocomplete'),
|
|
||||||
'tags': TaggitWidget('TagAutocomplete'),
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
from aircox.cms.models import RelatedPost
|
|
||||||
import aircox.programs.models as programs
|
|
||||||
|
|
||||||
class Program (RelatedPost):
|
|
||||||
class Relation:
|
|
||||||
model = programs.Program
|
|
||||||
bind_mapping = True
|
|
||||||
mapping = {
|
|
||||||
}
|
|
||||||
|
|
||||||
class Episode (RelatedPost):
|
|
||||||
class Relation:
|
|
||||||
model = programs.Diffusion
|
|
||||||
bind_mapping = True
|
|
||||||
mapping = {
|
|
||||||
'thread': 'program',
|
|
||||||
# 'title': 'name',
|
|
||||||
# 'content': 'description',
|
|
||||||
}
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
Before Width: | Height: | Size: 41 KiB |
|
@ -1,130 +0,0 @@
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #F2F2F2;
|
|
||||||
font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
|
|
||||||
margin: 0 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
h1, h2, h3 {
|
|
||||||
font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
time {
|
|
||||||
font-size: 0.9em;
|
|
||||||
color: #818181;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #616161;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: #818181;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Menu **/
|
|
||||||
.menu {
|
|
||||||
padding: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu_top {
|
|
||||||
background-color: #212121;
|
|
||||||
color: #007EDF;
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
header.menu {
|
|
||||||
padding: 0.2em;
|
|
||||||
height: 9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
header.menu img {
|
|
||||||
height: 100%;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#colony img {
|
|
||||||
height: auto;
|
|
||||||
position: fixed;
|
|
||||||
top: 1em;
|
|
||||||
right: 0;
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu h1 {
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.menu .post_list {
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu .post_list h3 {
|
|
||||||
font-size: 1.0em;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu .post_list time {
|
|
||||||
margin: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Page **/
|
|
||||||
.page-container {
|
|
||||||
box-shadow: 0em 0.2em 0.5em 0.1em black;
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page {
|
|
||||||
width: calc(100% - 0.4em);
|
|
||||||
padding: 1.5em 0.2em;
|
|
||||||
background-color: rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page img {
|
|
||||||
box-shadow: 0em 0em 0.2em 0.01em black;
|
|
||||||
border-radius: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.post_list {
|
|
||||||
padding: 0.1em;
|
|
||||||
border: 1px #818181 dotted;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post_list.embed + nav {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post_list:not(.embed) + nav {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
main .post_list .post_item {
|
|
||||||
min-height: 64px;
|
|
||||||
padding: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .post_list .post_item:hover {
|
|
||||||
}
|
|
||||||
|
|
||||||
main .post_list h3 {
|
|
||||||
margin: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .post_list time {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
main .post_list img {
|
|
||||||
float: left;
|
|
||||||
margin-right: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
|
@ -1,79 +0,0 @@
|
||||||
from django.conf.urls import url, include
|
|
||||||
|
|
||||||
from website.models import *
|
|
||||||
from website.views import *
|
|
||||||
|
|
||||||
from aircox.cms.models import Article
|
|
||||||
from aircox.cms.views import Menu, Section, Sections
|
|
||||||
from aircox.cms.routes import *
|
|
||||||
from aircox.cms.website import Website
|
|
||||||
|
|
||||||
|
|
||||||
website = Website(
|
|
||||||
name = 'RadioCampus',
|
|
||||||
styles = 'website/styles.css',
|
|
||||||
|
|
||||||
menus = [
|
|
||||||
Menu(
|
|
||||||
position = 'header',
|
|
||||||
sections = [
|
|
||||||
Sections.Image(url = 'website/logo.png'),
|
|
||||||
Sections.Image(url = 'website/colony.png', attrs = { 'id': 'colony' }),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
|
|
||||||
Menu(
|
|
||||||
position = 'top',
|
|
||||||
sections = [
|
|
||||||
Section(content = "Radio Campus le SITE"),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
|
|
||||||
Menu(
|
|
||||||
position = 'left',
|
|
||||||
sections = [
|
|
||||||
Section(content = 'loool<br>blob'),
|
|
||||||
PreviousDiffusions(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
base_sections = [
|
|
||||||
Sections.PostContent(),
|
|
||||||
Sections.PostImage(),
|
|
||||||
]
|
|
||||||
|
|
||||||
base_routes = [
|
|
||||||
AllRoute,
|
|
||||||
ThreadRoute,
|
|
||||||
SearchRoute,
|
|
||||||
DateRoute,
|
|
||||||
]
|
|
||||||
|
|
||||||
website.register(
|
|
||||||
'article',
|
|
||||||
Article,
|
|
||||||
sections = base_sections,
|
|
||||||
routes = base_routes
|
|
||||||
)
|
|
||||||
|
|
||||||
website.register(
|
|
||||||
'program',
|
|
||||||
Program,
|
|
||||||
sections = base_sections + [
|
|
||||||
ScheduleSection(),
|
|
||||||
EpisodesSection(),
|
|
||||||
],
|
|
||||||
routes = base_routes,
|
|
||||||
)
|
|
||||||
|
|
||||||
website.register (
|
|
||||||
'episode',
|
|
||||||
Episode,
|
|
||||||
sections = base_sections,
|
|
||||||
routes = base_routes,
|
|
||||||
)
|
|
||||||
|
|
||||||
urlpatterns = website.urls
|
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
from django.shortcuts import render
|
|
||||||
from django.template.loader import render_to_string
|
|
||||||
from django.views.generic import ListView
|
|
||||||
from django.views.generic import DetailView
|
|
||||||
from django.core import serializers
|
|
||||||
from django.utils import timezone as tz
|
|
||||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
|
||||||
|
|
||||||
import aircox.programs.models as programs
|
|
||||||
import aircox.cms.routes as routes
|
|
||||||
import aircox.cms.utils as utils
|
|
||||||
from aircox.cms.views import Sections
|
|
||||||
|
|
||||||
from website.models import *
|
|
||||||
|
|
||||||
|
|
||||||
class PlayListSection (Sections.List):
|
|
||||||
title = _('Playlist')
|
|
||||||
|
|
||||||
def get_object_list (self):
|
|
||||||
tracks = programs.Track.objects \
|
|
||||||
.filter(episode = self.object) \
|
|
||||||
.order_by('position')
|
|
||||||
return [ Sections.List.Item(None, track.title, track.artist)
|
|
||||||
for track in tracks ]
|
|
||||||
|
|
||||||
class ScheduleSection (Sections.List):
|
|
||||||
title = _('Schedule')
|
|
||||||
|
|
||||||
def get_object_list (self):
|
|
||||||
scheds = programs.Schedule.objects \
|
|
||||||
.filter(program = self.object.pk)
|
|
||||||
|
|
||||||
return [
|
|
||||||
Sections.List.Item(None, sched.get_frequency_display(),
|
|
||||||
_('rerun') if sched.rerun else None)
|
|
||||||
for sched in scheds
|
|
||||||
]
|
|
||||||
|
|
||||||
class EpisodesSection (Sections.Posts):
|
|
||||||
title = _('Episodes')
|
|
||||||
|
|
||||||
def get_object_list (self):
|
|
||||||
return utils.filter_thread(Episode.objects, self.object)
|
|
||||||
|
|
||||||
def get_url (self):
|
|
||||||
return utils.get_url(self.website, routes.ThreadRoute, Episode,
|
|
||||||
{ 'thread_model': 'program', 'pk': self.object.pk})
|
|
||||||
|
|
||||||
class PreviousDiffusions (Sections.Posts):
|
|
||||||
title = _('Previous Diffusions')
|
|
||||||
fields = ['title', 'time']
|
|
||||||
|
|
||||||
def get_object_list (self):
|
|
||||||
diffusions = programs.Diffusion.objects\
|
|
||||||
.filter(date__lt = tz.datetime.now())
|
|
||||||
episodes = []
|
|
||||||
|
|
||||||
for diffusion in diffusions:
|
|
||||||
if not diffusion.episode:
|
|
||||||
continue
|
|
||||||
|
|
||||||
post = Episode.objects.filter(related = diffusion.episode.pk)
|
|
||||||
if not post:
|
|
||||||
continue
|
|
||||||
post = post[0]
|
|
||||||
post.date = diffusion.date
|
|
||||||
episodes.append(post)
|
|
||||||
if len(episodes) == self.paginate_by:
|
|
||||||
break
|
|
||||||
return episodes
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user