def handle_shorting(self, url, given_sid): sid = given_sid or self.shortifier(url) with self.uow.start() as tx: surl = tx.short_urls.get(sid) if surl: # collision happened raise SidCollisionException("Collision") surl = ShortUrl(sid, url) surl.user = self.user tx.short_urls.add(surl) tx.commit() return sid