22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
1 |
import re |
2 |
from datetime import datetime |
|
3 |
import os.path |
|
4 |
||
5 |
from django import forms |
|
6 |
from django.conf import settings |
|
7 |
from django.utils.translation import ugettext as _ |
|
8 |
from django.contrib.auth.models import User |
|
9 |
||
62.1.7
by Holger Rapp
Added support for profiles. No gravatar yet |
10 |
from pybb.models import Topic, Post, PrivateMessage, Attachment |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
11 |
from pybb import settings as pybb_settings |
12 |
||
209.1.29
by Timo Wingender
move notification.send from models.py to forms.py. This way the notification for new topic is send after all is in the database |
13 |
from notification import models as notification |
14 |
||
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
15 |
class AddPostForm(forms.ModelForm): |
16 |
name = forms.CharField(label=_('Subject')) |
|
17 |
attachment = forms.FileField(label=_('Attachment'), required=False) |
|
18 |
||
19 |
class Meta: |
|
20 |
model = Post |
|
209.1.68
by Timo Wingender
add field to choose between markdown and bbcode as markup |
21 |
fields = ['body', 'markup',] |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
22 |
|
23 |
def __init__(self, *args, **kwargs): |
|
24 |
self.user = kwargs.pop('user', None) |
|
25 |
self.topic = kwargs.pop('topic', None) |
|
26 |
self.forum = kwargs.pop('forum', None) |
|
27 |
self.ip = kwargs.pop('ip', None) |
|
28 |
super(AddPostForm, self).__init__(*args, **kwargs) |
|
29 |
||
209.1.68
by Timo Wingender
add field to choose between markdown and bbcode as markup |
30 |
self.fields.keyOrder = ['name', 'body', 'markup', 'attachment'] |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
31 |
|
32 |
if self.topic: |
|
33 |
self.fields['name'].widget = forms.HiddenInput() |
|
34 |
self.fields['name'].required = False |
|
35 |
||
36 |
if not pybb_settings.ATTACHMENT_ENABLE: |
|
37 |
self.fields['attachment'].widget = forms.HiddenInput() |
|
38 |
self.fields['attachment'].required = False |
|
39 |
||
40 |
||
41 |
def clean_attachment(self): |
|
42 |
if self.cleaned_data['attachment']: |
|
43 |
memfile = self.cleaned_data['attachment'] |
|
44 |
if memfile.size > pybb_settings.ATTACHMENT_SIZE_LIMIT: |
|
45 |
raise forms.ValidationError(_('Attachment is too big')) |
|
46 |
return self.cleaned_data['attachment'] |
|
47 |
||
48 |
||
49 |
||
247.1.1
by Holger Rapp
Model.save() should always take args and kwargs and pass them one. Whitespace fixes. Removed dependency on Site being configured on initial run of syncdb |
50 |
def save(self, *args, **kwargs): |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
51 |
if self.forum: |
209.1.29
by Timo Wingender
move notification.send from models.py to forms.py. This way the notification for new topic is send after all is in the database |
52 |
topic_is_new = True |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
53 |
topic = Topic(forum=self.forum, |
54 |
user=self.user, |
|
55 |
name=self.cleaned_data['name']) |
|
247.1.1
by Holger Rapp
Model.save() should always take args and kwargs and pass them one. Whitespace fixes. Removed dependency on Site being configured on initial run of syncdb |
56 |
topic.save(*args, **kwargs) |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
57 |
else: |
209.1.29
by Timo Wingender
move notification.send from models.py to forms.py. This way the notification for new topic is send after all is in the database |
58 |
topic_is_new = False |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
59 |
topic = self.topic |
60 |
||
61 |
post = Post(topic=topic, user=self.user, user_ip=self.ip, |
|
209.1.68
by Timo Wingender
add field to choose between markdown and bbcode as markup |
62 |
markup=self.cleaned_data['markup'], |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
63 |
body=self.cleaned_data['body']) |
247.1.1
by Holger Rapp
Model.save() should always take args and kwargs and pass them one. Whitespace fixes. Removed dependency on Site being configured on initial run of syncdb |
64 |
post.save(*args, **kwargs) |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
65 |
|
66 |
if pybb_settings.ATTACHMENT_ENABLE: |
|
67 |
self.save_attachment(post, self.cleaned_data['attachment']) |
|
209.1.29
by Timo Wingender
move notification.send from models.py to forms.py. This way the notification for new topic is send after all is in the database |
68 |
|
69 |
if topic_is_new: |
|
70 |
notification.send(User.objects.all(), "forum_new_topic", |
|
71 |
{'topic': topic, 'post':post, 'user':topic.user}) |
|
72 |
else: |
|
73 |
notification.send(self.topic.subscribers.all(), "forum_new_post", |
|
74 |
{'post':post, 'topic':topic, 'user':post.user}) |
|
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
75 |
return post |
76 |
||
77 |
||
78 |
def save_attachment(self, post, memfile): |
|
79 |
if memfile: |
|
80 |
obj = Attachment(size=memfile.size, content_type=memfile.content_type, |
|
81 |
name=memfile.name, post=post) |
|
82 |
dir = os.path.join(settings.MEDIA_ROOT, pybb_settings.ATTACHMENT_UPLOAD_TO) |
|
83 |
fname = '%d.0' % post.id |
|
84 |
path = os.path.join(dir, fname) |
|
85 |
file(path, 'w').write(memfile.read()) |
|
86 |
obj.path = fname |
|
87 |
obj.save() |
|
88 |
||
89 |
||
90 |
||
91 |
class EditPostForm(forms.ModelForm): |
|
92 |
class Meta: |
|
93 |
model = Post |
|
144
by Holger Rapp
Submit buttons are now disabled uppon submit to avoid double request. On failures buttons are reeneabled. This includes map uploading, wiki editing, wiki image uploading, forum post add, forum post edit |
94 |
fields = ['body'] |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
95 |
|
247.1.1
by Holger Rapp
Model.save() should always take args and kwargs and pass them one. Whitespace fixes. Removed dependency on Site being configured on initial run of syncdb |
96 |
def save(self, *args, **kwargs): |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
97 |
post = super(EditPostForm, self).save(commit=False) |
98 |
post.updated = datetime.now() |
|
247.1.1
by Holger Rapp
Model.save() should always take args and kwargs and pass them one. Whitespace fixes. Removed dependency on Site being configured on initial run of syncdb |
99 |
post.save(*args, **kwargs) |
22
by Holger Rapp
- Added my hacked version of pybb. Remerging new versions is very difficult at this point :( |
100 |
return post |
101 |
||
102 |
||
103 |
class UserSearchForm(forms.Form): |
|
104 |
query = forms.CharField(required=False, label='') |
|
105 |
||
106 |
def filter(self, qs): |
|
107 |
if self.is_valid(): |
|
108 |
query = self.cleaned_data['query'] |
|
109 |
return qs.filter(username__contains=query) |
|
110 |
else: |
|
111 |
return qs |