File size: 2,181 Bytes
69f2337 a08f988 69f2337 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 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)
|