diff --git a/colab/accounts/search_indexes.py b/colab/accounts/search_indexes.py index 63b64c2..bd8d7ff 100644 --- a/colab/accounts/search_indexes.py +++ b/colab/accounts/search_indexes.py @@ -1,9 +1,6 @@ # -*- coding: utf-8 -*- from haystack import indexes -# from django.db.models import Count - -from colab.badger.utils import get_users_counters from .models import User @@ -26,30 +23,13 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable): stored=False) webpage = indexes.CharField(model_attr='webpage', null=True, stored=False) message_count = indexes.IntegerField(stored=False) - # changeset_count = indexes.IntegerField(stored=False) - # ticket_count = indexes.IntegerField(stored=False) - # wiki_count = indexes.IntegerField(stored=False) - contribution_count = indexes.IntegerField(stored=False) def get_model(self): return User - @property - def badge_counters(self): - if not hasattr(self, '_badge_counters'): - self._badge_counters = get_users_counters() - return self._badge_counters - def prepare(self, obj): prepared_data = super(UserIndex, self).prepare(obj) - prepared_data['contribution_count'] = sum(( - self.prepared_data['message_count'], - # self.prepared_data['changeset_count'], - # self.prepared_data['ticket_count'], - # self.prepared_data['wiki_count'] - )) - return prepared_data def prepare_description(self, obj): @@ -63,17 +43,5 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable): def prepare_type(self, obj): return u'user' - def prepare_message_count(self, obj): - return self.badge_counters[obj.username]['messages'] - - # def prepare_changeset_count(self, obj): - # return self.badge_counters[obj.username]['revisions'] - - # def prepare_ticket_count(self, obj): - # return self.badge_counters[obj.username]['tickets'] - - # def prepare_wiki_count(self, obj): - # return self.badge_counters[obj.username]['wikis'] - def index_queryset(self, using=None): return self.get_model().objects.filter(is_active=True) diff --git a/colab/badger/__init__.py b/colab/badger/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/colab/badger/__init__.py +++ /dev/null diff --git a/colab/badger/admin.py b/colab/badger/admin.py deleted file mode 100644 index 25cf1f4..0000000 --- a/colab/badger/admin.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.contrib import admin - -from .forms import BadgeForm -from .models import Badge, BadgeI18N - - -class BadgeI18NInline(admin.TabularInline): - model = BadgeI18N - - -class BadgeAdmin(admin.ModelAdmin): - form = BadgeForm - inlines = [BadgeI18NInline, ] - list_display = ['title', 'description', 'order'] - list_editable = ['order', ] - - -admin.site.register(Badge, BadgeAdmin) diff --git a/colab/badger/forms.py b/colab/badger/forms.py deleted file mode 100644 index ca9c507..0000000 --- a/colab/badger/forms.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- - -from django import forms -from django.utils.translation import ugettext_lazy as _ - -from PIL import Image - -from .models import Badge - -try: - from cStringIO import StringIO -except ImportError: - from StringIO import StringIO - - -class BadgeForm(forms.ModelForm): - image = forms.ImageField(label=_(u'Image'), required=False) - - class Meta: - model = Badge - fields = ( - 'title', 'description', 'image', 'user_attr', 'comparison', - 'value', 'awardees' - ) - - def clean_image(self): - if not self.instance.pk and not self.cleaned_data['image']: - raise forms.ValidationError(_(u'You must add an Image')) - return self.cleaned_data['image'] - - def save(self, commit=True): - - instance = super(BadgeForm, self).save(commit=False) - - if self.cleaned_data['image']: - img = Image.open(self.cleaned_data['image']) - img = img.resize((50, 50), Image.ANTIALIAS) - f = StringIO() - img.save(f, 'png') - instance.image_base64 = f.getvalue().encode('base64') - f.close() - - if commit: - instance.save() - - return instance diff --git a/colab/badger/management/__init__.py b/colab/badger/management/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/colab/badger/management/__init__.py +++ /dev/null diff --git a/colab/badger/management/commands/__init__.py b/colab/badger/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/colab/badger/management/commands/__init__.py +++ /dev/null diff --git a/colab/badger/management/commands/rebuild_badges.py b/colab/badger/management/commands/rebuild_badges.py deleted file mode 100644 index 94d547d..0000000 --- a/colab/badger/management/commands/rebuild_badges.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.core.management.base import BaseCommand -from haystack.query import SearchQuerySet - -from colab.accounts.models import User -from colab.badger.models import Badge - - -class Command(BaseCommand): - help = "Rebuild the user's badges." - - def handle(self, *args, **kwargs): - for badge in Badge.objects.filter(type='auto'): - if not badge.comparison: - continue - elif badge.comparison == 'biggest': - order = u'-{}'.format(Badge.USER_ATTR_OPTS[badge.user_attr]) - sqs = SearchQuerySet().filter(type='user') - user = sqs.order_by(order)[0] - badge.awardees.remove(*list(badge.awardees.all())) - badge.awardees.add(User.objects.get(pk=user.pk)) - continue - - comparison = u'__{}'.format(badge.comparison) if badge.comparison \ - is not 'equal' else u'' - - key = u'{}{}'.format( - Badge.USER_ATTR_OPTS[badge.user_attr], - comparison - ) - opts = {key: badge.value} - - sqs = SearchQuerySet().filter( - type='user', - **opts - ) - - # Remove all awardees to make sure that all of then - # still accomplish the necessary to keep the badge - badge.awardees.remove(*list(badge.awardees.all())) - - for user in sqs: - badge.awardees.add(User.objects.get(pk=user.pk)) diff --git a/colab/badger/management/commands/update_badges.py b/colab/badger/management/commands/update_badges.py deleted file mode 100644 index c6b0325..0000000 --- a/colab/badger/management/commands/update_badges.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.core.management.base import BaseCommand -from haystack.query import SearchQuerySet - -from colab.accounts.models import User -from colab.badger.models import Badge - -import logging - - -class Command(BaseCommand): - help = "Update the user's badges" - - def update_badges(self): - for badge in Badge.objects.filter(type='auto'): - if not badge.comparison: - continue - elif badge.comparison == 'biggest': - order = u'-{}'.format(Badge.USER_ATTR_OPTS[badge.user_attr]) - sqs = SearchQuerySet().filter(type='user') - user = sqs.order_by(order)[0] - badge.awardees.add(User.objects.get(pk=user.pk)) - continue - - comparison = u'__{}'.format(badge.comparison) if badge.comparison \ - is not 'equal' else u'' - - key = u'{}{}'.format( - Badge.USER_ATTR_OPTS[badge.user_attr], - comparison - ) - opts = {key: badge.value} - - sqs = SearchQuerySet().filter(type='user', **opts) - - for user in sqs: - badge.awardees.add(User.objects.get(pk=user.pk)) - - def handle(self, *args, **kwargs): - try: - self.update_badges() - except Exception as e: - logging.exception(e) - raise diff --git a/colab/badger/migrations/0001_initial.py b/colab/badger/migrations/0001_initial.py deleted file mode 100644 index 2909a1a..0000000 --- a/colab/badger/migrations/0001_initial.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -from django.conf import settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Badge', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('title', models.CharField(max_length=200, null=True, verbose_name='Title', blank=True)), - ('description', models.CharField(max_length=200, null=True, verbose_name='Description', blank=True)), - ('image_base64', models.TextField(verbose_name='Image')), - ('type', models.CharField(max_length=200, verbose_name='Type', choices=[('auto', 'Automatically'), ('manual', 'Manual')])), - ('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')])), - ('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')])), - ('value', models.PositiveSmallIntegerField(null=True, verbose_name='Value', blank=True)), - ('order', models.PositiveSmallIntegerField(default=100, verbose_name='Order')), - ('awardees', models.ManyToManyField(to=settings.AUTH_USER_MODEL, null=True, verbose_name='Awardees', blank=True)), - ], - options={ - 'ordering': ['order'], - 'verbose_name': 'Badge', - 'verbose_name_plural': 'Badges', - }, - bases=(models.Model,), - ), - migrations.CreateModel( - name='BadgeI18N', - fields=[ - ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('i18n_language', models.CharField(max_length=10, verbose_name='language', choices=[(b'pt-br', 'Portuguese'), (b'es', 'Spanish')])), - ('title', models.CharField(max_length=200, null=True, verbose_name='Title', blank=True)), - ('description', models.CharField(max_length=200, null=True, verbose_name='Description', blank=True)), - ('i18n_source', models.ForeignKey(related_name=b'translations', editable=False, to='badger.Badge', verbose_name='source')), - ], - options={ - }, - bases=(models.Model,), - ), - migrations.AlterUniqueTogether( - name='badgei18n', - unique_together=set([('i18n_source', 'i18n_language')]), - ), - ] diff --git a/colab/badger/migrations/__init__.py b/colab/badger/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/colab/badger/migrations/__init__.py +++ /dev/null diff --git a/colab/badger/models.py b/colab/badger/models.py deleted file mode 100644 index 9820a9d..0000000 --- a/colab/badger/models.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.conf import settings -from django.db import models -from django.utils.translation import ugettext_lazy as _ -from i18n_model.models import I18nModel - - -class Badge(models.Model): - COMPARISON_CHOICES = ( - (u'gte', _(u'Greater than or equal')), - (u'lte', _(u'less than or equal')), - (u'equal', _(u'Equal')), - (u'biggest', _(u'Biggest')), - ) - TYPE_CHOICES = ( - (u'auto', _(u'Automatically')), - (u'manual', _(u'Manual')), - ) - USER_ATTR_CHOICES = ( - (u'messages', _(u'Messages')), - (u'contributions', _(u'Contributions')), - (u'wikis', _(u'Wikis')), - (u'revisions', _(u'Revisions')), - (u'tickets', _(u'Ticket')), - ) - USER_ATTR_OPTS = { - u'messages': u'message_count', - u'revisions': u'changeset_count', - u'tickets': u'ticket_count', - u'wikis': u'wiki_count', - u'contributions': u'contribution_count', - } - - title = models.CharField(_(u'Title'), max_length=200, blank=True, - null=True) - description = models.CharField(_(u'Description'), max_length=200, - blank=True, null=True) - image_base64 = models.TextField(_(u'Image')) - type = models.CharField(_(u'Type'), max_length=200, choices=TYPE_CHOICES) - user_attr = models.CharField( - _(u'User attribute'), max_length=100, - choices=USER_ATTR_CHOICES, - blank=True, - null=True, - ) - comparison = models.CharField( - _(u'Comparison'), - max_length=10, - choices=COMPARISON_CHOICES, - blank=True, - null=True - ) - value = models.PositiveSmallIntegerField( - _(u'Value'), - blank=True, - null=True - ) - awardees = models.ManyToManyField( - settings.AUTH_USER_MODEL, - verbose_name=_(u'Awardees'), - blank=True, - null=True - ) - order = models.PositiveSmallIntegerField(_(u'Order'), default=100) - - class Meta: - verbose_name = _(u'Badge') - verbose_name_plural = _(u'Badges') - ordering = ['order', ] - - def __unicode__(self): - return u'{} ({}, {})'.format( - self.title, - self.get_user_attr_display(), - self.get_type_display(), - ) - - -class BadgeI18N(I18nModel): - class Meta: - source_model = Badge - translation_fields = ('title', 'description') diff --git a/colab/badger/tests.py b/colab/badger/tests.py deleted file mode 100644 index 55be646..0000000 --- a/colab/badger/tests.py +++ /dev/null @@ -1,4 +0,0 @@ -# uncomment the import if you really use. -# from django.test import TestCase - -# Create your tests here. diff --git a/colab/badger/utils.py b/colab/badger/utils.py deleted file mode 100644 index 3037ca0..0000000 --- a/colab/badger/utils.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.db.models import Count - -# from proxy.trac.models import (Ticket, Wiki) -# from proxy.trac.models import (Revision, WikiCollabCount, TicketCollabCount) -from colab.accounts.models import User - - -# def get_wiki_counters(): -# return {author: count for author, count in -# WikiCollabCount.objects.values_list()} - - -# def get_revision_counters(): -# return { -# author: count for author, count in Revision.objects.values_list( -# 'author' -# ).annotate(count=Count('author')) -# } - - -# def get_ticket_counters(): -# return {author: count for author, count in -# TicketCollabCount.objects.values_list()} - - -def get_users_counters(): - # wiki_counters = get_wiki_counters() - # revision_counters = get_revision_counters() - # ticket_counters = get_ticket_counters() - - users_counters = {} - for user in User.objects.annotate(message_count=Count('emails__message')): - users_counters[user.username] = { - 'messages': user.message_count, - # 'wikis': wiki_counters.get(user.username, 0), - # 'revisions': revision_counters.get(user.username, 0), - # 'tickets': ticket_counters.get(user.username, 0), - } - return users_counters diff --git a/colab/badger/views.py b/colab/badger/views.py deleted file mode 100644 index 70ce736..0000000 --- a/colab/badger/views.py +++ /dev/null @@ -1,4 +0,0 @@ -# uncomment the import if you really use. -# from django.shortcuts import render - -# Create your views here. diff --git a/colab/locale/en/LC_MESSAGES/django.po b/colab/locale/en/LC_MESSAGES/django.po index d55d2fe..9c705f8 100644 --- a/colab/locale/en/LC_MESSAGES/django.po +++ b/colab/locale/en/LC_MESSAGES/django.po @@ -126,12 +126,11 @@ msgstr "" msgid "Register" msgstr "" -#: accounts/templates/accounts/user_detail.html:8 badger/models.py:21 +#: accounts/templates/accounts/user_detail.html:8 msgid "Messages" msgstr "" -#: accounts/templates/accounts/user_detail.html:9 badger/models.py:22 -#: templates/home.html:7 +#: accounts/templates/accounts/user_detail.html:9 msgid "Contributions" msgstr "" @@ -175,7 +174,7 @@ msgstr "" msgid "Participation by Group" msgstr "" -#: accounts/templates/accounts/user_detail.html:132 badger/models.py:69 +#: accounts/templates/accounts/user_detail.html:132 msgid "Badges" msgstr "" @@ -291,87 +290,18 @@ msgstr "" msgid "You've changed your password successfully!" msgstr "" -#: badger/forms.py:19 badger/models.py:39 settings.py:160 +#: settings.py:160 msgid "Image" msgstr "" -#: badger/forms.py:30 -msgid "You must add an Image" -msgstr "" - -#: badger/models.py:11 -msgid "Greater than or equal" -msgstr "" - -#: badger/models.py:12 -msgid "less than or equal" -msgstr "" - -#: badger/models.py:13 -msgid "Equal" -msgstr "" - -#: badger/models.py:14 -msgid "Biggest" -msgstr "" - -#: badger/models.py:17 -msgid "Automatically" -msgstr "" - -#: badger/models.py:18 -msgid "Manual" -msgstr "" - -#: badger/models.py:23 -msgid "Wikis" -msgstr "" - -#: badger/models.py:24 -msgid "Revisions" -msgstr "" - -#: badger/models.py:25 #: search/templates/search/includes/search_filters.html:122 msgid "Ticket" msgstr "" -#: badger/models.py:35 -msgid "Title" -msgstr "" - -#: badger/models.py:37 -msgid "Description" -msgstr "" - -#: badger/models.py:40 search/forms.py:18 +#: search/forms.py:18 msgid "Type" msgstr "" -#: badger/models.py:42 -msgid "User attribute" -msgstr "" - -#: badger/models.py:48 -msgid "Comparison" -msgstr "" - -#: badger/models.py:55 -msgid "Value" -msgstr "" - -#: badger/models.py:61 -msgid "Awardees" -msgstr "" - -#: badger/models.py:65 -msgid "Order" -msgstr "" - -#: badger/models.py:68 -msgid "Badge" -msgstr "" - #: home/context_processors.py:15 msgid "Fork me!" msgstr "" diff --git a/colab/locale/pt_BR/LC_MESSAGES/django.po b/colab/locale/pt_BR/LC_MESSAGES/django.po index 8cb6132..abce881 100644 --- a/colab/locale/pt_BR/LC_MESSAGES/django.po +++ b/colab/locale/pt_BR/LC_MESSAGES/django.po @@ -149,12 +149,11 @@ msgid "Register" msgstr "Cadastre-se" #: colab/accounts/templates/accounts/user_detail.html:8 -#: colab/badger/models.py:21 msgid "Messages" msgstr "Mensagens" #: colab/accounts/templates/accounts/user_detail.html:9 -#: colab/badger/models.py:22 colab/templates/home.html:7 +#: colab/templates/home.html:7 msgid "Contributions" msgstr "Contribuições" @@ -199,7 +198,6 @@ msgid "Participation by Group" msgstr "Participação por grupo" #: colab/accounts/templates/accounts/user_detail.html:132 -#: colab/badger/models.py:69 msgid "Badges" msgstr "Medalhas" @@ -365,87 +363,18 @@ msgstr "Nos enviamos o email com as intruções para mudança de senha. Em breve msgid "Your password has been set. You may go ahead and log in now." msgstr "Sua senha foi redefinida. Você pode prosseguir e autenticar agora." -#: colab/badger/forms.py:19 colab/badger/models.py:39 colab/settings.py:160 +#: colab/settings.py:160 msgid "Image" msgstr "Imagem" -#: colab/badger/forms.py:30 -msgid "You must add an Image" -msgstr "Você deve adicionar uma imagem" - -#: colab/badger/models.py:11 -msgid "Greater than or equal" -msgstr "Maior que ou igual" - -#: colab/badger/models.py:12 -msgid "less than or equal" -msgstr "menor que ou igual" - -#: colab/badger/models.py:13 -msgid "Equal" -msgstr "Igual" - -#: colab/badger/models.py:14 -msgid "Biggest" -msgstr "Maior" - -#: colab/badger/models.py:17 -msgid "Automatically" -msgstr "Automaticamente" - -#: colab/badger/models.py:18 -msgid "Manual" -msgstr "Manual" - -#: colab/badger/models.py:23 -msgid "Wikis" -msgstr "Wikis" - -#: colab/badger/models.py:24 -msgid "Revisions" -msgstr "Conjunto de mudanças" - -#: colab/badger/models.py:25 #: colab/search/templates/search/includes/search_filters.html:122 msgid "Ticket" msgstr "Tíquetes" -#: colab/badger/models.py:35 -msgid "Title" -msgstr "Título" - -#: colab/badger/models.py:37 -msgid "Description" -msgstr "Descrição" - -#: colab/badger/models.py:40 colab/search/forms.py:18 +#: colab/search/forms.py:18 msgid "Type" msgstr "Tipo" -#: colab/badger/models.py:42 -msgid "User attribute" -msgstr "Atributo do usuário" - -#: colab/badger/models.py:48 -msgid "Comparison" -msgstr "Comparação" - -#: colab/badger/models.py:55 -msgid "Value" -msgstr "Valor" - -#: colab/badger/models.py:61 -msgid "Awardees" -msgstr "Premiados" - -#: colab/badger/models.py:65 -msgid "Order" -msgstr "Ordem" - -#: colab/badger/models.py:68 -msgid "Badge" -msgstr "Medalha" - #: colab/home/context_processors.py:20 msgid "Fork me!" msgstr "Fork me!" diff --git a/colab/settings.py b/colab/settings.py index 91f2624..5433388 100644 --- a/colab/settings.py +++ b/colab/settings.py @@ -57,7 +57,6 @@ INSTALLED_APPS = ( 'colab.api', 'colab.rss', 'colab.search', - 'colab.badger', 'colab.tz', ) -- libgit2 0.21.2