@classmethod
def get_or_create(cls, kwargs=None, **filtered_arguments):
    """
        This will retrieve the item from the database for the parameters that 
        are not none and are required by __init__
        If it is not in the database then it will create it.
        If it is in the database then it will update it with 
        values that are not None
        :param kwargs:             dict of the parameters that 
                                   don't have to be unique
        :param filtered_arguments: dict of the parameters that 
                                   need to be unique
        :return:                   obj of the model created or updated
        """
    instance = cls.query.filter_by(**filtered_arguments).first()
    if not instance:
        kwargs = kwargs or {}
        kwargs.update(filtered_arguments)
        instance = cls(**kwargs)
    elif kwargs:
        for k in kwargs:
            try:
                if kwargs[k] is not None and kwargs[k] != getattr(instance,
                    k, kwargs[k]):
                    setattr(instance, k, kwargs[k])
            except Exception as e:
                setattr(instance, k, kwargs[k])
    return instance
