CoolFace
Apppublic

SRNI-2005/ctf

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
setup.py158 linesDownload Raw Back to forms
1from flask_babel import lazy_gettext as _l2from wtforms import (3    FileField,4    HiddenField,5    IntegerField,6    PasswordField,7    RadioField,8    SelectField,9    StringField,10    TextAreaField,11)12from wtforms.fields.html5 import EmailField13from wtforms.validators import InputRequired14from wtforms.widgets.html5 import NumberInput15 16from CTFd.constants.config import (17    AccountVisibilityTypes,18    ChallengeVisibilityTypes,19    RegistrationVisibilityTypes,20    ScoreVisibilityTypes,21)22from CTFd.constants.themes import DEFAULT_THEME23from CTFd.forms import BaseForm24from CTFd.forms.fields import SubmitField25from CTFd.utils.config import get_themes26 27 28class SetupForm(BaseForm):29    ctf_name = StringField(30        _l("Event Name"), description=_l("The name of your CTF event/workshop")31    )32    ctf_description = TextAreaField(33        _l("Event Description"), description=_l("Description for the CTF")34    )35    user_mode = RadioField(36        _l("User Mode"),37        choices=[("teams", _l("Team Mode")), ("users", _l("User Mode"))],38        default="teams",39        description=_l(40            "Controls whether users join together in teams to play (Team Mode) or play as themselves (User Mode)"41        ),42        validators=[InputRequired()],43    )44 45    name = StringField(46        _l("Admin Username"),47        description=_l("Your username for the administration account"),48        validators=[InputRequired()],49    )50    email = EmailField(51        _l("Admin Email"),52        description=_l("Your email address for the administration account"),53        validators=[InputRequired()],54    )55    password = PasswordField(56        _l("Admin Password"),57        description=_l("Your password for the administration account"),58        validators=[InputRequired()],59    )60 61    ctf_logo = FileField(62        _l("Logo"),63        description=_l(64            "Logo to use for the website instead of a CTF name. Used as the home page button. Optional."65        ),66    )67    ctf_banner = FileField(68        _l("Banner"), description=_l("Banner to use for the homepage. Optional.")69    )70    ctf_small_icon = FileField(71        _l("Small Icon"),72        description=_l(73            "favicon used in user's browsers. Only PNGs accepted. Must be 32x32px. Optional."74        ),75    )76    ctf_theme = SelectField(77        _l("Theme"),78        description=_l("CTFd Theme to use. Can be changed later."),79        choices=list(zip(get_themes(), get_themes())),80        default=DEFAULT_THEME,81        validators=[InputRequired()],82    )83    theme_color = HiddenField(84        _l("Theme Color"),85        description=_l(86            "Color used by theme to control aesthetics. Requires theme support. Optional."87        ),88    )89 90    verify_emails = SelectField(91        _l("Verify Emails"),92        description="Control whether users must confirm their email addresses before participating",93        choices=[("true", "Enabled"), ("false", "Disabled")],94        default="false",95    )96    team_size = IntegerField(97        widget=NumberInput(min=0),98        description="Amount of users per team (Teams mode only) Optional.",99    )100    challenge_visibility = SelectField(101        "Challenge Visibility",102        description="Control whether users must be logged in to see challenges",103        choices=[104            (ChallengeVisibilityTypes.PUBLIC, "Public"),105            (ChallengeVisibilityTypes.PRIVATE, "Private"),106            (ChallengeVisibilityTypes.ADMINS, "Admins Only"),107        ],108        default=ChallengeVisibilityTypes.PRIVATE,109    )110    account_visibility = SelectField(111        "Account Visibility",112        description="Control whether accounts (users & teams) are shown to everyone, only to authenticated users, or only to admins",113        choices=[114            (AccountVisibilityTypes.PUBLIC, "Public"),115            (AccountVisibilityTypes.PRIVATE, "Private"),116            (AccountVisibilityTypes.ADMINS, "Admins Only"),117        ],118        default=AccountVisibilityTypes.PUBLIC,119    )120    score_visibility = SelectField(121        "Score Visibility",122        description="Control whether solves/score are shown to the public, to logged in users, hidden to all non-admins, or only shown to admins",123        choices=[124            (ScoreVisibilityTypes.PUBLIC, "Public"),125            (ScoreVisibilityTypes.PRIVATE, "Private"),126            (ScoreVisibilityTypes.HIDDEN, "Hidden"),127            (ScoreVisibilityTypes.ADMINS, "Admins Only"),128        ],129        default=AccountVisibilityTypes.PUBLIC,130    )131    registration_visibility = SelectField(132        "Registration Visibility",133        description="Control whether registration is enabled for everyone or disabled",134        choices=[135            (RegistrationVisibilityTypes.PUBLIC, "Public"),136            (RegistrationVisibilityTypes.PRIVATE, "Private"),137            (RegistrationVisibilityTypes.MLC, "MajorLeagueCyber Only"),138        ],139        default=RegistrationVisibilityTypes.PUBLIC,140    )141 142    start = StringField(143        _l("Start Time"),144        description=_l("Time when your CTF is scheduled to start. Optional."),145    )146    end = StringField(147        _l("End Time"),148        description=_l("Time when your CTF is scheduled to end. Optional."),149    )150 151    social_shares = SelectField(152        _l("Social Shares"),153        description="Control whether users can share links commemorating their challenge solves",154        choices=[("true", "Enabled"), ("false", "Disabled")],155        default="true",156    )157    submit = SubmitField(_l("Finish"))158