def new_site(req, podcast_slug): pod = get_podcast(req, podcast_slug) if not payment_plans.minimum( UserSettings.get_from_user(pod.owner).plan, payment_plans.FEATURE_MIN_SITES): raise Http404() try: site = Site( podcast=pod, theme=req.POST.get('theme'), cover_image_url=signer.unsign(req.POST.get('cover-url')) if req.POST.get('cover-url') else None, logo_url=signer.unsign(req.POST.get('logo-url')) if req.POST.get('logo-url') else None, analytics_id=req.POST.get('analytics_id'), itunes_url=req.POST.get('itunes_url'), stitcher_url=req.POST.get('stitcher_url'), show_itunes_banner=req.POST.get('show_itunes_banner') == 'true') site.save() except Exception as e: return redirect( reverse('podcast_dashboard', podcast_slug=podcast_slug) + '?error=true#site') else: return redirect( reverse('podcast_dashboard', podcast_slug=podcast_slug) + '#site')
def handle(self, *args, **options): csvfile = options['csvfile'] reader = csv.DictReader(csvfile) # Wrap in a transaction so if creating any site fails, the database # will automatically rollback. with transaction.atomic(): num_rows = 0 for row in reader: new_site = Site(name=row['Organization Name'], domain=row['Domain Name']) new_site.save() num_rows += 1 print('Added {} sites from {}'.format(num_rows, abspath(csvfile.name)))
def add_url(self, new_url, from_page=None, delay=4): """ This function adds potentially new page to frontier and creates new empty page entry with code "FRONTIER" :param delay: number of second to delay crawler :param new_url: full url of potentially new page (string) to be added to frontier :type new_url: str :param from_page: page that url was found on :type from_page: Page :return: value that indicates whether url was added to frontier :rtype: bool """ if Page.objects.filter(url=new_url).exists(): return False netloc = urlparse(new_url).netloc # Create new site if it doesn't exist yet try: site = Site.objects.get(domain=netloc) except Site.DoesNotExist: # Download robots and sitemap sitemap_content, _ = self.http_downloader.get_sitemap_for_url( "http://" + netloc, True) robots_content, _ = self.http_downloader.get_robots_file( "http://" + netloc, True) # Save new site site = Site(domain=netloc, sitemap_content=sitemap_content, robots_content=robots_content) site.save() page_type = PageType.objects.get(code="FRONTIER") page = Page(url=new_url, site=site, page_type_code=page_type, crawl_delay=delay) page.save() # Create link if valid from_page was given if from_page: try: link = Link(from_page=from_page, to_page=page) link.save() except ValueError: logger.error("from_page must be valid Page instance") self.queue.put(page) return True
def sites(): """ API route that takes a latitude and longitude and responds with a fully computed Site object. """ if request.method == 'GET': lat = float(request.args.get('lat')) lng = float(request.args.get('lng')) position = Position(lat, lng) # find roads within 1500 ft road_distance = request.args.get('road_distance', 457.2) # find railways within 4500 ft rail_distance = request.args.get('rail_distance', 1371.6) # find airports within 15 miles airport_distance = request.args.get('airport-distance', 14140.2) road_client = HighwaysClient() roads = road_client.get_unique_segments(position, road_distance) county = None growth_rate = .015 if roads: county = road_client.county growth_rate = road_client.county.get_growth_rate() rail_client = RailroadsClient() rails = rail_client.get_unique_segments(position, rail_distance) airports_client = AirportsClient() airports = airports_client.get_airports(position, airport_distance) if airports: for a in airports: a.set_distance(position) site = Site(position=position, roads=roads, rails=rails, county=county, growth_rate=growth_rate, airports=airports) elif request.method == 'POST': site = SiteSchema().load(request.get_json()).data site.process() response = SiteSchema().dump(site).data return json.jsonify(response)
def generate_test_data(self): sid = transaction.savepoint() try: for n in xrange(1, 21): s = Site(name='Site %s' % n) s.save() for m in xrange(100): v1 = decimal.Decimal(random.randrange(100, 100000)) / 100 v2 = decimal.Decimal(random.randrange(100, 100000)) / 100 d = SiteData(site=s, date=date.today(), dataA=v1, dataB=v2) d.save() msg = 'Successfully created site "%s"' % s.id self.stdout.write(self.style.SUCCESS(msg)) transaction.savepoint_commit(sid) except Exception as e: transaction.savepoint_rollback(sid) msg = 'Failed to complete this process: ' + str(e) self.stdout.write(self.style.ERROR(msg))
def mutate(root, info, input=None): ok = True site_instance = Site(name=input.name, urlBase=input.urlBase) site_instance.save() return CreateSite(ok=ok, site=site_instance)