from django.core.management.base import BaseCommand, CommandError
from licenses.cli import serialList, updateModelFromNode


class Command(BaseCommand):
    help = 'Update local licenses DB using data from cellframe-node'

    def add_arguments(self, parser):
        parser.add_argument('--pageSize', type=int)

    def handle(self, *args, **options):
        total = serialList(totalState='total_only')['total']

        if total == 0:
            self.stdout.write(self.style.INFO("Licenses list is empty"))
            return

        if options['pageSize']:
            pageSize = options['pageSize']
        else:
            pageSize = 100

        for offset in range(0, total, pageSize):
            info = serialList(pageSize, offset)

            serials = info['serials']

            for serial in serials:
                found = updateModelFromNode(serial)

                if not found:
                    self.stdout.write(self.style.WARNING("Can't find license info with serial: %s" % serial))
                    continue

        self.stdout.write(self.style.SUCCESS('Successfully updated licenses'))
