from django.core.management.base import BaseCommand

from pages.models import Hotspot, Panorama


class Command(BaseCommand):

    # Example usage:
    # python manage.py add_hotspot --pano 8 --title "Fire Extinguisher" --description "Fire extinguisher not in correct place" --score_board "Fire Extinguisher" --identifier extinguisher --liklihood 2 --severity 3 --rating HIGH

    def add_arguments(self, parser):
        parser.add_argument('--pano', action='store', dest='pano')
        parser.add_argument('--title', action='store', dest='title')
        parser.add_argument('--description', action='store', dest='description')
        parser.add_argument('--score_board', action='store', dest='score_board')
        parser.add_argument('--identifier', action='store', dest='identifier')
        parser.add_argument('--liklihood', action='store', dest='liklihood')
        parser.add_argument('--severity', action='store', dest='severity')
        parser.add_argument('--rating', action='store', dest='rating')

    def handle(self, *args, **options):

        pano_id = options.get('pano', None)
        title = options.get('title', None)
        description = options.get('description', None)
        score_board = options.get('score_board', None)
        identifier = options.get('identifier', None)
        liklihood = options.get('liklihood', None)
        severity = options.get('severity', None)
        rating = options.get('rating', None)

        print("Received data:")
        print("pano_id: %s" % pano_id)
        print("title: %s" % title)
        print("description: %s" % description)
        print("score_board: %s" % score_board)
        print("identifier: %s" % identifier)
        print("liklihood: %s" % liklihood)
        print("severity: %s" % severity)
        print("rating: %s" % rating)

        # Load the pano
        pano = Panorama.objects.get(
            id=pano_id
        )

        print("Loaded pano: %s " % pano)

        # Check the hotspot doesn't already exist by identifier
        hotspot, created = Hotspot.objects.get_or_create(
            pano=pano,
            identifier=identifier,
            defaults={
                'title': title,
                'description': description,
                'score_board': score_board,
                'liklihood': liklihood,
                'severity': severity,
                'rating': rating,
            }
        )
        if created:
            print("Created hotspot %s" % identifier)
        else:
            print("Hotspot %s already exists" % identifier)
