diff --git a/snuseggi/models.py b/snuseggi/models.py index fd70d90..cbc7f8f 100644 --- a/snuseggi/models.py +++ b/snuseggi/models.py @@ -1,70 +1,33 @@ -from django.db import models -from datetime import datetime - -ZERO = 0 -ONE = 1 -TWO = 2 -THREE = 3 -FOUR = 4 -FIVE = 5 -POINT_CHOICES = ( - (ZERO, '0'), - (ONE, '1'), - (TWO, '2'), - (THREE, '3'), - (FOUR, '4'), - (FIVE, '5'),) - -CLASSIFICATION = (('Lunch', 'Lunch'), ('Dinner', 'Dinner'),) - -class Menu(models.Model): - name = models.CharField(max_length = 50, primary_key = True) - - def __str__(self): - return self.name - -class Restaurant(models.Model): - name = models.CharField(max_length = 50, primary_key = True) - menus = models.ManyToManyField(Menu, through='DailyMenu') - point_taste = models.PositiveSmallIntegerField(default = 0, choices = POINT_CHOICES) - point_service = models.PositiveSmallIntegerField(default = 0, choices = POINT_CHOICES) - point_price = models.PositiveSmallIntegerField(default = 0, choices = POINT_CHOICES) - point_average = models.FloatField(default = 0) - - def point_avg(self): - return (self.point_taste + self.point_service + self.point_price) / 3 - - def __str__(self): - return self.name - -class DailyMenu(models.Model): - menu = models.ForeignKey(Menu, on_delete=models.CASCADE) - restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE) - date = models.DateField(default = datetime.today) - classification = models.CharField(max_length=6, choices = CLASSIFICATION, default = 'Lunch') - - def __str__(self): - return str(self.date) + " " + self.restaurant.name + " " + self.classification + " " + self.menu.name - - def __rst__(self): - return self.restaurant.pk - -class Assessment(models.Model): - restaurant = models.ForeignKey(Restaurant, blank=False, null=False, default = '301동') - classification = models.CharField(max_length=6, choices = CLASSIFICATION, default = 'Lunch') - date = models.DateField(default = datetime.today) - dailyMenu = models.ForeignKey(DailyMenu, blank=False, null=False) - save_time = models.DateTimeField(default = datetime.now) - point_taste = models.PositiveSmallIntegerField(choices = POINT_CHOICES, blank=False, null=False, default = 5) - point_service = models.PositiveSmallIntegerField(choices = POINT_CHOICES, blank=False, null=False, default = 5) - point_price = models.PositiveSmallIntegerField(choices = POINT_CHOICES, blank=False, null=False, default = 5) - comment = models.CharField(max_length = 200, blank=True, null=True) - - def __str__(self): - return str(self.date) + " " + str(self.save_time) - - -class Select(models.Model): - restaurant = models.ForeignKey(Restaurant, blank=False, null=False, default = '301동') - classification = models.CharField(max_length=6, choices = CLASSIFICATION, default = 'Lunch') - date = models.DateField(default = datetime.today) \ No newline at end of file +from django.db import models + +class Menu(models.Model): + name = models.CharField(max_length = 50, primary_key = True) + + def __str__(self): + return self.name + +class Restaurant(models.Model): + name = models.CharField(max_length = 50, primary_key = True) + point_taste = models.PositiveSmallIntegerField(default = 0) + point_service = models.PositiveSmallIntegerField(default = 0) + point_price = models.PositiveSmallIntegerField(default = 0) + + def point_avg(self): + return (self.point_taste + self.point_service + self.point_price) / 3 + + def __str__(self): + return self.name + +class Assessment(models.Model): + CLASSIFICATION = (('L', 'Lunch'), ('D', 'Dinner'),) + restuarant = models.ForeignKey('Restaurant') + classification = models.CharField(max_length=1, choices = CLASSIFICATION, default = 'L') + menus = models.ManyToManyField(Menu) + date = models.DateField(auto_now = True) + point_taste = models.PositiveSmallIntegerField(default = 0) + point_service = models.PositiveSmallIntegerField(default = 0) + point_price = models.PositiveSmallIntegerField(default = 0) + comment = models.CharField(max_length = 200) + + #def __str__(self): + # return self.menus.name \ No newline at end of file diff --git a/snuseggi/parsing.py b/snuseggi/parsing.py new file mode 100644 index 0000000..b86ee26 --- /dev/null +++ b/snuseggi/parsing.py @@ -0,0 +1,45 @@ +import urllib.request +from bs4 import BeautifulSoup + +# input : 식당이름 +# 아래의 snuYes, snuNo의 문자열값을 따라야함. + +def menulist(input): + + snuYes = ['학생회관식당학생회관(63동)', '3식당전망대(75-1동)', '기숙사식당관악사(919동)', '자하연식당농협(109동)', + '302동식당302동', '솔밭간이식당110동', '동원관식당113동', '감골식당101동'] + + snuNo = ['4식당서당골 (76동)', '두레미담75-1동', '301동식당301동', '예술계식당(74동)75동', '샤반501동', + '공대간이식당30-2동', '상아회관연건켐퍼스 19동', '소담마루동원생활관 113동 3층', '220동식당3단계대학원연구동(220동)', + '라운지오동원생활관(113동) 1층'] + + if input in snuYes: + menuURL = 'http://www.snuco.com/html/restaurant/restaurant_menu1.asp' + restaurantNum = snuYes.index(input) + elif input in snuNo: + menuURL = 'http://www.snuco.com/html/restaurant/restaurant_menu2.asp' + restaurantNum = snuNo.index(input) + else: + return 'ERROR' + + # 디버깅용으로 날짜변경시 + menuURL = menuURL + '?date=2016-06-14' + + html = urllib.request.urlopen(menuURL) + soup = BeautifulSoup(html, "html.parser") + + table = soup.find('table', attrs={'width':'586px'}) + table_body = table.find('tbody') + rows = table_body.find_all('tr') + cols = rows[restaurantNum+1].find_all('td') + data = [ele.text.strip() for ele in cols if ele] + + #식당이름제거 + del data[0] + + # '/'가 포함된 시간대는 편의상 제일 앞 메뉴만 표시 + data = [iter.split('/')[0][1:] for iter in data] + # 1아침 3점심 5저녁 + data = [data[1], data[3], data[5]] + + return data \ No newline at end of file diff --git a/snuseggi/templates/snuseggi/review_list.html b/snuseggi/templates/snuseggi/review_list.html new file mode 100644 index 0000000..977f8ed --- /dev/null +++ b/snuseggi/templates/snuseggi/review_list.html @@ -0,0 +1,19 @@ + +
+☆★{{restaurant}}★☆
+---------------
+아침 : {{breakfast}}
+평점 : {{point_breakfast}}
+---------------
+점심 : {{lunch}}
+평점 : {{point_lunch}}
+---------------
+저녁 : {{dinner}}
+평점 : {{point_dinner}}
+