#! /usr/bin/env python3
# -*- coding:utf-8 -*-

from injector.models import MediaExtFieldModel
from domain.dataset import DataSet
from domain.imdb.media_domain import Media
from domain.injector.value_object import RatingValue, DefinitionValue


class MediaExt(DataSet):
    model = MediaExtFieldModel

    def get_by_media_id(self, media_id):
        ext = self.model.objects.filter(media=media_id).first()
        return ext

    @staticmethod
    def to_dict(obj):
        result = dict()

        result["id"] = obj.id
        result["media_id"] = obj.media_id
        result["rating"] = obj.rating
        result["focus"] = obj.focus
        result["approval_num"] = obj.approval_num
        result["media_verpic"] = obj.media_verpic
        result["verpic_size"] = obj.verpic_size
        result["media_horpic"] = obj.media_horpic
        result["horpic_size"] = obj.horpic_size

        result["media_verpic1"] = obj.media_verpic1
        result["verpic_size1"] = obj.verpic_size1
        result["media_horpic1"] = obj.media_horpic1
        result["horpic_size1"] = obj.horpic_size1

        result["format"] = obj.format
        result["len1"] = obj.len1
        result["len2"] = obj.len2
        result['update_frequency'] = obj.update_frequency
        result['report_id'] = obj.report_id
        result['prior_cdn_id'] = obj.prior_cdn_id
        result['copyright'] = obj.copyright
        result["playplat"] = obj.playplat

        result["definition"] = obj.definition

        result["telecom"] = obj.telecom
        result["icp"] = obj.icp

        if obj.media_verpic:
            result["type"] = 1
        else:
            result["type"] = 2

        return result

    def detail(self, media_id):
        # 修改时可能还未添加扩展信息
        obj = self.model.objects.filter(media_id=media_id).first()

        if obj:
            media = obj.media
            ext = self.to_dict(obj)
            ext["media"] = Media.to_dict(media)
        else:
            media = Media().get_by_id(media_id)
            ext = {
                "id": 0,
                "media_id": media.id,
                "media_verpic": "",
                "media_horpic": "",
                'verpic_size': "",
                'horpic_size': "",
                "rating": RatingValue.I,
                "focus": "",
                "approval_num": "",
                "media": Media.to_dict(media)
            }
        ext["definitions"] = DefinitionValue.get_ext_definition()
        ext["ratings"] = RatingValue.rating_2_json()
        return ext

    def update_or_create(self, data):
        # 修改时可能还未添加扩展信息
        media_id = data.pop("media_id")
        data["media_id"] = media_id
        self.model.objects.update_or_create(media_id=media_id, defaults=data)
        return
