def handle_get(request): sess = get_session_id(request) prefs = get_prefs(sess) data = default_template_vars(u'설정', request) data['nickname'] = common.get_my_nickname(request) data['prefs'] = prefs response = render_to_response('config.html', data) return response
def handle(request, path): try: redirect_if_no_session(request) args = path.split('/') dest = args[0] page = 1 divpage = -1 search = ['subject', 'body'] searchterm = '' category = None if request.GET.has_key('category'): category = request.GET['category'] base = 1 try: page = int(args[base]) base += 1 except: pass it = iter(args[base:]) while True: try: key = it.next() if key == 'div': divpage = int(it.next()) elif key == 'search': sq = it.next() if sq == 'myself': search = ['name_exact'] searchterm = common.get_my_nickname(request) else: search = sq.split('+') searchterm = it.next() except StopIteration: break if not pagedefs.PAGE_IDS.has_key(dest): return error(request, u'정의되지 않은 페이지입니다.') query = URL + '?id=%s&page=%d' % (pagedefs.PAGE_IDS[dest], page) if category: query += '&category=%s' % category if divpage >= 0: query += '&divpage=%d' % divpage if searchterm: comp = lambda x: 'on' if x in search else 'off' sn1 = comp('name_exact') if sn1 == 'on': sn = 'on' else: sn = comp('name') ss = comp('subject') sc = comp('body') sr = comp('comments') query += '&sn1=%s&sn=%s&ss=%s&sc=%s&sr=%s&keyword=%s' % (sn1, sn, ss, sc, sr, urllib.quote(searchterm.encode(TARGET_ENCODING))) result = remote.send_request(request, query) html, soup = remote.postprocess(result.read()) redirect_if_not_signed_on(request, html, soup, pagedefs.PAGE_PARSERS[dest]) errcode, errmsg = pagedefs.PAGE_PARSERS[dest].check_error(request, html, soup) if errcode: return error_forward(request, errmsg) output = pagedefs.PAGE_PARSERS[dest].parse_list(dest, html, soup) if output.get('no_adult_check', False): redirect_if_no_adult_check(request) output['bid'] = dest output['page'] = page output['search'] = search output['searchquery'] = '' if searchterm: output['searchterm'] = searchterm output['searchquery'] = '/search/%s/%s' % ('+'.join(search), searchterm) if category: output['category'] = category output['searchquery'] += '?category=%s' % category if divpage >= 0: output['div'] = divpage output['divquery'] = '/div/%d' % divpage output['listquery'] = urllib.quote(path.encode('utf-8')) try: maxpages = output['maxpages'] except: maxpages = 1 pages = filter(lambda x: x > 0 and x <= maxpages, range(page-2, page+3)) output['pages'] = pages data = default_template_vars(u'%s - %d 페이지' % (pagedefs.PAGE_NAMES[dest], page), request, dest) data.update(output) return render_to_response('list.html', data) except redirection, e: return e.where