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)
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
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
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