SRNI-2005/ctf
0
1from flask import session2from flask_babel import lazy_gettext as _l3from wtforms import PasswordField, SelectField, StringField, TextAreaField4from wtforms.fields.html5 import DateField, URLField5 6from CTFd.constants.languages import SELECT_LANGUAGE_LIST7from CTFd.forms import BaseForm8from CTFd.forms.fields import SubmitField9from CTFd.forms.users import (10 attach_custom_user_fields,11 attach_user_bracket_field,12 build_custom_user_fields,13 build_user_bracket_field,14)15from CTFd.utils.countries import SELECT_COUNTRIES_LIST16from CTFd.utils.user import get_current_user, get_current_user_attrs17 18 19def SettingsForm(*args, **kwargs):20 class _SettingsForm(BaseForm):21 name = StringField(_l("User Name"))22 email = StringField(_l("Email"))23 language = SelectField(_l("Language"), choices=SELECT_LANGUAGE_LIST)24 password = PasswordField(_l("Password"))25 confirm = PasswordField(_l("Current Password"))26 affiliation = StringField(_l("Affiliation"))27 website = URLField(_l("Website"))28 country = SelectField(_l("Country"), choices=SELECT_COUNTRIES_LIST)29 submit = SubmitField(_l("Submit"))30 31 @property32 def extra(self):33 user = get_current_user_attrs()34 fields_kwargs = _SettingsForm.get_field_kwargs()35 return build_custom_user_fields(36 self,37 include_entries=True,38 fields_kwargs=fields_kwargs,39 field_entries_kwargs={"user_id": session["id"]},40 ) + build_user_bracket_field(self, value=user.bracket_id)41 42 @staticmethod43 def get_field_kwargs():44 user = get_current_user()45 field_kwargs = {"editable": True}46 if user.filled_all_required_fields is False:47 # Show all fields48 field_kwargs = {}49 return field_kwargs50 51 field_kwargs = _SettingsForm.get_field_kwargs()52 attach_custom_user_fields(_SettingsForm, **field_kwargs)53 attach_user_bracket_field(_SettingsForm)54 55 return _SettingsForm(*args, **kwargs)56 57 58class TokensForm(BaseForm):59 expiration = DateField(_l("Expiration"))60 description = TextAreaField("Usage Description")61 submit = SubmitField(_l("Generate"))62 