# -*- coding: utf-8 -*-
from media.monitor.log import get_logger
log = get_logger()
# hash: 'filepath' => owner_id
owners = {}

def reset_owners():
    """
    Wipes out all file => owner associations
    """
    global owners
    owners = {}


def get_owner(f):
    """
    Get the owner id of the file 'f'
    """
    return owners[f] if f in owners else -1


def add_file_owner(f,owner):
    """
    Associate file f with owner. If owner is -1 then do we will not record it
    because -1 means there is no owner. Returns True if f is being stored after
    the function. False otherwise.
    """
    if owner == -1: return False
    if f in owners:
        if owner != owners[f]: # check for fishiness
            log.info("Warning ownership of file '%s' changed from '%d' to '%d'"
                    % (f, owners[f], owner))
        else: return True
    owners[f] = owner
    return True

def has_owner(f):
    """
    True if f is owned by somebody. False otherwise.
    """
    return f in owners

def remove_file_owner(f):
    """
    Try and delete any association made with file f. Returns true if the the
    association was actually deleted. False otherwise.
    """
    if f in owners:
        del owners[f]
        return True
    else: return False