Commit 1ce3e4289e26b4426fa18298e2d843cec9e1b168

Authored by Sergio Oliveira
2 parents af1506b1 8b151b24

Merge branch 'master' of github.com:TracyWebTech/colab

src/proxy/migrations/0004_replace_wiki_view.py 0 → 100644
... ... @@ -0,0 +1,102 @@
  1 +# -*- coding: utf-8 -*-
  2 +import datetime
  3 +from django.db import connections
  4 +from south.db import db
  5 +from south.v2 import DataMigration
  6 +from django.db import models
  7 +
  8 +class Migration(DataMigration):
  9 +
  10 + def forwards(self, orm):
  11 + # Selecting trac database
  12 + connection = connections['trac']
  13 +
  14 + cursor = connection.cursor()
  15 +
  16 + cursor.execute('''
  17 + CREATE OR REPLACE VIEW wiki_view AS SELECT
  18 + wiki.name AS name,
  19 + (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
  20 + AND wiki2.version = MAX(wiki.version)) AS wiki_text,
  21 + (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
  22 + AND wiki3.version = 1) AS author,
  23 + string_agg(DISTINCT wiki.author, ', ') AS collaborators,
  24 + TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS created,
  25 + TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS modified
  26 + FROM wiki
  27 + GROUP BY wiki.name;
  28 + ''')
  29 +
  30 + def backwards(self, orm):
  31 + # Selecting trac database
  32 + connection = connections['trac']
  33 +
  34 + cursor = connection.cursor()
  35 +
  36 + cursor.execute('''
  37 + CREATE OR REPLACE VIEW wiki_view AS SELECT
  38 + wiki.name AS name,
  39 + (SELECT wiki2.text FROM wiki AS wiki2 WHERE wiki2.name = wiki.name
  40 + AND wiki2.version = MAX(wiki.version)) AS wiki_text,
  41 + (SELECT wiki3.author FROM wiki AS wiki3 WHERE wiki3.name = wiki.name
  42 + AND wiki3.version = 1) AS author,
  43 + string_agg(DISTINCT wiki.author, ', ') AS collaborators,
  44 + TIMESTAMP WITH TIME ZONE 'epoch' + (MAX(wiki.time)/1000000) * INTERVAL '1s' AS created,
  45 + TIMESTAMP WITH TIME ZONE 'epoch' + (MIN(wiki.time)/1000000) * INTERVAL '1s' AS modified
  46 + FROM wiki
  47 + GROUP BY wiki.name;
  48 + ''')
  49 +
  50 + models = {
  51 + u'proxy.attachment': {
  52 + 'Meta': {'object_name': 'Attachment', 'db_table': "'attachment_view'", 'managed': 'False'},
  53 + 'attach_id': ('django.db.models.fields.TextField', [], {}),
  54 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  55 + 'created': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
  56 + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  57 + 'filename': ('django.db.models.fields.TextField', [], {}),
  58 + 'mimetype': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  59 + 'size': ('django.db.models.fields.IntegerField', [], {'blank': 'True'}),
  60 + 'url': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  61 + 'used_by': ('django.db.models.fields.TextField', [], {})
  62 + },
  63 + u'proxy.revision': {
  64 + 'Meta': {'object_name': 'Revision', 'db_table': "'revision_view'", 'managed': 'False'},
  65 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  66 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  67 + 'key': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  68 + 'message': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  69 + 'repository_name': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  70 + 'rev': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  71 + },
  72 + u'proxy.ticket': {
  73 + 'Meta': {'object_name': 'Ticket', 'db_table': "'ticket_view'", 'managed': 'False'},
  74 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  75 + 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  76 + 'component': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  77 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  78 + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  79 + 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
  80 + 'keywords': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  81 + 'milestone': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  82 + 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  83 + 'priority': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  84 + 'reporter': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  85 + 'severity': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  86 + 'status': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  87 + 'summary': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  88 + 'version': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  89 + },
  90 + u'proxy.wiki': {
  91 + 'Meta': {'object_name': 'Wiki', 'db_table': "'wiki_view'", 'managed': 'False'},
  92 + 'author': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  93 + 'collaborators': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
  94 + 'created': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  95 + 'modified': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
  96 + 'name': ('django.db.models.fields.TextField', [], {'primary_key': 'True'}),
  97 + 'wiki_text': ('django.db.models.fields.TextField', [], {'blank': 'True'})
  98 + }
  99 + }
  100 +
  101 + complete_apps = ['proxy']
  102 + symmetrical = True
... ...
src/super_archives/search_indexes.py
... ... @@ -25,6 +25,9 @@ class ThreadIndex(BaseIndex, indexes.Indexable):
25 25 model_attr='mailinglist__get_absolute_url',
26 26 indexed=False,
27 27 )
  28 + latest_message_pk = indexes.IntegerField(
  29 + model_attr='latest_message__pk', indexed=False
  30 + )
28 31 score = indexes.IntegerField(model_attr='score')
29 32  
30 33 def get_model(self):
... ...
src/super_archives/templates/message-preview.html
... ... @@ -10,7 +10,7 @@
10 10 {% endif %}
11 11  
12 12 {% if result.title %}
13   - <a href="{{ result.url }}" {% if result.latest_description %}title="{{ result.latest_description|escape|truncatechars:150 }}"{% elif result.description %}title="{{ result.description|escape|truncatechars:150 }}"{% endif %}>
  13 + <a href="{{ result.url }}{% if result.type == 'thread' and result.latest_message_pk %}#msg-{{ result.latest_message_pk }}{% elif result.type == 'thread' and result.pk %}#msg-{{ result.pk }}{% endif %}" {% if result.latest_description %}title="{{ result.latest_description|escape|truncatechars:150 }}"{% elif result.description %}title="{{ result.description|escape|truncatechars:150 }}"{% endif %}>
14 14 <span class="subject">
15 15 <!-- a striptags filter was raising an error here because using with highlight -->
16 16 {% if query %}
... ...