Skip to content

Commit

Permalink
fix(room): 전용면적, 층, 엘리베이터, 관리비 항목 추가 (#41)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mincheol Kim committed Aug 11, 2020
1 parent a0c9fcd commit 0533780
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 7 deletions.
14 changes: 14 additions & 0 deletions src/apps/rooms/models/domain/dabang.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,14 @@ def to_room(self) -> RoomItem:
raise NoneTypeError("방 가격 정보가 없습니다")
if self.room.photos is None:
raise NoneTypeError("방 사진이 없습니다")
if self.room.room_size is None:
raise NoneTypeError("방 면적이 없습니다")
if self.room.room_floor_str is None:
raise NoneTypeError("층이 없습니다")
if self.room.building_floor_str is None:
raise NoneTypeError("건물층수가 없습니다")
if self.room.maintenance_cost_str is None:
raise NoneTypeError("관리비가 없습니다")
deposit, monthly_rent, _ = self.room.price_info.pop()
image_key = self.room.photos.pop()

Expand All @@ -431,4 +439,10 @@ def to_room(self) -> RoomItem:
description=self.room.memo,
image=image_url.format(image_key=image_key),
building_type=BuildingType(self.room.room_type),
room_size=self.room.room_size,
floor=f"{self.room.room_floor_str}/{self.room.building_floor_str}",
has_elevator=(self.room.elevator_str == "있음"),
administrative_expenses=int(
self.room.maintenance_cost_str.replace("만 원", "")
),
)
4 changes: 4 additions & 0 deletions src/apps/rooms/models/domain/landlords.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class RoomItem(BaseModel):
description: Optional[str] = Field(max_length=Description.max_length)
image: Optional[str] = Field(max_length=Image.max_length)
building_type: BuildingType = Field(...)
room_size: float = Field(..., description="방 크기(㎡)")
floor: str = Field(..., description="층/건물층수")
has_elevator: Optional[bool] = Field(default=None, description="엘리베이터 유무")
administrative_expenses: int = Field(..., description="관리비")

class Config:
orm_mode = True
Expand Down
15 changes: 11 additions & 4 deletions src/apps/rooms/models/domain/zigbang.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from enum import Enum
from typing import Any, List, Optional

from pydantic import Field
from pydantic.dataclasses import dataclass

from ..entity import BuildingType, SellingType
Expand All @@ -24,8 +25,8 @@ class Area:

@dataclass
class Item:
size_m2: Optional[int] = None
building_floor: Optional[int] = None
size_m2: int = Field(...)
building_floor: int = Field(...)
section_type: Optional[str] = None
item_id: Optional[int] = None
images_thumbnail: Optional[str] = None
Expand All @@ -37,7 +38,7 @@ class Item:
전용면적: Optional[Area] = None
계약면적: Optional[Area] = None
room_type_title: Optional[RoomTypeTitle] = None
floor: Optional[str] = None
floor: int = Field(...)
floor_string: Optional[str] = None
title: Optional[str] = None
address: Optional[str] = None
Expand Down Expand Up @@ -77,7 +78,7 @@ class ZigbangSellingType(str, Enum):
ZigbangBuildingType.Villa: BuildingType.Villa,
ZigbangSellingType.MonthlyRent: SellingType.MonthlyRent,
ZigbangSellingType.Jeonse: SellingType.Jeonse,
ZigbangSellingType.Selling: SellingType.Selling
ZigbangSellingType.Selling: SellingType.Selling,
}


Expand All @@ -100,4 +101,10 @@ def to_room(self) -> RoomItem:
description=item.description,
image=image_url.format(uid=item.item_id, width=800, height=600),
building_type=BuildingType(mapper[zigbang_building_type]),
room_size=item.size_m2,
floor=f"{item.floor}/{item.building_floor}",
has_elevator=None,
administrative_expenses=int(item.manage_cost)
if item.manage_cost
else 0,
)
19 changes: 19 additions & 0 deletions src/apps/rooms/models/entity/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,25 @@ class Room(Base):
comment="방의 Image URL",
)

room_size = Column(
"room_size", mysql.DOUBLE(5, 2, unsigned=True), comment="방 크기 (㎡)"
)

floor = Column("floor", mysql.VARCHAR(5), comment="층/건물층수")

has_elevator = Column(
"has_elevator",
mysql.TINYINT(1),
nullable=True,
comment="엘리베이터 유무",
)

administrative_expenses = Column(
"administrative_expenses",
mysql.TINYINT(2, unsigned=True),
comment="관리비",
)

created = Column(
"Created",
mysql.DATETIME(),
Expand Down
21 changes: 18 additions & 3 deletions tests/function/apps/rooms/test_services.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@
from src.apps.rooms.models.domain.dabang import Dabang
from src.apps.rooms.services import get_dabang_room_detail
from src.apps.rooms.models.domain.zigbang import Zigbang
from src.apps.rooms.services import (
get_dabang_room_detail,
get_zigbang_room_detail,
)
from src.core.exceptions import CrawlingException


def test_get_dabang() -> None:
try:
dabang: Dabang = get_dabang_room_detail(
room_id="5f0681178839af708334481e"
room_id="5f2ce8637601ce75301269cf"
)
room_item = dabang.to_room()
except CrawlingException as err:
assert err
else:
print(dabang)
print(room_item)


def test_get_zigbang() -> None:
try:
zigbang: Zigbang = get_zigbang_room_detail(room_id=23126067)
room_item = zigbang.to_room()
except CrawlingException as err:
assert err
else:
print(room_item)

0 comments on commit 0533780

Please sign in to comment.