Conjunto de mudanças 6126 no repositório publico


Ignorar:
Timestamp:
18/03/2012 15:31:36 (8 anos atrás)
Autor:
seocam
Mensagem:

Merge com a ultima versao do bitcket: https://bitbucket.org/seocam/atu-colab/src/4ee3ca57614e

Localização:
colab/trunk
Arquivos:
5 adicionados
20 editados

Legenda:

Não Modificado
Adicionado
Removido
  • colab/trunk/TODO.rst

    r6017 r6126  
    1010* Yure: Detectar links no conteudo e exibi-los como tal
    1111* Yure: BUG: Display of HTML emails are wrong
    12 * Yure: Cadastrar usuário em lista pelo formulario de cadastro
    1312* Arquivo "search.html" existente em "atu-colab/colab/templates" pode ser melhorado com relação ao conteúdo repetitivo dos "Tipos" exibidos no "Filtro" da página
    14 * Criar validador de urls para twitter, facebook e página pessoal do user profile
     13* BUG: Criar validador de urls para twitter, facebook e página pessoal do user profile
     14* Mostrar dados do twitter, facebook, gtalk e página pessoal somente para os usuários que estiverem logados
    1515
    1616* Configurar ADMINS no arquivo settings_local.py
     
    2121
    2222* Template de login nao exibe corretamente no firefox/linux
    23 * Quando usuario se cadastra com email errado o email nunca eh validado,
    24 e o username fica preso 'pra sempre'.
     23* Quando usuario se cadastra com email errado o email nunca eh validado, e o username fica preso 'pra sempre'.
    2524* Nome dos usuarios errado nos emails que vem do Solr
    2625* Adicionar ordering na busca
    27 * Criar tipo usuario no solr 
     26* Criar tipo usuario no solr
    2827* Substituir sistema de cadastro por django-registration
    2928* Utilizar pysolr para efetuar queries no Solr
     
    4140* Implementar badge system
    4241* Melhorar filtros
    43 * Link do thread preview deve enviar para mensagem da thread (anchor) (Útil? discutir com Jean)
     42* Link do thread preview deve enviar para mensagem da thread (anchor)
    4443* Tornar todas as strings traduziveis
    4544* Sugestão de como a divisão do edital seria melhor
     
    4746* Filtrar usando calendario (como google analytics)
    4847* Melhorar relevancia das buscas usando dismax queryparser
    49 * Chat estilo Gmail
     48* Chat estilo Gmail usando o mensageiro Interlegis
    5049* Sistema de gerencia de conteúdo
    5150* Versao mobile
     
    5756* Mostrar highlight nas buscas
    5857* Sistema de tags para as mensagens
     58* Tag cloud para as mensagens, ao lado direito da thread
    5959* Pagina home para cada lista com os mesmo filtros da home atual
    6060* Permitir que usuario entre e saia de listas ao editar perfil
    6161* Planet Interlegis (agregador de blogs)
    62 * Filtros especificos para tipos diferentes na busca
     62* Filtros específicos para tipos diferentes na busca da thread
     63* Link para a mensagem original no histórico do Mailman (popup ajax)
     64* Filtro de mensagens nas listas acumulativos, podendo ligar e desligar todos
     65* Reduzir campos na tela de cadastro, transferindo-os como aba para a tela de profile, junto com a aba de listas a se inscrever)
     66
    6367* Indice criado manualmente. Automatizar:
    6468  * create index super_archives_message_body_idx ON super_archives_message ((substring(body,0,1024)));
  • colab/trunk/colab/settings.py

    r6017 r6126  
    119119    'colab.super_archives',
    120120    'colab.api',
     121    'colab.rss',
    121122)
    122123
  • colab/trunk/colab/settings_local-dev.py

    r6017 r6126  
    1111    'default': {
    1212        'ENGINE': 'django.db.backends.sqlite3',
    13         'NAME': 'colab.db',
     13        'NAME': 'colab.db',
    1414    }
    1515}
     
    1717# Make this unique, and don't share it with anybody.
    1818SECRET_KEY = ')(jksdfhsjkadfhjkh234ns!8fqu-1186h$vuj'
     19
     20import socks
     21SOCKS_TYPE = socks.PROXY_TYPE_SOCKS5
     22SOCKS_SERVER = '127.0.0.1'
     23SOCKS_PORT = 9050
     24
  • colab/trunk/colab/signup.py

    r6017 r6126  
    55from django.utils.html import strip_tags
    66from django.utils.translation import ugettext as _
    7 from django.core.mail import EmailMultiAlternatives
    87from django.template.loader import render_to_string
     8from django.core.mail import EmailMultiAlternatives, send_mail
    99
    1010
     
    4848    email_msg.send()
    4949   
    50    
     50def send_email_lists(user, mailing_lists):
     51    subject = _(u'Inscrição na lista de discussão')
     52    from_ = user.email
     53    to = []
     54    for list_name in mailing_lists:
     55        # TODO: The following line needs to be generic. Domain should be stored in settings file
     56        #  or database (perharps read directly from mailman).
     57        subscribe_addr = list_name + '-subscribe@listas.interlegis.gov.br'
     58        to.append(subscribe_addr)
     59
     60    send_mail(subject, '', from_, to)
     61
  • colab/trunk/colab/solrutils.py

    r6017 r6126  
    179179        import socks
    180180        logging.debug('Socks enabled: %s:%s', settings.SOCKS_SERVER,
    181                                               settings.SOLR_PORT)
     181                                              settings.SOCKS_PORT)
    182182
    183183        socks.setdefaultproxy(settings.SOCKS_TYPE,
  • colab/trunk/colab/super_archives/forms.py

    r6017 r6126  
    66from django.contrib.auth.forms import UserCreationForm as UserCreationForm_
    77
     8from colab.super_archives.models import MailingList
    89from colab.super_archives.validators import UniqueValidator   
    910
     
    2728webpage_field = forms.URLField(label=u'Página Pessoal/Blog', required=False)
    2829
    29    
     30all_lists = MailingList.objects.all()
     31lists_names = []
     32for list_ in all_lists:
     33   choice = (list_.name, list_.name)
     34   lists_names.append(choice)
     35
     36lists_field = forms.MultipleChoiceField(
     37    label=u'Listas',
     38    required=False,
     39    widget=forms.CheckboxSelectMultiple,
     40    choices=lists_names
     41)
     42
     43
    3044class UserCreationForm(UserCreationForm_):
    3145    first_name = first_name_field
     
    3852    google_talk = google_talk_field
    3953    webpage = webpage_field
     54    lists = lists_field
    4055
    41 
     56   
    4257class UserUpdateForm(forms.Form):
    4358    username = username_field
  • colab/trunk/colab/super_archives/models.py

    r6017 r6126  
    149149        # Calculate page_view_score       
    150150        try:
    151             url = reverse('thread_view', args=[self.subject_token])
     151            url = reverse('thread_view', args=[self.mailinglist.name,
     152                                               self.subject_token])
    152153            pagehit = PageHit.objects.get(url_path=url)
    153154            page_view_score = pagehit.hit_count * 10
     
    218219    def url(self):
    219220        """Shortcut to get thread url"""
    220         return reverse('thread_view', args=[self.thread.subject_token])
     221        return reverse('thread_view', args=[self.mailinglist.name,
     222                                            self.thread.subject_token])
    221223   
    222224    @property
  • colab/trunk/colab/super_archives/queries.py

    r6017 r6126  
    2727
    2828
    29 def get_first_message_in_thread(thread_token):
    30     return get_messages_by_date().filter(thread__subject_token=thread_token)[0]
    31    
     29def get_first_message_in_thread(mailinglist, thread_token):
     30    query = get_messages_by_date()
     31    query = query.filter(mailinglist__name=mailinglist)
     32    query = query.filter(thread__subject_token=thread_token)[0]
     33    return query
     34
    3235
    3336def get_latest_threads():
     
    3538
    3639
    37 def get_hotest_threads():
     40def get_hottest_threads():
    3841    return Thread.objects.order_by('-score', '-latest_message__received_time')
    3942
  • colab/trunk/colab/super_archives/templates/message-list.html

    r6017 r6126  
    1212    <h4>Ordenar por</h4>
    1313    <ul>
    14       <li {% ifequal order_by "hotest" %} class="selected" title="{% trans "Retirar filtro" %}" {% endifequal %}>
    15         <a href="{% ifequal order_by "hotest" %} {% append_to_get order="",p=1 %} {% else %} {% append_to_get order='hotest',p=1 %} {% endifequal %}">
     14      <li {% ifequal order_by "hottest" %} class="selected" title="{% trans "Retirar filtro" %}" {% endifequal %}>
     15        <a href="{% ifequal order_by "hottest" %} {% append_to_get order="",p=1 %} {% else %} {% append_to_get order='hottest',p=1 %} {% endifequal %}">
    1616          Relevância</a></li>
    1717      <li {% ifequal order_by "latest" %} class="selected" title="{% trans "Retirar filtro" %}" {% endifequal %}>
  • colab/trunk/colab/super_archives/templatetags/append_to_get.py

    r6017 r6126  
    3838               
    3939        if len(get):
    40             path = '?' + urllib.urlencode(get)
     40            # Convert all unicode objects in the get dict to
     41            #   str (utf-8 encoded)
     42            get_utf_encoded = {}
     43            for (key, value) in get.items():
     44                if isinstance(value, unicode):
     45                    value = value.encode('utf-8')
     46                get_utf_encoded.update({key: value})
     47            get_utf_encoded = dict(get_utf_encoded)
     48
     49            path = '?' + urllib.urlencode(get_utf_encoded)
    4150
    4251        return path
  • colab/trunk/colab/super_archives/templatetags/form_field.py

    r6017 r6126  
    2525        editable = context.get('editable', True)
    2626
    27         class_ = ''
    28         errors = ''
    29         form_field_tag = ''
     27        class_ = u''
     28        errors = u''
     29        form_field_tag = u''
    3030        try:
    3131            form_field = self.form_field_nocontext.resolve(context)
    3232        except template.VariableDoesNotExist:
    33             return ''
     33            return u''
    3434 
    3535        if form_field.errors:
    36             class_ += 'error'
     36            class_ += u'error'
    3737        if form_field.field.required:
    38             class_ += ' required'   
     38            class_ += u' required'   
    3939        if form_field.errors:
    40             errors = '<br/>' + form_field.errors.as_text()
     40            errors = u'<br/>' + form_field.errors.as_text()
    4141       
    4242        try:
    4343            default_value = self.default_value_nocontext.resolve(context)
    4444        except template.VariableDoesNotExist:
    45             default_value = ''
     45            default_value = u''
    4646       
    4747        if editable:
    48             form_field_tag = '<br/>' + str(form_field)
     48            form_field_tag = u'<br/>' + unicode(form_field)
    4949        elif isinstance(form_field.field, forms.URLField):
    50             form_field_tag = """<a href="%s" target="_blank">%s</a>""" % (
     50            form_field_tag = u"""<a href="%s" target="_blank">%s</a>""" % (
    5151                default_value, default_value)
    5252        else:
    5353            form_field_tag = default_value
    5454               
    55         return """<p class="%s">%s: %s %s</p>""" % (
     55        return u"""<p class="%s">%s: %s %s</p>""" % (
    5656            class_,
    5757            form_field.label_tag(),
     
    5959            errors
    6060        )
    61        
     61
     62 
    6263register = template.Library()
    6364register.tag('render_form_field', render_form_field)
  • colab/trunk/colab/super_archives/urls.py

    r6017 r6126  
    33urlpatterns = patterns('',
    44#    url(r'thread/(?P<thread>\d+)/$', 'super_archives.views.thread', name='thread'),
    5     url(r'thread/(?P<thread_token>[-\w]+)$',
     5    url(r'thread/(?P<mailinglist>[-\w]+)/(?P<thread_token>[-\w]+)$',
    66        'colab.super_archives.views.thread', name="thread_view"),
    77    url(r'thread/$',
  • colab/trunk/colab/super_archives/views.py

    r6017 r6126  
    99
    1010
    11 def thread(request, thread_token):
     11def thread(request, mailinglist, thread_token):
    1212
    13     first_message = queries.get_first_message_in_thread(thread_token)
     13    first_message = queries.get_first_message_in_thread(mailinglist, thread_token)
    1414    order_by = request.GET.get('order')
    1515    if order_by == 'voted':
     
    1919   
    2020    msgs_query = msgs_query.filter(thread__subject_token=thread_token)
     21    msgs_query = msgs_query.filter(mailinglist__name=mailinglist)
    2122    emails = msgs_query.exclude(id=first_message.id)
    2223   
     
    2627
    2728    # Update relevance score
    28     thread = Thread.objects.get(subject_token=thread_token)   
     29    query = Thread.objects.filter(mailinglist__name=mailinglist)
     30    thread = query.get(subject_token=thread_token)   
    2931    thread.update_score()
    3032 
     
    4547
    4648    order_by = request.GET.get('order')
    47     if order_by == 'hotest':
    48         threads = queries.get_hotest_threads()
     49    if order_by == 'hottest':
     50        threads = queries.get_hottest_threads()
    4951    else:
    5052        threads = queries.get_latest_threads()
  • colab/trunk/colab/templates/home.html

    r6017 r6126  
    1919
    2020  <div class="span-12 colborder">
    21     <h3>{% trans "Últimas Colaborações:" %}</h3>
     21    <h3>{% trans "Últimas Colaborações" %}</h3>
    2222    <ul>
    2323      {% for doc in latest_docs %}
     
    3232
    3333  <div class="span-11 last">
    34     <h3>{% trans "Distribuição das Colaborações:" %}</h3>
     34    <h3>{% trans "Distribuição das Colaborações" %}</h3>
    3535    <div id="collabs"></div>
    3636  </div>
     
    4040
    4141  <div class="span-12 colborder">
    42     <h3>{% trans "Discussões Mais Relevantes:" %}</h3>
     42    <h3>{% trans "Discussões Mais Relevantes" %}</h3>
    4343    <ul>
    44       {% for thread in hotest_threads %}
     44      {% for thread in hottest_threads %}
    4545        {% include "message-preview.html" with doc=thread.latest_message %}
    4646      {% endfor %}
    4747    </ul>
    4848    <hr class="space"/>
    49     <a class="right" href="{% url thread_list %}?order=hotest">
     49    <a class="right" href="{% url thread_list %}?order=hottest">
    5050      {% trans "Ver mais discussões relevantes..." %}
    5151    </a>
     
    5353
    5454  <div class="span-11 last">
    55     <h3>{% trans "Últimas Discussões:" %}</h3>
     55    <h3>{% trans "Últimas Discussões" %}</h3>
    5656    <ul>
    5757      {% for thread in latest_threads %}
  • colab/trunk/colab/templates/signup-form.html

    r6017 r6126  
    5555    {% render_form_field form.webpage %}
    5656  </fieldset>
    57  
     57 
     58  <fieldset class="box span-11">
     59    <legend>Inscrever-se nas Listas</legend>
     60    {% render_form_field form.lists %}
     61  </fieldset>
     62 
    5863  <div class="span-24">
    5964    <input class="right" type="submit" value="Cadastrar"/>
  • colab/trunk/colab/templates/user-profile.html

    r6017 r6126  
    1010  {% if not user_profile %}
    1111    <span class="notice span-24">
    12       <b>Usuário não cadastrado.</b> Você é dono deste perfil? 
     12      <b>Usuário não cadastrado.</b> Você é dono deste perfil?
    1313      <a href="{% url signup %}">Clique aqui
    1414      e cadastre-se.</a>
    1515    </span>
    1616
    17   {% else %} 
    18    
     17  {% else %}
     18
    1919    {% ifequal request.user.username user_profile.user.username %}
    2020      <span class="success span-24">
    21         Ei, olha você aqui! Quer 
     21        Ei, olha você aqui! Quer
    2222        <a href="{% url user_profile_update request.user %}">editar seu perfil</a>?
    2323      </span>
    2424    {% endifequal %}
    25    
     25
    2626  {% endif %}
    2727
     
    3333           src="http://www.gravatar.com/avatar/{{ email_address.md5 }}?s=120&d=identicon" />
    3434    </div>
    35    
     35
    3636    <div class="span-20 last">
    3737      <div class="span-10">
    3838        <form action="{% url user_profile_update request.user %}" method='post'>
    3939          {% csrf_token %}
    40          
     40
    4141          <h3>Informações Pessoais</h3>
    4242          <ul id="user-info">
     
    5454            </li>
    5555          </ul>
    56      
     56
    5757          <hr class="space" />
    58        
     58
    5959          <h3>Outras Informações</h3>
    6060          <ul>
     
    7272            </li>
    7373          </ul>
    74          
     74
    7575          <hr class="space"/>
    7676          {% if editable %}
     
    8181        </form>
    8282      </div>
    83  
     83
    8484      {% if type_count %}
    8585      <div class="span-10 last">
    86         <h3 class="center">{% trans "Colaborações por área" %}</h3>
     86        <h3 class="center">{% trans "Colaborações por Área" %}</h3>
    8787        <div id="collabs"></div>
    8888      </div>
    8989      {% endif %}
    9090    </div>
    91    
     91
    9292    <hr class="space" />
    93    
     93
    9494    <div class="span-13">
    95       <h3>{% trans "Últimas mensagens enviadas" %} </h3>
     95      <h3>{% trans "Últimas Mensagens Enviadas" %} </h3>
    9696      <ul class="colborder">
    9797      {% for doc in emails %}
     
    9999      {% empty %}
    100100        <li>Não existem mensagens enviadas por este usuário até o momento.</li>
    101       {% endfor %} 
     101      {% endfor %}
    102102      </ul>
    103103    </div>
    104    
     104
    105105    <div class="span-11 last">
    106       <h3>{% trans "Participações na comunidade:" %}</h3>
     106      <h3>{% trans "Participações na Comunidade" %}</h3>
    107107      <ul>
    108108      {% for doc in docs %}
     
    113113      </ul>
    114114    </div>
    115    
     115
    116116  </div>
    117117{% endblock %}
  • colab/trunk/colab/urls.py

    r6017 r6126  
    1111
    1212    url(r'^api/', include('colab.api.urls')),
     13   
     14    url(r'^rss/', include('colab.rss.urls')),
    1315
    1416    url(r'^user/(?P<username>[\w@+.-]+)/?$',
     
    4648    url(r'^account/logout/$', 'django.contrib.auth.views.logout',
    4749        {'next_page': '/'}, name='logout'),
    48 
     50   
    4951    # Uncomment the next line to enable the admin:
    5052    url(r'^colab/admin/', include(admin.site.urls)),
  • colab/trunk/colab/views/other.py

    r6017 r6126  
    1919
    2020    latest_threads = queries.get_latest_threads()
    21     hotest_threads = queries.get_hotest_threads()
     21    hottest_threads = queries.get_hottest_threads()
    2222
    2323    template_data = {
    24         'hotest_threads': hotest_threads[:6],
     24        'hottest_threads': hottest_threads[:6],
    2525        'latest_threads': latest_threads[:6],
    2626        'type_count': solrutils.count_types(sample=1000),
  • colab/trunk/colab/views/signup.py

    r6017 r6126  
    6161    signup_.send_verification_email(request, user)
    6262
     63    mailing_lists = form.cleaned_data.get('lists')
     64    if mailing_lists:
     65        signup_.send_email_lists(user, mailing_lists)
     66
     67
    6368    # Check if the user's email have been used previously
    6469    #   in the mainling lists to link the user to old messages 
  • colab/trunk/solr-conf/data-config.xml

    r6017 r6126  
    322322      <field column="getId" template="${thread.name}" />
    323323      <field column="Type" template="thread" />
    324       <field column="path_string" template="/archives/thread/${thread.name}" />
     324      <field column="path_string"
     325             template="/archives/thread/${thread.mailinglist}/${thread.name}" />
    325326      <field column="created" name="created"
    326327             dateTimeFormat="yyyy-MM-dd hh:mm:ss" />
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.