from boto.dynamodb2.layer1 import DynamoDBConnection

from .model import Model


def patch_dynamodb_connection(**kwargs):
    """:class:`boto.dynamodb2.layer1.DynamoDBConnection` patcher.

    It partially applies the keyword arguments to the
    :class:`boto.dynamodb2.layer1.DynamoDBConnection` initializer method.
    The common usage of this function would be patching host and port
    to the local DynamoDB or remote DynamoDB as the project configuration
    changes.

    """
    if hasattr(DynamoDBConnection, '__original_init__'):
        return

    DynamoDBConnection.__original_init__ = DynamoDBConnection.__init__

    def init(self, **fkwargs):
        fkwargs.update(kwargs)
        self.__original_init__(**fkwargs)

    DynamoDBConnection.__init__ = init


def patch_table_name_prefix(prefix):
    """Patch the table name prefix"""

    Model._table_prefix = prefix

from boto.dynamodb2.layer1 import DynamoDBConnection

from .model import Model


def patch_from_config(config):
    if 'DYNAMODB_CONNECTION' in config:
        patch_dynamodb_connection(**config['DYNAMODB_CONNECTION'])
    if 'DYNAMODB_PREFIX' in config:
        patch_table_name_prefix(config['DYNAMODB_PREFIX'])


def patch_dynamodb_connection(**kwargs):
    """:class:`boto.dynamodb2.layer1.DynamoDBConnection` patcher.

    It partially applies the keyword arguments to the
    :class:`boto.dynamodb2.layer1.DynamoDBConnection` initializer method.
    The common usage of this function would be patching host and port
    to the local DynamoDB or remote DynamoDB as the project configuration
    changes.

    """
    if hasattr(DynamoDBConnection, '__original_init__'):
        return

    DynamoDBConnection.__original_init__ = DynamoDBConnection.__init__

    def init(self, **fkwargs):
        fkwargs.update(kwargs)
        self.__original_init__(**fkwargs)

    DynamoDBConnection.__init__ = init


def patch_table_name_prefix(prefix):
    """Patch the table name prefix"""

    Model._table_prefix = prefix

Add support for the patching connection and the prefix through config dict
Add support for the patching connection and the prefix through config dict

  from boto.dynamodb2.layer1 import DynamoDBConnection
  
  from .model import Model
+ 
+ 
+ def patch_from_config(config):
+     if 'DYNAMODB_CONNECTION' in config:
+         patch_dynamodb_connection(**config['DYNAMODB_CONNECTION'])
+     if 'DYNAMODB_PREFIX' in config:
+         patch_table_name_prefix(config['DYNAMODB_PREFIX'])
  
  
  def patch_dynamodb_connection(**kwargs):
      """:class:`boto.dynamodb2.layer1.DynamoDBConnection` patcher.
  
      It partially applies the keyword arguments to the
      :class:`boto.dynamodb2.layer1.DynamoDBConnection` initializer method.
      The common usage of this function would be patching host and port
      to the local DynamoDB or remote DynamoDB as the project configuration
      changes.
  
      """
      if hasattr(DynamoDBConnection, '__original_init__'):
          return
  
      DynamoDBConnection.__original_init__ = DynamoDBConnection.__init__
  
      def init(self, **fkwargs):
          fkwargs.update(kwargs)
          self.__original_init__(**fkwargs)
  
      DynamoDBConnection.__init__ = init
  
  
  def patch_table_name_prefix(prefix):
      """Patch the table name prefix"""
  
      Model._table_prefix = prefix
  
Add support for the patching connection and the prefix through config dict
## Code Before:
from boto.dynamodb2.layer1 import DynamoDBConnection

from .model import Model


def patch_dynamodb_connection(**kwargs):
    """:class:`boto.dynamodb2.layer1.DynamoDBConnection` patcher.

    It partially applies the keyword arguments to the
    :class:`boto.dynamodb2.layer1.DynamoDBConnection` initializer method.
    The common usage of this function would be patching host and port
    to the local DynamoDB or remote DynamoDB as the project configuration
    changes.

    """
    if hasattr(DynamoDBConnection, '__original_init__'):
        return

    DynamoDBConnection.__original_init__ = DynamoDBConnection.__init__

    def init(self, **fkwargs):
        fkwargs.update(kwargs)
        self.__original_init__(**fkwargs)

    DynamoDBConnection.__init__ = init


def patch_table_name_prefix(prefix):
    """Patch the table name prefix"""

    Model._table_prefix = prefix

## Instruction:
Add support for the patching connection and the prefix through config dict
## Code After:
from boto.dynamodb2.layer1 import DynamoDBConnection

from .model import Model


def patch_from_config(config):
    if 'DYNAMODB_CONNECTION' in config:
        patch_dynamodb_connection(**config['DYNAMODB_CONNECTION'])
    if 'DYNAMODB_PREFIX' in config:
        patch_table_name_prefix(config['DYNAMODB_PREFIX'])


def patch_dynamodb_connection(**kwargs):
    """:class:`boto.dynamodb2.layer1.DynamoDBConnection` patcher.

    It partially applies the keyword arguments to the
    :class:`boto.dynamodb2.layer1.DynamoDBConnection` initializer method.
    The common usage of this function would be patching host and port
    to the local DynamoDB or remote DynamoDB as the project configuration
    changes.

    """
    if hasattr(DynamoDBConnection, '__original_init__'):
        return

    DynamoDBConnection.__original_init__ = DynamoDBConnection.__init__

    def init(self, **fkwargs):
        fkwargs.update(kwargs)
        self.__original_init__(**fkwargs)

    DynamoDBConnection.__init__ = init


def patch_table_name_prefix(prefix):
    """Patch the table name prefix"""

    Model._table_prefix = prefix
