According to your travel plans as you've set it out above you won't be visiting our East coast where the majority of diving is done in the Indian Ocean. If you want the prime spots you need to visit Sodwana bay or Umkomaas (Aliwal Shoal) even though a fair amount of diving is also done inbetween these areas (there are some wrecks around Durban to dive). Just note that the two areas mentioned I quite far appart.
July is winter in the Soutern hemisphere but the water temps in those areas rarely goes below 20C, persanlally I've never dived there with more than a 5mm suite. Mostly reef dives, beautiful and you can do some baited shark dives at Aliwal (a must do actualy), there are some wrecks around the Umkomaas area as well.
Sodwana has a network of reefs from shallow to deep, search for a dive map location of the area. It is a very popular area and a prime dive location. I've used these guys mostly and can recommend them
Diving Sodwana Bay, Self Catering Accommodation at ReefTeach Sodwana Bay
Another prime tourist diving spot is in the country of Mozambuique as mentioned above. Driving there you go through the South African border at Kosi bay to Ponta D'Ora. Nice setup and predominently a diving destination, but it is not accessable with a regular vehicle, you have to have a 4wheel drive vehicle, you are duning for 30+ km from the border to the town, no road signs, all add to the exitement and adventure of diving Ponta. A short dive further north is Ponta Malongane, just as nice and less crowded over holidays. Keep in mind that it isn't 3 - 5 star villas etc., it is rustic but not dumps and very accomodating for a dive week or weekend.
You mention Cape Town, you can dive from Houtbay or Saldanha bay (where our navy dive unit is trained) and various other placed, but being winter and the Atlantic ocean, it is extremely cold. The avg sea temperature in July around Cape Town is 14C. Some kelp forests and there are also many wrecks to dive, and of course also know waters for the great white, but don't let then scare you.......