Commit bdbb7a9314e9b6fc525151fd7c156c4c703424ae

Authored by Gust
Committed by Luciano Prestes
1 parent 6f10e8f3

Removing badger from colab

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>

Signed-off-by: Gust <darksshades@hotmail.com>
colab/accounts/search_indexes.py
1 1 # -*- coding: utf-8 -*-
2 2  
3 3 from haystack import indexes
4   -# from django.db.models import Count
5   -
6   -from colab.badger.utils import get_users_counters
7 4 from .models import User
8 5  
9 6  
... ... @@ -26,30 +23,13 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable):
26 23 stored=False)
27 24 webpage = indexes.CharField(model_attr='webpage', null=True, stored=False)
28 25 message_count = indexes.IntegerField(stored=False)
29   - # changeset_count = indexes.IntegerField(stored=False)
30   - # ticket_count = indexes.IntegerField(stored=False)
31   - # wiki_count = indexes.IntegerField(stored=False)
32   - contribution_count = indexes.IntegerField(stored=False)
33 26  
34 27 def get_model(self):
35 28 return User
36 29  
37   - @property
38   - def badge_counters(self):
39   - if not hasattr(self, '_badge_counters'):
40   - self._badge_counters = get_users_counters()
41   - return self._badge_counters
42   -
43 30 def prepare(self, obj):
44 31 prepared_data = super(UserIndex, self).prepare(obj)
45 32  
46   - prepared_data['contribution_count'] = sum((
47   - self.prepared_data['message_count'],
48   - # self.prepared_data['changeset_count'],
49   - # self.prepared_data['ticket_count'],
50   - # self.prepared_data['wiki_count']
51   - ))
52   -
53 33 return prepared_data
54 34  
55 35 def prepare_description(self, obj):
... ... @@ -63,17 +43,5 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable):
63 43 def prepare_type(self, obj):
64 44 return u'user'
65 45  
66   - def prepare_message_count(self, obj):
67   - return self.badge_counters[obj.username]['messages']
68   -
69   - # def prepare_changeset_count(self, obj):
70   - # return self.badge_counters[obj.username]['revisions']
71   -
72   - # def prepare_ticket_count(self, obj):
73   - # return self.badge_counters[obj.username]['tickets']
74   -
75   - # def prepare_wiki_count(self, obj):
76   - # return self.badge_counters[obj.username]['wikis']
77   -
78 46 def index_queryset(self, using=None):
79 47 return self.get_model().objects.filter(is_active=True)
... ...
colab/badger/__init__.py
colab/badger/admin.py
... ... @@ -1,20 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django.contrib import admin
4   -
5   -from .forms import BadgeForm
6   -from .models import Badge, BadgeI18N
7   -
8   -
9   -class BadgeI18NInline(admin.TabularInline):
10   - model = BadgeI18N
11   -
12   -
13   -class BadgeAdmin(admin.ModelAdmin):
14   - form = BadgeForm
15   - inlines = [BadgeI18NInline, ]
16   - list_display = ['title', 'description', 'order']
17   - list_editable = ['order', ]
18   -
19   -
20   -admin.site.register(Badge, BadgeAdmin)
colab/badger/forms.py
... ... @@ -1,46 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django import forms
4   -from django.utils.translation import ugettext_lazy as _
5   -
6   -from PIL import Image
7   -
8   -from .models import Badge
9   -
10   -try:
11   - from cStringIO import StringIO
12   -except ImportError:
13   - from StringIO import StringIO
14   -
15   -
16   -class BadgeForm(forms.ModelForm):
17   - image = forms.ImageField(label=_(u'Image'), required=False)
18   -
19   - class Meta:
20   - model = Badge
21   - fields = (
22   - 'title', 'description', 'image', 'user_attr', 'comparison',
23   - 'value', 'awardees'
24   - )
25   -
26   - def clean_image(self):
27   - if not self.instance.pk and not self.cleaned_data['image']:
28   - raise forms.ValidationError(_(u'You must add an Image'))
29   - return self.cleaned_data['image']
30   -
31   - def save(self, commit=True):
32   -
33   - instance = super(BadgeForm, self).save(commit=False)
34   -
35   - if self.cleaned_data['image']:
36   - img = Image.open(self.cleaned_data['image'])
37   - img = img.resize((50, 50), Image.ANTIALIAS)
38   - f = StringIO()
39   - img.save(f, 'png')
40   - instance.image_base64 = f.getvalue().encode('base64')
41   - f.close()
42   -
43   - if commit:
44   - instance.save()
45   -
46   - return instance
colab/badger/management/__init__.py
colab/badger/management/commands/__init__.py
colab/badger/management/commands/rebuild_badges.py
... ... @@ -1,44 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django.core.management.base import BaseCommand
4   -from haystack.query import SearchQuerySet
5   -
6   -from colab.accounts.models import User
7   -from colab.badger.models import Badge
8   -
9   -
10   -class Command(BaseCommand):
11   - help = "Rebuild the user's badges."
12   -
13   - def handle(self, *args, **kwargs):
14   - for badge in Badge.objects.filter(type='auto'):
15   - if not badge.comparison:
16   - continue
17   - elif badge.comparison == 'biggest':
18   - order = u'-{}'.format(Badge.USER_ATTR_OPTS[badge.user_attr])
19   - sqs = SearchQuerySet().filter(type='user')
20   - user = sqs.order_by(order)[0]
21   - badge.awardees.remove(*list(badge.awardees.all()))
22   - badge.awardees.add(User.objects.get(pk=user.pk))
23   - continue
24   -
25   - comparison = u'__{}'.format(badge.comparison) if badge.comparison \
26   - is not 'equal' else u''
27   -
28   - key = u'{}{}'.format(
29   - Badge.USER_ATTR_OPTS[badge.user_attr],
30   - comparison
31   - )
32   - opts = {key: badge.value}
33   -
34   - sqs = SearchQuerySet().filter(
35   - type='user',
36   - **opts
37   - )
38   -
39   - # Remove all awardees to make sure that all of then
40   - # still accomplish the necessary to keep the badge
41   - badge.awardees.remove(*list(badge.awardees.all()))
42   -
43   - for user in sqs:
44   - badge.awardees.add(User.objects.get(pk=user.pk))
colab/badger/management/commands/update_badges.py
... ... @@ -1,45 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django.core.management.base import BaseCommand
4   -from haystack.query import SearchQuerySet
5   -
6   -from colab.accounts.models import User
7   -from colab.badger.models import Badge
8   -
9   -import logging
10   -
11   -
12   -class Command(BaseCommand):
13   - help = "Update the user's badges"
14   -
15   - def update_badges(self):
16   - for badge in Badge.objects.filter(type='auto'):
17   - if not badge.comparison:
18   - continue
19   - elif badge.comparison == 'biggest':
20   - order = u'-{}'.format(Badge.USER_ATTR_OPTS[badge.user_attr])
21   - sqs = SearchQuerySet().filter(type='user')
22   - user = sqs.order_by(order)[0]
23   - badge.awardees.add(User.objects.get(pk=user.pk))
24   - continue
25   -
26   - comparison = u'__{}'.format(badge.comparison) if badge.comparison \
27   - is not 'equal' else u''
28   -
29   - key = u'{}{}'.format(
30   - Badge.USER_ATTR_OPTS[badge.user_attr],
31   - comparison
32   - )
33   - opts = {key: badge.value}
34   -
35   - sqs = SearchQuerySet().filter(type='user', **opts)
36   -
37   - for user in sqs:
38   - badge.awardees.add(User.objects.get(pk=user.pk))
39   -
40   - def handle(self, *args, **kwargs):
41   - try:
42   - self.update_badges()
43   - except Exception as e:
44   - logging.exception(e)
45   - raise
colab/badger/migrations/0001_initial.py
... ... @@ -1,53 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -from __future__ import unicode_literals
3   -
4   -from django.db import models, migrations
5   -from django.conf import settings
6   -
7   -
8   -class Migration(migrations.Migration):
9   -
10   - dependencies = [
11   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12   - ]
13   -
14   - operations = [
15   - migrations.CreateModel(
16   - name='Badge',
17   - fields=[
18   - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
19   - ('title', models.CharField(max_length=200, null=True, verbose_name='Title', blank=True)),
20   - ('description', models.CharField(max_length=200, null=True, verbose_name='Description', blank=True)),
21   - ('image_base64', models.TextField(verbose_name='Image')),
22   - ('type', models.CharField(max_length=200, verbose_name='Type', choices=[('auto', 'Automatically'), ('manual', 'Manual')])),
23   - ('user_attr', models.CharField(blank=True, max_length=100, null=True, verbose_name='User attribute', choices=[('messages', 'Messages'), ('contributions', 'Contributions'), ('wikis', 'Wikis'), ('revisions', 'Revisions'), ('tickets', 'Ticket')])),
24   - ('comparison', models.CharField(blank=True, max_length=10, null=True, verbose_name='Comparison', choices=[('gte', 'Greater than or equal'), ('lte', 'less than or equal'), ('equal', 'Equal'), ('biggest', 'Biggest')])),
25   - ('value', models.PositiveSmallIntegerField(null=True, verbose_name='Value', blank=True)),
26   - ('order', models.PositiveSmallIntegerField(default=100, verbose_name='Order')),
27   - ('awardees', models.ManyToManyField(to=settings.AUTH_USER_MODEL, null=True, verbose_name='Awardees', blank=True)),
28   - ],
29   - options={
30   - 'ordering': ['order'],
31   - 'verbose_name': 'Badge',
32   - 'verbose_name_plural': 'Badges',
33   - },
34   - bases=(models.Model,),
35   - ),
36   - migrations.CreateModel(
37   - name='BadgeI18N',
38   - fields=[
39   - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
40   - ('i18n_language', models.CharField(max_length=10, verbose_name='language', choices=[(b'pt-br', 'Portuguese'), (b'es', 'Spanish')])),
41   - ('title', models.CharField(max_length=200, null=True, verbose_name='Title', blank=True)),
42   - ('description', models.CharField(max_length=200, null=True, verbose_name='Description', blank=True)),
43   - ('i18n_source', models.ForeignKey(related_name=b'translations', editable=False, to='badger.Badge', verbose_name='source')),
44   - ],
45   - options={
46   - },
47   - bases=(models.Model,),
48   - ),
49   - migrations.AlterUniqueTogether(
50   - name='badgei18n',
51   - unique_together=set([('i18n_source', 'i18n_language')]),
52   - ),
53   - ]
colab/badger/migrations/__init__.py
colab/badger/models.py
... ... @@ -1,83 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django.conf import settings
4   -from django.db import models
5   -from django.utils.translation import ugettext_lazy as _
6   -from i18n_model.models import I18nModel
7   -
8   -
9   -class Badge(models.Model):
10   - COMPARISON_CHOICES = (
11   - (u'gte', _(u'Greater than or equal')),
12   - (u'lte', _(u'less than or equal')),
13   - (u'equal', _(u'Equal')),
14   - (u'biggest', _(u'Biggest')),
15   - )
16   - TYPE_CHOICES = (
17   - (u'auto', _(u'Automatically')),
18   - (u'manual', _(u'Manual')),
19   - )
20   - USER_ATTR_CHOICES = (
21   - (u'messages', _(u'Messages')),
22   - (u'contributions', _(u'Contributions')),
23   - (u'wikis', _(u'Wikis')),
24   - (u'revisions', _(u'Revisions')),
25   - (u'tickets', _(u'Ticket')),
26   - )
27   - USER_ATTR_OPTS = {
28   - u'messages': u'message_count',
29   - u'revisions': u'changeset_count',
30   - u'tickets': u'ticket_count',
31   - u'wikis': u'wiki_count',
32   - u'contributions': u'contribution_count',
33   - }
34   -
35   - title = models.CharField(_(u'Title'), max_length=200, blank=True,
36   - null=True)
37   - description = models.CharField(_(u'Description'), max_length=200,
38   - blank=True, null=True)
39   - image_base64 = models.TextField(_(u'Image'))
40   - type = models.CharField(_(u'Type'), max_length=200, choices=TYPE_CHOICES)
41   - user_attr = models.CharField(
42   - _(u'User attribute'), max_length=100,
43   - choices=USER_ATTR_CHOICES,
44   - blank=True,
45   - null=True,
46   - )
47   - comparison = models.CharField(
48   - _(u'Comparison'),
49   - max_length=10,
50   - choices=COMPARISON_CHOICES,
51   - blank=True,
52   - null=True
53   - )
54   - value = models.PositiveSmallIntegerField(
55   - _(u'Value'),
56   - blank=True,
57   - null=True
58   - )
59   - awardees = models.ManyToManyField(
60   - settings.AUTH_USER_MODEL,
61   - verbose_name=_(u'Awardees'),
62   - blank=True,
63   - null=True
64   - )
65   - order = models.PositiveSmallIntegerField(_(u'Order'), default=100)
66   -
67   - class Meta:
68   - verbose_name = _(u'Badge')
69   - verbose_name_plural = _(u'Badges')
70   - ordering = ['order', ]
71   -
72   - def __unicode__(self):
73   - return u'{} ({}, {})'.format(
74   - self.title,
75   - self.get_user_attr_display(),
76   - self.get_type_display(),
77   - )
78   -
79   -
80   -class BadgeI18N(I18nModel):
81   - class Meta:
82   - source_model = Badge
83   - translation_fields = ('title', 'description')
colab/badger/tests.py
... ... @@ -1,4 +0,0 @@
1   -# uncomment the import if you really use.
2   -# from django.test import TestCase
3   -
4   -# Create your tests here.
colab/badger/utils.py
... ... @@ -1,41 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -
3   -from django.db.models import Count
4   -
5   -# from proxy.trac.models import (Ticket, Wiki)
6   -# from proxy.trac.models import (Revision, WikiCollabCount, TicketCollabCount)
7   -from colab.accounts.models import User
8   -
9   -
10   -# def get_wiki_counters():
11   -# return {author: count for author, count in
12   -# WikiCollabCount.objects.values_list()}
13   -
14   -
15   -# def get_revision_counters():
16   -# return {
17   -# author: count for author, count in Revision.objects.values_list(
18   -# 'author'
19   -# ).annotate(count=Count('author'))
20   -# }
21   -
22   -
23   -# def get_ticket_counters():
24   -# return {author: count for author, count in
25   -# TicketCollabCount.objects.values_list()}
26   -
27   -
28   -def get_users_counters():
29   - # wiki_counters = get_wiki_counters()
30   - # revision_counters = get_revision_counters()
31   - # ticket_counters = get_ticket_counters()
32   -
33   - users_counters = {}
34   - for user in User.objects.annotate(message_count=Count('emails__message')):
35   - users_counters[user.username] = {
36   - 'messages': user.message_count,
37   - # 'wikis': wiki_counters.get(user.username, 0),
38   - # 'revisions': revision_counters.get(user.username, 0),
39   - # 'tickets': ticket_counters.get(user.username, 0),
40   - }
41   - return users_counters
colab/badger/views.py
... ... @@ -1,4 +0,0 @@
1   -# uncomment the import if you really use.
2   -# from django.shortcuts import render
3   -
4   -# Create your views here.
colab/locale/en/LC_MESSAGES/django.po
... ... @@ -126,12 +126,11 @@ msgstr &quot;&quot;
126 126 msgid "Register"
127 127 msgstr ""
128 128  
129   -#: accounts/templates/accounts/user_detail.html:8 badger/models.py:21
  129 +#: accounts/templates/accounts/user_detail.html:8
