Модули, генерирующие случайные данные - 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 штук.