summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--askbot/management/commands/update_has_valid_gravatar.py15
-rw-r--r--askbot/migrations/0043_add_has_valid_gravatar.py317
-rw-r--r--askbot/models/__init__.py26
-rw-r--r--askbot/models/question.py2
-rw-r--r--askbot/skins/default/templates/main_page/javascript.html4
-rw-r--r--askbot/urls.py5
-rw-r--r--askbot/views/users.py7
7 files changed, 27 insertions, 349 deletions
diff --git a/askbot/management/commands/update_has_valid_gravatar.py b/askbot/management/commands/update_has_valid_gravatar.py
deleted file mode 100644
index 8cd40e7d..00000000
--- a/askbot/management/commands/update_has_valid_gravatar.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from django.core.management.base import NoArgsCommand
-from askbot.models import User
-
-class Command(NoArgsCommand):
-
- def handle_noargs(self, **options):
- users = User.objects.all()
- has_avatar = User.objects.filter(has_valid_gravatar= True).count()
- print '%s users in total, %s have valid avatar' % (users.count(), has_avatar)
- for user in users:
- user.update_has_valid_gravatar()
-
- print 'Updated all the users'
- has_avatar = User.objects.filter(has_valid_gravatar= True).count()
- print '%s users in total, %s have valid avatar' % (users.count(), has_avatar)
diff --git a/askbot/migrations/0043_add_has_valid_gravatar.py b/askbot/migrations/0043_add_has_valid_gravatar.py
deleted file mode 100644
index 6f37b94c..00000000
--- a/askbot/migrations/0043_add_has_valid_gravatar.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- try:
- db.add_column(
- u'auth_user',
- 'has_valid_gravatar',
- self.gf(
- 'django.db.models.fields.BooleanField'
- )(default = False)
- )
- except:
- pass
-
-
- def backwards(self, orm):
- db.delete_column(u'auth_user', 'has_valid_gravatar')
-
-
- models = {
- 'askbot.activity': {
- 'Meta': {'object_name': 'Activity', 'db_table': "u'activity'"},
- 'active_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'activity_type': ('django.db.models.fields.SmallIntegerField', [], {}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_auditted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True'}),
- 'receiving_users': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'received_activity'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
- 'recipients': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'incoming_activity'", 'symmetrical': 'False', 'through': "orm['askbot.ActivityAuditStatus']", 'to': "orm['auth.User']"}),
- 'summary': ('django.db.models.fields.TextField', [], {'default': "''"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- },
- 'askbot.activityauditstatus': {
- 'Meta': {'unique_together': "(('user', 'activity'),)", 'object_name': 'ActivityAuditStatus'},
- 'activity': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Activity']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'status': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- },
- 'askbot.anonymousanswer': {
- 'Meta': {'object_name': 'AnonymousAnswer'},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'anonymous_answers'", 'to': "orm['askbot.Question']"}),
- 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
- 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
- 'text': ('django.db.models.fields.TextField', [], {}),
- 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'askbot.anonymousquestion': {
- 'Meta': {'object_name': 'AnonymousQuestion'},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ip_addr': ('django.db.models.fields.IPAddressField', [], {'max_length': '15'}),
- 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'session_key': ('django.db.models.fields.CharField', [], {'max_length': '40'}),
- 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
- 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
- 'text': ('django.db.models.fields.TextField', [], {}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
- 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
- },
- 'askbot.answer': {
- 'Meta': {'object_name': 'Answer', 'db_table': "u'answer'"},
- 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'accepted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['auth.User']"}),
- 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_answers'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': "orm['askbot.Question']"}),
- 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
- },
- 'askbot.answerrevision': {
- 'Meta': {'ordering': "('-revision',)", 'object_name': 'AnswerRevision', 'db_table': "u'answer_revision'"},
- 'answer': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'revisions'", 'to': "orm['askbot.Answer']"}),
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answerrevisions'", 'to': "orm['auth.User']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
- 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
- 'text': ('django.db.models.fields.TextField', [], {})
- },
- 'askbot.award': {
- 'Meta': {'object_name': 'Award', 'db_table': "u'award'"},
- 'awarded_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'badge': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_badge'", 'to': "orm['askbot.BadgeData']"}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'award_user'", 'to': "orm['auth.User']"})
- },
- 'askbot.badgedata': {
- 'Meta': {'ordering': "('slug',)", 'object_name': 'BadgeData'},
- 'awarded_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'awarded_to': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'badges'", 'symmetrical': 'False', 'through': "orm['askbot.Award']", 'to': "orm['auth.User']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
- },
- 'askbot.comment': {
- 'Meta': {'ordering': "('-added_at',)", 'object_name': 'Comment', 'db_table': "u'comment'"},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'comment': ('django.db.models.fields.CharField', [], {'max_length': '2048'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'html': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2048'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'offensive_flag_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'to': "orm['auth.User']"})
- },
- 'askbot.emailfeedsetting': {
- 'Meta': {'object_name': 'EmailFeedSetting'},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'feed_type': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
- 'frequency': ('django.db.models.fields.CharField', [], {'default': "'n'", 'max_length': '8'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'reported_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'subscriber': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'notification_subscriptions'", 'to': "orm['auth.User']"})
- },
- 'askbot.favoritequestion': {
- 'Meta': {'object_name': 'FavoriteQuestion', 'db_table': "u'favorite_question'"},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_favorite_questions'", 'to': "orm['auth.User']"})
- },
- 'askbot.markedtag': {
- 'Meta': {'object_name': 'MarkedTag'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'reason': ('django.db.models.fields.CharField', [], {'max_length': '16'}),
- 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'user_selections'", 'to': "orm['askbot.Tag']"}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'tag_selections'", 'to': "orm['auth.User']"})
- },
- 'askbot.question': {
- 'Meta': {'object_name': 'Question', 'db_table': "u'question'"},
- 'added_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'answer_accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'answer_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': "orm['auth.User']"}),
- 'close_reason': ('django.db.models.fields.SmallIntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'closed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'closed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'closed_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'closed_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'comment_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'favorited_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'favorite_questions'", 'symmetrical': 'False', 'through': "orm['askbot.FavoriteQuestion']", 'to': "orm['auth.User']"}),
- 'favourite_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'followed_by': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'followed_questions'", 'symmetrical': 'False', 'to': "orm['auth.User']"}),
- 'html': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'last_activity_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'last_active_in_questions'", 'to': "orm['auth.User']"}),
- 'last_edited_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'last_edited_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'last_edited_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'locked_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'locked_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locked_questions'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'offensive_flag_count': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'score': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'summary': ('django.db.models.fields.CharField', [], {'max_length': '180'}),
- 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
- 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'questions'", 'symmetrical': 'False', 'to': "orm['askbot.Tag']"}),
- 'text': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}),
- 'view_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
- 'vote_down_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'vote_up_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
- },
- 'askbot.questionrevision': {
- 'Meta': {'ordering': "('-revision',)", 'object_name': 'QuestionRevision', 'db_table': "u'question_revision'"},
- 'author': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questionrevisions'", 'to': "orm['auth.User']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'revisions'", 'to': "orm['askbot.Question']"}),
- 'revised_at': ('django.db.models.fields.DateTimeField', [], {}),
- 'revision': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'summary': ('django.db.models.fields.CharField', [], {'max_length': '300', 'blank': 'True'}),
- 'tagnames': ('django.db.models.fields.CharField', [], {'max_length': '125'}),
- 'text': ('django.db.models.fields.TextField', [], {}),
- 'title': ('django.db.models.fields.CharField', [], {'max_length': '300'})
- },
- 'askbot.questionview': {
- 'Meta': {'object_name': 'QuestionView'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'viewed'", 'to': "orm['askbot.Question']"}),
- 'when': ('django.db.models.fields.DateTimeField', [], {}),
- 'who': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'question_views'", 'to': "orm['auth.User']"})
- },
- 'askbot.repute': {
- 'Meta': {'object_name': 'Repute', 'db_table': "u'repute'"},
- 'comment': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'negative': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'positive': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'question': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['askbot.Question']", 'null': 'True', 'blank': 'True'}),
- 'reputation': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
- 'reputation_type': ('django.db.models.fields.SmallIntegerField', [], {}),
- 'reputed_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
- },
- 'askbot.tag': {
- 'Meta': {'ordering': "('-used_count', 'name')", 'object_name': 'Tag', 'db_table': "u'tag'"},
- 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'created_tags'", 'to': "orm['auth.User']"}),
- 'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'deleted_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'deleted_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'deleted_tags'", 'null': 'True', 'to': "orm['auth.User']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'used_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
- },
- 'askbot.vote': {
- 'Meta': {'unique_together': "(('content_type', 'object_id', 'user'),)", 'object_name': 'Vote', 'db_table': "u'vote'"},
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'votes'", 'to': "orm['auth.User']"}),
- 'vote': ('django.db.models.fields.SmallIntegerField', [], {}),
- 'voted_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
- },
- 'auth.group': {
- 'Meta': {'object_name': 'Group'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
- 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
- },
- 'auth.permission': {
- 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
- },
- 'auth.user': {
- 'Meta': {'object_name': 'User'},
- 'about': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'bronze': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'consecutive_days_visit_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}),
- 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'date_of_birth': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'display_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'email_isvalid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'email_key': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True'}),
- 'email_tag_filter_strategy': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
- 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'gold': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'gravatar': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
- 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
- 'has_custom_avatar': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'has_valid_gravatar': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'ignored_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'interesting_tags': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'last_seen': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'location': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
- 'new_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'questions_per_page': ('django.db.models.fields.SmallIntegerField', [], {'default': '10'}),
- 'real_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
- 'reputation': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
- 'seen_response_count': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'show_country': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'silver': ('django.db.models.fields.SmallIntegerField', [], {'default': '0'}),
- 'status': ('django.db.models.fields.CharField', [], {'default': "'w'", 'max_length': '2'}),
- 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}),
- 'website': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
- },
- 'contenttypes.contenttype': {
- 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
- 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
- }
- }
-
- complete_apps = ['askbot']
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index 5407b1e2..88b3ec4b 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -58,7 +58,6 @@ User.add_to_class('reputation',
models.PositiveIntegerField(default=const.MIN_REPUTATION)
)
User.add_to_class('gravatar', models.CharField(max_length=32))
-User.add_to_class('has_valid_gravatar', models.BooleanField(default=False))
User.add_to_class('has_custom_avatar', models.BooleanField(default=False))
User.add_to_class('gold', models.SmallIntegerField(default=0))
User.add_to_class('silver', models.SmallIntegerField(default=0))
@@ -148,23 +147,22 @@ def user_update_has_custom_avatar(self):
Saves the object.
"""
- if self.avatar_set.count() > 0:
- self.has_custom_avatar = True
+ if 'avatar' in django_settings.INSTALLED_APPS:
+ if self.avatar_set.count() > 0:
+ self.has_custom_avatar = True
+ else:
+ self.has_custom_avatar = _check_gravatar(self.gravatar)
else:
- self.has_custom_avatar = False
+ self.has_custom_avatar = _check_gravatar(self.gravatar)
self.save()
-def user_update_has_valid_gravatar(self):
- '''updates the field has_valid_gravatar'''
-
- gravatar_url = "http://www.gravatar.com/avatar/%s?d=404" % self.gravatar
+def _check_gravatar(gravatar):
+ gravatar_url = "http://www.gravatar.com/avatar/%s?d=404" % gravatar
code = urllib.urlopen(gravatar_url).getcode()
if urllib.urlopen(gravatar_url).getcode() != 404:
- self.has_valid_gravatar = True
+ return True
else:
- self.has_valid_gravatar = False
- self.save()
-
+ return False
def user_get_old_vote_for_post(self, post):
"""returns previous vote for this post
@@ -2021,7 +2019,6 @@ User.add_to_class('get_avatar_url', user_get_avatar_url)
User.add_to_class('get_gravatar_url', user_get_gravatar_url)
User.add_to_class('get_anonymous_name', user_get_anonymous_name)
User.add_to_class('update_has_custom_avatar', user_update_has_custom_avatar)
-User.add_to_class('update_has_valid_gravatar', user_update_has_valid_gravatar)
User.add_to_class('post_question', user_post_question)
User.add_to_class('edit_question', user_edit_question)
User.add_to_class('retag_question', user_retag_question)
@@ -2567,8 +2564,6 @@ def set_user_has_custom_avatar_flag(instance, created, **kwargs):
def update_user_has_custom_avatar_flag(instance, **kwargs):
instance.user.update_has_custom_avatar()
-def set_user_has_valid_gravatar_flag(instance, **kwargs):
- instance.update_has_valid_gravatar()
def make_admin_if_first_user(instance, **kwargs):
user_count = User.objects.all().count()
@@ -2579,7 +2574,6 @@ def make_admin_if_first_user(instance, **kwargs):
django_signals.pre_save.connect(make_admin_if_first_user, sender=User)
django_signals.pre_save.connect(calculate_gravatar_hash, sender=User)
django_signals.post_save.connect(add_missing_subscriptions, sender=User)
-#django_signals.post_save.connect(set_user_has_valid_gravatar_flag, sender=User)
django_signals.post_save.connect(record_award_event, sender=Award)
django_signals.post_save.connect(notify_award_message, sender=Award)
django_signals.post_save.connect(record_answer_accepted, sender=Answer)
diff --git a/askbot/models/question.py b/askbot/models/question.py
index 9f4eb769..573182b9 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -376,7 +376,7 @@ class QuestionQuerySet(models.query.QuerySet):
from askbot.conf import settings as askbot_settings
avatar_limit = askbot_settings.SIDEBAR_MAIN_AVATAR_LIMIT
- contributors = User.objects.filter(id__in=u_id).order_by('-has_valid_gravatar', '?')[:avatar_limit]
+ contributors = User.objects.filter(id__in=u_id).order_by('-has_custom_avatar', '?')[:avatar_limit]
#print contributors
#could not optimize this query with indices so it was split into what's now above
#contributors = User.objects.filter(
diff --git a/askbot/skins/default/templates/main_page/javascript.html b/askbot/skins/default/templates/main_page/javascript.html
index 09a5d15b..ea062710 100644
--- a/askbot/skins/default/templates/main_page/javascript.html
+++ b/askbot/skins/default/templates/main_page/javascript.html
@@ -9,6 +9,10 @@
Hilite.exact = false;
Hilite.elementid = "question-list";
Hilite.debug_referrer = location.href;
+ {% if request.user.is_authenticated() and request.user.has_custom_avatar == False %}
+ var today = new Date();
+ $.getJSON('{% url user_update_has_custom_avatar %}?t=' + today.getTime());
+ {% endif %}
});
askbot['urls']['mark_interesting_tag'] = scriptUrl + '{% trans %}mark-tag/{% endtrans %}{% trans %}interesting/{% endtrans %}';
askbot['urls']['mark_ignored_tag'] = scriptUrl + '{% trans %}mark-tag/{% endtrans %}{% trans %}ignored/{% endtrans %}';
diff --git a/askbot/urls.py b/askbot/urls.py
index c6d79492..6910cb17 100644
--- a/askbot/urls.py
+++ b/askbot/urls.py
@@ -205,6 +205,11 @@ urlpatterns = patterns('',
name='user_profile'
),
url(
+ r'^%s$' % _('users/update_has_custom_avatar/'),
+ views.users.update_has_custom_avatar,
+ name='user_update_has_custom_avatar'
+ ),
+ url(
r'^%s$' % _('badges/'),
views.meta.badges,
name='badges'
diff --git a/askbot/views/users.py b/askbot/views/users.py
index acf1d38f..0707e229 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -20,6 +20,7 @@ from django.shortcuts import get_object_or_404
from django.http import HttpResponse
from django.http import HttpResponseRedirect, Http404
from django.utils.translation import ugettext as _
+from django.utils import simplejson
from django.views.decorators import csrf
from askbot.utils.slug import slugify
from askbot.utils.html import sanitize_html
@@ -1007,3 +1008,9 @@ def user(request, id, slug=None, tab_name=None):
'user_follow_feature_on': ('followit' in django_settings.INSTALLED_APPS),
}
return user_view_func(request, profile_owner, context)
+
+@login_required
+def update_has_custom_avatar(request):
+ if request.is_ajax() and request.user.has_custom_avatar == False:
+ request.user.update_has_custom_avatar()
+ return HttpResponse(simplejson.dumps({'status':'ok'}), mimetype='application/json')