Skip to content

Commit

Permalink
Only convert enums to str when dealing with api requests
Browse files Browse the repository at this point in the history
  • Loading branch information
egbertbouman committed Apr 4, 2017
1 parent 6e0efeb commit e441ce5
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 72 deletions.
12 changes: 6 additions & 6 deletions market/community/market.proto
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@ message LoanRequest {
required uint32 id = 1;
required bytes user_id = 2;
required House house = 3;
required string mortgage_type = 4;
required uint32 mortgage_type = 4;
required bytes bank_id = 5;
required string description = 6;
required double amount_wanted = 7;
required string status = 8;
required uint32 status = 8;
}

message House {
Expand Down Expand Up @@ -109,7 +109,7 @@ message Investment {
required double interest_rate = 5;
required uint32 campaign_id = 6;
required bytes campaign_user_id = 7;
required string status = 8;
required uint32 status = 8;
}

message Mortgage {
Expand All @@ -119,13 +119,13 @@ message Mortgage {
required House house = 4;
required double amount = 5;
required double bank_amount = 6;
required string mortgage_type = 7;
required uint32 mortgage_type = 7;
required double interest_rate = 8;
required double max_invest_rate = 9;
required double default_rate = 10;
required uint32 duration = 11;
required string risk = 12;
required string status = 13;
required uint32 status = 13;
optional Campaign campaign = 14;
}

Expand All @@ -142,6 +142,6 @@ message Campaign {

message User {
required bytes id = 1;
required string role = 2;
required uint32 role = 2;
optional Profile profile = 3;
}
26 changes: 13 additions & 13 deletions market/community/market_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions market/models/campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,18 @@ def calc_investment(self):
self.completed = True
return investment

def to_dict(self, b64_encode=False, include_investment=False):
def to_dict(self, api_response=False):
investment_dict = {}

if include_investment:
if api_response:
# Calculate investment first, since it could affect completed
investment_dict['investment'] = self.calc_investment()

investment_dict.update({
"id": self.id,
"user_id": urlsafe_b64encode(self.user_id) if b64_encode else self.user_id,
"user_id": urlsafe_b64encode(self.user_id) if api_response else self.user_id,
"mortgage_id": self.mortgage_id,
"mortgage_user_id": urlsafe_b64encode(self.mortgage_user_id) if b64_encode else self.mortgage_user_id,
"mortgage_user_id": urlsafe_b64encode(self.mortgage_user_id) if api_response else self.mortgage_user_id,
"amount": self.amount,
"end_time": self.end_time,
"completed": self.completed
Expand Down
15 changes: 7 additions & 8 deletions market/models/investment.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,23 @@ def __init__(self, identifier, user_id, amount, duration, interest_rate, campaig
self.campaign_user_id = campaign_user_id
self.status = status

def to_dict(self, b64_encode=False):
def to_dict(self, api_response=False):
return {
"id": self.id,
"user_id": urlsafe_b64encode(self.user_id) if b64_encode else self.user_id,
"user_id": urlsafe_b64encode(self.user_id) if api_response else self.user_id,
"amount": self.amount,
"duration": self.duration,
"interest_rate": self.interest_rate,
"campaign_id": self.campaign_id,
"campaign_user_id": urlsafe_b64encode(self.campaign_user_id) if b64_encode else self.campaign_user_id,
"status": self.status.name
"campaign_user_id": urlsafe_b64encode(self.campaign_user_id) if api_response else self.campaign_user_id,
"status": self.status.name if api_response else self.status.value
}

@staticmethod
def from_dict(investment_dict):
status = investment_dict['status']
status = InvestmentStatus[status] if status in InvestmentStatus.__members__ else None

if status is None:
try:
status = InvestmentStatus(investment_dict['status'])
except ValueError:
return None

return Investment(investment_dict['id'],
Expand Down
22 changes: 11 additions & 11 deletions market/models/loanrequest.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,30 +42,30 @@ def __init__(self, identifier, user_id, house, mortgage_type, bank_id, descripti
self.status = status


def to_dict(self, b64_encode=False):
def to_dict(self, api_response=False):
return {
"id": self.id,
"user_id": urlsafe_b64encode(self.user_id) if b64_encode else self.user_id,
"user_id": urlsafe_b64encode(self.user_id) if api_response else self.user_id,
"house": self.house.to_dict(),
"mortgage_type": self.mortgage_type.name,
"bank_id": urlsafe_b64encode(self.bank_id) if b64_encode else self.bank_id,
"mortgage_type": self.mortgage_type.name if api_response else self.mortgage_type.value,
"bank_id": urlsafe_b64encode(self.bank_id) if api_response else self.bank_id,
"description": self.description,
"amount_wanted": self.amount_wanted,
"status": self.status.name
"status": self.status.name if api_response else self.status.value
}

@staticmethod
def from_dict(loan_request_dict):
house_dict = loan_request_dict['house']
house = House.from_dict(house_dict)

mortgage_type = loan_request_dict['mortgage_type']
mortgage_type = MortgageType[mortgage_type] if mortgage_type in MortgageType.__members__ else None

status = loan_request_dict['status']
status = LoanRequestStatus[status] if status in LoanRequestStatus.__members__ else None
if house is None:
return None

if house is None or mortgage_type is None or status is None:
try:
mortgage_type = MortgageType(loan_request_dict['mortgage_type'])
status = LoanRequestStatus(loan_request_dict['status'])
except ValueError:
return None

return LoanRequest(loan_request_dict['id'],
Expand Down
22 changes: 11 additions & 11 deletions market/models/mortgage.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,35 +59,35 @@ def __init__(self, identifier, user_id, bank_id, house, amount, bank_amount, mor
self.risk = risk
self.status = status

def to_dict(self, b64_encode=False):
def to_dict(self, api_response=False):
return {
"id": self.id,
"user_id": urlsafe_b64encode(self.user_id) if b64_encode else self.user_id,
"bank_id": urlsafe_b64encode(self.bank_id) if b64_encode else self.bank_id,
"user_id": urlsafe_b64encode(self.user_id) if api_response else self.user_id,
"bank_id": urlsafe_b64encode(self.bank_id) if api_response else self.bank_id,
"house": self.house.to_dict(),
"amount": self.amount,
"bank_amount": self.bank_amount,
"mortgage_type": self.mortgage_type.name,
"mortgage_type": self.mortgage_type.name if api_response else self.mortgage_type.value,
"interest_rate": self.interest_rate,
"max_invest_rate": self.max_invest_rate,
"default_rate": self.default_rate,
"duration": self.duration,
"risk": self.risk,
"status": self.status.name,
"status": self.status.name if api_response else self.status.value
}

@staticmethod
def from_dict(mortgage_dict):
house_dict = mortgage_dict['house']
house = House.from_dict(house_dict)

mortgage_type = mortgage_dict['mortgage_type']
mortgage_type = MortgageType[mortgage_type] if mortgage_type in MortgageType.__members__ else None

status = mortgage_dict['status']
status = MortgageStatus[status] if status in MortgageStatus.__members__ else None
if house is None:
return None

if house is None or mortgage_type is None or status is None:
try:
mortgage_type = MortgageType(mortgage_dict['mortgage_type'])
status = MortgageStatus(mortgage_dict['status'])
except ValueError:
return None

return Mortgage(mortgage_dict['id'],
Expand Down

0 comments on commit e441ce5

Please sign in to comment.