Пример #1
0
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
Пример #2
0
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