# -*- coding: utf-8; -*-
"""
Person views
"""

from tailbone.views import people as base
from tailbone_corepos.views import people as corepos_base
from tailbone.config import protected_usernames


class PersonView(corepos_base.PersonView):
    """
    Prevent edit/delete for Chuck Norris
    """

    def __init__(self, request, **kwargs):
        super(PersonView, self).__init__(request, **kwargs)
        self.protected_usernames = protected_usernames(self.rattail_config)

    def is_person_protected(self, person):
        if self.protected_usernames:
            for user in person.users:
                if user.username in self.protected_usernames:
                    return True
        return False

    def editable_instance(self, person):
        if self.request.is_root:
            return True
        return not self.is_person_protected(person)

    def deletable_instance(self, person):
        if self.request.is_root:
            return True
        return not self.is_person_protected(person)


def includeme(config):

    # autocomplete
    config.add_route('people.autocomplete', '/people/autocomplete')
    config.add_view(base.PeopleAutocomplete, route_name='people.autocomplete',
                    renderer='json', permission='people.list')

    PersonView.defaults(config)
    base.PersonNoteView.defaults(config)