| from pathlib import Path | |
| BASE_DIR = Path(__file__).resolve().parent.parent.parent | |
| DATA_DIR = BASE_DIR / "data" | |
| TABLE_PARTICIPANTS = "participants" | |
| TABLE_TOPICS = "topics" | |
| TABLE_MESSAGES = "messages" | |
| PARTICIPANTS_FILE = DATA_DIR / "participants.txt" | |
| TOPICS_FILE = DATA_DIR / "topics.txt" | |
| MESSAGES_FILE = DATA_DIR / "messages.txt" | |
| PARTICIPANT_SEPARATOR = "|" | |
| PARTICIPANT_EXPECTED_PARTS = 6 | |
| TOPIC_SEPARATOR = "|" | |
| TOPIC_EXPECTED_PARTS = 6 | |
| TOPIC_LIST_SEPARATOR = ";" | |
| TOPIC_INNER_SEPARATOR = "," | |
| TOPIC_MESSAGE_PART_SEPARATOR = "^" | |
| MESSAGE_SEPARATOR = "|" | |
| MESSAGE_EXPECTED_PARTS = 6 | |
| ENCODING_UTF8 = "utf-8" | |
| ENCODING_ASCII = "ascii" | |
| NEWLINE = "\n" | |
| ALPHABET = ( | |
| "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" | |
| "0123456789" | |
| r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ """ | |
| ) | |
| NAME_MIN_LENGTH = 1 | |
| NAME_MAX_LENGTH = 100 | |
| RATING_MIN_VALUE = 0 | |
| TOPIC_TITLE_MIN_LENGTH = 1 | |
| TOPIC_TITLE_MAX_LENGTH = 200 | |
| TOPIC_DESCRIPTION_MIN_LENGTH = 1 | |
| TOPIC_DESCRIPTION_MAX_LENGTH = 1000 | |
| TOPIC_MESSAGE_MIN_LENGTH = 1 | |
| TOPIC_MESSAGE_MAX_LENGTH = 2000 | |
| PARTICIPANT_PARSE_EMPTY_ERROR = "Cannot parse empty participant line" | |
| PARTICIPANT_PARSE_INVALID_ERROR = "Invalid participant line format" | |
| TOPIC_PARSE_EMPTY_ERROR = "Cannot parse empty topic line" | |
| TOPIC_PARSE_INVALID_ERROR = "Invalid topic line format" | |
| MESSAGE_PARSE_EMPTY_ERROR = "Cannot parse empty message line" | |
| MESSAGE_PARSE_INVALID_ERROR = "Invalid message line format" | |
| PARTICIPANT_NOT_FOUND_MESSAGE = "Participant not found" | |
| TOPIC_NOT_FOUND_MESSAGE = "Topic not found" | |
| MESSAGE_NOT_FOUND_MESSAGE = "Message not found" | |
| UNKNOWN_PARTICIPANT_NAME = "Unknown participant" | |
| UNKNOWN_TOPIC_TITLE = "Unknown topic" | |
| APP_TITLE = "Forum Storage API" | |
| PARTICIPANTS_ROUTE_PREFIX = "/participants" | |
| TOPICS_ROUTE_PREFIX = "/topics" | |
| MESSAGES_ROUTE_PREFIX = "/messages" | |
| PARTICIPANTS_TAG = "participants" | |
| TOPICS_TAG = "topics" | |
| MESSAGES_TAG = "messages" | |
| HTTP_STATUS_CREATED = 201 | |
| FORBIDDEN_WORDS = ["spam", "hate", "violence", "abuse", "illegal"] | |
| FORBIDDEN_WORDS_MESSAGE = "Message contains forbidden words" | |
| DATA_DIR.mkdir(parents=True, exist_ok=True) | |
| PARTICIPANTS_FILE.touch(exist_ok=True) | |
| TOPICS_FILE.touch(exist_ok=True) | |
| MESSAGES_FILE.touch(exist_ok=True) | |