Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@
}

# 앱 기본 로거 설정
APP_LOGGER='django'
APP_LOGGER='django_debug'



Expand Down
10 changes: 9 additions & 1 deletion tour/consumers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from config.celery import app
from config.settings import PUBLIC_DATA_PORTAL_API_KEY
from services.tour_api import *
from tour.sigungu import SIGUNGU_DATA

logger = logging.getLogger(APP_LOGGER)

Expand Down Expand Up @@ -77,7 +78,14 @@ async def connect(self):
sigunguNames = sigunguName.split(',')
sigunguCodes = []
for each in sigunguNames:
sigunguCode = tour.get_sigungu_code(areaCode, each)
areas = SIGUNGU_DATA.get(int(areaCode))
sigunguCode = None
for area in areas:
if area['name'] == each or (each in area['name']):
sigunguCode = int(area['code'])
break

# sigunguCode = tour.get_sigungu_code(areaCode, each)
if sigunguCode is None:
await self.send(text_data=json.dumps({
'state': 'ERROR',
Expand Down
7 changes: 6 additions & 1 deletion tour/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from services.exception_handler import *
from django.utils import timezone
from services.tour_api_service import TourAPIService, area_codes
from tour.sigungu import SIGUNGU_DATA
import difflib
from services.utils import haversine

Expand Down Expand Up @@ -469,7 +470,11 @@ def __convert_area_code_list_to_area_str(self, area_code_list):
return ans_list

def __convert_sigungu_code_to_str(self, area_code, sigungu_code):
return self.tour_api_service.get_sigungu_name_by_code(area_code, sigungu_code)
sigungus = SIGUNGU_DATA.get(int(area_code))
for each in sigungus:
if each.get('code') == str(sigungu_code):
return each.get('name')
raise UnExpectedException(error_message='시군구 코드 없음')



Expand Down
85 changes: 85 additions & 0 deletions tour/sigungu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
from django.conf import settings

SIGUNGU_DATA = {
1: [
{"rnum": 1, "code": "1", "name": "강남구"}, {"rnum": 2, "code": "2", "name": "강동구"}, {"rnum": 3, "code": "3", "name": "강북구"}, {"rnum": 4, "code": "4", "name": "강서구"}, {"rnum": 5, "code": "5", "name": "관악구"},
{"rnum": 6, "code": "6", "name": "광진구"}, {"rnum": 7, "code": "7", "name": "구로구"}, {"rnum": 8, "code": "8", "name": "금천구"}, {"rnum": 9, "code": "9", "name": "노원구"}, {"rnum": 10, "code": "10", "name": "도봉구"},
{"rnum": 11, "code": "11", "name": "동대문구"}, {"rnum": 12, "code": "12", "name": "동작구"}, {"rnum": 13, "code": "13", "name": "마포구"}, {"rnum": 14, "code": "14", "name": "서대문구"}, {"rnum": 15, "code": "15", "name": "서초구"},
{"rnum": 16, "code": "16", "name": "성동구"}, {"rnum": 17, "code": "17", "name": "성북구"}, {"rnum": 18, "code": "18", "name": "송파구"}, {"rnum": 19, "code": "19", "name": "양천구"}, {"rnum": 20, "code": "20", "name": "영등포구"},
{"rnum": 21, "code": "21", "name": "용산구"}, {"rnum": 22, "code": "22", "name": "은평구"}, {"rnum": 23, "code": "23", "name": "종로구"}, {"rnum": 24, "code": "24", "name": "중구"}, {"rnum": 25, "code": "25", "name": "중랑구"},
],
2: [
{"rnum": 1, "code": "1", "name": "강화군"}, {"rnum": 2, "code": "2", "name": "계양구"}, {"rnum": 3, "code": "3", "name": "미추홀구"}, {"rnum": 4, "code": "4", "name": "남동구"}, {"rnum": 5, "code": "5", "name": "동구"},
{"rnum": 6, "code": "6", "name": "부평구"}, {"rnum": 7, "code": "7", "name": "서구"}, {"rnum": 8, "code": "8", "name": "연수구"}, {"rnum": 9, "code": "9", "name": "옹진군"}, {"rnum": 10, "code": "10", "name": "중구"},
],
3: [
{"rnum": 1, "code": "1", "name": "대덕구"}, {"rnum": 2, "code": "2", "name": "동구"}, {"rnum": 3, "code": "3", "name": "서구"}, {"rnum": 4, "code": "4", "name": "유성구"}, {"rnum": 5, "code": "5", "name": "중구"},
],
4: [
{"rnum": 1, "code": "1", "name": "남구"}, {"rnum": 2, "code": "2", "name": "달서구"}, {"rnum": 3, "code": "3", "name": "달성군"}, {"rnum": 4, "code": "4", "name": "동구"}, {"rnum": 5, "code": "5", "name": "북구"},
{"rnum": 6, "code": "6", "name": "서구"}, {"rnum": 7, "code": "7", "name": "수성구"}, {"rnum": 8, "code": "8", "name": "중구"}, {"rnum": 9, "code": "9", "name": "군위군"},
],
5: [
{"rnum": 1, "code": "1", "name": "광산구"}, {"rnum": 2, "code": "2", "name": "남구"}, {"rnum": 3, "code": "3", "name": "동구"}, {"rnum": 4, "code": "4", "name": "북구"}, {"rnum": 5, "code": "5", "name": "서구"},
],
6: [
{"rnum": 1, "code": "1", "name": "강서구"}, {"rnum": 2, "code": "2", "name": "금정구"}, {"rnum": 3, "code": "3", "name": "기장군"}, {"rnum": 4, "code": "4", "name": "남구"}, {"rnum": 5, "code": "5", "name": "동구"},
{"rnum": 6, "code": "6", "name": "동래구"}, {"rnum": 7, "code": "7", "name": "부산진구"}, {"rnum": 8, "code": "8", "name": "북구"}, {"rnum": 9, "code": "9", "name": "사상구"}, {"rnum": 10, "code": "10", "name": "사하구"},
{"rnum": 11, "code": "11", "name": "서구"}, {"rnum": 12, "code": "12", "name": "수영구"}, {"rnum": 13, "code": "13", "name": "연제구"}, {"rnum": 14, "code": "14", "name": "영도구"}, {"rnum": 15, "code": "15", "name": "중구"},
{"rnum": 16, "code": "16", "name": "해운대구"},
],
7: [
{"rnum": 1, "code": "1", "name": "중구"}, {"rnum": 2, "code": "2", "name": "남구"}, {"rnum": 3, "code": "3", "name": "동구"}, {"rnum": 4, "code": "4", "name": "북구"}, {"rnum": 5, "code": "5", "name": "울주군"},
],
8: [
{"rnum": 1, "code": "1", "name": "세종특별자치시"},
],
31: [
{"rnum": 1, "code": "1", "name": "가평군"}, {"rnum": 2, "code": "2", "name": "고양시"}, {"rnum": 3, "code": "3", "name": "과천시"}, {"rnum": 4, "code": "4", "name": "광명시"}, {"rnum": 5, "code": "5", "name": "광주시"},
{"rnum": 6, "code": "6", "name": "구리시"}, {"rnum": 7, "code": "7", "name": "군포시"}, {"rnum": 8, "code": "8", "name": "김포시"}, {"rnum": 9, "code": "9", "name": "남양주시"}, {"rnum": 10, "code": "10", "name": "동두천시"},
{"rnum": 11, "code": "11", "name": "부천시"}, {"rnum": 12, "code": "12", "name": "성남시"}, {"rnum": 13, "code": "13", "name": "수원시"}, {"rnum": 14, "code": "14", "name": "시흥시"}, {"rnum": 15, "code": "15", "name": "안산시"},
{"rnum": 16, "code": "16", "name": "안성시"}, {"rnum": 17, "code": "17", "name": "안양시"}, {"rnum": 18, "code": "18", "name": "양주시"}, {"rnum": 19, "code": "19", "name": "양평군"}, {"rnum": 20, "code": "20", "name": "여주시"},
{"rnum": 21, "code": "21", "name": "연천군"}, {"rnum": 22, "code": "22", "name": "오산시"}, {"rnum": 23, "code": "23", "name": "용인시"}, {"rnum": 24, "code": "24", "name": "의왕시"}, {"rnum": 25, "code": "25", "name": "의정부시"},
{"rnum": 26, "code": "26", "name": "이천시"}, {"rnum": 27, "code": "27", "name": "파주시"}, {"rnum": 28, "code": "28", "name": "평택시"}, {"rnum": 29, "code": "29", "name": "포천시"}, {"rnum": 30, "code": "30", "name": "하남시"},
{"rnum": 31, "code": "31", "name": "화성시"},
],
32: [
{"rnum": 1, "code": "1", "name": "강릉시"}, {"rnum": 2, "code": "2", "name": "고성군"}, {"rnum": 3, "code": "3", "name": "동해시"}, {"rnum": 4, "code": "4", "name": "삼척시"}, {"rnum": 5, "code": "5", "name": "속초시"},
{"rnum": 6, "code": "6", "name": "양구군"}, {"rnum": 7, "code": "7", "name": "양양군"}, {"rnum": 8, "code": "8", "name": "영월군"}, {"rnum": 9, "code": "9", "name": "원주시"}, {"rnum": 10, "code": "10", "name": "인제군"},
{"rnum": 11, "code": "11", "name": "정선군"}, {"rnum": 12, "code": "12", "name": "철원군"}, {"rnum": 13, "code": "13", "name": "춘천시"}, {"rnum": 14, "code": "14", "name": "태백시"}, {"rnum": 15, "code": "15", "name": "평창군"},
{"rnum": 16, "code": "16", "name": "홍천군"}, {"rnum": 17, "code": "17", "name": "화천군"}, {"rnum": 18, "code": "18", "name": "횡성군"},
],
33: [
{"rnum": 1, "code": "1", "name": "괴산군"}, {"rnum": 2, "code": "2", "name": "단양군"}, {"rnum": 3, "code": "3", "name": "보은군"}, {"rnum": 4, "code": "4", "name": "영동군"}, {"rnum": 5, "code": "5", "name": "옥천군"},
{"rnum": 6, "code": "6", "name": "음성군"}, {"rnum": 7, "code": "7", "name": "제천시"}, {"rnum": 8, "code": "8", "name": "진천군"}, {"rnum": 9, "code": "9", "name": "청원군"}, {"rnum": 10, "code": "10", "name": "청주시"},
],
34: [
{"rnum": 1, "code": "1", "name": "공주시"}, {"rnum": 2, "code": "2", "name": "금산군"}, {"rnum": 3, "code": "3", "name": "논산시"}, {"rnum": 4, "code": "4", "name": "당진시"}, {"rnum": 5, "code": "5", "name": "보령시"},
{"rnum": 6, "code": "6", "name": "부여군"}, {"rnum": 7, "code": "7", "name": "서산시"}, {"rnum": 8, "code": "8", "name": "서천군"}, {"rnum": 9, "code": "9", "name": "아산시"}, {"rnum": 10, "code": "11", "name": "예산군"},
],
35: [
{"rnum": 1, "code": "1", "name": "경산시"}, {"rnum": 2, "code": "2", "name": "경주시"}, {"rnum": 3, "code": "3", "name": "고령군"}, {"rnum": 4, "code": "4", "name": "구미시"}, {"rnum": 5, "code": "6", "name": "김천시"},
{"rnum": 6, "code": "7", "name": "문경시"}, {"rnum": 7, "code": "8", "name": "봉화군"}, {"rnum": 8, "code": "9", "name": "상주시"}, {"rnum": 9, "code": "10", "name": "성주군"}, {"rnum": 10, "code": "11", "name": "안동시"},
],
36: [
{"rnum": 1, "code": "1", "name": "거제시"}, {"rnum": 2, "code": "2", "name": "거창군"}, {"rnum": 3, "code": "3", "name": "고성군"}, {"rnum": 4, "code": "4", "name": "김해시"}, {"rnum": 5, "code": "5", "name": "남해군"},
{"rnum": 6, "code": "6", "name": "마산시"}, {"rnum": 7, "code": "7", "name": "밀양시"}, {"rnum": 8, "code": "8", "name": "사천시"}, {"rnum": 9, "code": "9", "name": "산청군"}, {"rnum": 10, "code": "10", "name": "양산시"},
{"rnum": 11, "code": "12", "name": "의령군"}, {"rnum": 12, "code": "13", "name": "진주시"}, {"rnum": 13, "code": "14", "name": "진해시"}, {"rnum": 14, "code": "15", "name": "창녕군"}, {"rnum": 15, "code": "16", "name": "창원시"},
{"rnum": 16, "code": "17", "name": "통영시"}, {"rnum": 17, "code": "18", "name": "하동군"}, {"rnum": 18, "code": "19", "name": "함안군"}, {"rnum": 19, "code": "20", "name": "함양군"}, {"rnum": 20, "code": "21", "name": "합천군"},
],
37: [
{"rnum": 1, "code": "1", "name": "고창군"}, {"rnum": 2, "code": "2", "name": "군산시"}, {"rnum": 3, "code": "3", "name": "김제시"}, {"rnum": 4, "code": "4", "name": "남원시"}, {"rnum": 5, "code": "5", "name": "무주군"},
{"rnum": 6, "code": "6", "name": "부안군"}, {"rnum": 7, "code": "7", "name": "순창군"}, {"rnum": 8, "code": "8", "name": "완주군"}, {"rnum": 9, "code": "9", "name": "익산시"}, {"rnum": 10, "code": "10", "name": "임실군"},
{"rnum": 11, "code": "11", "name": "장수군"}, {"rnum": 12, "code": "12", "name": "전주시"}, {"rnum": 13, "code": "13", "name": "정읍시"}, {"rnum": 14, "code": "14", "name": "진안군"},
],
38: [
{"rnum": 1, "code": "1", "name": "강진군"}, {"rnum": 2, "code": "2", "name": "고흥군"}, {"rnum": 3, "code": "3", "name": "곡성군"}, {"rnum": 4, "code": "4", "name": "광양시"}, {"rnum": 5, "code": "5", "name": "구례군"},
{"rnum": 6, "code": "6", "name": "나주시"}, {"rnum": 7, "code": "7", "name": "담양군"}, {"rnum": 8, "code": "8", "name": "목포시"}, {"rnum": 9, "code": "9", "name": "무안군"}, {"rnum": 10, "code": "10", "name": "보성군"},
{"rnum": 11, "code": "11", "name": "순천시"}, {"rnum": 12, "code": "12", "name": "신안군"}, {"rnum": 13, "code": "13", "name": "여수시"}, {"rnum": 14, "code": "16", "name": "영광군"}, {"rnum": 15, "code": "17", "name": "영암군"},
{"rnum": 16, "code": "18", "name": "완도군"}, {"rnum": 17, "code": "19", "name": "장성군"}, {"rnum": 18, "code": "20", "name": "장흥군"}, {"rnum": 19, "code": "21", "name": "진도군"}, {"rnum": 20, "code": "22", "name": "함평군"},
{"rnum": 21, "code": "23", "name": "해남군"}, {"rnum": 22, "code": "24", "name": "화순군"},
],
39: [
{"rnum": 1, "code": "1", "name": "남제주군"}, {"rnum": 2, "code": "2", "name": "북제주군"}, {"rnum": 3, "code": "3", "name": "서귀포시"}, {"rnum": 4, "code": "4", "name": "제주시"},
],
}
40 changes: 0 additions & 40 deletions tour/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,46 +85,6 @@ def setUp(self):



def test_tour_api_module(self):
"""
해당 테스트는 module/tour_api를 테스트하기 위해 작성된 테스트 코드 입니다.
"""
tour = TourApi(MobileOS=MobileOS.ANDROID, MobileApp='AlphaTest')
tour.set_serviceKey(PUBLIC_DATA_PORTAL_API_KEY)
# 지역 기반 관광지 가져오기 1
area = tour.get_area_based_list(areaCode=AreaCode.SEOUL,
sigunguCode=tour.get_sigungu_code(areaCode=AreaCode.SEOUL, targetName='성북'))
self.assertNotEqual(area, None)

# 지역 기반 관광지 가져오기 2
data = {
'areaCode': AreaCode.SEOUL,
'sigunguCode': tour.get_sigungu_code(areaCode=AreaCode.SEOUL, targetName='종로'),
'arrange': Arrange.TITLE_IMAGE,
'contentTypeId': ContentTypeId.GWANGWANGJI
}
area = tour.get_area_based_list(**data)
self.assertNotEqual(area, None)

# 카테고리 코드 가져오기 테스트
categories = tour.get_category_code_list(cat1=Category1Code.HUMANITIES, cat2='A0201')
self.assertNotEqual(categories, None)

# 위치 기반 관광지 가져오기
data = {
'areaCode': AreaCode.SEOUL,
'arrange': Arrange.TITLE_IMAGE,
'contentTypeId': ContentTypeId.GWANGWANGJI
}
response = tour.get_location_based_list(126.3547412438, 34.4354594945, 20000)
self.assertNotEqual(response, None)

# 행사 정보 가져오기
data.pop('contentTypeId')
response = tour.get_festival_list('20250315', '20250318', **data)
self.assertNotEqual(response, None)
# for each in response:
# print(each.get_eventStartDate(), each.get_eventEndDate())

def test_tour_create_success(self):
"""
Expand Down
32 changes: 16 additions & 16 deletions tour/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
from tour.poses_url import POSE_URL_MAP
from tour.sido import SIDO_LIST
from rest_framework.pagination import LimitOffsetPagination, PageNumberPagination
from tour.sigungu import SIGUNGU_DATA

logger = logging.getLogger(APP_LOGGER)

Expand Down Expand Up @@ -108,23 +109,22 @@ class GetAreaList(viewsets.ViewSet):

def list(self, request, *args, **kwargs):
area_code = request.GET.get('area_code', None)
response_data = {}
tour = TourApi(service_key=PUBLIC_DATA_PORTAL_API_KEY)
# 전국을 다 보냅니다.
area_list = tour.get_sigungu_code_list()
if area_code is None:
for each in area_list:
response_data[each['code']] = tour.get_sigungu_code_list(int(each['code']))
else:
code_list = []
for each in area_list:
code_list.append(int(each['code']))
if not area_code:
raise NoRequiredParameterException()

try:
area_code = int(area_code)
if area_code not in code_list:
raise NoObjectException('No Area Code', f"There is no area code {area_code}")
area_list = tour.get_sigungu_code_list(area_code)
response_data[str(area_code)] = area_list
return Response(response_data, status=status.HTTP_200_OK)
except ValueError:
return Response(
{"error": "area_code는 숫자여야 합니다."},
status=status.HTTP_400_BAD_REQUEST
)

response_data = SIGUNGU_DATA.get(area_code, None)
if not response_data:
raise NoObjectException(error_message='올바른 시군구 데이터가 없습니다.')

return Response({str(area_code): response_data}, status=status.HTTP_200_OK)

class Sido_list(viewsets.ViewSet):

Expand Down