示例#1
0
def admin_add_company():
    data = json.loads(request.data)
    linkedin_id = data.get('linkedin_id')
    name = data.get('name')
    crunchbase_url = data.get('crunchbase_url')
    if not linkedin_id or linkedin_id == "":
        linkedin_id = gen_fake_linkedin_id()
    company = Company(linkedin_id, name)
    company.crunchbase_url = crunchbase_url
    db.session.add(company)
    db.session.commit()
    print ' adding new company for rescraping: ' + name.encode('utf8') + ' --> ' + linkedin_id
    print '              new company id = ' + str(company.id)
    if crunchbase_url and crunchbase_url != "":
        mode = FROM_URL_RESCRAPE_MODE
    else:
        mode = DEFAULT_RESCRAPE_MODE
    rescrape_companies_from_list([company], mode=mode)
    # TODO F**K F**K F**K F**K HEROKU for not allowing > 1 thread
    # WHAT IN THE F*****G F**K.....
    #times_left = 100
    #while not company.is_feed_ready and times_left >= 0:
    #    times_left -= 1 # this is to make sure this doesn't become an infinite for-loop
    #    time.sleep(5)
    #    db.session.commit() # Retarded way to start a new transaction because F**K sqlalchemy...
    #    print '       ... waiting for scraper callback --> is_feed_ready ' + str(company.is_feed_ready)
    resp = json.dumps({'status': 'ok', 'company_id': company.id})
    return resp 
示例#2
0
def rescrape_select_companies(mode):
    data = json.loads(request.data)
    company_ids = data.get('company_ids')
    companies = Company.query.filter(Company.id.in_(company_ids)).all()
    print 'Rescraping ' + str(len(companies)) + ' companies:'
    for company in companies:
        print str(company.id) + ': ' + company.name.encode('utf8') # + ' --> ' + len(str(company.crunchbase_data))
    rescrape_companies_from_list(companies, mode)
    resp = json.dumps({'status': 'ok'})
    return resp
示例#3
0
def admin_rescrape_all_companies(mode):
    if mode == SOFT_RESCRAPE_MODE:
        print '   SOFT!!!'
        companies = Company.query.filter(Company.crunchbase_data!=None).all()
    elif mode == FROM_URL_RESCRAPE_MODE:
        print '   FROM URL!!!'
        companies = Company.query.filter(Company.crunchbase_url!=None).all()
    else:
        companies = Company.query.order_by(desc(Company.id)).all()
    print 'Rescraping ' + str(len(companies)) + ' companies:'
    for company in companies:
        print str(company.id) + ': ' + company.name.encode('utf8') # + ' --> ' + len(str(company.crunchbase_data))
    rescrape_companies_from_list(companies, mode)
    resp = json.dumps({'status': 'ok'})
    return resp
示例#4
0
def admin_edit(company_id, edit_mode):
    if edit_mode == 'advanced':
        fields = ADMIN_ADVANCED_FIELDS
    else:
        fields = ADMIN_BASIC_FIELDS
    CompanyForm = model_form(Company, fields)
    company = Company.query.get(company_id)
    form = CompanyForm(request.form, obj=company)
    if form.validate_on_submit(): 
        form.populate_obj(company)
        db.session.commit()
        print 'Updated ' + str(company.id) + ', ' + company.name.encode('utf8')
        if request.form.get('do_rescrape_from_url'):
            print '     also rescrape!'
            rescrape_companies_from_list([company], mode=FROM_URL_RESCRAPE_MODE)
        return redirect(url_for('profile', company_id=company.id))
    elif form.is_submitted():
        flash(form.errors)
    return render_template("admin_edit.html", fields=fields, form=form, company=company, edit_mode=edit_mode)