# String # string matching list of int separated by ',' regex_string_as_list_of_int = Regexp( regex=(re.compile("^(\d+(,\d+)*)?$"))) # noqa: W605 # string matching list of string (without',') separated by ',' regex_string_as_list_of_string = Regexp( regex=(re.compile("^([^,]+(,[^,]+)*)?$"))) # noqa: W605 acp_validator = Length(min=2) not_empty_string_validator = Length(min=1) action_description_validator = OneOf(ActionDescription.allowed_values()) content_global_status_validator = OneOf( [status.value for status in GlobalStatus]) content_status_validator = OneOf(content_status_list.get_all_slugs_values()) user_profile_validator = OneOf(Profile.get_all_valid_slugs()) user_profile_validator_with_nobody = OneOf( Profile.get_all_valid_slugs(include_nobody=True)) agenda_type_validator = OneOf( [agenda_type.value for agenda_type in AgendaType]) user_timezone_validator = Length(max=User.MAX_TIMEZONE_LENGTH) user_email_validator = Length(min=User.MIN_EMAIL_LENGTH, max=User.MAX_EMAIL_LENGTH) user_password_validator = Length(min=User.MIN_PASSWORD_LENGTH, max=User.MAX_PASSWORD_LENGTH) user_public_name_validator = Length(min=User.MIN_PUBLIC_NAME_LENGTH, max=User.MAX_PUBLIC_NAME_LENGTH) user_lang_validator = Length(min=User.MIN_LANG_LENGTH, max=User.MAX_LANG_LENGTH) user_role_validator = OneOf(UserRoleInWorkspace.get_all_role_slug())
def get_parser(self, prog_name: str) -> argparse.ArgumentParser: parser = super().get_parser(prog_name) parser.add_argument( "-e", "--email", help="set the user's email address", dest="email", required=False, default=None, type=ValidatorType(user_email_validator), ) parser.add_argument( "-u", "--username", help="set the user's username", dest="username", required=False, default=None, type=ValidatorType(user_username_validator), ) parser.add_argument( "--public-name", help="set the user's public name", dest="public_name", required=False, default=None, type=ValidatorType(user_public_name_validator), ) parser.add_argument( "--allowed_space", help="set thes user's allowed space in bytes", dest="allowed_space", required=False, default=None, type=int, ) parser.add_argument( "--lang", help="set the user's language (ISO 639 format)", dest="lang", required=False, default=None, type=ValidatorType(user_lang_validator), ) parser.add_argument( "-p", "--password", help="set the user's password", dest="password", required=False, default=None, type=ValidatorType(user_password_validator), ) parser.add_argument( "--profile", help="set the user's profile. Valid values: {}".format(", ".join( Profile.get_all_valid_slugs())), dest="profile", default=None, type=ValidatorType(user_profile_validator), ) parser.add_argument( "--timezone", help="set the user's timezone", dest="timezone", default=None, type=ValidatorType(user_timezone_validator), ) return parser
def test_profile__ok__get_profile_slugs__ok__nominal_case(self): profile_slugs = Profile.get_all_valid_slugs() assert set(profile_slugs) == { "administrators", "users", "trusted-users" }
def test_profile__ok__get_profile_slugs__ok__include_nobody(self): profile_slugs = Profile.get_all_valid_slugs(include_nobody=True) assert set(profile_slugs) == { "nobody", "administrators", "users", "trusted-users" }
def _check_global_config_validity(self) -> None: """ Check config for global stuff """ self.check_mandatory_param("SQLALCHEMY__URL", self.SQLALCHEMY__URL) self.check_mandatory_param("SESSION__TYPE", self.SESSION__TYPE) if self.SESSION__TYPE == "file": self.check_mandatory_param( "SESSION__DATA_DIR", self.SESSION__DATA_DIR, when_str="if session type is file", ) self.check_directory_path_param("SESSION__DATA_DIR", self.SESSION__DATA_DIR, writable=True) elif self.SESSION__TYPE in [ "ext:database", "ext:mongodb", "ext:redis", "ext:memcached", ]: self.check_mandatory_param( "SESSION__URL", self.SESSION__URL, when_str="if session type is {}".format(self.SESSION__TYPE), ) self.check_mandatory_param("SESSION__LOCK_DIR", self.SESSION__LOCK_DIR) self.check_directory_path_param("SESSION__LOCK_DIR", self.SESSION__LOCK_DIR, writable=True) # INFO - G.M - 2019-04-03 - check color file validity self.check_mandatory_param("COLOR__CONFIG_FILE_PATH", self.COLOR__CONFIG_FILE_PATH) if not os.path.exists(self.COLOR__CONFIG_FILE_PATH): raise ConfigurationError( "ERROR: {} file does not exist. " 'please create it or set "COLOR__CONFIG_FILE_PATH"' "with a correct value".format(self.COLOR__CONFIG_FILE_PATH)) try: with open(self.COLOR__CONFIG_FILE_PATH) as json_file: self.APPS_COLORS = json.load(json_file) except Exception as e: raise ConfigurationError( "Error: {} file could not be load as json".format( self.COLOR__CONFIG_FILE_PATH)) from e try: self.APPS_COLORS["primary"] except KeyError as e: raise ConfigurationError( "Error: primary color is required in {} file".format( self.COLOR__CONFIG_FILE_PATH)) from e self.check_mandatory_param("DEPOT_STORAGE_DIR", self.DEPOT_STORAGE_DIR) self.check_directory_path_param("DEPOT_STORAGE_DIR", self.DEPOT_STORAGE_DIR, writable=True) self.check_mandatory_param("DEPOT_STORAGE_NAME", self.DEPOT_STORAGE_NAME) self.check_mandatory_param("PREVIEW_CACHE_DIR", self.PREVIEW_CACHE_DIR) self.check_directory_path_param("PREVIEW_CACHE_DIR", self.PREVIEW_CACHE_DIR, writable=True) if AuthType.REMOTE is self.AUTH_TYPES: raise ConfigurationError( 'ERROR: "remote" auth not allowed in auth_types' " list, use remote_user_header instead") self.check_mandatory_param("WEBSITE__BASE_URL", self.WEBSITE__BASE_URL) self.check_mandatory_param("BACKEND__I18N_FOLDER_PATH", self.BACKEND__I18N_FOLDER_PATH) self.check_directory_path_param("BACKEND__I18N_FOLDER_PATH", self.BACKEND__I18N_FOLDER_PATH, readable=True) # INFO - G.M - 2018-08-06 - We check dist folder existence if self.FRONTEND__SERVE: self.check_mandatory_param( "FRONTEND__DIST_FOLDER_PATH", self.FRONTEND__DIST_FOLDER_PATH, when_str="if frontend serving is activated", ) self.check_directory_path_param("FRONTEND__DIST_FOLDER_PATH", self.FRONTEND__DIST_FOLDER_PATH) if self.USER__DEFAULT_PROFILE not in Profile.get_all_valid_slugs(): profile_str_list = ", ".join([ '"{}"'.format(profile_name) for profile_name in Profile.get_all_valid_slugs() ]) raise ConfigurationError( 'ERROR user.default_profile given "{}" is invalid,' "valids values are {}.".format(self.USER__DEFAULT_PROFILE, profile_str_list))