code: def get_contacts_by_explosion(self, contactgroups):
          self.already_exploded = True
          if self.rec_tag:
              logger.error("[contactgroup::%s] got a loop in contactgroup definition",
                           self.get_name())
              if hasattr(self, 'members'):
                  return self.members
              return ''
          self.rec_tag = True
          cg_mbrs = self.get_contactgroup_members()
          for cg_mbr in cg_mbrs:
              contactgroup = contactgroups.find_by_name(cg_mbr.strip())
              if contactgroup is not None:
                  value = contactgroup.get_contacts_by_explosion(contactgroups)
                  if value is not None:
                      self.add_members(value)
          if hasattr(self, 'members'):
              return self.members
          return ''