from __future__ import unicode_literals

from django.apps import apps
from django.utils.translation import ugettext_lazy as _

from .literals import (
    DEFAULT_DOCUMENT_TYPE_LABEL, DOCUMENT_CACHE_STORAGE_INSTANCE_PATH,
    DOCUMENT_IMAGES_CACHE_NAME
)
from .settings import setting_document_cache_maximum_size
from .signals import post_initial_document_type
from .tasks import task_clean_empty_duplicate_lists, task_scan_duplicates_for


def create_default_document_type(sender, **kwargs):
    DocumentType = apps.get_model(
        app_label='documents', model_name='DocumentType'
    )

    if not DocumentType.objects.count():
        document_type = DocumentType.objects.create(
            label=DEFAULT_DOCUMENT_TYPE_LABEL
        )
        post_initial_document_type.send(
            sender=DocumentType, instance=document_type
        )


def handler_create_document_cache(sender, **kwargs):
    Cache = apps.get_model(app_label='common', model_name='Cache')
    Cache.objects.update_or_create(
        defaults={
            'label': _('Document images'),
            'storage_instance_path': DOCUMENT_CACHE_STORAGE_INSTANCE_PATH,
            'maximum_size': setting_document_cache_maximum_size.value,
        }, name=DOCUMENT_IMAGES_CACHE_NAME,
    )


def handler_scan_duplicates_for(sender, instance, **kwargs):
    task_scan_duplicates_for.apply_async(
        kwargs={'document_id': instance.document.pk}
    )


def handler_remove_empty_duplicates_lists(sender, **kwargs):
    task_clean_empty_duplicate_lists.apply_async()
