Isn't the m2m thorough ProgramModuleObj anyway though?
On Feb 17, 2014 4:02 PM, "Michael Price" <notifications@github.com> wrote:

> In esp/esp/program/models/__init__.py:
>
> > @@ -910,6 +910,15 @@ def getModules(self, user = None, tl = None):
> >          return modules
> >
> >      @cache_function
> > +    def hasModule(self, name):
> > +        """ Tests whether a program has the given module enabled, cachedly. name should be a module name, like 'AvailabilityModule'. """
> > +        return self.program_modules.filter(handler=name).exists()
> > +    getModules_cached.depend_on_row(lambda: Program, lambda prog: {'self': prog})
> > +    getModules_cached.depend_on_model(lambda: ProgramModule)
> > +    getModules_cached.depend_on_row(lambda: ProgramModuleObj, lambda module: {'self': module.program})
>
> Does this need a depend_on_m2m?
>
> --
> Reply to this email directly or view it on GitHub<https://github.com/learning-unlimited/ESP-Website/pull/1035/files#r9804304>
> .
>