Модули, генерирующие случайные данные - nemopss/mpt-kpi GitHub Wiki
1.4.3 services
В данной папке находятся модули, генерирующие случайные данные для сертификатов, критериев и сотрудников, используемых в проекте.
1.4.3.1 certificates_generator.py
В данном модуле определяется структура Certificate, которая представляет сертификаты, содержащие идентификатор, URL превью и идентификатор критерия.
import requests
import collections
import random
from flask import url_for
from .criteries_generator import criteries_list
Certificate = collections.namedtuple('Certificate', 'id preview_url criterion_id'.split())
urls = [
"https://xn----7sbbatcvjrscddclqofaivf1a1pxa.xn--p1ai/images/sertif.jpg",
"https://www.gostest.com/upload/medialibrary/ff2/ff2d3a6375ca7060f0ce1b5465cfae92.jpg",
"https://moseac.ru/images/article/5fb68313a9fa6.jpg",
"https://apit-kovrov.ru/files/uploads/knowledge_base/br1.1-do-2024.jpg",
"http://127.0.0.1:8000/api/media/test.jpg"
]
# Добавить подгрузку ссылок на документы + превью: <название_дока>, <название_дока>_preview.png
def _generate_random_certificate(id: int, url: str):
return Certificate(
id=id,
preview_url=url,
criterion_id=random.choice(range(len(criteries_list))),
)
certificates_list: list[Certificate] = [_generate_random_certificate(i, name) for i, name in enumerate(urls)] # Override this to use database requests
• urls(): Список, который содержит предопределенные ссылки на изображения сертификатов.
• _generate_random_certificate(): Функция, которая создает случайный сертификат с заданным идентификатором и URL.
• certificates_list: Список, который заполняется сертификатами, генерируемыми с помощью функции _generate_random_certificate для каждого URL.
1.4.3.2 criteries_generator.py
В этом модуле определяется структура Criterion, представляющая критерии оценки. Каждый критерий содержит идентификатор, название и диапазон оценок.
import requests
import collections
import random
Criterion = collections.namedtuple('Criterion', 'id name mark_from mark_to'.split())
urls = [
"Привлечение дополнительных средств и спонсорской помощи для развития библиотеки",
"Публикации и освещение опыта методической работы библиотек в средствах массовой информации",
"Oрганизация и участие в мероприятиях муниципального и регионального уровня",
"Участие в разработке локальных нормативных документов",
]
def _generate_random_criterion(id: int, name: str):
return Criterion(
id=id,
name=name,
mark_from=random.choice(range(0, 10)),
mark_to=random.choice(range(10, 20)),
)
criteries_list: list[Criterion] = [_generate_random_criterion(i, name) for i, name in enumerate(urls)] # Override this to use database requests
• urls: Список, который включает задания и описания критериев, которые используются для создания объектов Criterion.
• _generate_random_criterion(): Функция, которая генерирует случайный критерий с заданным идентификатором и названием. Оценки формируются случайно из заранее определенных диапазонов.
• criteries_list: Список, который наполняется критериями, создаваемыми с помощью функции _generate_random_criterion.
1.4.3.3 employees_generator.py
В данном модуле определяется структура Employee, представляющая сотрудников с набором атрибутов.
import requests
import collections
import random
Employee = collections.namedtuple('Employee', 'id first_name last_name surname job_id phone email'.split())
first_names_url = 'https://raw.githubusercontent.com/Raven-SL/ru-pnames-list/refs/heads/master/lists/male_names_rus.txt'
last_names_url = 'https://raw.githubusercontent.com/Raven-SL/ru-pnames-list/refs/heads/master/lists/male_surnames_rus.txt'
first_names = requests.get(first_names_url).content.decode('utf-8').split('\n')
last_names = requests.get(last_names_url).content.decode('utf-8').split('\n')
surnames = [f'{name}ович' for name in first_names]
job_ids = ['Библиотекарь']
phones = ['+7(963)650-42-93']
emails = ['[email protected]']
def _generate_random_employee(id):
return Employee(
id=id,
first_name=random.choice(first_names),
last_name=random.choice(last_names),
surname=random.choice(surnames),
job_id=random.choice(job_ids),
phone=random.choice(phones),
email=random.choice(emails),
)
employees_list: list[Employee] = [_generate_random_employee(i) for i in range(100)] # Override this to use database requests
• Формирование имен и фамилий: Имена и фамилии загружаются из внешних источников. Служебные имена и контакты созданы из предопределенных списков.
• _generate_random_employee(): Функция генерирует случайного сотрудника с переданным идентификатором, выбирая случайные значения из списков имен, фамилий, должностей, телефонов и электронных почтовых адресов.
• employees_list: Список, который наполняется сотрудниками, генерируемыми с помощью функции _generate_random_employee в количестве 100 штук.