Skip to content

Commit 1b3e97f

Browse files
hrchrc
hrc
authored and
hrc
committed
update to revidion 54 in svn
1 parent ec7e971 commit 1b3e97f

File tree

86 files changed

+8278
-1891
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+8278
-1891
lines changed

.idea/workspace.xml

+270-219
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

forum/activity.py

+26-37
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,41 @@
11
import datetime
22
from django.db.models.signals import post_save
33
from forum.models import *
4-
from forum.models.base import marked_deleted
5-
from forum.models.meta import vote_canceled
4+
from forum.models.base import marked_deleted, mark_canceled
5+
from forum.models.node import node_create
6+
from forum.models.answer import answer_accepted
67
from forum.authentication import user_updated
78
from forum.const import *
89

9-
def record_ask_event(instance, created, **kwargs):
10-
if created:
11-
activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION)
12-
activity.save()
13-
14-
post_save.connect(record_ask_event, sender=Question)
15-
16-
17-
def record_answer_event(instance, created, **kwargs):
18-
if created:
19-
activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ANSWER)
20-
activity.save()
10+
def record_ask_event(instance, **kwargs):
11+
activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION)
12+
activity.save()
2113

22-
post_save.connect(record_answer_event, sender=Answer)
14+
node_create.connect(record_ask_event, sender=Question)
2315

2416

25-
def record_comment_event(instance, created, **kwargs):
26-
if created:
27-
act_type = (instance.content_object.__class__ is Question) and TYPE_ACTIVITY_COMMENT_QUESTION or TYPE_ACTIVITY_COMMENT_ANSWER
28-
activity = Activity(user=instance.user, active_at=instance.added_at, content_object=instance, activity_type=act_type)
29-
activity.save()
17+
def record_answer_event(instance, **kwargs):
18+
activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ANSWER)
19+
activity.save()
3020

31-
post_save.connect(record_comment_event, sender=Comment)
21+
node_create.connect(record_answer_event, sender=Answer)
3222

3323

34-
def record_question_revision_event(instance, created, **kwargs):
35-
if created and instance.revision <> 1:
36-
activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_QUESTION)
37-
activity.save()
24+
def record_comment_event(instance, **kwargs):
25+
act_type = (instance.content_object.__class__ is Question) and TYPE_ACTIVITY_COMMENT_QUESTION or TYPE_ACTIVITY_COMMENT_ANSWER
26+
activity = Activity(user=instance.user, active_at=instance.added_at, content_object=instance, activity_type=act_type)
27+
activity.save()
3828

39-
post_save.connect(record_question_revision_event, sender=QuestionRevision)
29+
node_create.connect(record_comment_event, sender=Comment)
4030

4131

42-
def record_answer_revision_event(instance, created, **kwargs):
43-
if created and instance.revision <> 1:
44-
activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=TYPE_ACTIVITY_UPDATE_ANSWER)
32+
def record_revision_event(instance, created, **kwargs):
33+
if created and instance.revision <> 1 and instance.node.node_type in ('question', 'answer',):
34+
activity_type = instance.node.node_type == 'question' and TYPE_ACTIVITY_UPDATE_QUESTION or TYPE_ACTIVITY_UPDATE_ANSWER
35+
activity = Activity(user=instance.author, active_at=instance.revised_at, content_object=instance, activity_type=activity_type)
4536
activity.save()
4637

47-
post_save.connect(record_answer_revision_event, sender=AnswerRevision)
38+
post_save.connect(record_revision_event, sender=NodeRevision)
4839

4940

5041
def record_award_event(instance, created, **kwargs):
@@ -56,13 +47,11 @@ def record_award_event(instance, created, **kwargs):
5647
post_save.connect(record_award_event, sender=Award)
5748

5849

59-
def record_answer_accepted(instance, created, **kwargs):
60-
if not created and 'accepted' in instance.get_dirty_fields() and instance.accepted:
61-
activity = Activity(user=instance.question.author, active_at=datetime.datetime.now(), \
62-
content_object=instance, activity_type=TYPE_ACTIVITY_MARK_ANSWER)
63-
activity.save()
50+
def record_answer_accepted(answer, user, **kwargs):
51+
activity = Activity(user=user, active_at=datetime.datetime.now(), content_object=answer, activity_type=TYPE_ACTIVITY_MARK_ANSWER)
52+
activity.save()
6453

65-
post_save.connect(record_answer_accepted, sender=Answer)
54+
answer_accepted.connect(record_answer_accepted)
6655

6756

6857
def update_last_seen(instance, **kwargs):
@@ -88,7 +77,7 @@ def record_cancel_vote(instance, **kwargs):
8877
activity = Activity(user=instance.user, active_at=datetime.datetime.now(), content_object=instance, activity_type=act_type)
8978
activity.save()
9079

91-
vote_canceled.connect(record_cancel_vote)
80+
mark_canceled.connect(record_cancel_vote, sender=Vote)
9281

9382

9483
def record_delete_post(instance, **kwargs):

forum/authentication/__init__.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,23 @@ def consumer(self):
3636
user_logged_in = django.dispatch.Signal(providing_args=["user", "old_session"])
3737
user_updated = django.dispatch.Signal(providing_args=["instance", "updated_by"])
3838

