From 9c8f20d5baa1c16d54a54e2a891590cc2cdaa5fb Mon Sep 17 00:00:00 2001 From: XRenso Date: Wed, 8 Oct 2025 20:10:22 +0300 Subject: [PATCH 1/4] Generate cosmic type of names for network and unique by timestamp --- front/src/miminet_model.py | 27 ++++++++++++++++++++++++++- front/tests/test_network_menu.py | 6 ++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/front/src/miminet_model.py b/front/src/miminet_model.py index 1b59d313..887ca0ff 100644 --- a/front/src/miminet_model.py +++ b/front/src/miminet_model.py @@ -1,4 +1,6 @@ from os import urandom +import random +from datetime import datetime from flask_login import UserMixin from flask_sqlalchemy import SQLAlchemy @@ -10,6 +12,29 @@ import psycopg2 +def generate_cosmic_name(): + """Generates unique cosmic object name with timestamp""" + cosmic_objects = [ + "Комета", + "Звезда", + "Галактика", + "Туманность", + "Спутник", + "Вселенная", + "Астероид", + "Планета", + ] + prefixes = ["", "XB-", "NGC-", "HD-", "M-", "IC-", "PG-", "PSR-"] + + timestamp = datetime.now().strftime("%d%m%y") + random_num = random.randint(100, 999) + + cosmic_type = random.choice(cosmic_objects) + prefix = random.choice(prefixes) + + return f"{cosmic_type} {prefix}{timestamp}{random_num}" + + convention = { "ix": "ix_%(column_0_label)s", "uq": "uq_%(table_name)s_%(column_0_name)s", @@ -44,7 +69,7 @@ class Network(db.Model): # type:ignore[name-defined] author_id = db.Column(BigInteger, ForeignKey("user.id"), nullable=False) guid = db.Column(Text, nullable=False, unique=True) - title = db.Column(Text, default="Новая сеть", nullable=False) + title = db.Column(Text, default=lambda: generate_cosmic_name(), nullable=False) description = db.Column(Text, default="", nullable=True) diff --git a/front/tests/test_network_menu.py b/front/tests/test_network_menu.py index 1f3119b6..92b03d69 100644 --- a/front/tests/test_network_menu.py +++ b/front/tests/test_network_menu.py @@ -25,13 +25,15 @@ def test_my_networks_button_press(self, selenium: Chrome): assert selenium.current_url == HOME_PAGE def test_new_network_existence(self, selenium: MiminetTester, empty_network: str): - """Checks if the created network exists""" + """Checks if the created network exists and has a unique generated name""" selenium.get(empty_network) # open new network by URL network_name = selenium.find_element( By.CSS_SELECTOR, Location.Network.TITLE_LABEL.selector ).text - assert network_name == "Новая сеть" + assert network_name != "" + assert network_name != "Новая сеть" + assert len(network_name.split()) >= 1 def test_new_network_open(self, selenium: MiminetTester, empty_network: str): """Checks is it possible to open new network via home menu""" From 7c3900dffb425655d7e5d928a82145b911811419 Mon Sep 17 00:00:00 2001 From: XRenso Date: Wed, 8 Oct 2025 20:49:26 +0300 Subject: [PATCH 2/4] Add additional cosmic object names to the name generation function --- front/src/miminet_model.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/front/src/miminet_model.py b/front/src/miminet_model.py index 887ca0ff..8bbddaad 100644 --- a/front/src/miminet_model.py +++ b/front/src/miminet_model.py @@ -23,6 +23,22 @@ def generate_cosmic_name(): "Вселенная", "Астероид", "Планета", + "Метеорит", + "Квазар", + "Пульсар", + "Чёрная дыра", + "Суперновая", + "Созвездие", + "Космодром", + "Телескоп", + "Ракета", + "Орбита", + "Экзопланета", + "Космический корабль", + "Межзвёздный объект", + "Космическая станция", + "Темная материя", + "Космический зонд", ] prefixes = ["", "XB-", "NGC-", "HD-", "M-", "IC-", "PG-", "PSR-"] From 18023d5c3684724b9db37e49b73e6eea6569f19d Mon Sep 17 00:00:00 2001 From: Yaroslav Oderiy <70619857+XRenso@users.noreply.github.com> Date: Wed, 8 Oct 2025 21:22:23 +0300 Subject: [PATCH 3/4] Fix mistake in readme pyhton -> python --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 05a6ef40..a9ba2b7b 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ export provider=vbox/vmware ### Backend 1. Установка необходимых пакетов: ```bash -pyhton -m venv .venv +python -m venv .venv source .venv/bin/activate pip install -r back/requirements.txt ``` From a87c75a38585274446bdf0f771f4fc29258cca3f Mon Sep 17 00:00:00 2001 From: XRenso Date: Wed, 15 Oct 2025 23:19:10 +0300 Subject: [PATCH 4/4] Add name base for generator in json file --- front/src/miminet_model.py | 41 ++++++++---------------------- front/src/static/cosmic_names.json | 29 +++++++++++++++++++++ 2 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 front/src/static/cosmic_names.json diff --git a/front/src/miminet_model.py b/front/src/miminet_model.py index 8bbddaad..2cb2869b 100644 --- a/front/src/miminet_model.py +++ b/front/src/miminet_model.py @@ -1,5 +1,6 @@ from os import urandom import random +import json from datetime import datetime from flask_login import UserMixin @@ -14,39 +15,19 @@ def generate_cosmic_name(): """Generates unique cosmic object name with timestamp""" - cosmic_objects = [ - "Комета", - "Звезда", - "Галактика", - "Туманность", - "Спутник", - "Вселенная", - "Астероид", - "Планета", - "Метеорит", - "Квазар", - "Пульсар", - "Чёрная дыра", - "Суперновая", - "Созвездие", - "Космодром", - "Телескоп", - "Ракета", - "Орбита", - "Экзопланета", - "Космический корабль", - "Межзвёздный объект", - "Космическая станция", - "Темная материя", - "Космический зонд", - ] - prefixes = ["", "XB-", "NGC-", "HD-", "M-", "IC-", "PG-", "PSR-"] + try: + with open("static/cosmic_names.json", "r", encoding="utf-8") as f: + config = json.load(f) + except (FileNotFoundError, json.JSONDecodeError, KeyError): + config = { + "cosmic_objects": ["Звезда", "Галактика", "Планета"], + "prefixes": ["", "XB-", "NGC-"], + } timestamp = datetime.now().strftime("%d%m%y") random_num = random.randint(100, 999) - - cosmic_type = random.choice(cosmic_objects) - prefix = random.choice(prefixes) + cosmic_type = random.choice(config["cosmic_objects"]) + prefix = random.choice(config["prefixes"]) return f"{cosmic_type} {prefix}{timestamp}{random_num}" diff --git a/front/src/static/cosmic_names.json b/front/src/static/cosmic_names.json new file mode 100644 index 00000000..6c78d5c8 --- /dev/null +++ b/front/src/static/cosmic_names.json @@ -0,0 +1,29 @@ +{ + "cosmic_objects": [ + "Комета", + "Звезда", + "Галактика", + "Туманность", + "Спутник", + "Вселенная", + "Астероид", + "Планета", + "Метеорит", + "Квазар", + "Пульсар", + "Чёрная дыра", + "Суперновая", + "Созвездие", + "Космодром", + "Телескоп", + "Ракета", + "Орбита", + "Экзопланета", + "Космический корабль", + "Межзвёздный объект", + "Космическая станция", + "Темная материя", + "Космический зонд" + ], + "prefixes": ["", "XB-", "NGC-", "HD-", "M-", "IC-", "PG-", "PSR-"] +}