123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from django.conf import settings
- from django.core.exceptions import ValidationError
- from django.utils.translation import ugettext_lazy as _
- from django import forms
- from misago.forms import Form
- from misago.models import ThemeAdjustment
- from misago.validators import validate_sluggable
- available_themes = []
- for theme in settings.INSTALLED_THEMES[0:-1]:
- available_themes.append((theme, theme))
- class ThemeAdjustmentForm(Form):
- theme = forms.ChoiceField(choices=available_themes, required=False)
- useragents = forms.CharField(widget=forms.Textarea, required=False)
-
- layout = (
- (
- _("Theme Adjustment"),
- (
- ('theme', {'label': _("Theme"), 'help_text': _("Select theme that is to replace default one.")}),
- ('useragents', {'label': _("UserAgent Strings"), 'help_text': _("Enter UserAgent strings for which selected theme has to replace default one. Each string has to be entered in new line. This is case insensitive")}),
- ),
- ),
- )
- def __init__(self, adjustment=None, *args, **kwargs):
- self.request = kwargs['request']
- if adjustment:
- self.adjustment = adjustment
- else:
- self.adjustment = ThemeAdjustment()
- super(ThemeAdjustmentForm, self).__init__(*args, **kwargs)
-
- def clean_theme(self):
- self.adjustment.theme = self.cleaned_data['theme']
- self.adjustment.full_clean()
- return self.cleaned_data['theme']
- def clean_useragents(self):
- agents_raw = self.cleaned_data['useragents'].strip().lower().splitlines()
- agents = []
- for line in agents_raw:
- line = line.strip()
- if line and not line in agents:
- agents.append(line)
- self.cleaned_data['useragents'] = agents
- if not agents:
- raise ValidationError(_("You have to enter at least one UserAgent."))
- return self.cleaned_data['useragents']
|