39-
def post_stored_anonymous_content(user,old_session,**kwargs):
40-
from forum.models import AnonymousQuestion, AnonymousAnswer
41-
aq_list = AnonymousQuestion.objects.filter(session_key = old_session)
42-
aa_list = AnonymousAnswer.objects.filter(session_key = old_session)
43-
import settings
44-
if settings.EMAIL_VALIDATION == 'on':#add user to the record
45-
for aq in aq_list:
46-
aq.author = user
47-
aq.save()
48-
for aa in aa_list:
49-
aa.author = user
50-
aa.save()
51-
#maybe add pending posts message?
52-
else: #just publish the questions
53-
for aq in aq_list:
54-
aq.publish(user)
55-
for aa in aa_list:
56-
aa.publish(user)
57-
58-
user_logged_in.connect(post_stored_anonymous_content)
39+
#def post_stored_anonymous_content(user,old_session,**kwargs):
40+
# from forum.models import AnonymousQuestion, AnonymousAnswer
41+
# aq_list = AnonymousQuestion.objects.filter(session_key = old_session)
42+
# aa_list = AnonymousAnswer.objects.filter(session_key = old_session)
43+
# import settings
44+
# if settings.EMAIL_VALIDATION == 'on':#add user to the record
45+
# for aq in aq_list:
46+
# aq.author = user
47+
# aq.save()
48+
# for aa in aa_list:
49+
# aa.author = user
50+
# aa.save()
51+
# #maybe add pending posts message?
52+
# else: #just publish the questions
53+
# for aq in aq_list:
54+
# aq.publish(user)
55+
# for aa in aa_list:
56+
# aa.publish(user)
57+
#
58+
#user_logged_in.connect(post_stored_anonymous_content)

forum/badges/base.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.db.models.signals import post_save
66

77
from forum.models.user import activity_record
8-
from forum.models import Badge, Award, Activity
8+
from forum.models import Badge, Award, Activity, Node
99

1010
import logging
1111

@@ -74,6 +74,14 @@ def handler(instance):
7474

7575
super(PostCountableAbstractBadge, self).__init__(model, field, expected_value, handler)
7676

77+
class NodeCountableAbstractBadge(CountableAbstractBadge):
78+
def __init__(self, node_type, field, expected_value):
79+
80+
def handler(instance):
81+
if instance.node_type == node_type:
82+
self.award_badge(instance.author, instance)
83+
84+
super(NodeCountableAbstractBadge, self).__init__(Node, field, expected_value, handler)
7785

7886
class ActivityAbstractBadge(AbstractBadge):
7987

forum/forms.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -126,27 +126,16 @@ class AskForm(forms.Form):
126126
tags = TagNamesField()
127127
wiki = WikiField()
128128

129-
openid = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 40, 'class':'openid-input'}))
130-
user = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
131-
email = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
132129

133130
class AnswerForm(forms.Form):
134131
text = EditorField()
135132
wiki = WikiField()
136-
openid = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 40, 'class':'openid-input'}))
137-
user = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
138-
email = forms.CharField(required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
139-
email_notify = EmailNotifyField()
140-
def __init__(self, question, user, *args, **kwargs):
133+
134+
def __init__(self, question, *args, **kwargs):
141135
super(AnswerForm, self).__init__(*args, **kwargs)
142-
self.fields['email_notify'].widget.attrs['id'] = 'question-subscribe-updates';
136+
143137
if question.wiki and settings.WIKI_ON:
144138
self.fields['wiki'].initial = True
145-
if user.is_authenticated():
146-
if user in question.followed_by.all():
147-
self.fields['email_notify'].initial = True
148-
return
149-
self.fields['email_notify'].initial = False
150139

151140

152141
class CloseForm(forms.Form):
@@ -165,27 +154,34 @@ class RevisionForm(forms.Form):
165154
"""
166155
revision = forms.ChoiceField(widget=forms.Select(attrs={'style' : 'width:520px'}))
167156

168-
def __init__(self, post, latest_revision, *args, **kwargs):
157+
def __init__(self, post, *args, **kwargs):
169158
super(RevisionForm, self).__init__(*args, **kwargs)
159+
170160
revisions = post.revisions.all().values_list(
171161
'revision', 'author__username', 'revised_at', 'summary')
172162
date_format = '%c'
173163
self.fields['revision'].choices = [
174164
(r[0], u'%s - %s (%s) %s' % (r[0], r[1], r[2].strftime(date_format), r[3]))
175165
for r in revisions]
176-
self.fields['revision'].initial = latest_revision.revision
166+
167+
self.fields['revision'].initial = post.active_revision.revision
177168

178169
class EditQuestionForm(forms.Form):
179170
title = TitleField()
180171
text = EditorField()
181172
tags = TagNamesField()
182173
summary = SummaryField()
183174

184-
def __init__(self, question, revision, *args, **kwargs):
175+
def __init__(self, question, revision=None, *args, **kwargs):
185176
super(EditQuestionForm, self).__init__(*args, **kwargs)
177+
178+
if revision is None:
179+
revision = question.active_revision
180+
186181
self.fields['title'].initial = revision.title
187-
self.fields['text'].initial = revision.text
182+
self.fields['text'].initial = revision.body
188183
self.fields['tags'].initial = revision.tagnames
184+
189185
# Once wiki mode is enabled, it can't be disabled
190186
if not question.wiki:
191187
self.fields['wiki'] = WikiField()
@@ -194,9 +190,13 @@ class EditAnswerForm(forms.Form):
194190
text = EditorField()
195191
summary = SummaryField()
196192

197-
def __init__(self, answer, revision, *args, **kwargs):
193+
def __init__(self, answer, revision=None, *args, **kwargs):
198194
super(EditAnswerForm, self).__init__(*args, **kwargs)
199-
self.fields['text'].initial = revision.text
195+
196+
if revision is None:
197+
revision = answer.active_revision
198+
199+
self.fields['text'].initial = revision.body
200200

201201
class EditUserForm(forms.Form):
202202
email = forms.EmailField(label=u'Email', help_text=_('this email does not have to be linked to gravatar'), required=True, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))

0 commit comments

Comments
 (0)