Programacao dinamica
authorGabriel Falcao <root@gabrielfalcao.com>
Mon, 8 Oct 2007 14:13:28 +0000 (11:13 -0300)
committerGabriel Falcao <root@gabrielfalcao.com>
Mon, 8 Oct 2007 14:13:28 +0000 (11:13 -0300)
controllers.py
eventos/models.py
templates/base.html
templates/dados_palestrante.html
templates/programacao.html
urls.py
views.py

index 922a623..ceaa471 100644 (file)
@@ -15,6 +15,7 @@
 # License along with this program; if not, write to the
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
+import re
 
 from django.http import HttpResponse, HttpResponseRedirect
 from django.template import RequestContext
@@ -22,6 +23,143 @@ from django.shortcuts import render_to_response, get_object_or_404
 from django.conf import settings
 from django.core.exceptions import ObjectDoesNotExist
 
+def html_unentities(s):
+    s = s.decode('utf-8')
+    entities = {}
+    newstring = u""
+    
+    entities[u'&nbsp;'] = u' '
+    entities[u'&iexcl;'] = u'¡'
+    entities[u'&cent;'] = u'¢'
+    entities[u'&pound;'] = u'£'
+    entities[u'&curren;'] = u'¤'
+    entities[u'&yen;'] = u'¥'
+    entities[u'&brvbar;'] = u'¦'
+    entities[u'&sect;'] = u'§'
+    entities[u'&uml;'] = u'¨'
+    entities[u'&copy;'] = u'©'
+    entities[u'&ordf;'] = u'ª'
+    entities[u'&laquo;'] = u'«'
+    entities[u'&not;'] = u'¬'
+    entities[u'&shy;'] = u'­'
+    entities[u'&reg;'] = u'®'
+    entities[u'&macr;'] = u'¯'
+    entities[u'&deg;'] = u'°'
+    entities[u'&plusmn;'] = u'±'
+    entities[u'&sup2;'] = u'²'
+    entities[u'&sup3;'] = u'³'
+    entities[u'&acute;'] = u'´'
+    entities[u'&micro;'] = u'µ'
+    entities[u'&para;'] = u'¶'
+    entities[u'&middot;'] = u'·'
+    entities[u'&cedil;'] = u'¸'
+    entities[u'&sup1;'] = u'¹'
+    entities[u'&ordm;'] = u'º'
+    entities[u'&raquo;'] = u'»'
+    entities[u'&frac14;'] = u'¼'
+    entities[u'&frac12;'] = u'½'
+    entities[u'&frac34;'] = u'¾'
+    entities[u'&iquest;'] = u'¿'
+    entities[u'&Agrave;'] = u'À'
+    entities[u'&Aacute;'] = u'Á'
+    entities[u'&Acirc;'] = u'Â'
+    entities[u'&Atilde;'] = u'Ã'
+    entities[u'&Auml;'] = u'Ä'
+    entities[u'&Aring;'] = u'Å'
+    entities[u'&AElig;'] = u'Æ'
+    entities[u'&Ccedil;'] = u'Ç'
+    entities[u'&Egrave;'] = u'È'
+    entities[u'&Eacute;'] = u'É'
+    entities[u'&Ecirc;'] = u'Ê'
+    entities[u'&Euml;'] = u'Ë'
+    entities[u'&Igrave;'] = u'Ì'
+    entities[u'&Iacute;'] = u'Í'
+    entities[u'&Icirc;'] = u'Î'
+    entities[u'&Iuml;'] = u'Ï'
+    entities[u'&ETH;'] = u'Ð'
+    entities[u'&Ntilde;'] = u'Ñ'
+    entities[u'&Ograve;'] = u'Ò'
+    entities[u'&Oacute;'] = u'Ó'
+    entities[u'&Ocirc;'] = u'Ô'
+    entities[u'&Otilde;'] = u'Õ'
+    entities[u'&Ouml;'] = u'Ö'
+    entities[u'&times;'] = u'×'
+    entities[u'&Oslash;'] = u'Ø'
+    entities[u'&Ugrave;'] = u'Ù'
+    entities[u'&Uacute;'] = u'Ú'
+    entities[u'&Ucirc;'] = u'Û'
+    entities[u'&Uuml;'] = u'Ü'
+    entities[u'&Yacute;'] = u'Ý'
+    entities[u'&THORN;'] = u'Þ'
+    entities[u'&szlig;'] = u'ß'
+    entities[u'&agrave;'] = u'à'
+    entities[u'&aacute;'] = u'á'
+    entities[u'&acirc;'] = u'â'
+    entities[u'&atilde;'] = u'ã'
+    entities[u'&auml;'] = u'ä'
+    entities[u'&aring;'] = u'å'
+    entities[u'&aelig;'] = u'æ'
+    entities['&ccedil;'] = u'ç'
+    entities[u'&egrave;'] = u'è'
+    entities[u'&eacute;'] = u'é'
+    entities[u'&ecirc;'] = u'ê'
+    entities[u'&euml;'] = u'ë'
+    entities[u'&igrave;'] = u'ì'
+    entities[u'&iacute;'] = u'í'
+    entities[u'&icirc;'] = u'î'
+    entities[u'&iuml;'] = u'ï'
+    entities[u'&eth;'] = u'ð'
+    entities[u'&ntilde;'] = u'ñ'
+    entities[u'&ograve;'] = u'ò'
+    entities[u'&oacute;'] = u'ó'
+    entities[u'&ocirc;'] = u'ô'
+    entities[u'&otilde;'] = u'õ'
+    entities[u'&ouml;'] = u'ö'
+    entities[u'&divide;'] = u'÷'
+    entities[u'&oslash;'] = u'ø'
+    entities[u'&ugrave;'] = u'ù'
+    entities[u'&uacute;'] = u'ú'
+    entities[u'&ucirc;'] = u'û'
+    entities[u'&uuml;'] = u'ü'
+    entities[u'&yacute;'] = u'ý'
+    entities[u'&thorn;'] = u'þ'
+    entities[u'&yuml;'] = u'ÿ'
+    entities[u'&quot;'] = u'"'
+    entities[u"'"] = '&#39;'
+    entities[u'&lt;'] = u'<'
+    entities[u'&gt;'] = u'>'
+    entities[u'&amp;'] = u'&'
+    buffer = ""
+    mutex = False
+    s_ent = re.findall(r'[&].*?[;]', s)
+    for rp in s_ent:
+        s = re.sub(rp.replace('&','[&]').replace(';','[;]'), entities[rp], s)
+    return s
+
+class ScheduleHammer(object):
+    def __init__(self, HTML):
+        if isinstance(HTML, str):
+            self.S_tag = '[<]li[>].*?[<]font.*?[>]'
+            self.E_tag = '[<][/]font[>].*?[<][/]li[>]'
+            self.items = re.findall(r'%s(?P<content>.*?)%s'%(self.S_tag,
+                self.E_tag), HTML)
+        else:
+            raise TypeError("ScheduleHammer must take only a string as \
+                    parameter")
+
+    def __iter__(self):
+        for title in self.items:
+            if "<br" in title:
+                yield html_unentities(title.split('<br')[0])
+            else:
+                yield html_unentities(title)
+
+    def __getitem__(self, pos):
+        if "<br" in self.items[pos]:
+            return html_unentities(self.items[pos].split("<br")[0])
+        else:
+            return html_unentities(self.items[pos])
+
 class MetaDict:
     """
     Esta classe recebe um dicionario como parametro e adiciona cada
@@ -109,3 +247,4 @@ def limpa_conversas(visitante, corretor):
         conversas_vc.append(get_object_or_none(Conversa,corretor__id=\
             corretor.id))
     [c.delete() for c in conversas_vc if c]
+
index eeae7a5..a042a5b 100644 (file)
@@ -164,12 +164,13 @@ class Trabalho(models.Model):
     descricao_curta = models.TextField()
     descricao_longa = models.TextField()
     recursos = models.TextField()
+    aprovado = models.BooleanField()
 
     class Admin:
         fields = (
             (None, {'fields': ('titulo', 'evento', 'categoria', 'tipo',
                 'palestrante', 'descricao_curta', 'descricao_longa',
-                'recursos')}),
+                'recursos', 'aprovado')}),
         )
 
     def __str__(self):
index 981fe93..aa57dba 100644 (file)
@@ -56,7 +56,7 @@
                <!--
                 <li><a href="/chamada_trabalhos"><img src="/site_media/imgs/menu_chamada-de-trabalhos.gif" alt="Chamada de Trabalhos" /></a></li>
                -->
-                <li><a href="/secao/8"><img src="/site_media/imgs/menu_programacao.gif" alt="Programação" /></a></li>
+                <li><a href="/programacao"><img src="/site_media/imgs/menu_programacao.gif" alt="Programação" /></a></li>
                 <!-- hackish session... -->
                 <li><a href="/secao/2"><img src="/site_media/imgs/menu_localizacao.gif" alt="Localização" /></a></li>
                 <li><a href="/secao/3"><img src="/site_media/imgs/menu_como-chegar.gif" alt="Como Chegar" /></a></li>
index d42402c..6bb7b9b 100644 (file)
@@ -1,21 +1,24 @@
 {% extends "base.html" %}
 {% block content %}
 
-<h2>Editar {{ title }}</h2>
+{% if dados_usuario %}
 
-{% if ok %}
+<h2>{{ dados_usuario.nome }}</h2>
 
-<div class="confirmation">
-    <p>Seus dados foram editados com sucesso!</p>
+<div class="content">
+    <p>{{dados_usuario.nome}}</p>
+    <p>{{dados_usuario.minicurriculo}}</p>
 </div>
 
 {% else %}
-
-<form id="cadastro" method="post" action=".">
-    {{ form.as_p }}
-    <input type="submit" value="Salvar" />
-</form>
-
+<div id="404" style="text-align:center">
+    <h2>Padre Quevedo 404</h2>
+    <br />
+    <div style="color:#FF0000;">
+        Usuario nón ecziste!
+    </div>
+</div>
 {% endif %}
 
+<a href="javascript:;" onclick="history.back ();">Voltar</a>
 {% endblock %}
index 9c99b4f..728e1ca 100644 (file)
@@ -4,11 +4,18 @@
 {% if aprovadas %}
 
 <!--<h2>{{ dados_usuario.nome }}</h2>-->
-<ul>
     {% for p in aprovadas %}
-    <li>{{p.titulo}}</li>
+    <span style="font-size:12pt"><a href="/palestra/{{p.id}}/" style="color:#333;">{{p.titulo}}</a></span>
+        <br />
+        <span style="font-weight:bolder;margin-left:15px">Palestrante{{ p.palestrante.all|pluralize }}:</span>
+        <br />
+            {% for x in p.palestrante.all %}
+        <span style="margin-left:30px">
+            <a href="/palestrante/{{x.id}}/">{{x.nome|capfirst}} </a>{% ifnotequal p.palestrante.all|length 1%}<br /> {% endifnotequal %}
+        </span>
+            {% endfor %}
+        <br />
     {% endfor %}
-</ul>
 {% else %}
 <div id="404" style="text-align:center">
     <h2>Padre Quevedo 404</h2>
diff --git a/urls.py b/urls.py
index 1ebcff7..988dcbe 100644 (file)
--- a/urls.py
+++ b/urls.py
@@ -38,6 +38,9 @@ urlpatterns = patterns('',
     (r'^cadastro_palestrante/', views.cadastro_palestrante),
     (r'^meus_trabalhos/', views.meus_trabalhos),
     (r'^trabalhos/(?P<codigo>\d+)', views.editar_trabalho),
+    (r'^palestrante/(?P<codigo>\d+)', views.dados_palestrante),
+    (r'^palestra/(?P<codigo>\d+)', views.dados_palestra),
+    (r'^programacao', views.programacao),
     (r'^meus_dados/', views.meus_dados),
     (r'^chamada_trabalhos/', views.chamada_trabalhos),
     (r'^avaliacao/', views.avaliacao),
index 0e3082e..4b5f557 100644 (file)
--- a/views.py
+++ b/views.py
@@ -23,6 +23,7 @@ from django.contrib.auth.decorators import login_required, user_passes_test
 from django.contrib.auth.models import Group, User
 from django.contrib.auth import authenticate, login
 from django.newforms import form_for_instance
+from django.core.exceptions import ObjectDoesNotExist
 from django.core.mail import EmailMessage
 from django.db import transaction
 from django.http import get_host
@@ -32,6 +33,7 @@ from eventmanager.decorators import enable_login_form
 from eventmanager.conteudo.models import Noticia, Menu, Secao
 from eventmanager.eventos.models import *
 from eventmanager.forms import *
+from eventmanager.controllers import *
 
 from datetime import datetime
 import sha
@@ -375,6 +377,34 @@ def meus_dados(request):
 
 
 @enable_login_form
+def dados_palestrante(request, codigo):
+    d = {}
+    try:
+        d = {'dados_usuario': Palestrante.objects.get(id=codigo)}
+    except ObjectDoesNotExist:
+        d = {}
+    return build_response(request, 'dados_palestrante.html', d)
+
+
+@enable_login_form
+def dados_palestra(request, codigo):
+    try:
+        d = {'dados_palestra': Trabalho.objects.get(id=codigo)}
+    except ObjectDoesNotExist:
+        d = {}
+    return build_response(request, 'dados_palestra.html',d)
+
+
+@enable_login_form
+def programacao(request):
+    try:
+        d = {'aprovadas': Trabalho.objects.filter(aprovado=True)}
+    except ObjectDoesNotExist:
+        d = {}
+    return build_response(request, 'programacao.html',d)
+
+
+@enable_login_form
 def chamada_trabalhos(request):
     return build_response(request, 'chamada_trabalhos.html')