Physics, CollisionBox(), and confusion

hey all i just recently dipped into collisions with physics. and i just recently dipped into collisionBox()es i have the physics part working more or less and i think i have the collisionBox() working also, but for some reason the physics collisions arent working. i get no errors so im assuming i did something wrong in the collision solids area. Im not sure where my code went awry so here is all of it XD

##############################################
#                 #IMPORT#                   #
##############################################
from direct.showbase.ShowBase import ShowBase
from direct.interval.IntervalGlobal import *
from pandac.PandaModules import *
from panda3d.core import Texture

from shapeGenerator import *

##############################################       
#                #NEW CLASS#                 #
##############################################
class initGame(ShowBase):
    
    
    def __init__(self):
        ShowBase.__init__(self)
        
        ######################################################
        #keeps the game running the same speed on all systems#
        FPS = 60##############################################
        globalClock = ClockObject.getGlobalClock()############
        globalClock.setMode(ClockObject.MLimited)#############
        globalClock.setFrameRate(FPS)#########################
        #keeps the game running the same speed on all systems#
        ######################################################
        
        self.disableMouse()
        base.enableParticles()
        self.loadPlayer()
        self.loadLevel()
        self.createLight()
        self.lookForCollisions()
        
    def loadPlayer(self):
        self.player = Player()
        
    def loadLevel(self):
        self.level = Level(self.player.playerModel)
        
    def createLight(self):
        self.lightSource = Light(self.player.playerModel)
        
    def lookForCollisions(self):
        self.collision = Collisions(self.player.playerCol, self.player.playerModel, self.level.rootCollisionNode)
        
##############################################       
#                #NEW CLASS#                 #
##############################################       
class Player(ShowBase, object):
    speed = 5
    Forward = Vec3(0, 0, 2)
    Back = Vec3(0, 0, -.5)
    STOP = Vec3(0, 0, 0)
    walk = STOP
    
    material = Material()
    material.setShininess(3)
    
    cameraZoom = -20
    
    def __init__(self):
        self.Texture = loader.loadTexture('textures/PlayerTexture.jpg')
        self.loadPlayer()
        self.setCamera()
        self.playerControls()
        taskMgr.add(self.movePlayer, 'moves player')
    
    def loadPlayer(self):
        self.player = Cube(1, 0-1, 1)
        self.player.setMaterial(self.material)
        self.player.setTexture(self.Texture)
        self.player.setTwoSided(True)
        self.playerModelNode = NodePath(PandaNode('ohai'))
        self.playerModelActor = ActorNode('actorNode')
        self.playerModel = self.playerModelNode.attachNewNode(self.playerModelActor)
        self.player.reparentTo(self.playerModel)
        self.player.setX(-.5)
        self.player.setZ(-.5)
        self.playerCol = self.playerModel.attachNewNode(CollisionNode('playercnode'))
        self.playerCol.node().addSolid(CollisionBox(0, 0, 0, .5, .5, .5))
        self.playerModelNode.reparentTo(base.render)
        base.physicsMgr.attachPhysicalNode(self.playerModelActor)
        
    def setCamera(self):
        base.accept('wheel_down', self.moveCameraIn)
        base.accept('wheel_up', self.moveCameraOut)
        base.camera.reparentTo(self.player)
        base.camera.setP(80)
        taskMgr.add(self.updateCamera, 'updatesCamera')
        
    def moveCameraIn(self):
        self.cameraZoom -= 1
        print (self.cameraZoom)
        
    def moveCameraOut(self):
        self.cameraZoom += 1
        
    def updateCamera(self, task):
        base.camera.setPos(.5, -2, self.cameraZoom)
        return task.cont
        
        
    def playerControls(self):
        base.accept("w", self.__setattr__,["walk",self.Forward])
        base.accept("w-up", self.__setattr__,["walk",self.STOP])

        base.accept("s", self.__setattr__,["walk",self.Back])
        base.accept("s-up", self.__setattr__,["walk",self.STOP])
        
        self.accept('d', self.rotateLeft)
        self.accept('a', self.rotateRight)
        
    def rotateLeft(self):
        for i in range(1000):
            if self.playerModel.getR()/90 == i or self.playerModel.getR()/90 == 0-i:
                cameraHprLerp = LerpHprInterval(self.playerModel, .1, (self.playerModel.getH(), self.playerModel.getP(), self.playerModel.getR() + 90), bakeInStart = 0)
                cameraHprLerp.start()
            else:
                print("sorry, couldn't rotate")
        
    def rotateRight(self):
        for i in range(1000):
            if self.playerModel.getR()/90 == i or self.playerModel.getR()/90 == 0-i:
                cameraHprLerp = LerpHprInterval(self.playerModel, .1, (self.playerModel.getH(), self.playerModel.getP(), self.playerModel.getR() - 90), bakeInStart = 0)
                cameraHprLerp.start()
            else:
                print("sorry, couldn't rotate")
        
    def movePlayer(self, task):
        self.playerModel.setPos(self.playerModel,self.walk*globalClock.getDt()*self.speed)
        return task.cont
    
