- feed_setting = EmailFeedSetting.objects.get(subscriber=self,feed_type='q_sel')\r
- except Exception, e:\r
- #print 'have error %s' % e.message\r
- raise e\r
- #print 'have freq=%s' % feed_setting.frequency\r
- return feed_setting.frequency\r
-\r
-User.add_to_class('is_approved', models.BooleanField(default=False))\r
-User.add_to_class('email_isvalid', models.BooleanField(default=False))\r
-User.add_to_class('email_key', models.CharField(max_length=32, null=True))\r
-User.add_to_class('reputation', models.PositiveIntegerField(default=1))\r
-User.add_to_class('gravatar', models.CharField(max_length=32))\r
-\r
-#User.add_to_class('favorite_questions',\r
-# models.ManyToManyField(Question, through=FavoriteQuestion,\r
-# related_name='favorited_by'))\r
-\r
-#User.add_to_class('badges', models.ManyToManyField(Badge, through=Award,\r
-# related_name='awarded_to'))\r
-User.add_to_class('gold', models.SmallIntegerField(default=0))\r
-User.add_to_class('silver', models.SmallIntegerField(default=0))\r
-User.add_to_class('bronze', models.SmallIntegerField(default=0))\r
-User.add_to_class('questions_per_page',\r
- models.SmallIntegerField(choices=QUESTIONS_PER_PAGE_CHOICES, default=10))\r
-User.add_to_class('last_seen',\r
- models.DateTimeField(default=datetime.datetime.now))\r
-User.add_to_class('real_name', models.CharField(max_length=100, blank=True))\r
-User.add_to_class('website', models.URLField(max_length=200, blank=True))\r
-User.add_to_class('location', models.CharField(max_length=100, blank=True))\r
-User.add_to_class('date_of_birth', models.DateField(null=True, blank=True))\r
-User.add_to_class('about', models.TextField(blank=True))\r
-User.add_to_class('is_username_taken',classmethod(user_is_username_taken))\r
-User.add_to_class('get_q_sel_email_feed_frequency',user_get_q_sel_email_feed_frequency)\r
-User.add_to_class('hide_ignored_questions', models.BooleanField(default=False))\r
-User.add_to_class('tag_filter_setting',\r
- models.CharField(\r
- max_length=16,\r
- choices=TAG_EMAIL_FILTER_CHOICES,\r
- default='ignored'\r
- )\r
- )\r
-\r
-# custom signal\r
-tags_updated = django.dispatch.Signal(providing_args=["question"])\r
-edit_question_or_answer = django.dispatch.Signal(providing_args=["instance", "modified_by"])\r
-delete_post_or_answer = django.dispatch.Signal(providing_args=["instance", "deleted_by"])\r
-mark_offensive = django.dispatch.Signal(providing_args=["instance", "mark_by"])\r
-user_updated = django.dispatch.Signal(providing_args=["instance", "updated_by"])\r
-user_logged_in = django.dispatch.Signal(providing_args=["session"])\r
-\r
-\r
-def get_messages(self):\r
- messages = []\r
- for m in self.message_set.all():\r
- messages.append(m.message)\r
- return messages\r
-\r
-def delete_messages(self):\r
- self.message_set.all().delete()\r
-\r
-def get_profile_url(self):\r
- """Returns the URL for this User's profile."""\r
- return '%s%s/' % (reverse('user', args=[self.id]), slugify(self.username))\r
-\r
-def get_profile_link(self):\r
- profile_link = u'<a href="%s">%s</a>' % (self.get_profile_url(),self.username)\r
- logging.debug('in get profile link %s' % profile_link)\r
- return mark_safe(profile_link)\r
-\r
-User.add_to_class('get_profile_url', get_profile_url)\r
-User.add_to_class('get_profile_link', get_profile_link)\r
-User.add_to_class('get_messages', get_messages)\r
-User.add_to_class('delete_messages', delete_messages)\r
-\r
-def calculate_gravatar_hash(instance, **kwargs):\r
- """Calculates a User's gravatar hash from their email address."""\r
- if kwargs.get('raw', False):\r
- return\r
- instance.gravatar = hashlib.md5(instance.email).hexdigest()\r
-\r
-def record_ask_event(instance, created, **kwargs):\r
- if created:\r
- activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION)\r
- activity.save()\r
-\r
-def record_answer_event(instance, created, **kwargs):\r
- if created:\r
- activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ANSWER)\r
- activity.save()\r
-\r
-def record_comment_event(instance, created, **kwargs):\r
- if created:\r
- from django.contrib.contenttypes.models import ContentType\r
- question_type = ContentType.objects.get_for_model(Question)\r
- question_type_id = question_type.id\r
- if (instance.content_type_id == question_type_id):\r
- type = TYPE_ACTIVITY_COMMENT_QUESTION\r
- else:\r
- type = TYPE_ACTIVITY_COMMENT_ANSWER\r
- activity = Activity(user=instance.user, active_at=instance.added_at, content_object=instance, activity_type=type)\r
- activity.save()\r
-\r
-def record_revision_question_event(instance, created, **kwargs):\r
- if created and instance.revision <> 1:\r
- activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_QUESTION)\r
- activity.save()\r
-\r
-def record_revision_answer_event(instance, created, **kwargs):\r
- if created and instance.revision <> 1:\r
- activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_ANSWER)\r
- activity.save()\r
-\r
-def record_award_event(instance, created, **kwargs):\r
- """\r
- After we awarded a badge to user, we need to record this activity and notify user.\r
- We also recaculate awarded_count of this badge and user information.\r
- """\r
- if created:\r
- activity = Activity(user=instance.user, active_at=instance.awarded_at, content_object=instance,\r
- activity_type=TYPE_ACTIVITY_PRIZE)\r
- activity.save()\r
-\r
- instance.badge.awarded_count += 1\r
- instance.badge.save()\r
-\r
- if instance.badge.type == Badge.GOLD:\r
- instance.user.gold += 1\r
- if instance.badge.type == Badge.SILVER:\r
- instance.user.silver += 1\r
- if instance.badge.type == Badge.BRONZE:\r
- instance.user.bronze += 1\r
- instance.user.save()\r
-\r
-def notify_award_message(instance, created, **kwargs):\r
- """\r
- Notify users when they have been awarded badges by using Django message.\r
- """\r
- if created:\r
- user = instance.user\r
- user.message_set.create(message=u"Congratulations, you have received a badge '%s'" % instance.badge.name)\r