          # define __iter__. See #18979 for details.
          raise TypeError("PermLookupDict is not iterable.")
  
      def __bool__(self):
          return self.user.has_module_perms(self.module_name)
  
      def __nonzero__(self):      # Python 2 compatibility
          return type(self).__bool__(self)
  
  
 
</s> remove         return self.user.has_perm("%s.%s" % (self.module_name, perm_name))
 </s> add         return self.user.has_perm("%s.%s" % (self.app_label, perm_name)) </s> remove     def __getitem__(self, module_name):
        return PermLookupDict(self.user, module_name)
 </s> add     def __getitem__(self, app_label):
        return PermLookupDict(self.user, app_label) </s> remove                 raise NotModerated("The model '%s' is not currently being moderated" % model._meta.module_name)
 </s> add                 raise NotModerated("The model '%s' is not currently being moderated" % model._meta.model_name) </s> remove             to_name = to._meta.object_name.lower()
 </s> add             to_name = to._meta.model_name </s> remove         if m._meta.object_name.lower() == model_name:
 </s> add         if m._meta.model_name == model_name:
        return self.user.has_module_perms(self.app_label)
          # define __iter__. See #18979 for details.
          raise TypeError("PermLookupDict is not iterable.")
  
      def __bool__(self):
        return self.user.has_module_perms(self.app_label)
  
      def __nonzero__(self):      # Python 2 compatibility
          return type(self).__bool__(self)
  
  
keep keep keep keep replace keep keep keep keep keep
 Fixed #19689 -- Renamed `Model._meta.module_name` to `model_name`. 
django/contrib/auth/context_processors.py