def assertInvalid(self, url): try: domain = Domain.objects.create(name=extract_domain(url)) website = Website.objects.create(url=url, domain=domain) website.delete() domain.delete() self.fail(u"invalid URL did not raise IntegrityError: '%s'" % url) except IntegrityError: transaction.rollback()
def unknown_url(http_request, url): """ Error page for unknown URL. """ domains = Domain.objects.filter(name=extract_domain(url, remove_www=True)) if len(domains): domain_website_list = domains[0].website_set.all() return render_to_response('websites/unknown.html', locals(), context_instance=RequestContext(http_request))
def assertValid(self, url): self.assertEqual(Website.objects.filter(url=url).count(), 0) domain, created = Domain.objects.get_or_create( name=extract_domain(url)) try: website = Website.objects.create(url=url, domain=domain) except IntegrityError: transaction.rollback() self.fail(u"valid URL raised IntegrityError: '%s'" % url) self.assertEqual(Website.objects.filter(url=url).count(), 1) website.delete() self.assertEqual(Website.objects.filter(url=url).count(), 0)
def submit(http_request, username, encrypted_password, url, browsers): """ Submit a new group of screenshot requests. Arguments ~~~~~~~~~ * username string (your user account on the server) * encrypted_password string (lowercase hexadecimal, length 32) * url string (request screenshots of this website) * browsers list (platform, name and version for each browser) Return value ~~~~~~~~~~~~ * id int (request group id) You can use the returned request group id to check the progress of the screenshot requests with requests.status. """ # Get user from database try: user = User.objects.get(username=username) except User.DoesNotExist: raise Fault(404, "User not found.") # Verify authentication nonces.verifyUser(http_request, user, encrypted_password) # Check priority priority = 0 if 'shotserver04.priority' in settings.INSTALLED_APPS: from shotserver04.priority import user_priority priority = user_priority(user) if priority < 1: raise Fault(402, "Priority processing is required.") # Create domain and website if needed url = normalize_url(url) domain_name = extract_domain(url, remove_www=True) domain = Domain.objects.get_or_create(name=domain_name)[0] website = Website.objects.get_or_create(domain=domain, url=url)[0] # Create request group expire = datetime.now() + timedelta(minutes=30) ip = http_request.META['REMOTE_ADDR'] request_group = RequestGroup.objects.create(website=website, user=user, ip=ip, expire=expire, priority=priority) # Create browser requests platforms = Platform.objects.all() browser_groups = BrowserGroup.objects.all() for name in browsers: parts = name.split('_') if len(parts) != 4: continue platform_name, browser_name, major, minor = parts platform_name = platform_name.replace('-', ' ') platform = find_by_name(platforms, platform_name) if platform is None: continue browser_group = find_by_name(browser_groups, browser_name) if browser_group is None: continue Request.objects.get_or_create( request_group=request_group, platform=platform, browser_group=browser_group, major=int_or_none(major), minor=int_or_none(minor), priority=priority, ) return request_group.id
def submit(http_request, username, encrypted_password, url, browsers): """ Submit a new group of screenshot requests. Arguments ~~~~~~~~~ * username string (your user account on the server) * encrypted_password string (lowercase hexadecimal, length 32) * url string (request screenshots of this website) * browsers list (platform, name and version for each browser) Return value ~~~~~~~~~~~~ * id int (request group id) You can use the returned request group id to check the progress of the screenshot requests with requests.status. """ # Get user from database try: user = User.objects.get(username=username) except User.DoesNotExist: raise Fault(404, "User not found.") # Verify authentication nonces.verifyUser(http_request, user, encrypted_password) # Check priority priority = 0 if 'shotserver04.priority' in settings.INSTALLED_APPS: from shotserver04.priority import user_priority priority = user_priority(user) if priority < 1: raise Fault(402, "Priority processing is required.") # Create domain and website if needed url = normalize_url(url) domain_name = extract_domain(url, remove_www=True) domain = Domain.objects.get_or_create(name=domain_name)[0] website = Website.objects.get_or_create(domain=domain, url=url)[0] # Create request group expire = datetime.now() + timedelta(minutes=30) ip = http_request.META['REMOTE_ADDR'] request_group = RequestGroup.objects.create( website=website, user=user, ip=ip, expire=expire, priority=priority) # Create browser requests platforms = Platform.objects.all() browser_groups = BrowserGroup.objects.all() for name in browsers: parts = name.split('_') if len(parts) != 4: continue platform_name, browser_name, major, minor = parts platform_name = platform_name.replace('-', ' ') platform = find_by_name(platforms, platform_name) if platform is None: continue browser_group = find_by_name(browser_groups, browser_name) if browser_group is None: continue Request.objects.get_or_create( request_group=request_group, platform=platform, browser_group=browser_group, major=int_or_none(major), minor=int_or_none(minor), priority=priority, ) return request_group.id