From 36e5ea3b4dcf02bde0fb1628a7bb7378c00dfa4f Mon Sep 17 00:00:00 2001 From: yomguy Date: Sun, 29 May 2011 03:04:28 +0200 Subject: [PATCH] add templatetags, bugfix --- forms.py | 1 - models.py | 25 +++++++---------- templates/telecaster/base.html | 46 +++++++++++++++----------------- templates/telecaster/start.html | 13 ++------- templates/telecaster/stop.html | 12 ++------- templatetags/telecaster_utils.py | 22 +++++++++++++++ urls.py | 8 +++--- views.py | 43 +++++++++++++++++++++++------ 8 files changed, 96 insertions(+), 74 deletions(-) create mode 100644 templatetags/telecaster_utils.py diff --git a/forms.py b/forms.py index 3d75000..8078fb8 100644 --- a/forms.py +++ b/forms.py @@ -9,7 +9,6 @@ class StationForm(ModelForm): def __init__(self, *args, **kwds): super(StationForm, self).__init__(*args, **kwds) self.fields['organization'].queryset = Organization.objects.order_by('name') - self.fields['department'].queryset = Department.objects.order_by('name') self.fields['conference'].queryset = Conference.objects.order_by('title') self.fields['session'].queryset = Session.objects.order_by('name') self.fields['professor'].queryset = Professor.objects.order_by('name') diff --git a/models.py b/models.py index 77d4903..cf1fd41 100644 --- a/models.py +++ b/models.py @@ -138,35 +138,30 @@ class Station(Model): self.date = datetime.datetime.now().strftime("%Y") self.time = datetime.datetime.now().strftime("%x-%X") self.time_txt = self.time.replace('/','_').replace(':','_').replace(' ','_') - self.conf = conf - - self.conf = self.conf['telecaster'] self.user = pwd.getpwuid(os.getuid())[0] self.user_dir = '/home' + os.sep + self.user + os.sep + '.telecaster' self.rec_dir = self.conf['media']['rec_dir'] self.deefuzzer_default_conf_file = self.conf['deefuzzer']['conf'] self.deefuzzer_user_file = self.user_dir + os.sep + 'deefuzzer.xml' self.bitrate = self.conf['media']['bitrate'] - self.dict['Bitrate'] = str(self.bitrate) + ' kbps' self.record = str_to_bool(self.conf['media']['record']) self.rec_dir = self.conf['media']['rec_dir'] self.play_dir = self.conf['media']['play_dir'] self.ogg_quality = self.conf['media']['ogg_quality'] self.format = self.conf['media']['format'] self.channels = int(self.conf['media']['channels']) - self.description = [self.title, self.department, self.conference, self.session, self.professor, self.comment] - self.server_name = [self.title, self.department, self.conference] + self.description = [self.organization.name, self.conference.department.name, self.conference.title, self.session.name, self.professor.name, self.comment] + self.server_name = [self.organization.name, self.conference.department.name, self.conference.title] self.ServerDescription = clean_string('-'.join(self.description)) self.ServerName = clean_string('_-_'.join(self.server_name)) - self.mount_point = self.ServerName + self.mount_point = self.ServerName + '.' + self.format self.filename = clean_string('_-_'.join(self.description[1:])) + '-' + self.time_txt + '.' + self.format - self.output_dir = self.rec_dir + os.sep + self.date + os.sep + self.department + self.output_dir = self.rec_dir + os.sep + self.date + os.sep + self.conference.department.name self.file_dir = self.output_dir + os.sep + self.ServerName self.uid = os.getuid() - self.odd_pid = get_pid('^edcast_jack', self.uid) self.deefuzzer_pid = get_pid('/usr/bin/deefuzzer '+self.deefuzzer_user_file, self.uid) - self.new_title = clean_string('-'.join(self.server_name)+'-'+self.session+'-'+self.professor+'-'+self.comment) - self.short_title = clean_string('-'.join(self.conference)+'-'+self.session+'-'+self.professor+'-'+self.comment) + self.new_title = clean_string('-'.join(self.server_name)+'-'+self.session.name+'-'+self.professor.name+'-'+self.comment) + self.short_title = clean_string('-'.join(self.conference.title)+'-'+self.session.name+'-'+self.professor.name+'-'+self.comment) self.genre = self.conf['infos']['genre'] self.encoder = 'TeleCaster by Parisson' @@ -244,7 +239,7 @@ class Station(Model): def mp3_convert(self): os.system('oggdec -o - '+ self.file_dir+os.sep+self.filename+' | lame -S -m m -h -b '+ self.bitrate + \ - ' --add-id3v2 --tt "'+ self.new_title + '" --ta "'+self.professor+'" --tl "'+self.title+'" --ty "'+self.date+ \ + ' --add-id3v2 --tt "'+ self.new_title + '" --ta "'+self.professor+'" --tl "'+self.organization+'" --ty "'+self.date+ \ '" --tg "'+self.genre+'" - ' + self.file_dir+os.sep+self.ServerDescription + '.mp3 &') def write_tags_ogg(self): @@ -253,10 +248,10 @@ class Station(Model): audio = OggVorbis(file) audio['TITLE'] = self.new_title.decode('utf8') audio['ARTIST'] = self.professor.decode('utf8') - audio['ALBUM'] = self.title.decode('utf8') + audio['ALBUM'] = self.organization.decode('utf8') audio['DATE'] = self.date.decode('utf8') audio['GENRE'] = self.genre.decode('utf8') - audio['SOURCE'] = self.title.decode('utf8') + audio['SOURCE'] = self.organization.decode('utf8') audio['ENCODER'] = self.encoder.decode('utf8') audio['COMMENT'] = self.comment.decode('utf8') audio.save() @@ -271,7 +266,7 @@ class Station(Model): #tag = tags.__dict__['ARTIST'] audio.add(TP1(encoding=3, text=self.professor.decode('utf8'))) #tag = tags.__dict__['ALBUM'] - audio.add(TAL(encoding=3, text=self.title.decode('utf8'))) + audio.add(TAL(encoding=3, text=self.organization.decode('utf8'))) #tag = tags.__dict__['DATE'] audio.add(TDRC(encoding=3, text=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) #tag = tags.__dict__['GENRE'] diff --git a/templates/telecaster/base.html b/templates/telecaster/base.html index 91f1cec..f4e492b 100644 --- a/templates/telecaster/base.html +++ b/templates/telecaster/base.html @@ -1,44 +1,28 @@ +{% load telecaster_utils %} +{% load i18n %} + TeleCaster - {{ self.title }} - + {% block javascript %} - {% endblock javascript %}
-
" -logo_telecaster +
+logo_telecaster
 TeleCaster - Audio Web Live Recording
{% block hardware %} -{% if acpi.power_state == 0 %} - -
Status
@@ -51,10 +35,10 @@ formulaire.conference.selectedIndex=0;} - + - + @@ -68,14 +52,26 @@ formulaire.conference.selectedIndex=0;}
{{ status.ip }}
Power : {{ status.power }}{{ status.acpi_state }}
Battery charge : {{ status.batt_charge }}{{ status.acpi_percent }}
Temp core 1 : {{ status.temperature }}
JACK audio server :
+{% endblock hardware %} {% block content %} {% endblock content %} {% block footer %} -
TeleCaster "+self.version+" © {% year %} Parisson SARL. Tous droits réservés. +
+
+ + + Play Live + Archives + Trash +
+
TeleCaster 0.6 © 2011 Parisson SARL. {% trans "All rights reserved" %}
+{% endblock footer %} +
+ diff --git a/templates/telecaster/start.html b/templates/telecaster/start.html index 5b55647..ee2ea47 100644 --- a/templates/telecaster/start.html +++ b/templates/telecaster/start.html @@ -1,4 +1,4 @@ -{% extends "/telecaster/base.html" %} +{% extends "telecaster/base.html" %} {% block content %} @@ -7,7 +7,7 @@ - {% for field in form %} + {% for field in station %} @@ -16,15 +16,6 @@ {% endfor %}
{% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
    {{ field.errors }}
    {{ field.label_tag }}:
    -
    -
    - - - Play Live - Archives - Trash -
    -
    diff --git a/templates/telecaster/stop.html b/templates/telecaster/stop.html index 116ecf1..352200d 100644 --- a/templates/telecaster/stop.html +++ b/templates/telecaster/stop.html @@ -1,4 +1,4 @@ -{% extends "/telecaster/base.html" %} +{% extends "telecaster/base.html" %} {% block content %} @@ -14,15 +14,7 @@ Commentaire : {{ station.comment }} -
    -
    - -Play - -Archives -Trash -
    -
    + {% endblock content %} diff --git a/templatetags/telecaster_utils.py b/templatetags/telecaster_utils.py new file mode 100644 index 0000000..bb309f8 --- /dev/null +++ b/templatetags/telecaster_utils.py @@ -0,0 +1,22 @@ +from django import template +from django.utils.http import urlquote +from telecaster import models +from django.core.urlresolvers import reverse +from django.utils import html +from django import template +from django.utils.text import capfirst +from django.utils.translation import ungettext +#from docutils.core import publish_parts +from django.utils.encoding import smart_str, force_unicode +from django.utils.safestring import mark_safe +from django import db +from django.conf import settings + +import re +import datetime + +register = template.Library() + +@register.filter +def len(list): + return len(list) diff --git a/urls.py b/urls.py index d9f4d1f..bd06e8d 100644 --- a/urls.py +++ b/urls.py @@ -47,18 +47,18 @@ web_view = WebView(settings.TELECASTER_CONF) htdocs = os.path.dirname(__file__) + '/htdocs' urlpatterns = patterns('', - url(r'^', web_view.index, name="telecaster-index"), + url(r'^$', web_view.index, name="telecaster-index"), # CSS+Images (FIXME: for developement only) url(r'^css/(?P.*)$', 'django.views.static.serve', {'document_root': htdocs+'/css'}, - name="telemeta-css"), + name="telecaster-css"), url(r'images/(?P.*)$', 'django.views.static.serve', {'document_root': htdocs+'/images'}, - name="telemeta-images"), + name="telecaster-images"), url(r'^js/(?P.*)$', 'django.views.static.serve', {'document_root': htdocs+'/js'}, - name="telemeta-js"), + name="telecaster-js"), # JSON RPC url(r'^json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'), diff --git a/views.py b/views.py index 1e2e635..434a723 100644 --- a/views.py +++ b/views.py @@ -10,6 +10,27 @@ from tools import * from models import * from forms import* +from jsonrpc import jsonrpc_method + +from django.utils.decorators import method_decorator +from django.contrib.auth import authenticate, login +from django.template import RequestContext, loader +from django import template +from django.http import HttpResponse, HttpResponseRedirect +from django.http import Http404 +from django.shortcuts import render_to_response, redirect +from django.views.generic import list_detail +from django.conf import settings +from django.contrib import auth +from django.contrib import messages +from django.contrib.auth.decorators import login_required, permission_required +from django.core.context_processors import csrf +from django.forms.models import modelformset_factory, inlineformset_factory +from django.contrib.auth.models import User +from django.utils.translation import ugettext +from django.contrib.auth.forms import UserChangeForm +from django.core.exceptions import ObjectDoesNotExist + def render(request, template, data = None, mimetype = None): return render_to_response(template, data, context_instance=RequestContext(request), @@ -38,14 +59,15 @@ class WebView(object): def index(self, request): self.get_ids() stations = Station.objects.filter(started=True) + status = self.get_status() - if stations and (self.writing or self.casting): + if stations or (self.writing or self.casting): template = 'telecaster/stop.html' # FIXME: manage multiple stations station = stations[0] + station.set_conf(self.conf) + station.setup() if request.method == 'POST': - station.set_conf(self.conf) - station.setup() station.stop() time.sleep(2) self.logger.write_info('stop') @@ -67,7 +89,7 @@ class WebView(object): else: station = StationForm() - return render(request, template, {'station': station}) + return render(request, template, {'station': station, 'status': status}) def get_hosts(self): ip = '' @@ -87,18 +109,23 @@ class WebView(object): def get_ids(self): edcast_pid = get_pid('edcast_jack', self.uid) deefuzzer_pid = get_pid('/usr/bin/deefuzzer '+self.user_dir+os.sep+'deefuzzer.xml', self.uid) + jackd_pid = get_pid('jackd', self.uid) + if jackd_pid == []: + jackd_pid = get_pid('jackdbus', self.uid) self.writing = edcast_pid != [] self.casting = deefuzzer_pid != [] + self.jacking = jackd_pid != [] + @jsonrpc_method('telecaster.get_status') def get_status(self): self.get_hosts() self.get_ids() self.acpi.update() status = {} - status['acpi_state'] = acpi_states[self.acpi.charging_state()] - status['acpi_percent'] = self.acpi.percent() - status['acpi_temperature'] = self.acpi.temperature(0) - status['jack_state'] = jackd_pid != [] + status['acpi_state'] = self.acpi_states[self.acpi.charging_state()] + status['acpi_percent'] = str(self.acpi.percent()) + #status['acpi_temperature'] = self.acpi.temperature(0) + status['jack_state'] = self.jacking status['url'] = self.url status['ip'] = self.ip status['url'] = self.url -- 2.39.5