import json

from django.template.defaultfilters import length


class NWisefinList:
    data = []
    pagination = None
    count = None

    def get(self):
        return json.dumps(self, default=lambda o: o.__dict__,
                          sort_keys=True, indent=4)

    def __init__(self):
        self.data = []

    def set_list(self, list):
        self.data = list

    def get_list(self):
        return self.data

    def append(self, obj):
        self.data.append(obj)

    def set_listcount(self, count):
        self.count = count

    def get_listcount(self):
        return self.count

    def set_pagination(self, pagination):
        self.pagination = pagination
        if length(self.data) > pagination.limit:
            self.data.pop()

    def get_pagination(self):
        return self.pagination

    def set_pagination1(self, pagination):
        self.pagination = pagination
        unique_log_dates = set()
        for entry in self.data:
            unique_log_dates.add(entry['log_date'])
        unique_log_dates_list = list(unique_log_dates)
        if len(unique_log_dates_list) > pagination.limit:
            excess_count = len(unique_log_dates_list) - pagination.limit
            unique_log_dates_to_remove = set(unique_log_dates_list[-excess_count:])
            self.data = [entry for entry in self.data if entry['log_date'] not in unique_log_dates_to_remove]