from django.core.management.base import BaseCommand
from extractly.models import NetworkMonitoredPage

class Command(BaseCommand):
    help = "Wyświetla listę ID ogłoszeń, które mają parse_data oraz raw_data"

    def add_arguments(self, parser):
        parser.add_argument(
            '--p', type=int, default=None,
            help='Ile rekordów wyświetlić (paginacja, domyślnie wszystkie)'
        )

    def handle(self, *args, **options):
        limit = options.get('p')
        qs = NetworkMonitoredPage.objects.filter(
            parse_data__isnull=False
        # ).exclude(parse_data=[]).filter(
        #     raw_data__isnull=False
        ).exclude(raw_data="").exclude(raw_data=None)

        total = qs.count()
        if total == 0:
            self.stdout.write(self.style.WARNING("Brak ogłoszeń z parse_data i raw_data."))
            return

        self.stdout.write(self.style.SUCCESS(f"Znaleziono {total} ogłoszeń z danymi."))

        if limit is not None:
            qs = qs[:limit]

        for obj in qs:
            self.stdout.write(str(obj.id))