130 130 msgid "Messages"
131 131 msgstr ""
132 132  
133   -#: accounts/templates/accounts/user_detail.html:9 badger/models.py:22
134   -#: templates/home.html:7
  133 +#: accounts/templates/accounts/user_detail.html:9
135 134 msgid "Contributions"
136 135 msgstr ""
137 136  
... ... @@ -175,7 +174,7 @@ msgstr &quot;&quot;
175 174 msgid "Participation by Group"
176 175 msgstr ""
177 176  
178   -#: accounts/templates/accounts/user_detail.html:132 badger/models.py:69
  177 +#: accounts/templates/accounts/user_detail.html:132
179 178 msgid "Badges"
180 179 msgstr ""
181 180  
... ... @@ -291,87 +290,18 @@ msgstr &quot;&quot;
291 290 msgid "You've changed your password successfully!"
292 291 msgstr ""
293 292  
294   -#: badger/forms.py:19 badger/models.py:39 settings.py:160
  293 +#: settings.py:160
295 294 msgid "Image"
296 295 msgstr ""
297 296  
298   -#: badger/forms.py:30
299   -msgid "You must add an Image"
300   -msgstr ""
301   -
302   -#: badger/models.py:11
303   -msgid "Greater than or equal"
304   -msgstr ""
305   -
306   -#: badger/models.py:12
307   -msgid "less than or equal"
308   -msgstr ""
309   -
310   -#: badger/models.py:13
311   -msgid "Equal"
312   -msgstr ""
313   -
314   -#: badger/models.py:14
315   -msgid "Biggest"
316   -msgstr ""
317   -
318   -#: badger/models.py:17
319   -msgid "Automatically"
320   -msgstr ""
321   -
322   -#: badger/models.py:18
323   -msgid "Manual"
324   -msgstr ""
325   -
326   -#: badger/models.py:23
327   -msgid "Wikis"
328   -msgstr ""
329   -
330   -#: badger/models.py:24
331   -msgid "Revisions"
332   -msgstr ""
333   -
334   -#: badger/models.py:25
335 297 #: search/templates/search/includes/search_filters.html:122
336 298 msgid "Ticket"
337 299 msgstr ""
338 300  
339   -#: badger/models.py:35
340   -msgid "Title"
341   -msgstr ""
342   -
343   -#: badger/models.py:37
344   -msgid "Description"
345   -msgstr ""
346   -
347   -#: badger/models.py:40 search/forms.py:18
  301 +#: search/forms.py:18
