'Sets the user that is currently working on this question.
May raise InvalidUserException if the user is not permitted to take
the question (such as if the question is owned by the user).
May raise AlreadyTakenException if the question is already taken
by a different user, and the force paramater is not True.
If the user is the same as the user that currently has the question,
the timer will be updated   .'

def take(self, user, force=False):

    if (user == self.creator):
        raise InvalidUserException
    if ((self.taken_by not in [None, user]) and (not force)):
        raise AlreadyTakenException
    self.taken_by = user
    self.taken_until = (datetime.now() + timedelta(seconds=config.TAKE_TIMEOUT))
    self.save()
