Файл views.py
- python файл в структурі компоненти , що містить основний функціонал та роути проекту в системі K2 Cloud ERP.
Типовий вигляд файлу views.py
:
# Імпорт модулів Python і залежностей K2 Cloud ERP
import logging
import os
from flask import render_template, request, redirect, url_for, flash, Blueprint, jsonify
from sqlalchemy import text
from k2.k2cfg import K2 # імпорт класу ядра
from k2.k2obj import K2Obj # імпорт головного класу K2Obj
from .models import * # імпорт ORM моделей компоненти
try:
from components.k2grid.k2grid.views import K2Grid # імпорт головного класу K2Grid
except Exception as ex:
logging.error(f"{ex} K2Grid is missing for correct work")
try:
from components.k2form.k2form.views import K2Form # імпорт головного класу K2Form
except Exception as ex:
logging.error(f"{ex} K2Form is missing for correct work")
# Оголошення blueprint для компоненти k2examples
k2examples = Blueprint(’k2examples’, __name__,
template_folder=’templates’,
static_folder=’static’,
static_url_path=’k2examples/static’
#Підключення бази даних
db = K2.db
# Оголошення класу K2Examples, який успадковується від головного класу K2Obj
class K2Examples(K2Obj):
’’’
Клас K2Examples приклади програмування в системі K2 Cloud ERP
’’’
#Властивості класу
name = ’k2examples’
version = ’1.0.0.1’
data_source = []
# Пункти меню в адмін частині
adm_menu_items = [
{
"title": "ex_title_menu_items", #Заголовок меню
"icon": {"icon": ’mdi mdi-view-gallery-outline’}, # іконка меню
"children": [
{
"title": "ex_child_menu_items_1", # вкладений пункт меню 1 рівень
"to": "/k2examples",
"children": [
{
’title’: ’ex_child_menu_items_2’, # вкладений пункти меню 2 рівень
’to’: ’/k2examples/ag-grid’, # url для пункта меню 2 рівня
},
{
’title’: ’ex_child_menu_items_3’, # вкладений пункти меню 2 рівень
’to’: ’/k2examples/ag-grid-master-detail?parent=k2examples/k2agdrid-add’,
# url для пункта меню 2 рівня з параметром в урлі
},
]
},
{
"title": "ex_child_menu_items_9", # вкладений пункт меню 1 рівень
"to": "/k2examples",
"children": [
{
’title’: ’ex_child_menu_items_10’, # вкладений пункти меню 2 рівень
’to’: ’/k2examples/form’, # url для пункта меню 2 рівня
},
]
},
{
’title’: ’ex_child_menu_items_15’, # вкладений пункт меню 1 рівень
’to’: ’/k2dashboard/report-bi’ # url для пункта меню 1 рівня
},
]
}
]
# Пункт меню для іконки компоненти
adm_menu_items_category = [
{
"title": "ex_title_menu_items", # назва модуля
"to": "/k2examples/ag-grid", # посилання на головну сторінку модуля
"icon": "k2examples", # назва іконки модуля
}
]
#Властивості і методи класу
def __init__(self, parameter1, parameter2):
"""
Конструктор класу K2Examples.
:param parameter1: Опис параметру 1.
:param parameter2: Опис параметру 2.
"""
self.parameter1 = parameter1
self.parameter2 = parameter2
def my_method(self, arg1, arg2):
"""
Опис методу my_method.
:param arg1: Опис аргументу 1.
:param arg2: Опис аргументу 2.
:return: Опис поверненого значення (якщо є).
"""
# Тіло методу
result = arg1 + arg2
return result
#методи класу K2Examples
@classmethod
def class_method(cls):
"""
Метод класу K2Examples
"""
return cls.class_variable
# Роути класу K2Examples
# Маршрут для сторінки ag-grid
@k2examples.route(’/ag-grid’)
def grid():
k2grid = K2Grid(name_yml=’k2ex_aggrid’, class_css=’example-grid’) #підключення гріда через yml файл k2ex_aggrid.yml
return render_template("k2ex_aggrid.html", grid_settings=k2grid, title="AG grid")
# Маршрут для сторінки ag-grid-add-off-buttons
@k2examples.route(’/ag-grid-add-off-buttons’)
def grid_add_off_buttons():
k2grid = K2Grid(name_yml=’k2ex_aggrid’, class_css=’example-grid’) #підключення гріда через yml файл
#додавання/вимкнення кнопок
k2grid.off_button_toolbar(’k2ex_aggrid’, [
’add’, ’edit’, ’delete’, ’resetAllSettings’, ’selectAll’, ’unselectAll’,
’printReport’, ’export’, ’search’
])
new_buttons = [
{
’id’: ’test’,
’icon’: ’mdi mdi-phone-message’,
’tooltip’: ’Test’,
’seq_number’: 1,
’action’: "testMessage(options)",
},
]
k2grid.add_button_toolbar(’k2ex_aggrid’, new_buttons)
return render_template("k2ex_aggrid_add_off_buttons.html", grid_settings=k2grid)