def create(self, request, user=None): self._user = user while True: try: self._session_key = self._get_new_session_key() self._session_rk = Session( id=self._session_key, data=self.encode({}), user=self._user, ip=self._ip, agent=request.META.get('HTTP_USER_AGENT', ''), start=timezone.now(), last=timezone.now(), admin=request.firewall.admin, ) self._session_rk.save(force_insert=True) if settings.USER_EXTENSIONS_PRELOAD: self._session_rk = self._session_rk.select_related(*settings.USER_EXTENSIONS_PRELOAD) if user: # Update user data user.set_last_visit( self.get_ip(request), request.META.get('HTTP_USER_AGENT', '') ) user.save(force_update=True) break except CreateError: # Key wasn't unique. Try again. continue
def create(self, request): self._session_rk = Session( id=self._session_key, data=self.encode({}), crawler=request.user.username, ip=self._ip, agent=request.META.get('HTTP_USER_AGENT', ''), start=timezone.now(), last=timezone.now(), matched=True ) while True: try: self._session_rk.save(force_insert=True) break except CreateError: continue except IntegrityError: try: self._session_rk = Session.objects.get(id=self._session_key) except Session.DoesNotExist: continue