348 302 msgid "Type"
349 303 msgstr ""
350 304  
351   -#: badger/models.py:42
352   -msgid "User attribute"
353   -msgstr ""
354   -
355   -#: badger/models.py:48
356   -msgid "Comparison"
357   -msgstr ""
358   -
359   -#: badger/models.py:55
360   -msgid "Value"
361   -msgstr ""
362   -
363   -#: badger/models.py:61
364   -msgid "Awardees"
365   -msgstr ""
366   -
367   -#: badger/models.py:65
368   -msgid "Order"
369   -msgstr ""
370   -
371   -#: badger/models.py:68
372   -msgid "Badge"
373   -msgstr ""
374   -
375 305 #: home/context_processors.py:15
376 306 msgid "Fork me!"
377 307 msgstr ""
... ...
colab/locale/pt_BR/LC_MESSAGES/django.po
... ... @@ -149,12 +149,11 @@ msgid &quot;Register&quot;
149 149 msgstr "Cadastre-se"
150 150  
151 151 #: colab/accounts/templates/accounts/user_detail.html:8
152   -#: colab/badger/models.py:21
153 152 msgid "Messages"
154 153 msgstr "Mensagens"
155 154  
156 155 #: colab/accounts/templates/accounts/user_detail.html:9
157   -#: colab/badger/models.py:22 colab/templates/home.html:7
  156 +#: colab/templates/home.html:7
