  This paper analyses the numerical solution of a class of non-linear
Schr\"odinger equations by Galerkin finite elements in space and a mass- and
energy conserving variant of the Crank-Nicolson method due to Sanz-Serna in
time. The novel aspects of the analysis are the incorporation of rough,
discontinuous potentials in the context of weak and strong disorder, the
consideration of some general class of non-linearities, and the proof of
convergence with rates in $L^{\infty}(L^2)$ under moderate regularity
assumptions that are compatible with discontinuous potentials. For sufficiently
smooth potentials, the rates are optimal without any coupling condition between
the time step size and the spatial mesh width.
