def fill_mfr_db(page, deleteTable, login_session): if login_session.get('username') == None: return (0, 0, 'You must be signed in to add models <BR>' + '<a href="/login">Click here</a> to login') if deleteTable == "yes": # The following drop table does not work with cascade delete from model table, at least as of now. Thus # simply delete all records in MFR for cascade delete the model table # Mfr.__table__.drop(engine) # Base.metadata.create_all(engine) print 'we are here. Deleting the tables' records = sql_session.query(Mfr).all() for record in records: creator_id = record.user_id # Check if the record belongs to authorized user if creator_id == login_session['username']: sql_session.delete(record) else: # If not then skip record. Later some nice stuff might be added to get back the list of # models not deleted and returned in a separate modal window pass sql_session.commit() data = Mfr.getMFCdata(int(page)) # this list keeps the number of id's processed ids = [] # count for records appended and total records retrieved new_records = 0 total_records = len(data) for mfr_row in data: # Check if Mfr_ID exists in DB = if yes => skip the record if sql_session.query(Mfr).filter( Mfr.id == mfr_row['Mfr_ID']).count() == 0: # Check for unique ID -some id's from API are doubled and not unique!So we put processed IDS into list ids if mfr_row['Mfr_ID'] not in ids: type_vehicle = False ids.append(mfr_row['Mfr_ID']) # Here is the algo for setting VehicleType field. The logic is that we loop through all VehicleTypes # and look for IsPrimary = True field. if len(mfr_row['VehicleTypes']) != 0: for vehicle_type in mfr_row['VehicleTypes']: if vehicle_type['IsPrimary'] == True: type_vehicle = vehicle_type['Name'] # Sometimes even if vehicle type is set, no primary key is defined - NHTSA data consistency bug # So we check that after iterating we have vehilce # type set. If not = > manually set to 'no primary key'. # The same value is assigned when no VehicleType info is present if not type_vehicle: type_vehicle = 'No primary type' # Get current user, and update records with that user mfr_line = Mfr(id=mfr_row['Mfr_ID'], country=mfr_row['Country'], commonname=mfr_row['Mfr_CommonName'], name=mfr_row['Mfr_Name'], vehicle_type=type_vehicle, user_id=login_session['user_id']) sql_session.add(mfr_line) new_records += 1 sql_session.commit() error_txt = None return new_records, total_records, error_txt
def mfr_delete(mfr_id): if not mfr_id: return 'Error. No record to delete. Please go back' if 'username' not in login_session: flash('Please login to be able to delete content') return redirect(url_for('mainpage', mfr=mfr_id)) mfr_delete_record = sql_session.query(Mfr).filter(Mfr.id == mfr_id).one() if mfr_delete_record.user_id != login_session['user_id']: flash("You are not the original creator! You don't have permission to delete the record") return redirect(url_for('mainpage', mfr=mfr_id)) sql_session.delete(mfr_delete_record) sql_session.commit() flash('Record successfully deleted') return redirect(url_for('mainpage'))