##// END OF EJS Templates
Option to subscribe to threads by default
neko259 -
r2088:09f03b4f default
parent child Browse files
Show More
@@ -20,6 +20,7 b" SETTING_IMAGES = 'images_aliases'"
20 SETTING_ONLY_FAVORITES = 'only_favorites'
20 SETTING_ONLY_FAVORITES = 'only_favorites'
21 SETTING_LAST_POSTS = 'last_posts'
21 SETTING_LAST_POSTS = 'last_posts'
22 SETTING_CONFIRMED_USER = 'confirmed_user'
22 SETTING_CONFIRMED_USER = 'confirmed_user'
23 SETTING_SUBSCRIBE_BY_DEFAULT = 'subscribe_by_default'
23
24
24 DEFAULT_THEME = 'md'
25 DEFAULT_THEME = 'md'
25
26
@@ -198,7 +198,7 b' class PostForm(NeboardForm):'
198 widget=forms.TextInput(attrs={
198 widget=forms.TextInput(attrs={
199 'class': 'form-email'}))
199 'class': 'form-email'}))
200 subscribe = forms.BooleanField(required=False,
200 subscribe = forms.BooleanField(required=False,
201 label=_('Subscribe to thread'), initial=True)
201 label=_('Subscribe to thread'))
202
202
203 guess = forms.CharField(widget=forms.HiddenInput(), required=False)
203 guess = forms.CharField(widget=forms.HiddenInput(), required=False)
204 timestamp = forms.CharField(widget=forms.HiddenInput(), required=False)
204 timestamp = forms.CharField(widget=forms.HiddenInput(), required=False)
@@ -524,6 +524,8 b' class SettingsForm(NeboardForm):'
524 label=_('Image view mode'))
524 label=_('Image view mode'))
525 username = forms.CharField(label=_('User name'), required=False)
525 username = forms.CharField(label=_('User name'), required=False)
526 timezone = forms.ChoiceField(choices=get_timezones(), label=_('Time zone'))
526 timezone = forms.ChoiceField(choices=get_timezones(), label=_('Time zone'))
527 subscribe_by_default = forms.BooleanField(
528 required=False, label=_('Subscribe to threads by default'))
527
529
528 def clean_username(self):
530 def clean_username(self):
529 username = self.cleaned_data['username']
531 username = self.cleaned_data['username']
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -620,3 +620,6 b' msgstr "\xd0\xa7\xd1\x82\xd0\xbe\xd0\xb1\xd1\x8b \xd0\xb4\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xb2\xd0\xb8\xd1\x82\xd1\x8c \xd1\x81\xd1\x82\xd0\xb8\xd0\xba\xd0\xb5\xd1\x80, \xd1\x81\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd1\x82\xd0\xb5\xd0\xbc\xd1\x83-\xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80 \xd1\x81 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc \xd0\xb2 \xd0\xba\xd0\xb0\xd1\x87\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0 \xd1\x81\xd1\x82\xd0\xb8\xd0\xba\xd0\xb5\xd1\x80\xd0\xbe\xd0\xb2, \xd0\xb8 \xd1\x82\xd1\x80\xd0\xb8\xd0\xbf\xd0\xba\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbc \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd0\xb4\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb6\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd0\xb2\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbc. \xd0\x97\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbc, \xd0\xb4\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xb2\xd0\xbb\xd1\x8f\xd0\xb9\xd1\x82\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd1\x81 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc \xd0\xb2 \xd0\xba\xd0\xb0\xd1\x87\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xb5 \xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8 \xd1\x81\xd1\x82\xd0\xb8\xd0\xba\xd0\xb5\xd1\x80\xd0\xb0, \xd0\xb8 \xd1\x82\xd0\xb5\xd0\xbc \xd0\xb6\xd0\xb5 \xd1\x82\xd1\x80\xd0\xb8\xd0\xbf\xd0\xba\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbc\xd0\xbc. \xd0\x98\xd1\x85 \xd0\xb2\xd0\xbb\xd0\xbe\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd1\x83\xd1\x82 \xd1\x81\xd1\x82\xd0\xb8\xd0\xba\xd0\xb5\xd1\x80\xd0\xb0\xd0\xbc\xd0\xb8."'
620
620
621 msgid "Inappropriate sticker pack name."
621 msgid "Inappropriate sticker pack name."
622 msgstr "Недопустимое имя набора стикеров."
622 msgstr "Недопустимое имя набора стикеров."
623
624 msgid "Subscribe to threads by default"
625 msgstr "Подписываться на темы по умолчанию"
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -620,3 +620,6 b' msgstr "\xd0\xa9\xd0\xbe\xd0\xb1 \xd0\xb4\xd0\xbe\xd0\xb4\xd0\xb0\xd1\x82\xd0\xb8 \xd1\x81\xd1\x82\xd1\x96\xd0\xba\xd0\xb5\xd1\x80, \xd1\x81\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd1\x96\xd1\x82\xd1\x8c \xd1\x82\xd0\xb5\xd0\xbc\xd1\x83-\xd0\xbd\xd0\xb0\xd0\xb1\xd1\x96\xd1\x80 \xd0\xb7 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc \xd1\x83 \xd1\x8f\xd0\xba\xd0\xbe\xd1\x81\xd1\x82\xd1\x96 \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd1\x83 \xd1\x81\xd1\x82\xd1\x96\xd0\xba\xd0\xb5\xd1\x80\xd1\x96\xd0\xb2, \xd1\x82\xd0\xb0 \xd1\x82\xd1\x80\xd1\x96\xd0\xbf\xd0\xba\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbc \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbf\xd1\x96\xd0\xb4\xd1\x82\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb4\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8f \xd0\xb2\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb4\xd1\x96\xd0\xbd\xd0\xbd\xd1\x8f \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbc\xd1\x82. \xd0\x9f\xd0\xbe\xd1\x82\xd1\x96\xd0\xbc, \xd0\xb4\xd0\xbe\xd0\xb4\xd0\xb0\xd0\xb2\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xbf\xd0\xbe\xd0\xb2\xd1\x96\xd0\xb4\xd0\xbe\xd0\xbc\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8f \xd0\xb7 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc \xd1\x83 \xd1\x8f\xd0\xba\xd0\xbe\xd1\x81\xd1\x82\xd1\x96 \xd1\x96\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x96 \xd1\x81\xd1\x82\xd1\x96\xd0\xba\xd0\xb5\xd1\x80\xd1\x83 \xd1\x82\xd0\xb0 \xd0\xb7 \xd1\x82\xd0\xb8\xd0\xbc \xd1\x81\xd0\xb0\xd0\xbc\xd0\xb8\xd0\xbc \xd1\x82\xd1\x80\xd1\x96\xd0\xbf\xd0\xba\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbc. \xd0\x87\xd1\x85\xd0\xbd\xd1\x96 \xd0\xb2\xd0\xba\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8f \xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd1\x83\xd1\x82 \xd1\x81\xd1\x82\xd1\x96\xd0\xba\xd0\xb5\xd1\x80\xd0\xb0\xd0\xbc\xd0\xb8."'
620
620
621 msgid "Inappropriate sticker pack name."
621 msgid "Inappropriate sticker pack name."
622 msgstr "Неприпустиме ім'я набору стікерів."
622 msgstr "Неприпустиме ім'я набору стікерів."
623
624 msgid "Subscribe to threads by default"
625 msgstr "Підписуватися на нитки за замовчанням"
@@ -9,7 +9,7 b' from boards import settings'
9 from boards.abstracts.constants import PARAM_PAGE
9 from boards.abstracts.constants import PARAM_PAGE
10 from boards.abstracts.paginator import get_paginator
10 from boards.abstracts.paginator import get_paginator
11 from boards.abstracts.settingsmanager import get_settings_manager, \
11 from boards.abstracts.settingsmanager import get_settings_manager, \
12 SETTING_ONLY_FAVORITES
12 SETTING_ONLY_FAVORITES, SETTING_SUBSCRIBE_BY_DEFAULT
13 from boards.forms import ThreadForm, PlainErrorList
13 from boards.forms import ThreadForm, PlainErrorList
14 from boards.models import Post, Thread
14 from boards.models import Post, Thread
15 from boards.settings import SECTION_VIEW
15 from boards.settings import SECTION_VIEW
@@ -53,9 +53,13 b' class AllThreadsView(BaseBoardView, Pagi'
53
53
54 params = self.get_context_data(request=request)
54 params = self.get_context_data(request=request)
55
55
56 subscribe_by_default = get_settings_manager(request).get_setting(
57 SETTING_SUBSCRIBE_BY_DEFAULT, False)
58
56 if not form:
59 if not form:
57 form = ThreadForm(error_class=PlainErrorList,
60 form = ThreadForm(error_class=PlainErrorList,
58 initial={FORM_TAGS: self.tag_name})
61 initial={FORM_TAGS: self.tag_name,
62 'subscribe': subscribe_by_default})
59
63
60 self.settings_manager = get_settings_manager(request)
64 self.settings_manager = get_settings_manager(request)
61
65
@@ -5,7 +5,8 b' from django.utils.decorators import meth'
5 from django.views.decorators.csrf import csrf_protect
5 from django.views.decorators.csrf import csrf_protect
6
6
7 from boards.abstracts.settingsmanager import get_settings_manager, \
7 from boards.abstracts.settingsmanager import get_settings_manager, \
8 SETTING_USERNAME, SETTING_LAST_NOTIFICATION_ID, SETTING_IMAGE_VIEWER
8 SETTING_USERNAME, SETTING_LAST_NOTIFICATION_ID, SETTING_IMAGE_VIEWER, \
9 SETTING_SUBSCRIBE_BY_DEFAULT
9 from boards.middlewares import SESSION_TIMEZONE
10 from boards.middlewares import SESSION_TIMEZONE
10 from boards.views.base import BaseBoardView, CONTEXT_FORM
11 from boards.views.base import BaseBoardView, CONTEXT_FORM
11 from boards.forms import SettingsForm, PlainErrorList
12 from boards.forms import SettingsForm, PlainErrorList
@@ -16,6 +17,7 b" FORM_THEME = 'theme'"
16 FORM_USERNAME = 'username'
17 FORM_USERNAME = 'username'
17 FORM_TIMEZONE = 'timezone'
18 FORM_TIMEZONE = 'timezone'
18 FORM_IMAGE_VIEWER = 'image_viewer'
19 FORM_IMAGE_VIEWER = 'image_viewer'
20 FORM_SUBSCRIBE = 'subscribe_by_default'
19
21
20 CONTEXT_HIDDEN_TAGS = 'hidden_tags'
22 CONTEXT_HIDDEN_TAGS = 'hidden_tags'
21
23
@@ -39,6 +41,7 b' class SettingsView(BaseBoardView):'
39 FORM_USERNAME: settings_manager.get_setting(SETTING_USERNAME),
41 FORM_USERNAME: settings_manager.get_setting(SETTING_USERNAME),
40 FORM_TIMEZONE: request.session.get(
42 FORM_TIMEZONE: request.session.get(
41 SESSION_TIMEZONE, timezone.get_current_timezone()),
43 SESSION_TIMEZONE, timezone.get_current_timezone()),
44 FORM_SUBSCRIBE: settings_manager.get_setting(SETTING_SUBSCRIBE_BY_DEFAULT, False)
42 },
45 },
43 error_class=PlainErrorList)
46 error_class=PlainErrorList)
44
47
@@ -61,6 +64,7 b' class SettingsView(BaseBoardView):'
61 settings_manager.set_theme(selected_theme)
64 settings_manager.set_theme(selected_theme)
62 settings_manager.set_setting(SETTING_IMAGE_VIEWER,
65 settings_manager.set_setting(SETTING_IMAGE_VIEWER,
63 form.cleaned_data[FORM_IMAGE_VIEWER])
66 form.cleaned_data[FORM_IMAGE_VIEWER])
67 settings_manager.set_setting(SETTING_SUBSCRIBE_BY_DEFAULT, form.cleaned_data[SETTING_SUBSCRIBE_BY_DEFAULT])
64
68
65 old_username = settings_manager.get_setting(SETTING_USERNAME)
69 old_username = settings_manager.get_setting(SETTING_USERNAME)
66 if username != old_username:
70 if username != old_username:
@@ -6,7 +6,8 b' from django.utils.decorators import meth'
6 from django.views.decorators.csrf import csrf_protect
6 from django.views.decorators.csrf import csrf_protect
7 from django.views.generic.edit import FormMixin
7 from django.views.generic.edit import FormMixin
8
8
9 from boards.abstracts.settingsmanager import get_settings_manager
9 from boards.abstracts.settingsmanager import get_settings_manager, \
10 SETTING_SUBSCRIBE_BY_DEFAULT
10 from boards.forms import PostForm, PlainErrorList
11 from boards.forms import PostForm, PlainErrorList
11 from boards.models import Post
12 from boards.models import Post
12 from boards.views.base import BaseBoardView, CONTEXT_FORM
13 from boards.views.base import BaseBoardView, CONTEXT_FORM
@@ -43,7 +44,10 b' class ThreadView(BaseBoardView, FormMixi'
43 .get_absolute_url(), opening_post.id))
44 .get_absolute_url(), opening_post.id))
44
45
45 if not form:
46 if not form:
46 form = PostForm(error_class=PlainErrorList)
47 subscribe_by_default = settings_manager.get_setting(
48 SETTING_SUBSCRIBE_BY_DEFAULT, False)
49 form = PostForm(error_class=PlainErrorList,
50 initial={'subscribe': subscribe_by_default})
47
51
48 thread_to_show = opening_post.get_thread()
52 thread_to_show = opening_post.get_thread()
49
53
General Comments 0
You need to be logged in to leave comments. Login now