|
@@ -20,157 +20,188 @@ def create_users_settings_group(apps, schema_editor):
|
|
_(
|
|
_(
|
|
"Those settings control user accounts default behaviour and features availability."
|
|
"Those settings control user accounts default behaviour and features availability."
|
|
),
|
|
),
|
|
- 'settings': ({
|
|
|
|
- 'setting': 'account_activation',
|
|
|
|
- 'name': _("New accounts activation"),
|
|
|
|
- 'legend': _("New accounts"),
|
|
|
|
- 'value': 'none',
|
|
|
|
- 'form_field': 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('none', _("No activation required")),
|
|
|
|
- ('user', _("Activation token sent to User")),
|
|
|
|
- ('admin', _("Activation by administrator")),
|
|
|
|
- ('closed', _("Don't allow new registrations")))
|
|
|
|
|
|
+ 'settings': [
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'account_activation',
|
|
|
|
+ 'name': _("New accounts activation"),
|
|
|
|
+ 'legend': _("New accounts"),
|
|
|
|
+ 'value': 'none',
|
|
|
|
+ 'form_field': 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('none', _("No activation required")),
|
|
|
|
+ ('user', _("Activation token sent to User")),
|
|
|
|
+ ('admin', _("Activation by administrator")),
|
|
|
|
+ ('closed', _("Don't allow new registrations")),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'username_length_min',
|
|
|
|
- 'name': _("Minimum length"),
|
|
|
|
- 'description': _("Minimum allowed username length."),
|
|
|
|
- 'legend': _("User names"),
|
|
|
|
- 'python_type': 'int',
|
|
|
|
- 'value': 3,
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'min_value': 2,
|
|
|
|
- 'max_value': 20,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'username_length_min',
|
|
|
|
+ 'name': _("Minimum length"),
|
|
|
|
+ 'description': _("Minimum allowed username length."),
|
|
|
|
+ 'legend': _("User names"),
|
|
|
|
+ 'python_type': 'int',
|
|
|
|
+ 'value': 3,
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'min_value': 2,
|
|
|
|
+ 'max_value': 20,
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'username_length_max',
|
|
|
|
- 'name': _("Maximum length"),
|
|
|
|
- 'description': _("Maximum allowed username length."),
|
|
|
|
- 'python_type': 'int',
|
|
|
|
- 'value': 14,
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'min_value': 2,
|
|
|
|
- 'max_value': 20,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'username_length_max',
|
|
|
|
+ 'name': _("Maximum length"),
|
|
|
|
+ 'description': _("Maximum allowed username length."),
|
|
|
|
+ 'python_type': 'int',
|
|
|
|
+ 'value': 14,
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'min_value': 2,
|
|
|
|
+ 'max_value': 20,
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'password_length_min',
|
|
|
|
- 'name': _("Minimum length"),
|
|
|
|
- 'description': _("Minimum allowed user password length."),
|
|
|
|
- 'legend': _("Passwords"),
|
|
|
|
- 'python_type': 'int',
|
|
|
|
- 'value': 5,
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'min_value': 2,
|
|
|
|
- 'max_value': 255,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'password_length_min',
|
|
|
|
+ 'name': _("Minimum length"),
|
|
|
|
+ 'description': _("Minimum allowed user password length."),
|
|
|
|
+ 'legend': _("Passwords"),
|
|
|
|
+ 'python_type': 'int',
|
|
|
|
+ 'value': 5,
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'min_value': 2,
|
|
|
|
+ 'max_value': 255,
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting':
|
|
|
|
- 'allow_custom_avatars',
|
|
|
|
- 'name':
|
|
|
|
- _("Allow custom avatars"),
|
|
|
|
- 'legend':
|
|
|
|
- _("Avatars"),
|
|
|
|
- 'description':
|
|
|
|
- _(
|
|
|
|
- "Turning this option off will forbid "
|
|
|
|
- "forum users from using avatars from "
|
|
|
|
- "outside forums. Good for forums "
|
|
|
|
- "adressed at young users."
|
|
|
|
- ),
|
|
|
|
- 'python_type':
|
|
|
|
- 'bool',
|
|
|
|
- 'value':
|
|
|
|
- True,
|
|
|
|
- 'form_field':
|
|
|
|
- 'yesno',
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'default_avatar',
|
|
|
|
- 'name': _("Default avatar"),
|
|
|
|
- 'value': 'gravatar',
|
|
|
|
- 'form_field': 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('dynamic', _("Individual")), ('gravatar', _("Gravatar")),
|
|
|
|
- ('gallery', _("Random avatar from gallery")), ),
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting':
|
|
|
|
+ 'allow_custom_avatars',
|
|
|
|
+ 'name':
|
|
|
|
+ _("Allow custom avatars"),
|
|
|
|
+ 'legend':
|
|
|
|
+ _("Avatars"),
|
|
|
|
+ 'description':
|
|
|
|
+ _(
|
|
|
|
+ "Turning this option off will forbid "
|
|
|
|
+ "forum users from using avatars from "
|
|
|
|
+ "outside forums. Good for forums "
|
|
|
|
+ "adressed at young users."
|
|
|
|
+ ),
|
|
|
|
+ 'python_type':
|
|
|
|
+ 'bool',
|
|
|
|
+ 'value':
|
|
|
|
+ True,
|
|
|
|
+ 'form_field':
|
|
|
|
+ 'yesno',
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting':
|
|
|
|
- 'default_gravatar_fallback',
|
|
|
|
- 'name':
|
|
|
|
- _("Fallback for default gravatar"),
|
|
|
|
- 'description':
|
|
|
|
- _(
|
|
|
|
- "Select which avatar to use when user "
|
|
|
|
- "has no gravatar associated with his "
|
|
|
|
- "e-mail address."
|
|
|
|
- ),
|
|
|
|
- 'value':
|
|
|
|
- 'dynamic',
|
|
|
|
- 'form_field':
|
|
|
|
- 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('dynamic', _("Individual")),
|
|
|
|
- ('gallery', _("Random avatar from gallery")), ),
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'default_avatar',
|
|
|
|
+ 'name': _("Default avatar"),
|
|
|
|
+ 'value': 'gravatar',
|
|
|
|
+ 'form_field': 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('dynamic', _("Individual")),
|
|
|
|
+ ('gravatar', _("Gravatar")),
|
|
|
|
+ ('gallery', _("Random avatar from gallery")),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting': 'avatar_upload_limit',
|
|
|
|
- 'name': _("Maximum size of uploaded avatar"),
|
|
|
|
- 'description': _("Enter maximum allowed file size "
|
|
|
|
- "(in KB) for avatar uploads"),
|
|
|
|
- 'python_type': 'int',
|
|
|
|
- 'value': 1536,
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'min_value': 0,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting':
|
|
|
|
+ 'default_gravatar_fallback',
|
|
|
|
+ 'name':
|
|
|
|
+ _("Fallback for default gravatar"),
|
|
|
|
+ 'description':
|
|
|
|
+ _(
|
|
|
|
+ "Select which avatar to use when user "
|
|
|
|
+ "has no gravatar associated with his "
|
|
|
|
+ "e-mail address."
|
|
|
|
+ ),
|
|
|
|
+ 'value':
|
|
|
|
+ 'dynamic',
|
|
|
|
+ 'form_field':
|
|
|
|
+ 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('dynamic', _("Individual")),
|
|
|
|
+ ('gallery', _("Random avatar from gallery")),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'signature_length_max',
|
|
|
|
- 'name': _("Maximum length"),
|
|
|
|
- 'legend': _("Signatures"),
|
|
|
|
- 'description': _("Maximum allowed signature length."),
|
|
|
|
- 'python_type': 'int',
|
|
|
|
- 'value': 256,
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'min_value': 10,
|
|
|
|
- 'max_value': 5000,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting':
|
|
|
|
+ 'avatar_upload_limit',
|
|
|
|
+ 'name':
|
|
|
|
+ _("Maximum size of uploaded avatar"),
|
|
|
|
+ 'description':
|
|
|
|
+ _("Enter maximum allowed file size "
|
|
|
|
+ "(in KB) for avatar uploads"),
|
|
|
|
+ 'python_type':
|
|
|
|
+ 'int',
|
|
|
|
+ 'value':
|
|
|
|
+ 1536,
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'min_value': 0,
|
|
|
|
+ },
|
|
|
|
+ 'is_public':
|
|
|
|
+ True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'subscribe_start',
|
|
|
|
- 'name': _("Started threads"),
|
|
|
|
- 'legend': _("Default subscriptions settings"),
|
|
|
|
- 'value': 'watch_email',
|
|
|
|
- 'form_field': 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('no', _("Don't watch")),
|
|
|
|
- ('watch', _("Put on watched threads list")), (
|
|
|
|
- 'watch_email', _(
|
|
|
|
- "Put on watched threads "
|
|
|
|
- "list and e-mail user when "
|
|
|
|
- "somebody replies"
|
|
|
|
- )
|
|
|
|
- ), ),
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'signature_length_max',
|
|
|
|
+ 'name': _("Maximum length"),
|
|
|
|
+ 'legend': _("Signatures"),
|
|
|
|
+ 'description': _("Maximum allowed signature length."),
|
|
|
|
+ 'python_type': 'int',
|
|
|
|
+ 'value': 256,
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'min_value': 10,
|
|
|
|
+ 'max_value': 5000,
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting': 'subscribe_reply',
|
|
|
|
- 'name': _("Replied threads"),
|
|
|
|
- 'value': 'watch_email',
|
|
|
|
- 'form_field': 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('no', _("Don't watch")),
|
|
|
|
- ('watch', _("Put on watched threads list")), (
|
|
|
|
- 'watch_email', _(
|
|
|
|
- "Put on watched threads "
|
|
|
|
- "list and e-mail user when "
|
|
|
|
- "somebody replies"
|
|
|
|
- )
|
|
|
|
- ), ),
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'subscribe_start',
|
|
|
|
+ 'name': _("Started threads"),
|
|
|
|
+ 'legend': _("Default subscriptions settings"),
|
|
|
|
+ 'value': 'watch_email',
|
|
|
|
+ 'form_field': 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('no', _("Don't watch")),
|
|
|
|
+ ('watch', _("Put on watched threads list")),
|
|
|
|
+ (
|
|
|
|
+ 'watch_email', _(
|
|
|
|
+ "Put on watched threads "
|
|
|
|
+ "list and e-mail user when "
|
|
|
|
+ "somebody replies"
|
|
|
|
+ )
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, )
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'subscribe_reply',
|
|
|
|
+ 'name': _("Replied threads"),
|
|
|
|
+ 'value': 'watch_email',
|
|
|
|
+ 'form_field': 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('no', _("Don't watch")),
|
|
|
|
+ ('watch', _("Put on watched threads list")),
|
|
|
|
+ (
|
|
|
|
+ 'watch_email', _(
|
|
|
|
+ "Put on watched threads "
|
|
|
|
+ "list and e-mail user when "
|
|
|
|
+ "somebody replies"
|
|
|
|
+ )
|
|
|
|
+ ),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
}
|
|
}
|
|
)
|
|
)
|
|
|
|
|
|
@@ -183,70 +214,80 @@ def create_users_settings_group(apps, schema_editor):
|
|
'description':
|
|
'description':
|
|
_("Those settings allow you to combat automatic "
|
|
_("Those settings allow you to combat automatic "
|
|
"registrations on your forum."),
|
|
"registrations on your forum."),
|
|
- 'settings': ({
|
|
|
|
- 'setting': 'captcha_type',
|
|
|
|
- 'name': _("Select CAPTCHA type"),
|
|
|
|
- 'legend': _("CAPTCHA type"),
|
|
|
|
- 'value': 'no',
|
|
|
|
- 'form_field': 'select',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'choices': (('no', _("No CAPTCHA")), ('re', _("reCaptcha")),
|
|
|
|
- ('qa', _("Question and answer")), ),
|
|
|
|
|
|
+ 'settings': [
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'captcha_type',
|
|
|
|
+ 'name': _("Select CAPTCHA type"),
|
|
|
|
+ 'legend': _("CAPTCHA type"),
|
|
|
|
+ 'value': 'no',
|
|
|
|
+ 'form_field': 'select',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'choices': [
|
|
|
|
+ ('no', _("No CAPTCHA")),
|
|
|
|
+ ('re', _("reCaptcha")),
|
|
|
|
+ ('qa', _("Question and answer")),
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'recaptcha_site_key',
|
|
|
|
- 'name': _("Site key"),
|
|
|
|
- 'legend': _("reCAPTCHA"),
|
|
|
|
- 'value': '',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'required': False,
|
|
|
|
- 'max_length': 100,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'recaptcha_site_key',
|
|
|
|
+ 'name': _("Site key"),
|
|
|
|
+ 'legend': _("reCAPTCHA"),
|
|
|
|
+ 'value': '',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'required': False,
|
|
|
|
+ 'max_length': 100,
|
|
|
|
+ },
|
|
|
|
+ 'is_public': True,
|
|
},
|
|
},
|
|
- 'is_public': True,
|
|
|
|
- }, {
|
|
|
|
- 'setting': 'recaptcha_secret_key',
|
|
|
|
- 'name': _("Secret key"),
|
|
|
|
- 'value': '',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'required': False,
|
|
|
|
- 'max_length': 100,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'recaptcha_secret_key',
|
|
|
|
+ 'name': _("Secret key"),
|
|
|
|
+ 'value': '',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'required': False,
|
|
|
|
+ 'max_length': 100,
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting': 'qa_question',
|
|
|
|
- 'name': _("Test question"),
|
|
|
|
- 'legend': _("Question and answer"),
|
|
|
|
- 'value': '',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'required': False,
|
|
|
|
- 'max_length': 250,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'qa_question',
|
|
|
|
+ 'name': _("Test question"),
|
|
|
|
+ 'legend': _("Question and answer"),
|
|
|
|
+ 'value': '',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'required': False,
|
|
|
|
+ 'max_length': 250,
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting': 'qa_help_text',
|
|
|
|
- 'name': _("Question help text"),
|
|
|
|
- 'value': '',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'required': False,
|
|
|
|
- 'max_length': 250,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting': 'qa_help_text',
|
|
|
|
+ 'name': _("Question help text"),
|
|
|
|
+ 'value': '',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'required': False,
|
|
|
|
+ 'max_length': 250,
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, {
|
|
|
|
- 'setting':
|
|
|
|
- 'qa_answers',
|
|
|
|
- 'name':
|
|
|
|
- _("Valid answers"),
|
|
|
|
- 'description':
|
|
|
|
- _("Enter each answer in new line. "
|
|
|
|
- "Answers are case-insensitive."),
|
|
|
|
- 'value':
|
|
|
|
- '',
|
|
|
|
- 'form_field':
|
|
|
|
- 'textarea',
|
|
|
|
- 'field_extra': {
|
|
|
|
- 'rows': 4,
|
|
|
|
- 'required': False,
|
|
|
|
- 'max_length': 250,
|
|
|
|
|
|
+ {
|
|
|
|
+ 'setting':
|
|
|
|
+ 'qa_answers',
|
|
|
|
+ 'name':
|
|
|
|
+ _("Valid answers"),
|
|
|
|
+ 'description':
|
|
|
|
+ _("Enter each answer in new line. "
|
|
|
|
+ "Answers are case-insensitive."),
|
|
|
|
+ 'value':
|
|
|
|
+ '',
|
|
|
|
+ 'form_field':
|
|
|
|
+ 'textarea',
|
|
|
|
+ 'field_extra': {
|
|
|
|
+ 'rows': 4,
|
|
|
|
+ 'required': False,
|
|
|
|
+ 'max_length': 250,
|
|
|
|
+ },
|
|
},
|
|
},
|
|
- }, )
|
|
|
|
|
|
+ ],
|
|
}
|
|
}
|
|
)
|
|
)
|
|
|
|
|