code: def can_view(self, user):
          
          # Perform simplest checks first
          if user.is_admin or self in user.files:
              return True
          elif user.admin_for:  # Begin more expensive comparisions
              # Single-indirect lookup
              classes = set(x.class_ for x in self.makefile_for_projects)
              if classes.intersection(user.admin_for):
                  return True
              # Double indirect lookups
              classes = set(x.project.class_ for x in self.build_files)
              if classes.intersection(user.admin_for):
                  return True
              classes = set(x.project.class_ for x in self.execution_files)
              if classes.intersection(user.admin_for):
                  return True
              # Triple-indirect lookups
              classes = set(x.testable.project.class_ for x in self.expected_for)
              if classes.intersection(user.admin_for):
                  return True
              classes = set(x.testable.project.class_ for x in self.stdin_for)
              if classes.intersection(user.admin_for):
                  return True
              classes = set(x.submission.project.class_ for x in
                            self.submission_assocs)
              if classes.intersection(user.admin_for):
                  return True
              # 4x-indirect lookups
              classes = set(x.test_case.testable.project.class_ for x
                            in self.test_case_result_for)
              if classes.intersection(user.admin_for):
                  return True
          return False
docs: Return true if the user can view the file.