Commit fb00ee25d4911661b489b9125331e11ba1c4587f

Authored by Sergio Oliveira
2 parents caad7cd7 08d8d2ed

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

1 1
2 -  
3 from fabric.operations import put 2 from fabric.operations import put
4 from fabric.api import run, sudo, env 3 from fabric.api import run, sudo, env
5 from fabric.contrib.files import exists 4 from fabric.contrib.files import exists
6 from fabric.decorators import with_settings 5 from fabric.decorators import with_settings
7 -from fabric.context_managers import prefix, cd 6 +from fabric.context_managers import prefix, cd, settings
8 7
9 env.user = 'colab' # key depends on env 8 env.user = 'colab' # key depends on env
10 env.use_shell = False 9 env.use_shell = False
@@ -100,6 +99,17 @@ def rebuild_index(age=None): @@ -100,6 +99,17 @@ def rebuild_index(age=None):
100 99
101 100
102 @with_settings(user='vagrant') 101 @with_settings(user='vagrant')
  102 +def build_solr_schema():
  103 + with cd('/vagrant/src/'), prefix(WORKON_COLAB):
  104 + run('python manage.py build_solr_schema -f /tmp/schema.xml')
  105 +
  106 + with settings(user='colab'):
  107 + run('cp /tmp/schema.xml ~/apache-solr-3.6.2/example/solr/conf/schema.xml')
  108 +
  109 + sudo('supervisorctl restart solr')
  110 +
  111 +
  112 +@with_settings(user='vagrant')
103 def runserver(update_requirements=False): 113 def runserver(update_requirements=False):
104 env_created = mkvirtualenv() 114 env_created = mkvirtualenv()
105 115
src/proxy/search_indexes.py
@@ -20,6 +20,7 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): @@ -20,6 +20,7 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
20 modified = indexes.DateTimeField(model_attr='modified', null=True) 20 modified = indexes.DateTimeField(model_attr='modified', null=True)
21 type = indexes.CharField() 21 type = indexes.CharField()
22 icon_name = indexes.CharField() 22 icon_name = indexes.CharField()
  23 + author_username = indexes.CharField(null=True)
23 24
24 # trac extra fields 25 # trac extra fields
25 collaborators = indexes.CharField(model_attr='collaborators', null=True) 26 collaborators = indexes.CharField(model_attr='collaborators', null=True)
@@ -36,6 +37,15 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable): @@ -36,6 +37,15 @@ class WikiIndex(indexes.SearchIndex, indexes.Indexable):
36 return author.get_full_name() 37 return author.get_full_name()
37 return obj.author 38 return obj.author
38 39
  40 + def prepare_author_username(self, obj):
  41 + author = obj.get_author()
  42 + if not author:
  43 + return obj.author
  44 + return u'{}\n{}'.format(
  45 + author.get_full_name(),
  46 + author.username,
  47 + )
  48 +
39 def prepare_author_url(self, obj): 49 def prepare_author_url(self, obj):
40 author = obj.get_author() 50 author = obj.get_author()
41 if author: 51 if author:
@@ -65,6 +75,7 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): @@ -65,6 +75,7 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
65 type = indexes.CharField() 75 type = indexes.CharField()
66 icon_name = indexes.CharField() 76 icon_name = indexes.CharField()
67 tag = indexes.CharField(model_attr='status', null=True) 77 tag = indexes.CharField(model_attr='status', null=True)
  78 + author_username = indexes.CharField(null=True)
68 79
69 # trac extra fields 80 # trac extra fields
70 milestone = indexes.CharField(model_attr='milestone', null=True) 81 milestone = indexes.CharField(model_attr='milestone', null=True)
@@ -86,6 +97,15 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable): @@ -86,6 +97,15 @@ class TicketIndex(indexes.SearchIndex, indexes.Indexable):
86 return author.get_full_name() 97 return author.get_full_name()
87 return obj.author 98 return obj.author
88 99
  100 + def prepare_author_username(self, obj):
  101 + author = obj.get_author()
  102 + if not author:
  103 + return obj.author
  104 + return u'{}\n{}'.format(
  105 + author.get_full_name(),
  106 + author.username,
  107 + )
  108 +
