summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-05-01 15:11:47 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-05-01 15:11:47 -0300
commit0f6f30f93436b8ce77fcad1c12391351eae36bcd (patch)
tree5a7d65e503212e7784e480a5632811f4627e2341
parentdcc992c34db1d22bb03296d2b61782ed5f85f0f2 (diff)
downloadaskbot-0f6f30f93436b8ce77fcad1c12391351eae36bcd.tar.gz
askbot-0f6f30f93436b8ce77fcad1c12391351eae36bcd.tar.bz2
askbot-0f6f30f93436b8ce77fcad1c12391351eae36bcd.zip
renamed PostRejectReason to PostFlagReason and merged two short model files into bigger ones
-rw-r--r--askbot/migrations/0119_auto__add_postflagreason.py (renamed from askbot/migrations/0119_auto__add_postrejectreason.py)16
-rw-r--r--askbot/models/__init__.py10
-rw-r--r--askbot/models/answer.py19
-rw-r--r--askbot/models/base.py6
-rw-r--r--askbot/models/meta.py89
-rw-r--r--askbot/models/post.py28
-rw-r--r--askbot/models/repute.py80
-rw-r--r--askbot/views/commands.py6
-rw-r--r--askbot/views/users.py2
9 files changed, 123 insertions, 133 deletions
diff --git a/askbot/migrations/0119_auto__add_postrejectreason.py b/askbot/migrations/0119_auto__add_postflagreason.py
index 7bc89249..1e2aedb8 100644
--- a/askbot/migrations/0119_auto__add_postrejectreason.py
+++ b/askbot/migrations/0119_auto__add_postflagreason.py
@@ -8,19 +8,19 @@ from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
- # Adding model 'PostRejectReason'
- db.create_table('askbot_postrejectreason', (
+ # Adding model 'PostFlagReason'
+ db.create_table('askbot_postflagreason', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('added_at', self.gf('django.db.models.fields.DateTimeField')()),
('author', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
('title', self.gf('django.db.models.fields.CharField')(max_length=128)),
('details', self.gf('django.db.models.fields.related.ForeignKey')(related_name='post_reject_reasons', to=orm['askbot.Post'])),
))
- db.send_create_signal('askbot', ['PostRejectReason'])
+ db.send_create_signal('askbot', ['PostFlagReason'])
def backwards(self, orm):
- # Deleting model 'PostRejectReason'
- db.delete_table('askbot_postrejectreason')
+ # Deleting model 'PostFlagReason'
+ db.delete_table('askbot_postflagreason')
models = {
'askbot.activity': {
@@ -154,8 +154,8 @@ class Migration(SchemaMigration):
'wiki': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'wikified_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'})
},
- 'askbot.postrejectreason': {
- 'Meta': {'object_name': 'PostRejectReason'},
+ 'askbot.postflagreason': {
+ 'Meta': {'object_name': 'PostFlagReason'},
'added_at': ('django.db.models.fields.DateTimeField', [], {}),
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
'details': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'post_reject_reasons'", 'to': "orm['askbot.Post']"}),
@@ -314,4 +314,4 @@ class Migration(SchemaMigration):
}
}
- complete_apps = ['askbot'] \ No newline at end of file
+ complete_apps = ['askbot']
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index bc9ddfbe..e50baf0f 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -26,16 +26,14 @@ from askbot.models.question import Thread
from askbot.skins import utils as skin_utils
from askbot.models.question import QuestionView, AnonymousQuestion
from askbot.models.question import FavoriteQuestion
-from askbot.models.answer import AnonymousAnswer
from askbot.models.tag import Tag, MarkedTag
-from askbot.models.meta import Vote, PostRejectReason
from askbot.models.user import EmailFeedSetting, ActivityAuditStatus, Activity
from askbot.models.user import GroupMembership, GroupProfile
-from askbot.models.post import Post, PostRevision
+from askbot.models.post import Post, PostRevision, PostFlagReason, AnonymousAnswer
from askbot.models.reply_by_email import ReplyAddress
from askbot.models import signals
from askbot.models.badges import award_badges_signal, get_badge, BadgeData
-from askbot.models.repute import Award, Repute
+from askbot.models.repute import Award, Repute, Vote
from askbot import auth
from askbot.utils.decorators import auto_now_timestamp
from askbot.utils.slug import slugify
@@ -1521,7 +1519,7 @@ def user_create_post_reject_reason(
self, title = None, details = None, timestamp = None
):
"""creates and returs the post reject reason"""
- reason = PostRejectReason(
+ reason = PostFlagReason(
title = title,
added_at = timestamp,
author = self
@@ -3051,7 +3049,7 @@ __all__ = [
'Tag',
'Vote',
- 'PostRejectReason',
+ 'PostFlagReason',
'MarkedTag',
'BadgeData',
diff --git a/askbot/models/answer.py b/askbot/models/answer.py
deleted file mode 100644
index 8bed896f..00000000
--- a/askbot/models/answer.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import datetime
-from django.db import models
-from askbot.models.base import AnonymousContent
-
-
-class AnonymousAnswer(AnonymousContent):
- question = models.ForeignKey('Post', related_name='anonymous_answers')
-
- def publish(self, user):
- added_at = datetime.datetime.now()
- from askbot import models
- models.Post.objects.create_new_answer(
- thread=self.question.thread,
- author=user,
- added_at=added_at,
- wiki=self.wiki,
- text=self.text
- )
- self.delete()
diff --git a/askbot/models/base.py b/askbot/models/base.py
index 0686d50c..b3a12fbf 100644
--- a/askbot/models/base.py
+++ b/askbot/models/base.py
@@ -1,9 +1,7 @@
import datetime
-
from django.db import models
from django.contrib.auth.models import User
-
class BaseQuerySetManager(models.Manager):
"""a base class that allows chainable qustom filters
on the query sets
@@ -44,9 +42,7 @@ class BaseQuerySetManager(models.Manager):
class AnonymousContent(models.Model):
- """
- Base class for AnonymousQuestion and AnonymousAnswer
- """
+ """Base class for AnonymousQuestion and AnonymousAnswer"""
session_key = models.CharField(max_length=40) #session id for anonymous questions
wiki = models.BooleanField(default=False)
added_at = models.DateTimeField(default=datetime.datetime.now)
diff --git a/askbot/models/meta.py b/askbot/models/meta.py
deleted file mode 100644
index 7e210641..00000000
--- a/askbot/models/meta.py
+++ /dev/null
@@ -1,89 +0,0 @@
-import datetime
-from django.db import models
-
-
-class VoteManager(models.Manager):
- def get_up_vote_count_from_user(self, user):
- if user is not None:
- return self.filter(user=user, vote=1).count()
- else:
- return 0
-
- def get_down_vote_count_from_user(self, user):
- if user is not None:
- return self.filter(user=user, vote=-1).count()
- else:
- return 0
-
- def get_votes_count_today_from_user(self, user):
- if user is not None:
- today = datetime.date.today()
- return self.filter(user=user, voted_at__range=(today, today + datetime.timedelta(1))).count()
- else:
- return 0
-
-
-class Vote(models.Model):
- VOTE_UP = +1
- VOTE_DOWN = -1
- VOTE_CHOICES = (
- (VOTE_UP, u'Up'),
- (VOTE_DOWN, u'Down'),
- )
- user = models.ForeignKey('auth.User', related_name='votes')
- voted_post = models.ForeignKey('Post', related_name='votes')
-
- vote = models.SmallIntegerField(choices=VOTE_CHOICES)
- voted_at = models.DateTimeField(default=datetime.datetime.now)
-
- objects = VoteManager()
-
- class Meta:
- unique_together = ('user', 'voted_post')
- app_label = 'askbot'
- db_table = u'vote'
-
- def __unicode__(self):
- return '[%s] voted at %s: %s' %(self.user, self.voted_at, self.vote)
-
- def __int__(self):
- """1 if upvote -1 if downvote"""
- return self.vote
-
- def is_upvote(self):
- return self.vote == self.VOTE_UP
-
- def is_downvote(self):
- return self.vote == self.VOTE_DOWN
-
- def is_opposite(self, vote_type):
- assert(vote_type in (self.VOTE_UP, self.VOTE_DOWN))
- return self.vote != vote_type
-
- def cancel(self):
- """cancel the vote
- while taking into account whether vote was up
- or down
-
- return change in score on the post
- """
- #importing locally because of circular dependency
- from askbot import auth
- score_before = self.voted_post.score
- if self.vote > 0:
- # cancel upvote
- auth.onUpVotedCanceled(self, self.voted_post, self.user)
- else:
- # cancel downvote
- auth.onDownVotedCanceled(self, self.voted_post, self.user)
- score_after = self.voted_post.score
-
- return score_after - score_before
-
-class PostRejectReason(models.Model):
- added_at = models.DateTimeField()
- author = models.ForeignKey('auth.User')
- title = models.CharField(max_length=128)
- details = models.ForeignKey('Post', related_name = 'post_reject_reasons')
- class Meta:
- app_label = 'askbot'
diff --git a/askbot/models/post.py b/askbot/models/post.py
index 64a24906..89763c1f 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -29,7 +29,7 @@ from askbot.conf import settings as askbot_settings
from askbot import exceptions
from askbot.utils import markup
from askbot.utils.html import sanitize_html
-from askbot.models.base import BaseQuerySetManager
+from askbot.models.base import BaseQuerySetManager, AnonymousContent
#todo: maybe merge askbot.utils.markup and forum.utils.html
from askbot.utils.diff import textDiff as htmldiff
@@ -1644,7 +1644,7 @@ class Post(models.Model):
return self.parent.comments.filter(added_at__lt = self.added_at).count() + 1
def is_upvoted_by(self, user):
- from askbot.models.meta import Vote
+ from askbot.models.repute import Vote
return Vote.objects.filter(user=user, voted_post=self, vote=Vote.VOTE_UP).exists()
def is_last(self):
@@ -1872,3 +1872,27 @@ class PostRevision(models.Model):
def get_snippet(self, max_length = 120):
"""same as Post.get_snippet"""
return html_utils.strip_tags(self.html)[:max_length] + '...'
+
+
+class PostFlagReason(models.Model):
+ added_at = models.DateTimeField()
+ author = models.ForeignKey('auth.User')
+ title = models.CharField(max_length=128)
+ details = models.ForeignKey(Post, related_name = 'post_reject_reasons')
+ class Meta:
+ app_label = 'askbot'
+
+
+class AnonymousAnswer(AnonymousContent):
+ question = models.ForeignKey(Post, related_name='anonymous_answers')
+
+ def publish(self, user):
+ added_at = datetime.datetime.now()
+ Post.objects.create_new_answer(
+ thread=self.question.thread,
+ author=user,
+ added_at=added_at,
+ wiki=self.wiki,
+ text=self.text
+ )
+ self.delete()
diff --git a/askbot/models/repute.py b/askbot/models/repute.py
index c9c1b8bf..09e74067 100644
--- a/askbot/models/repute.py
+++ b/askbot/models/repute.py
@@ -7,6 +7,85 @@ import datetime
from askbot import const
from django.core.urlresolvers import reverse
+class VoteManager(models.Manager):
+ def get_up_vote_count_from_user(self, user):
+ if user is not None:
+ return self.filter(user=user, vote=1).count()
+ else:
+ return 0
+
+ def get_down_vote_count_from_user(self, user):
+ if user is not None:
+ return self.filter(user=user, vote=-1).count()
+ else:
+ return 0
+
+ def get_votes_count_today_from_user(self, user):
+ if user is not None:
+ today = datetime.date.today()
+ return self.filter(user=user, voted_at__range=(today, today + datetime.timedelta(1))).count()
+ else:
+ return 0
+
+
+class Vote(models.Model):
+ VOTE_UP = +1
+ VOTE_DOWN = -1
+ VOTE_CHOICES = (
+ (VOTE_UP, u'Up'),
+ (VOTE_DOWN, u'Down'),
+ )
+ user = models.ForeignKey('auth.User', related_name='votes')
+ voted_post = models.ForeignKey('Post', related_name='votes')
+
+ vote = models.SmallIntegerField(choices=VOTE_CHOICES)
+ voted_at = models.DateTimeField(default=datetime.datetime.now)
+
+ objects = VoteManager()
+
+ class Meta:
+ unique_together = ('user', 'voted_post')
+ app_label = 'askbot'
+ db_table = u'vote'
+
+ def __unicode__(self):
+ return '[%s] voted at %s: %s' %(self.user, self.voted_at, self.vote)
+
+ def __int__(self):
+ """1 if upvote -1 if downvote"""
+ return self.vote
+
+ def is_upvote(self):
+ return self.vote == self.VOTE_UP
+
+ def is_downvote(self):
+ return self.vote == self.VOTE_DOWN
+
+ def is_opposite(self, vote_type):
+ assert(vote_type in (self.VOTE_UP, self.VOTE_DOWN))
+ return self.vote != vote_type
+
+ def cancel(self):
+ """cancel the vote
+ while taking into account whether vote was up
+ or down
+
+ return change in score on the post
+ """
+ #importing locally because of circular dependency
+ from askbot import auth
+ score_before = self.voted_post.score
+ if self.vote > 0:
+ # cancel upvote
+ auth.onUpVotedCanceled(self, self.voted_post, self.user)
+ else:
+ # cancel downvote
+ auth.onDownVotedCanceled(self, self.voted_post, self.user)
+ score_after = self.voted_post.score
+
+ return score_after - score_before
+
+
class BadgeData(models.Model):
"""Awarded for notable actions performed on the site by Users."""
slug = models.SlugField(max_length=50, unique=True)
@@ -166,3 +245,4 @@ class Repute(models.Model):
'question_title': self.question.thread.title,
'link_title': link_title
}
+
diff --git a/askbot/views/commands.py b/askbot/views/commands.py
index 8fbcf3fd..497505c4 100644
--- a/askbot/views/commands.py
+++ b/askbot/views/commands.py
@@ -93,7 +93,7 @@ def manage_inbox(request):
else:
post = content_object
request.user.delete_post(post)
- reject_reason = models.PostRejectReason.objects.get(
+ reject_reason = models.PostFlagReason.objects.get(
id = post_data['reject_reason_id']
)
body_text = string_concat(
@@ -796,7 +796,7 @@ def delete_group_logo(request):
def delete_post_reject_reason(request):
from django.forms import IntegerField
reason_id = IntegerField().clean(int(request.POST['reason_id']))
- reason = models.PostRejectReason.objects.get(id = reason_id)
+ reason = models.PostFlagReason.objects.get(id = reason_id)
reason.delete()
@csrf.csrf_exempt
@@ -818,7 +818,7 @@ def save_post_reject_reason(request):
)
else:
reason_id = form.cleaned_data['reason_id']
- reason = models.PostRejectReason.objects.get(id = reason_id)
+ reason = models.PostFlagReason.objects.get(id = reason_id)
request.user.edit_post_reject_reason(
reason, title = title, details = details
)
diff --git a/askbot/views/users.py b/askbot/views/users.py
index c91f9a60..820f6e84 100644
--- a/askbot/views/users.py
+++ b/askbot/views/users.py
@@ -675,7 +675,7 @@ def user_responses(request, user, context):
#6) sort responses by time
filtered_response_list.sort(lambda x,y: cmp(y['timestamp'], x['timestamp']))
- reject_reasons = models.PostRejectReason.objects.all().order_by('title');
+ reject_reasons = models.PostFlagReason.objects.all().order_by('title');
data = {
'active_tab':'users',
'page_class': 'user-profile-page',