from jsonrpc.backend.django import api
from .cli import serialDeactivateWithORM, serialDeleteWithORM, serialGenerateWithORM, serialList as serialList_, serialUpdateWithORM, serialInfo as serialInfo_


def getIP(request):
    return request.META.get('REMOTE_ADDR')

def isAllowed(ip):
    pass


@api.dispatcher.add_method
def serialDeactivate(request, *args, **kvargs):
    """
    Arguments:
        serialString (required, string)

    Returns: None
    """
    return serialDeactivateWithORM(*args, **kvargs)

@api.dispatcher.add_method
def serialDelete(request, *args, **kvargs):
    """
    Arguments:
        serialString (required, string)

    Returns: None
    """
    return serialDeleteWithORM(*args, **kvargs)

@api.dispatcher.add_method
def serialGenerate(request, *args, **kvargs):
    """
    Arguments:
        numberOfSerials (required, string)
        limitInDays (optional, int)

    Returns: List of serial numbers as strings
    """
    return serialGenerateWithORM(*args, **kvargs)

@api.dispatcher.add_method
def serialList(request, *args, **kvargs):
    """
    Arguments:
        numberOfSerials (optional, int)
        offset (optional, int)
        onlyActivated (optional, boolean)
        totalState (optional, string, allowed values: 'total_only', 'nototal')

    Returns: Object with keys
        serials (list of strings)
        total (int)
    """
    return serialList_(*args, **kvargs)

@api.dispatcher.add_method
def serialUpdate(request, *args, **kvargs):
    """
    Arguments:
        serialString (required, string)
        newLimitInDays (required, int)

    Returns: None
    """
    return serialUpdateWithORM(*args, **kvargs)

@api.dispatcher.add_method
def serialInfo(request, *args, **kvargs):
    """
    Arguments:
        serialString (required, string)

    Returns: Object with keys
        serial (string)
        found (boolean)
        activationDate (string)
        daysLeft (int)
    """
    return serialInfo_(*args, **kvargs)
