"""
 * Licensed to DSecure.me under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. DSecure.me licenses this file to you under
 * the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
"""
from django.dispatch import receiver
from vmc.knowledge_base.documents import CweDocument, CveDocument

from vmc.common.elastic.signals import post_save


@receiver(post_save)
def update_cve(**kwargs):
    if isinstance(kwargs['instance'], CweDocument):
        s = CveDocument.search().filter('term', cwe__id=kwargs['instance'].id).extra(
            collapse={
                'field': 'id', 'inner_hits': {
                    'name': 'most_recent',
                    'size': 1,
                    'sort': [{'modified_date': 'desc'}]
                }
            }
        )
        response = s.execute()
        for cve in response.hits:
            new_cve = cve.clone()
            new_cve.cwe = kwargs['instance']
            new_cve.change_reason = 'CWE Updated'
            new_cve.save(refresh=True)
