Пример #1
0
def feed(feed):
    query = Proposal.public()

    # FIXME: better sorting

    community = None

    if feed == "popular":
        query = query.order_by(-Proposal.ranking)
        community = Community(name="popular",
                              description="The most popular posts on Pnyx.")

    elif feed == "upvote":
        query = query.order_by(-(Proposal.upvotes - Proposal.downvotes))
        community = Community(name="upvote",
                              description="The most upvoted posts on Pnyx.")

    elif feed == "new":
        query = query.order_by(Proposal.timestamp.desc())
        community = Community(
            name="new",
            description=gettext("The newest posts from all of Pnyx. Come here "
                                "to see posts rising and be a part of "
                                "the conversation."))

    else:
        query = query.order_by(-Proposal.ranking, Proposal.timestamp.desc())

    return object_list('community.html',
                       query,
                       community=community,
                       check_bounds=False)
Пример #2
0
def parse_list(html):
    bs = BeautifulSoup(html, 'html.parser')
    ul = bs.find('ul', attrs={'class': 'listContent'})
    ui_list = ul.find_all('li')
    community_list = []
    for ui in ui_list:
        name = ui.find('div', attrs={'class': 'title'}).find('a')['title']
        a_ = ui.find('div', attrs={'class': 'houseInfo'}).find_all('a')
        recent_sale_count = str2num(a_[0].string.replace('90', ''))
        rent_count = str2num(a_[-1].string)
        recent_sale_price = ui.find('div',
                                    attrs={
                                        'class': 'xiaoquListItemPrice'
                                    }).find('span').string
        if recent_sale_price != '暂无数据':
            recent_sale_price = int(recent_sale_price)
        else:
            recent_sale_price = 0
        sale_count = ui.find('div', attrs={
            'class': 'xiaoquListItemSellCount'
        }).find('span').string
        lianjia_id = ui['data-id']
        print('小区名称:%s,90天成交量: %s,在租数量:%s,在售价格:%s,在售数量:%s,;lianjiaId:%s' %
              (name, recent_sale_count, rent_count, recent_sale_price,
               sale_count, lianjia_id))
        community_list.append(
            Community(name=name,
                      on_rent_num=rent_count,
                      on_sale_num=recent_sale_count,
                      ninety_days_deal_num=recent_sale_count,
                      lianjia_id=lianjia_id,
                      reference_price=recent_sale_price))
    return community_list
Пример #3
0
def community_create():
    form = CommunityCreateForm()

    form.tags.choices = [
        (t.title, t.title)
        for t in Tag.select(Tag.title).order_by(Tag.title).distinct()
    ]

    if form.validate_on_submit() and current_user.karma >= 50:
        community = Community()

        community.name = slugify(form.name.data)
        community.description = form.description.data
        community.maintainer = User.get(User.id == current_user.id)

        community.update_search_index()

        user = User.get(User.id == current_user.id)
        user.karma -= 50
        user.save()

        success = True

        try:
            community.save()

        except peewee.IntegrityError:
            flash(gettext('This name is already in use.'), 'error')
            success = False

        else:
            try:
                for element in form.tags.data.split(','):
                    if not element:
                        continue

                    tag = Tag()
                    # FIXME: slugify?
                    tag.title = element
                    tag.community = community
                    tag.save()

            except peewee.IntegrityError:
                flash(gettext('Unable to add tags.'), 'error')
                success = False

        if success:
            return redirect(url_for('community', community=community.name))

    return render_template('community_create.html', form=form)
    def create(self, db_session: Session, community_to_create: CommunityCreate,
               user_id: int):
        info = services.vk_service.get_community_info(
            community_to_create.api_key, community_to_create.community_vk_id)
        community = Community(
            community_vk_id=community_to_create.community_vk_id,
            avatar_url=info["photo_200"],
            name=info["name"],
        )

        user = db_session.query(User).get(user_id)
        if user is not None:
            community.admins.append(user)

        db_session.add(community)
        db_session.commit()
        db_session.refresh(community)
        return community
Пример #5
0
def parse_detail(lianjia_id, html):
    community = Community(lianjia_id=lianjia_id)
    item_types = {
        '建筑类型': 'building_type',
        '物业费用': 'property_fee',
        '物业公司': 'property_company',
        '开发商': 'develop_company',
        '楼栋总数': 'building_num',
        '房屋总数': 'house_num'
    }
    bs = BeautifulSoup(html, 'html.parser')
    info_items = bs.find_all('div', attrs={'class', 'xiaoquInfoItem'})
    for item in info_items:
        span_list = item.find_all('span')

        if len(span_list) == 2 and span_list[0].string in item_types:
            pro_name = item_types.get(span_list[0].string)
            pro_value = span_list[-1].string.strip()
            if 'building_num' == pro_name or 'house_num' == pro_name:
                pro_value = str2num(pro_value)
            community.__setattr__(pro_name, pro_value)
        else:
            print('解析小区基本信息异常,原始html:[%s]' % span_list)
    return community