diff --git a/boards/abstracts/settingsmanager.py b/boards/abstracts/settingsmanager.py --- a/boards/abstracts/settingsmanager.py +++ b/boards/abstracts/settingsmanager.py @@ -1,8 +1,3 @@ -import uuid - -import boards -from boards.abstracts.tripcode import Tripcode - from boards.models import Tag MAX_TRIPCODE_COLLISIONS = 50 @@ -123,27 +118,6 @@ class SettingsManager: tags.remove(tag.name) self.set_setting(SETTING_HIDDEN_TAGS, tags) - def get_tripcode(self): - tripcode = self.get_setting(SETTING_TRIPCODE) - if tripcode is None: - self.reset_tripcode() - tripcode = self.get_setting(SETTING_TRIPCODE) - return tripcode - - def reset_tripcode(self): - tripcode = Tripcode(str(uuid.uuid4())) - - # If we cannot find a collision-free tripcode, then let the collision - # be destiny - collision_counter = 0 - while boards.models.Post.objects.filter( - tripcode__startswith=tripcode.get_short_text()).exists()\ - and collision_counter < MAX_TRIPCODE_COLLISIONS: - tripcode = Tripcode(str(uuid.uuid4())) - collision_counter += 1 - print('Tripcode collision detected') # FIXME Use proper logging - self.set_setting(SETTING_TRIPCODE, tripcode.get_full_text()) - class SessionSettingsManager(SettingsManager): """ diff --git a/boards/forms.py b/boards/forms.py --- a/boards/forms.py +++ b/boards/forms.py @@ -1,3 +1,4 @@ +import hashlib import re import time @@ -9,12 +10,12 @@ from django.forms.util import ErrorList from django.utils.translation import ugettext_lazy as _ import requests -from boards.abstracts.settingsmanager import SessionSettingsManager from boards.mdx_neboard import formatters from boards.models.post import TITLE_MAX_LENGTH from boards.models import Tag, Post from neboard import settings import boards.settings as board_settings +import neboard HEADER_CONTENT_LENGTH = 'content-length' HEADER_CONTENT_TYPE = 'content-type' @@ -130,7 +131,10 @@ class NeboardForm(forms.Form): class PostForm(NeboardForm): title = forms.CharField(max_length=TITLE_MAX_LENGTH, required=False, - label=LABEL_TITLE) + label=LABEL_TITLE, + widget=forms.TextInput( + attrs={ATTRIBUTE_PLACEHOLDER: + 'test#tripcode'})) text = forms.CharField( widget=FormatPanel(attrs={ ATTRIBUTE_PLACEHOLDER: TEXT_PLACEHOLDER, @@ -152,7 +156,6 @@ class PostForm(NeboardForm): threads = forms.CharField(required=False, label=_('Additional threads'), widget=forms.TextInput(attrs={ATTRIBUTE_PLACEHOLDER: '123 456 789'})) - tripcode = forms.BooleanField(label=_('Tripcode'), required=False) session = None need_to_ban = False @@ -240,8 +243,17 @@ class PostForm(NeboardForm): return file or self.cleaned_data['file_url'] def get_tripcode(self): - if self.cleaned_data['tripcode']: - return SessionSettingsManager(self.session).get_tripcode() + title = self.cleaned_data['title'] + if title is not None and '#' in title: + code = title.split('#', maxsplit=1)[1] + neboard.settings.SECRET_KEY + return hashlib.md5(code.encode()).hexdigest() + + def get_title(self): + title = self.cleaned_data['title'] + if title is not None and '#' in title: + return title.split('#', maxsplit=1)[0] + else: + return title def _clean_text_file(self): text = self.cleaned_data.get('text') diff --git a/boards/templates/boards/settings.html b/boards/templates/boards/settings.html --- a/boards/templates/boards/settings.html +++ b/boards/templates/boards/settings.html @@ -26,11 +26,6 @@ {% else %}

{% trans 'No hidden tags.' %}

{% endif %} -
{% trans "Tripcode:" %} {% autoescape off %}{{ tripcode.get_view }}{% endautoescape %} -
- () -
-
diff --git a/boards/views/all_threads.py b/boards/views/all_threads.py --- a/boards/views/all_threads.py +++ b/boards/views/all_threads.py @@ -139,7 +139,7 @@ class AllThreadsView(PostMixin, BaseBoar data = form.cleaned_data - title = data[FORM_TITLE] + title = form.get_title() text = data[FORM_TEXT] file = form.get_file() threads = data[FORM_THREADS] diff --git a/boards/views/settings.py b/boards/views/settings.py --- a/boards/views/settings.py +++ b/boards/views/settings.py @@ -4,21 +4,17 @@ from django.utils import timezone from boards.abstracts.settingsmanager import get_settings_manager, \ SETTING_USERNAME, SETTING_LAST_NOTIFICATION_ID, SETTING_IMAGE_VIEWER -from boards.abstracts.tripcode import Tripcode from boards.middlewares import SESSION_TIMEZONE from boards.views.base import BaseBoardView, CONTEXT_FORM from boards.forms import SettingsForm, PlainErrorList from boards import settings -PARAM_RESET_TRIPCODE = 'reset_tripcode' - FORM_THEME = 'theme' FORM_USERNAME = 'username' FORM_TIMEZONE = 'timezone' FORM_IMAGE_VIEWER = 'image_viewer' CONTEXT_HIDDEN_TAGS = 'hidden_tags' -CONTEXT_TRIPCODE = 'tripcode' TEMPLATE = 'boards/settings.html' @@ -45,17 +41,12 @@ class SettingsView(BaseBoardView): params[CONTEXT_FORM] = form params[CONTEXT_HIDDEN_TAGS] = settings_manager.get_hidden_tags() - params[CONTEXT_TRIPCODE] = Tripcode(settings_manager.get_tripcode()) return render(request, TEMPLATE, params) def post(self, request): settings_manager = get_settings_manager(request) - if PARAM_RESET_TRIPCODE in request.POST: - settings_manager.reset_tripcode() - return self.get(request) - with transaction.atomic(): form = SettingsForm(request.POST, error_class=PlainErrorList) diff --git a/boards/views/thread/thread.py b/boards/views/thread/thread.py --- a/boards/views/thread/thread.py +++ b/boards/views/thread/thread.py @@ -101,7 +101,7 @@ class ThreadView(BaseBoardView, PostMixi data = form.cleaned_data - title = data[FORM_TITLE] + title = form.get_title() text = data[FORM_TEXT] file = form.get_file() threads = data[FORM_THREADS]