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