Example #1
0
def __topic_29(db, funding):
    """
    BAT又在这些领域出手了
    187, 217, 117
    """

    investors = set(dbutil.get_funding_investor_ids(
        db, funding.id)) & {187, 217, 117}
    if investors:
        active = 'Y' if dbutil.get_topic_auto_pubilsh_status(
            db, 29) == 'Y' else 'P'
        cid = funding.companyId
        investors = ','.join(
            [dbutil.get_investor_name(db, iid) for iid in investors])
        msg = u'%s投资了%s,%s' % \
              (investors, dbutil.get_company_brief(db, cid), dbutil.get_company_name(db, cid))
        tpm = dbutil.update_topic_message(db, 29, msg, active, 70, funding.id)
        # if active == 'Y':
        if tpm:
            send_msg(tpm, 'topic_message')
            tpc = dbutil.update_topic_company(db, 29, cid, active)
            if tpc:
                dbutil.update_topic_message_company(db, tpm, tpc)
            send_msg(tpc, 'topic_company')
        logger_track.info('29 for %s, add tpm %s' % (funding.id, tpm))
    else:
        logger_track.info('29 not for %s' % funding.id)
Example #2
0
def __topic_28(db, funding):
    """
    红杉真格经纬IDG
    114, 122, 125, 109
    """

    investors = set(dbutil.get_funding_investor_ids(
        db, funding.id)) & {114, 122, 125, 109}
    if investors:
        active = 'Y' if dbutil.get_topic_auto_pubilsh_status(
            db, 28) == 'Y' else 'P'
        # cid = dbutil.get_corporate_companies(db, funding.corporateId)[0]
        cid = funding.companyId
        investors = ','.join(
            [dbutil.get_investor_name(db, iid) for iid in investors])
        msg = u'%s投资了%s,%s' % \
              (investors, dbutil.get_company_brief(db, cid), dbutil.get_company_name(db, cid))
        tpm = dbutil.update_topic_message(db, 28, msg, active, 70, funding.id)
        # if active == 'Y':
        if tpm:
            send_msg(tpm, 'topic_message')
            # for cid in dbutil.get_corporate_companies(db, funding.corporateId):
            tpc = dbutil.update_topic_company(db, 28, cid, active)
            # if active == 'Y':
            if tpc:
                dbutil.update_topic_message_company(db, tpm, tpc)
            send_msg(tpc, 'topic_company')
        logger_track.info('28 for %s, add tpm %s' % (funding.id, tpm))
    else:
        logger_track.info('28 not for %s' % funding.id)
Example #3
0
    def track_funding_for_investor_message(self, cid, fid, iids, funding_round,
                                           abstract):

        investor_names = ','.join(
            [dbutil.get_investor_name(self.db, i) for i in iids])
        # 7002
        for iid in iids:
            im = dbutil.update_investor_message(self.db,
                                                iid,
                                                abstract,
                                                7002,
                                                70,
                                                fid,
                                                active='Y')
            if im:
                self.send_investor_message_msg(im)
        # 7005 and 7006
        previous_fundings = [
            funding.id for funding in dbutil.get_company_funding(self.db, cid)
            if funding.id < fid
        ]
        previous_iids = chain(*[
            dbutil.get_funding_investor_ids(self.db, funding)
            for funding in previous_fundings
        ])
        if previous_iids:
            if funding_round == 1110:
                msg = u'%s完成IPO' % dbutil.get_company_name(self.db, cid)
                dimension = 7005
            elif funding_round == 1120:
                msg = u'%s被%s收购' % (dbutil.get_company_name(
                    self.db, cid), investor_names)
                dimension = 7005
            else:
                dimension = 7006
            for iid in previous_iids:
                if dimension == 7006:
                    msg = u'%s已投项目, %s' % (dbutil.get_investor_name(
                        self.db, iid), abstract)
                im = dbutil.update_investor_message(self.db, iid, msg,
                                                    dimension, 70, fid)
                if im:
                    self.send_investor_message_msg(im)
