code: def get_both_blocks_sibling(self):
          
          if not self.is_both_blocks():
              return None
  
          if self.block.block_letter and self.block.block_letter.upper() not in ["A", "B"]:
              # both_blocks is not currently implemented for blocks other than A and B
              return None
  
          other_instances = (EighthScheduledActivity.objects.filter(activity=self.activity, block__date=self.block.date))
  
          for inst in other_instances:
              if inst == self:
                  continue
  
              if inst.block.block_letter in ["A", "B"]:
                  return inst
  
          return None
docs: If this is a both-blocks activity, get the other EighthScheduledActivity
             object that occurs on the other block.
  
             both_blocks means A and B block, NOT all of the blocks on that day.
  
             Returns:
                  EighthScheduledActivity object if found
                  None if the activity cannot have a sibling
                  False if not found