158 157 msgid "Contributions"
159 158 msgstr "Contribuições"
160 159  
... ... @@ -199,7 +198,6 @@ msgid &quot;Participation by Group&quot;
199 198 msgstr "Participação por grupo"
200 199  
201 200 #: colab/accounts/templates/accounts/user_detail.html:132
202   -#: colab/badger/models.py:69
203 201 msgid "Badges"
204 202 msgstr "Medalhas"
205 203  
... ... @@ -365,87 +363,18 @@ msgstr &quot;Nos enviamos o email com as intruções para mudança de senha. Em breve
365 363 msgid "Your password has been set. You may go ahead and log in now."
366 364 msgstr "Sua senha foi redefinida. Você pode prosseguir e autenticar agora."
367 365  
368   -#: colab/badger/forms.py:19 colab/badger/models.py:39 colab/settings.py:160
  366 +#: colab/settings.py:160
369 367 msgid "Image"
370 368 msgstr "Imagem"
371 369  
372   -#: colab/badger/forms.py:30
373   -msgid "You must add an Image"
374   -msgstr "Você deve adicionar uma imagem"
375   -
376   -#: colab/badger/models.py:11
377   -msgid "Greater than or equal"
378   -msgstr "Maior que ou igual"
379   -
380   -#: colab/badger/models.py:12
381   -msgid "less than or equal"
382   -msgstr "menor que ou igual"
383   -
384   -#: colab/badger/models.py:13
385   -msgid "Equal"
386   -msgstr "Igual"
387   -
388   -#: colab/badger/models.py:14
389   -msgid "Biggest"
390   -msgstr "Maior"
391   -
392   -#: colab/badger/models.py:17
393   -msgid "Automatically"
394   -msgstr "Automaticamente"
395   -
396   -#: colab/badger/models.py:18
397   -msgid "Manual"
398   -msgstr "Manual"
399   -
400   -#: colab/badger/models.py:23
401   -msgid "Wikis"
402   -msgstr "Wikis"
403   -
404   -#: colab/badger/models.py:24
405   -msgid "Revisions"
406   -msgstr "Conjunto de mudanças"
407   -
408   -#: colab/badger/models.py:25
409 370 #: colab/search/templates/search/includes/search_filters.html:122
410 371 msgid "Ticket"
411 372 msgstr "Tíquetes"
412 373  
413   -#: colab/badger/models.py:35
414   -msgid "Title"
415   -msgstr "Título"
416   -
417   -#: colab/badger/models.py:37
418   -msgid "Description"
419   -msgstr "Descrição"
420   -
421   -#: colab/badger/models.py:40 colab/search/forms.py:18
  374 +#: colab/search/forms.py:18
422 375 msgid "Type"
423 376 msgstr "Tipo"
424 377  
425   -#: colab/badger/models.py:42
426   -msgid "User attribute"
427   -msgstr "Atributo do usuário"
428   -
429   -#: colab/badger/models.py:48
430   -msgid "Comparison"
431   -msgstr "Comparação"
432   -
433   -#: colab/badger/models.py:55
434   -msgid "Value"
435   -msgstr "Valor"
436   -
437   -#: colab/badger/models.py:61
438   -msgid "Awardees"
439   -msgstr "Premiados"
440   -
441   -#: colab/badger/models.py:65
442   -msgid "Order"
443   -msgstr "Ordem"
444   -
445   -#: colab/badger/models.py:68
446   -msgid "Badge"
447   -msgstr "Medalha"
448   -
449 378 #: colab/home/context_processors.py:20
450 379 msgid "Fork me!"
451 380 msgstr "Fork me!"
... ...
colab/settings.py
... ... @@ -57,7 +57,6 @@ INSTALLED_APPS = (
57 57 'colab.api',
58 58 'colab.rss',
59 59 'colab.search',
60   - 'colab.badger',
61 60 'colab.tz',
62 61 )
63 62  
... ...