89 def prepare_author_url(self, obj): 109 def prepare_author_url(self, obj):
90 author = obj.get_author() 110 author = obj.get_author()
91 if author: 111 if author:
@@ -120,6 +140,7 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): @@ -120,6 +140,7 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
120 modified = indexes.DateTimeField(model_attr='created', null=True) 140 modified = indexes.DateTimeField(model_attr='created', null=True)
121 type = indexes.CharField() 141 type = indexes.CharField()
122 icon_name = indexes.CharField() 142 icon_name = indexes.CharField()
  143 + author_username = indexes.CharField(null=True)
123 144
124 # trac extra fields 145 # trac extra fields
125 repository_name = indexes.CharField(model_attr='repository_name') 146 repository_name = indexes.CharField(model_attr='repository_name')
@@ -137,6 +158,15 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable): @@ -137,6 +158,15 @@ class RevisionIndex(indexes.SearchIndex, indexes.Indexable):
137 return author.get_full_name() 158 return author.get_full_name()
138 return obj.author 159 return obj.author
139 160
  161 + def prepare_author_username(self, obj):
  162 + author = obj.get_author()
  163 + if not author:
  164 + return obj.author
  165 + return u'{}\n{}'.format(
  166 + author.get_full_name(),
  167 + author.username,
  168 + )
  169 +
140 def prepare_author_url(self, obj): 170 def prepare_author_url(self, obj):
141 author = obj.get_author() 171 author = obj.get_author()
142 if author: 172 if author:
src/search/forms.py
@@ -62,7 +62,9 @@ class ColabSearchForm(SearchForm): @@ -62,7 +62,9 @@ class ColabSearchForm(SearchForm):
62 sqs = sqs.order_by(*dict_order['fields']) 62 sqs = sqs.order_by(*dict_order['fields'])
63 63
64 if self.cleaned_data['author']: 64 if self.cleaned_data['author']:
65 - sqs = sqs.filter(author=self.cleaned_data['author']) 65 + sqs = sqs.filter(
  66 + author_username__contains=self.cleaned_data['author']
  67 + )
66 68
67 if self.cleaned_data['milestone']: 69 if self.cleaned_data['milestone']:
68 sqs = sqs.filter(milestone=self.cleaned_data['milestone']) 70 sqs = sqs.filter(milestone=self.cleaned_data['milestone'])
src/super_archives/search_indexes.py
@@ -21,7 +21,9 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable): @@ -21,7 +21,9 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
21 type = indexes.CharField() 21 type = indexes.CharField()
22 icon_name = indexes.CharField() 22 icon_name = indexes.CharField()
23 tag = indexes.CharField(model_attr='mailinglist__name') 23 tag = indexes.CharField(model_attr='mailinglist__name')
  24 + collaborators = indexes.CharField(use_template=True)
24 25
  26 + author_username = indexes.CharField(null=True)
25 mailinglist_url = indexes.CharField( 27 mailinglist_url = indexes.CharField(
26 model_attr='mailinglist__get_absolute_url' 28 model_attr='mailinglist__get_absolute_url'
27 ) 29 )
@@ -35,6 +37,16 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable): @@ -35,6 +37,16 @@ class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
35 def prepare_author(self, obj): 37 def prepare_author(self, obj):
36 return obj.message_set.first().from_address.get_full_name() 38 return obj.message_set.first().from_address.get_full_name()
37 39
  40 + def prepare_author_username(self, obj):
  41 + from_address = obj.message_set.first().from_address
  42 + if not from_address.user:
  43 + return from_address.get_full_name()
  44 +
  45 + return u'{}\n{}'.format(
  46 + from_address.get_full_name(),
  47 + from_address.user.username,
  48 + )
  49 +
38 def prepare_author_url(self, obj): 50 def prepare_author_url(self, obj):
39 first_message = obj.message_set.first() 51 first_message = obj.message_set.first()
40 if first_message.from_address.user: 52 if first_message.from_address.user:
src/super_archives/templates/search/indexes/super_archives/thread_collaborators.txt 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +{% for message in object.message_set.iterator %}
  2 + {% if not spam %}
  3 + {{ message.from_address.get_full_name }}
  4 + {{ message.from_address.get_full_name|slugify }}
  5 + {{ message.from_address.user.username }}
  6 + {% endif %}
  7 +{% endfor %}