Example #4
0
    def create_single(self, db, funding):

        global logger_universale_index

        # funding that is not active
        if not dbutil.get_funding_index_type(db, funding.id):
            return

        event = {'fid': funding.id}
        event['investorId'] = dbutil.get_funding_investor_ids(db, funding.id)
        event['investor'] = [
            dbutil.get_investor_name(db, iid)
            for iid in event.get('investorId', [])
        ]
        # previous investors
        if funding.fundingDate:
            previous_fundings = [
                f.id
                for f in dbutil.get_company_funding(db, funding.companyId)
                if f.fundingDate and f.fundingDate < funding.fundingDate
            ]
            previous_iids = set(
                chain(*[
                    dbutil.get_funding_investor_ids(db, fid)
                    for fid in previous_fundings
                ]))
            event['previous_investor'] = [
                dbutil.get_investor_name(db, iid) for iid in previous_iids
                if iid
            ]
        event['location'] = dbutil.get_company_location(db,
                                                        funding.companyId)[0]
        sectors = dbutil.get_company_sector_tag(db, funding.companyId)
        event['sector'] = sectors[0] if len(sectors) > 0 else 0
        tags_info = dbutil.get_company_tags_idname(db,
                                                   funding.companyId,
                                                   tag_out_type=(11000, 11001,
                                                                 11002))
        if tags_info:
            for tid, tname, weight in tags_info:
                event.setdefault('tags', []).append(tname.lower())
        event['round'] = funding.round
        event['sort_round'] = dbutil.get_round_sort(db, funding.round)
        if funding.investment:
            precise = {'Y': 1, 'N': 5}.get(funding.precise, 1)
            investment = funding.investment * precise * dbutil.get_currency_rate(
                db, funding.currency) / 10000
            event['last_funding_amount'] = investment
        else:
            event['last_funding_amount'] = None
        event['last_funding_date'] = funding.fundingDate
        event[
            'funding_year'] = funding.fundingDate.year if funding.fundingDate else None
        event['publish_date'] = funding.publishDate
        event['source'] = funding.source if funding.source else 0
        event['sort_sector'] = dbutil.get_tag_novelty(
            db, sectors[0]) if len(sectors) > 0 else None
        event['sort_location'] = dbutil.get_company_location(
            db, funding.companyId, True)[1]
        self.es.index(index="xiniudata2",
                      doc_type='event',
                      id=funding.id,
                      body=event)
Example #5
0
    def feed_incremental(self):

        global producer_track, logger_track
        fundings = dbutil.get_untracked_fundings(self.db)
        for funding in fundings:
            try:
                logger_track.info('Processing track %s' % funding.id)
                cid, corpid, fid, funding_date = funding.companyId, funding.corporateId, funding.id, funding.fundingDate
                # for cid in dbutil.get_corporate_companies(self.db, copid):
                # none funding date
                if not funding_date:
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s not funding date' % fid)
                    continue
                # funding date older than 1 year
                # if funding_date < datetime.now() - timedelta(days=365):
                #     dbutil.mark_funding_tracked(self.db, fid)
                #     logger_track.info('%s funding date 1 year ago' % fid)
                #     continue
                # check if publish date is older than 7 days
                if funding.publishDate and funding.publishDate < datetime.now(
                ) - timedelta(days=7):
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s funding published 7 days ago' % fid)
                    continue
                # check if there is publish date
                if not funding.publishDate:
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s funding no published date' % fid)
                    continue
                # check if this funding is a new funding
                latest = dbutil.get_corporate_latest_funding(self.db, corpid)
                if latest and latest.fundingDate > funding_date:
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s not new, funding id %s, had %s' %
                                      (cid, fid, latest.id))
                    continue
                if latest and latest.fundingDate == funding_date and not latest.id == fid:
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s not new, funding id %s, had %s' %
                                      (cid, fid, latest.id))
                    continue
                # only from ipo
                sources = dbutil.get_company_source(self.db, cid)
                if len(sources) == 1 and len(sources
                                             & {13400, 13401, 13402}) == 1:
                    dbutil.mark_funding_tracked(self.db, fid)
                    logger_track.info('%s just IPO, funding id %s' %
                                      (cid, fid))
                    continue
                name = dbutil.get_company_name(self.db, cid)
                abstract = u'%s获得新一轮融资' % name

                track_msg_id = str(
                    self.mongo.track.track.insert({
                        'topic_id':
                        3,
                        'company_id':
                        cid,
                        'abstract':
                        abstract,
                        'createTime':
                        datetime.today()
                    }))

                self.track_funding(cid, track_msg_id, fid, abstract)
                self.track_funding_for_investor_message(
                    cid, fid, dbutil.get_funding_investor_ids(self.db, fid),
                    funding.round, abstract)
                dbutil.mark_funding_tracked(self.db, fid)
                logger_track.info('%s tracked, funding id %s' % (cid, fid))
            except Exception, e:
                logger_track.exception('Failed %s, %s' % (funding.id, e))