docs: def can_modify(self, user=None):
          """Determines whether the submission can be modified.
          Returns a boolean value.
          The 'user' parameter is optional and additionally checks whether
          the given user is authorized to perform these actions.
  
          This function checks the submission states and assignment deadlines."""
  
          # The user must be authorized to commit these actions.
          if user and not self.user_can_modify(user):
              #self.log('DEBUG', "Submission cannot be modified, user is not an authorized user ({!r} not in {!r})", user, self.authorized_users)
              return False
  
          # Modification of submissions, that are withdrawn, graded or currently being graded, is prohibited.
          if self.state in [self.WITHDRAWN, self.GRADED, self.GRADING_IN_PROGRESS, ]:
              #self.log('DEBUG', "Submission cannot be modified, is in state '{}'", self.state)
              return False
  
          # Modification of closed submissions is prohibited.
          if self.is_closed():
              if self.assignment.is_graded():
                  # There is a grading procedure, so taking it back would invalidate the tutors work
                  #self.log('DEBUG', "Submission cannot be modified, it is closed and graded")
                  return False
              else:
                  #self.log('DEBUG', "Closed submission can be modified, since it has no grading scheme.")
                  return True
  
          # Submissions, that are executed right now, cannot be modified
          if self.state in [self.TEST_VALIDITY_PENDING, self.TEST_FULL_PENDING]:
              if not self.file_upload:
                  self.log(
                      'CRITICAL', "Submission is in invalid state! State is '{}', but there is no file uploaded!", self.state)
                  raise AssertionError()
                  return False
              if self.file_upload.is_executed():
                  # The above call informs that the uploaded file is being executed, or execution has been completed.
                  # Since the current state is 'PENDING', the execution cannot yet be completed.
                  # Thus, the submitted file is being executed right now.
                  return False
  
          # Submissions must belong to an assignment.
          if not self.assignment:
              self.log('CRITICAL', "Submission does not belong to an assignment!")
              raise AssertionError()
  
          # Submissions, that belong to an assignment where the hard deadline has passed,
          # cannot be modified.
          if self.assignment.hard_deadline and timezone.now() > self.assignment.hard_deadline:
              #self.log('DEBUG', "Submission cannot be modified - assignment's hard deadline has passed (hard deadline is: {})", self.assignment.hard_deadline)
              return False
  
          # The soft deadline has no effect (yet).
          if self.assignment.soft_deadline:
              if timezone.now() > self.assignment.soft_deadline:
                  # The soft deadline has passed
                  pass  # do nothing.
  
          #self.log('DEBUG', "Submission can be modified.")
          return True