def edit(company_id: int = None): """Create, view or edit a company.""" # Select company. if company_id: company = company_service.find_company_by_id(company_id) else: company = Company() form = init_form(CompanyForm, obj=company) # Add locations. locations = Location.query.order_by('address').order_by('city') form.location_id.choices = \ [(l.id, l.address + ', ' + l.city) for l in locations] form.contact_id.choices = \ [(c.id, c.name) for c in Contact.query.filter_by().order_by('name')] if form.validate_on_submit(): if not company.id and Company.query.filter( Company.name == form.name.data).count(): flash(_('Name "%s" is already in use.' % form.name.data), 'danger') return render_template('company/edit.htm', company=company, form=form) company.name = form.name.data company.description = form.description.data company.contract_start_date = form.contract_start_date.data company.contract_end_date = form.contract_end_date.data company.location = Location.query.get(form.location_id.data) company.contact = Contact.query.get(form.contact_id.data) company.website = form.website.data if request.files['file']: logo = request.files['file'] _file = file_service.add_file(FileCategory.COMPANY_LOGO, logo, logo.filename) company.logo_file_id = _file.id db.session.add(company) db.session.commit() flash(_('Company "%s" saved.' % company.name), 'success') return redirect(url_for('company.view', company_id=company.id)) return render_template('company/edit.htm', company=company, form=form)
def __process_nasdaq_public_data_market(phile, market): f = open(phile, 'rb') reader = csv.reader(f) count = 0 for row in reader: count += 1 if count == 1: continue vals = { 'symbol': row[0], 'name': row[1], 'last_sale': row[2], 'market_cap': row[3], 'ipo_year': row[5], 'sector': row[6], 'industry': row[7], 'exchange': market, } c = Company.query.filter( Company.symbol == vals['symbol'], Company.exchange == market).all() if c: app.logger.info('Already Have Data for %s' % c[0].name) continue c = Company() c.symbol = vals['symbol'] c.name = vals['name'] if vals['last_sale'] != "n/a": c.price = vals['last_sale'] else: c.price = 0 c.market_cap = vals['market_cap'] c.ipo_year = vals['ipo_year'] c.sector = vals['sector'] c.industry = vals['industry'] c.exchange = vals['exchange'] c.save() app.logger.info('Saved: %s' % c.name)
def create(company_id=None): # Select company. if company_id: company = Company.query.get_or_404(company_id) else: company = Company() data = {} data["name"] = company.name data["description"] = company.description data["contract_start_date"] = company.contract_start_date data["contract_end_date"] = company.contract_end_date data["website"] = company.website # Select locations. if company.location_id: location = Location.query.get(company.location_id) else: location = Location() data['location_city'] = location.city data['location_country'] = location.country data['location_address'] = location.address data['location_zip'] = location.zip data['location_postoffice_box'] = location.postoffice_box data['location_email'] = location.email data['location_phone_nr'] = location.phone_nr if company.contact_id: contact = Contact.query.get(company.contact_id) else: contact = Contact() data['contact_name'] = contact.name data['contact_email'] = contact.email data['contact_phone_nr'] = contact.phone_nr form = init_form(NewCompanyForm, data=data) if form.validate_on_submit(): if not contact.id and Contact.query.filter( Contact.name == form.contact_name.data).count(): flash(_('Contact name "%s" is already in use.' % form.contact_name.data), 'danger') return render_template('company/create.htm', company=company, form=form) if not contact.id and Contact.query.filter( Contact.email == form.contact_email.data).count(): flash(_('Contact email "%s" is already in use.' % form.contact_email.data), 'danger') return render_template('company/create.htm', company=company, form=form) contact.name = form.contact_name.data contact.email = form.contact_email.data contact.phone_nr = form.contact_phone_nr.data # Create or update to contact db.session.add(contact) db.session.commit() # Create or update to location location.city = form.location_city.data location.country = form.location_country.data location.address = form.location_address.data location.zip = form.location_zip.data location.postoffice_box = form.location_postoffice_box.data location.email = form.location_email.data location.phone_nr = form.location_phone_nr.data db.session.add(location) db.session.commit() # if not company.id and Company.query.filter( Company.name == form.name.data).count(): flash(_('Name "%s" is already in use.' % form.name.data), 'danger') return render_template('company/edit.htm', company=company, form=form) company.name = form.name.data company.description = form.description.data company.contract_start_date = form.contract_start_date.data company.contract_end_date = form.contract_end_date.data company.location = location company.contact = contact company.website = form.website.data if request.files['file']: logo = request.files['file'] _file = file_service.add_file(FileCategory.COMPANY_LOGO, logo, logo.filename) company.logo_file = _file db.session.add(company) db.session.commit() flash(_('Company "%s" saved.' % company.name), 'success') return redirect(url_for('company.view', company_id=company.id)) else: flash_form_errors(form) return render_template('company/create.htm', company=company, form=form)