##############################################       
#                #NEW CLASS#                 #
##############################################
class Level(ShowBase, object):
    levelArray = [
    [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,3],
    [3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3],
    [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
    ]
    itemArray = [
    [1,2,3,2,1,2,3,2,1,2,3,2,1,2,3,2,1,2,3,2,1],
    ]
    
    
    def __init__(self, playerModel):
        #################
        #levekArray Key##
        #0 = spawn#######
        #1 = floor#######
        #2 = holes#######
        #3 = wall########
        #################
        
        #################
        #itemArrayKey####
        #1 = speed boost#
        #2 = something###
        #3 = something###
        #################
        self.playerModel = playerModel
        self.Texture = loader.loadTexture('textures/LevelTexture.jpg')
        self.createLevel()
        self.flattenStrongRootNode()
        
    def createLevel(self):
    ##################################    
    #ok so! index = x pos! i = z pos!#
    ##################################
        self.rootNode = render.attachNewNode("ohaidernode")
        self.rootCollisionNode = render.attachNewNode(CollisionNode('worldCollider'))
        for i in range(len(self.levelArray)):
            for index, item in enumerate(self.levelArray[i]):
                if item == 0:
                    self.spawn(index, item, i)
                if item == 1:
                    self.addFloor(index, item, i)
                if item == 2:
                    self.addHole(index, item, i)
                if item == 3:
                    self.addWall(index, item, i)
                    
    def spawn(self, index, item, i):
        index = index
        item = item
        i = i
        cube = Cube(1, 0-1, 1)
        cube.setTwoSided(True)
        cube.setTexture(self.Texture)
        cube.reparentTo(self.rootNode)
        cube.setX(index)
        cube.setZ(i)
        box = CollisionBox(index, 0, i, .5, .5, .5)
        self.rootCollisionNode.node().addSolid(box)
        self.playerModel.setX(index + .5)
        self.playerModel.setZ(i + .5)
        self.playerModel.setY(-2)
        print(index, item, i)
                    
    def addFloor(self, index, item, i):
        index = index
        item = item
        i = i
        cube = Cube(1, 0-1, 1)
        cube.setTwoSided(True)
        cube.setTexture(self.Texture)
        cube.reparentTo(self.rootNode)
        cube.setX(index)
        cube.setZ(i)
        box = CollisionBox(index, 0, i, .5, .5, .5)
        self.rootCollisionNode.node().addSolid(box)
        print(index, item, i)
        
    def addHole(self, index, item, i):
        index = index
        item = item
        i = i
        print(index, item, i)
        
    def addWall(self, index, item, i):
        index = index
        item = item
        i = i
        cube = Cube(1, 0-3, 1)
        cube.setTwoSided(True)
        cube.setTexture(self.Texture)
        cube.reparentTo(self.rootNode)
        cube.setX(index)
        cube.setZ(i)
        box = CollisionBox(index, 0, i, .5, 1.5, .5)
        self.rootCollisionNode.node().addSolid(box)
        print(index, item, i)
        
    def flattenStrongRootNode(self):
        self.rootNode.flattenStrong()
                    
##############################################       
#                #NEW CLASS#                 #
##############################################
class Light(ShowBase, object):
    
    def __init__(self, playerModel):
        self.playerModel = playerModel
        self.addDirectionalLight(80, -100, 80, False)
        self.addAmbientLight()

    def addDirectionalLight(self, X, Y, Z, showfrustrum):
        X = X
        Y = Y
        Z = Z
        showfrustrum = showfrustrum
        dirLight = DirectionalLight("dlight")
        dirLight.setSpecularColor (VBase4(.249,.235,.207,1))
        dirLight.setDirection(Vec3(X, Y, Z))
        dirLight.setShadowCaster(True, 2048, 2048) 
        dirLight.getLens().setFilmSize(4096,4096)
        if showfrustrum:
            dirLight.showFrustum()
        dLight = render.attachNewNode(dirLight)
        render.setLight(dLight)
        render.setShaderAuto()
        
    def addAmbientLight(self):
        alight = AmbientLight('alight')
        alight.setColor(VBase4(0.2, 0.2, 0.2, 1))
        alnp = render.attachNewNode(alight)
        render.setLight(alnp)
        
##############################################       
#                #NEW CLASS#                 #
##############################################
class Collisions(ShowBase, object):
    
    def __init__(self, From, model, Into):
        self.playerCol = From
        self.playerModel = model
        self.rootCollisionNode = Into
        
        globalforcesFN = ForceNode('world-forces')
        globalforcesFNP = base.render.attachNewNode(globalforcesFN)
        globalforcesGravity = LinearVectorForce(0,9.81,0)
        globalforcesFN.addForce(globalforcesGravity)
        base.physicsMgr.addLinearForce(globalforcesGravity)
        
        def __init__(self):
            self.addCollisions()
            
        def addcollisions(self):
            base.cTrav = CollisionTraverser()
            CollisionHandler = PhysicsCollisionHandler()
            
            CollisionHandler.addCollider(self.playercol, self.playerModel)
            base.cTrav.addCollider(self.playerCol, collisionHandler)
    
app = initGame()
app.run()

im using a shapegenerator script that i found on the forums for the Cube()