Skip to content

Commit

Permalink
Fix camelcase_to_underscore. Closes #767.
Browse files Browse the repository at this point in the history
  • Loading branch information
spulec committed Mar 16, 2017
1 parent 446843e commit 25e2af0
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 72 deletions.
16 changes: 12 additions & 4 deletions moto/core/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,18 @@ def camelcase_to_underscores(argument):
python underscore variable like the_new_attribute'''
result = ''
prev_char_title = True
for char in argument:
if char.istitle() and not prev_char_title:
# Only add underscore if char is capital, not first letter, and prev
# char wasn't capital
for index, char in enumerate(argument):
try:
next_char_title = argument[index + 1].istitle()
except IndexError:
next_char_title = True

upper_to_lower = char.istitle() and not next_char_title
lower_to_upper = char.istitle() and not prev_char_title

if index and (upper_to_lower or lower_to_upper):
# Only add underscore if char is capital, not first letter, and next
# char is not capital
result += "_"
prev_char_title = char.istitle()
if not char.isspace(): # Only add non-whitespace
Expand Down
2 changes: 1 addition & 1 deletion moto/elb/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def __init__(self, name, zones, ports, scheme='internet-facing', vpc_id=None, su
instance_port=(
port.get('instance_port') or port['InstancePort']),
ssl_certificate_id=port.get(
'sslcertificate_id', port.get('SSLCertificateId')),
'ssl_certificate_id', port.get('SSLCertificateId')),
)
self.listeners.append(listener)

Expand Down
4 changes: 2 additions & 2 deletions moto/elb/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def register_instances_with_load_balancer(self):
load_balancer_name, instance_ids)
return template.render(load_balancer=load_balancer)

def set_load_balancer_listener_sslcertificate(self):
def set_load_balancer_listener_ssl_certificate(self):
load_balancer_name = self._get_param('LoadBalancerName')
ssl_certificate_id = self.querystring['SSLCertificateId'][0]
lb_port = self.querystring['LoadBalancerPort'][0]
Expand Down Expand Up @@ -188,7 +188,7 @@ def create_app_cookie_stickiness_policy(self):
template = self.response_template(CREATE_LOAD_BALANCER_POLICY_TEMPLATE)
return template.render()

def create_lbcookie_stickiness_policy(self):
def create_lb_cookie_stickiness_policy(self):
load_balancer_name = self._get_param('LoadBalancerName')

policy = AppCookieStickinessPolicy()
Expand Down
24 changes: 12 additions & 12 deletions moto/rds/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,41 +72,41 @@ def unpack_complex_list_params(self, label, names):
count += 1
return unpacked_list

def create_dbinstance(self):
def create_db_instance(self):
db_kwargs = self._get_db_kwargs()

database = self.backend.create_database(db_kwargs)
template = self.response_template(CREATE_DATABASE_TEMPLATE)
return template.render(database=database)

def create_dbinstance_read_replica(self):
def create_db_instance_read_replica(self):
db_kwargs = self._get_db_replica_kwargs()

database = self.backend.create_database_replica(db_kwargs)
template = self.response_template(CREATE_DATABASE_REPLICA_TEMPLATE)
return template.render(database=database)

def describe_dbinstances(self):
def describe_db_instances(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
databases = self.backend.describe_databases(db_instance_identifier)
template = self.response_template(DESCRIBE_DATABASES_TEMPLATE)
return template.render(databases=databases)

def modify_dbinstance(self):
def modify_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
db_kwargs = self._get_db_kwargs()
database = self.backend.modify_database(
db_instance_identifier, db_kwargs)
template = self.response_template(MODIFY_DATABASE_TEMPLATE)
return template.render(database=database)

def delete_dbinstance(self):
def delete_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
database = self.backend.delete_database(db_instance_identifier)
template = self.response_template(DELETE_DATABASE_TEMPLATE)
return template.render(database=database)

def create_dbsecurity_group(self):
def create_db_security_group(self):
group_name = self._get_param('DBSecurityGroupName')
description = self._get_param('DBSecurityGroupDescription')
tags = self.unpack_complex_list_params('Tags.Tag', ('Key', 'Value'))
Expand All @@ -115,29 +115,29 @@ def create_dbsecurity_group(self):
template = self.response_template(CREATE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def describe_dbsecurity_groups(self):
def describe_db_security_groups(self):
security_group_name = self._get_param('DBSecurityGroupName')
security_groups = self.backend.describe_security_groups(
security_group_name)
template = self.response_template(DESCRIBE_SECURITY_GROUPS_TEMPLATE)
return template.render(security_groups=security_groups)

def delete_dbsecurity_group(self):
def delete_db_security_group(self):
security_group_name = self._get_param('DBSecurityGroupName')
security_group = self.backend.delete_security_group(
security_group_name)
template = self.response_template(DELETE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def authorize_dbsecurity_group_ingress(self):
def authorize_db_security_group_ingress(self):
security_group_name = self._get_param('DBSecurityGroupName')
cidr_ip = self._get_param('CIDRIP')
security_group = self.backend.authorize_security_group(
security_group_name, cidr_ip)
template = self.response_template(AUTHORIZE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def create_dbsubnet_group(self):
def create_db_subnet_group(self):
subnet_name = self._get_param('DBSubnetGroupName')
description = self._get_param('DBSubnetGroupDescription')
subnet_ids = self._get_multi_param('SubnetIds.member')
Expand All @@ -149,13 +149,13 @@ def create_dbsubnet_group(self):
template = self.response_template(CREATE_SUBNET_GROUP_TEMPLATE)
return template.render(subnet_group=subnet_group)

def describe_dbsubnet_groups(self):
def describe_db_subnet_groups(self):
subnet_name = self._get_param('DBSubnetGroupName')
subnet_groups = self.backend.describe_subnet_groups(subnet_name)
template = self.response_template(DESCRIBE_SUBNET_GROUPS_TEMPLATE)
return template.render(subnet_groups=subnet_groups)

def delete_dbsubnet_group(self):
def delete_db_subnet_group(self):
subnet_name = self._get_param('DBSubnetGroupName')
subnet_group = self.backend.delete_subnet_group(subnet_name)
template = self.response_template(DELETE_SUBNET_GROUP_TEMPLATE)
Expand Down
53 changes: 0 additions & 53 deletions moto/rds2/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,37 +99,25 @@ def unpack_list_params(self, label):
count += 1
return unpacked_list

def create_dbinstance(self):
return self.create_db_instance()

def create_db_instance(self):
db_kwargs = self._get_db_kwargs()
database = self.backend.create_database(db_kwargs)
template = self.response_template(CREATE_DATABASE_TEMPLATE)
return template.render(database=database)

def create_dbinstance_read_replica(self):
return self.create_db_instance_read_replica()

def create_db_instance_read_replica(self):
db_kwargs = self._get_db_replica_kwargs()

database = self.backend.create_database_replica(db_kwargs)
template = self.response_template(CREATE_DATABASE_REPLICA_TEMPLATE)
return template.render(database=database)

def describe_dbinstances(self):
return self.describe_db_instances()

def describe_db_instances(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
databases = self.backend.describe_databases(db_instance_identifier)
template = self.response_template(DESCRIBE_DATABASES_TEMPLATE)
return template.render(databases=databases)

def modify_dbinstance(self):
return self.modify_db_instance()

def modify_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
db_kwargs = self._get_db_kwargs()
Expand All @@ -138,18 +126,12 @@ def modify_db_instance(self):
template = self.response_template(MODIFY_DATABASE_TEMPLATE)
return template.render(database=database)

def delete_dbinstance(self):
return self.delete_db_instance()

def delete_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
database = self.backend.delete_database(db_instance_identifier)
template = self.response_template(DELETE_DATABASE_TEMPLATE)
return template.render(database=database)

def reboot_dbinstance(self):
return self.reboot_db_instance()

def reboot_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
database = self.backend.reboot_db_instance(db_instance_identifier)
Expand All @@ -176,9 +158,6 @@ def remove_tags_from_resource(self):
template = self.response_template(REMOVE_TAGS_FROM_RESOURCE_TEMPLATE)
return template.render()

def create_dbsecurity_group(self):
return self.create_db_security_group()

def create_db_security_group(self):
group_name = self._get_param('DBSecurityGroupName')
description = self._get_param('DBSecurityGroupDescription')
Expand All @@ -188,29 +167,20 @@ def create_db_security_group(self):
template = self.response_template(CREATE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def describe_dbsecurity_groups(self):
return self.describe_db_security_groups()

def describe_db_security_groups(self):
security_group_name = self._get_param('DBSecurityGroupName')
security_groups = self.backend.describe_security_groups(
security_group_name)
template = self.response_template(DESCRIBE_SECURITY_GROUPS_TEMPLATE)
return template.render(security_groups=security_groups)

def delete_dbsecurity_group(self):
return self.delete_db_security_group()

def delete_db_security_group(self):
security_group_name = self._get_param('DBSecurityGroupName')
security_group = self.backend.delete_security_group(
security_group_name)
template = self.response_template(DELETE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def authorize_dbsecurity_group_ingress(self):
return self.authorize_db_security_group_ingress()

def authorize_db_security_group_ingress(self):
security_group_name = self._get_param('DBSecurityGroupName')
cidr_ip = self._get_param('CIDRIP')
Expand All @@ -219,9 +189,6 @@ def authorize_db_security_group_ingress(self):
template = self.response_template(AUTHORIZE_SECURITY_GROUP_TEMPLATE)
return template.render(security_group=security_group)

def create_dbsubnet_group(self):
return self.create_db_subnet_group()

def create_db_subnet_group(self):
subnet_name = self._get_param('DBSubnetGroupName')
description = self._get_param('DBSubnetGroupDescription')
Expand All @@ -234,18 +201,12 @@ def create_db_subnet_group(self):
template = self.response_template(CREATE_SUBNET_GROUP_TEMPLATE)
return template.render(subnet_group=subnet_group)

def describe_dbsubnet_groups(self):
return self.describe_db_subnet_groups()

def describe_db_subnet_groups(self):
subnet_name = self._get_param('DBSubnetGroupName')
subnet_groups = self.backend.describe_subnet_groups(subnet_name)
template = self.response_template(DESCRIBE_SUBNET_GROUPS_TEMPLATE)
return template.render(subnet_groups=subnet_groups)

def delete_dbsubnet_group(self):
return self.delete_db_subnet_group()

def delete_db_subnet_group(self):
subnet_name = self._get_param('DBSubnetGroupName')
subnet_group = self.backend.delete_subnet_group(subnet_name)
Expand Down Expand Up @@ -307,18 +268,13 @@ def modify_option_group(self):
template = self.response_template(MODIFY_OPTION_GROUP_TEMPLATE)
return template.render(option_group=option_group)

def create_dbparameter_group(self):
return self.create_db_parameter_group()

def create_db_parameter_group(self):
kwargs = self._get_db_parameter_group_kwargs()
db_parameter_group = self.backend.create_db_parameter_group(kwargs)
template = self.response_template(CREATE_DB_PARAMETER_GROUP_TEMPLATE)
return template.render(db_parameter_group=db_parameter_group)

def describe_dbparameter_groups(self):
return self.describe_db_parameter_groups()

def describe_db_parameter_groups(self):
kwargs = self._get_db_parameter_group_kwargs()
kwargs['max_records'] = self._get_param('MaxRecords')
Expand All @@ -328,9 +284,6 @@ def describe_db_parameter_groups(self):
DESCRIBE_DB_PARAMETER_GROUPS_TEMPLATE)
return template.render(db_parameter_groups=db_parameter_groups)

def modify_dbparameter_group(self):
return self.modify_db_parameter_group()

def modify_db_parameter_group(self):
db_parameter_group_name = self._get_param('DBParameterGroupName')
db_parameter_group_parameters = self._get_db_parameter_group_paramters()
Expand All @@ -353,9 +306,6 @@ def _get_db_parameter_group_paramters(self):

return parameter_group_parameters.values()

def describe_dbparameters(self):
return self.describe_db_parameters()

def describe_db_parameters(self):
db_parameter_group_name = self._get_param('DBParameterGroupName')
db_parameter_groups = self.backend.describe_db_parameter_groups(
Expand All @@ -366,9 +316,6 @@ def describe_db_parameters(self):
template = self.response_template(DESCRIBE_DB_PARAMETERS_TEMPLATE)
return template.render(db_parameter_group=db_parameter_groups[0])

def delete_dbparameter_group(self):
return self.delete_db_parameter_group()

def delete_db_parameter_group(self):
kwargs = self._get_db_parameter_group_kwargs()
db_parameter_group = self.backend.delete_db_parameter_group(kwargs[
Expand Down
1 change: 1 addition & 0 deletions tests/test_core/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ def test_camelcase_to_underscores():
"theNewAttribute": "the_new_attribute",
"attri bute With Space": "attribute_with_space",
"FirstLetterCapital": "first_letter_capital",
"ListMFADevices": "list_mfa_devices",
}
for arg, expected in cases.items():
camelcase_to_underscores(arg).should.equal(expected)
Expand Down

0 comments on commit 25e2af0

Please sign in to comment.