# -*- coding: utf-8 -*-
"""
Custom template tags для работы с URL и query параметрами
"""

from django import template
from django.http import QueryDict

register = template.Library()


@register.simple_tag(takes_context=True)
def url_replace(context, **kwargs):
    """
    Создаёт URL с сохранением всех текущих GET-параметров,
    заменяя или добавляя переданные параметры.
    
    Использование:
        {% url_replace page=2 %}
        {% url_replace page=num has_notes='' %}  {# Удаление параметра #}
    
    Автоматически сохраняет все существующие GET-параметры (q, has_notes, no_phone и т.д.)
    """
    query = context['request'].GET.copy()
    
    for key, value in kwargs.items():
        if value == '' or value is None:
            # Удаляем параметр если значение пустое
            query.pop(key, None)
        else:
            query[key] = value
    
    return f"?{query.urlencode()}" if query else "?"
