def _search(**conditions): year = conditions.get('year', unicode(settings.NEXT_YEAR)) semester = conditions.get('term', unicode(settings.NEXT_SEMESTER)) department = conditions.get('dept', None) type = conditions.get('type', None) lang = conditions.get('lang', 'ko') keyword = conditions.get('keyword', None) day_begin = conditions.get('start_day', None) day_end = conditions.get('end_day', None) time_begin = conditions.get('start_time', None) time_end = conditions.get('end_time', None) # This query requires Django 1.1 or newer. lectures = _search_by_ys(year, semester) #try: if year == None or semester == None: raise ValidationError('year or semester is null') if day_begin != None and day_end != None and time_begin != None and time_end != None: if int(time_end) == 24*60: # 24:00가 종료시간인 경우 처리 day_end = int(day_end) if day_end < 6: day_end += 1 time_end = 0 if day_begin == day_end: lectures = lectures.filter(classtime__day__exact=int(day_begin), classtime__begin__gte=ClassTime.numeric_time_to_obj(int(time_begin)), classtime__end__lte=ClassTime.numeric_time_to_obj(int(time_end))) else: lectures = lectures.filter(classtime__day__gte=int(day_begin), classtime__day__lte=int(day_end), classtime__begin__gte=ClassTime.numeric_time_to_obj(int(time_begin)), classtime__end__lte=ClassTime.numeric_time_to_obj(int(time_end))) lectures = lectures.order_by('type', 'code').distinct().select_related() elif department != None and type != None and keyword != None: keyword = keyword.strip() if keyword == u'': if department == u'-1' and type == u'전체보기': raise ValidationError('department and type is all') lectures = _search_by_ysdt(year, semester, department, type) else: words = [keyword] #keyword.split() lectures = None for word in words: result = _search_by_ysdtlw(year, semester, department, type, lang, unicode(word)) if lectures is None: lectures = result else: lectures = lectures & result lectures = lectures.order_by('type', 'code').distinct().select_related() else: raise ValidationError('some key is null') #except (TypeError, ValueError): # raise ValidationError() return lectures
def _search(**conditions): year = conditions.get('year', unicode(settings.NEXT_YEAR)) semester = conditions.get('term', unicode(settings.NEXT_SEMESTER)) department = conditions.get('dept', None) type = conditions.get('type', None) lang = conditions.get('lang', 'ko') keyword = conditions.get('keyword', None) day_begin = conditions.get('start_day', None) day_end = conditions.get('end_day', None) time_begin = conditions.get('start_time', None) time_end = conditions.get('end_time', None) # This query requires Django 1.1 or newer. lectures = _search_by_ys(year, semester) #try: if year == None or semester == None: raise ValidationError('year or semester is null') if day_begin != None and day_end != None and time_begin != None and time_end != None: if int(time_end) == 24 * 60: # 24:00가 종료시간인 경우 처리 day_end = int(day_end) if day_end < 6: day_end += 1 time_end = 0 if day_begin == day_end: lectures = lectures.filter( classtime__day__exact=int(day_begin), classtime__begin__gte=ClassTime.numeric_time_to_obj( int(time_begin)), classtime__end__lte=ClassTime.numeric_time_to_obj( int(time_end))) else: lectures = lectures.filter( classtime__day__gte=int(day_begin), classtime__day__lte=int(day_end), classtime__begin__gte=ClassTime.numeric_time_to_obj( int(time_begin)), classtime__end__lte=ClassTime.numeric_time_to_obj( int(time_end))) lectures = lectures.order_by('type', 'code').distinct().select_related() elif department != None and type != None and keyword != None: keyword = keyword.strip() if keyword == u'': if department == u'-1' and type == u'전체보기': raise ValidationError('department and type is all') lectures = _search_by_ysdt(year, semester, department, type) else: words = [keyword] #keyword.split() lectures = None for word in words: result = _search_by_ysdtlw(year, semester, department, type, lang, unicode(word)) if lectures is None: lectures = result else: lectures = lectures & result lectures = lectures.order_by('type', 'code').distinct().select_related() else: raise ValidationError('some key is null') #except (TypeError, ValueError): # raise ValidationError() return lectures