コード例 #1
0
    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
コード例 #2
0
ファイル: main.py プロジェクト: dkarris/lightsailDeployment
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'))