code: def __squeeze_in(self, start_time):
          
  
          # we are checking if our start time is in the middle of anything
          # or maybe there is something after us - so we know to adjust end time
          # in the latter case go only few hours ahead. everything else is madness, heh
          query = """
                     SELECT a.*, b.name
                       FROM facts a
                  LEFT JOIN activities b on b.id = a.activity_id
                      WHERE ((start_time < ? and end_time > ?)
                             OR (start_time > ? and start_time < ? and end_time is null)
                             OR (start_time > ? and start_time < ?))
                   ORDER BY start_time
                      LIMIT 1
                  """
          fact = self.fetchone(query, (start_time, start_time,
                                       start_time - dt.timedelta(hours = 12),
                                       start_time, start_time,
                                       start_time + dt.timedelta(hours = 12)))
          end_time = None
          if fact:
              if start_time > fact["start_time"]:
                  #we are in middle of a fact - truncate it to our start
                  self.execute("UPDATE facts SET end_time=? WHERE id=?",
                               (start_time, fact["id"]))
  
              else: #otherwise we have found a task that is after us
                  end_time = fact["start_time"]
  
          return end_time
docs: tries to put task in the given date
              if there are conflicts, we will only truncate the ongoing task
              and replace it's end part with our activity