# Copyright 2017 NEC, Corp
#
# Licensed 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.

import logging

from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from horizon import tables

LOG = logging.getLogger(__name__)


def get_policy_url(obj):
    return reverse('horizon:admin:policies:detail', args=(obj['policy_name'],))


def get_error_table(obj):
    if obj.get('error', 0) == 0:
        return False
    return reverse('horizon:admin:policies:policy_table_detail',
                   args=(obj['policy_name'], 'error'))


def get_warning_table(obj):
    if obj.get('warning', 0) == 0:
        return False
    return reverse('horizon:admin:policies:policy_table_detail',
                   args=(obj['policy_name'], 'warning'))


class MonitoringTable(tables.DataTable):
    errors = tables.Column("error", verbose_name=_("Errors"),
                           link=get_error_table)
    warnings = tables.Column("warning", verbose_name=_("Warnings"),
                             link=get_warning_table)
    policy_name = tables.Column("policy_name",
                                verbose_name=_("violated policy name"),
                                link=get_policy_url)
    policy_description = tables.Column("policy_description",
                                       verbose_name=_("Policy Description"))
    policy_owner_id = tables.Column("policy_owner_id",
                                    verbose_name=_("Policy Owner"))

    class Meta(object):
        name = "monitoring"
        verbose_name = _("Monitoring")
        hidden_title = False
