Pre-loader


Файл views.py

Файл 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)