| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/dev/code/erp/horilla/__pycache__/ |
Upload File : |
o
��g� � @ sF d dl mZ d dlmZ d dlmZ d
dd�Zdd� Z ddd�Zd S )� )� Paginator)�ForwardManyToOneDescriptor)�_thread_locals�
c C s$ | j �|�}t||�}|�|�}|S )z=
This method is used to return the paginator entries
)�GET�getr �get_page)�request�queryset� page_name�records_per_page�page� r �%/home/dev/erp/erp/horilla/group_by.py�record_queryset_paginator s
r c C s� g }|r5|D ],}|j di ||ji��}|�� r2|t| |d|� |j� ��d|� |j� �d�} |�| � q|S |D ]1}|j di ||i��}|�� rh|t| |d|� |� ��dd��d|� |� ��dd�d�}
|�|
� q7|S )z"
groups generating method
�
dynamic_page_)�grouper�list�dynamic_name� �_Nr )�filter�id�countr �append�replace)r �groupersr
r �group_field�is_fk_field�groupsr �group_queryset�
group_info�groupr r r �generate_groups s@ ��
�����
�r# Nr
c sJ ddl m} |� dkr|� }� �d�}t|�dk}�j}tt|� d�t�} |}
d}ttdd�}|s3| ro|D ]}
|
j �
|
�}|j}
q5|
rS|
j�
� }t||�|� dd �}nH� �fd
d�t�j� dd��D �}t||�|� d
d �}n,� �fdd�t�j� dd��D �}�jj �
� �j}|r�|jj|d�}t||�|� d
d �}t||�}|�|�S )zT
This method is used to make group-by and split groups by nested pagination
r )�get_pagination�2 �__� Nr T)r c �. g | ]\}}|�j � d d�d|� vr|�qS �T��flatN��values_list��.0�index�item�r r
r r �
<listcomp>^ s
�z%group_by_queryset.<locals>.<listcomp>r* Fc r( r) r, r. r2 r r r3 k s
�)�id__in)�base.methodsr$ �split�len�model�
isinstance�getattrr r �_meta� get_field�
related_model�objects�allr# � enumerater- r r r )r
r r
r r r$ �fields_split�splittedr8 r �
model_copy� field_objr �fieldr r r= r r2 r �group_by_queryset9 sZ
�
� �����
rF )r )Nr
r ) �django.core.paginatorr �+django.db.models.fields.related_descriptorsr �horilla.horilla_middlewaresr r r# rF r r r r �<module> s
)