def new_site(domain_name): if request.method == 'GET': top_nav = get_top_nav() domain = Domain.get(domain_name) if domain: if domain.website_status == "complete": return redirect(domain.url) else: try: domain_name = utils.sanitize_domain_name(domain_name) socket.gethostbyname_ex(domain_name) domain = Domain.objects.create(domain_name=domain_name) except: return render_template('domain/not_existing.html', **locals()) panno_mascot = '/static/img/panno_mascot/HomePage.png' return render_template('domain/new_site.html', **locals()) else: domain = Domain.get(domain_name, create=True) if domain and domain.website_status == "complete": return redirect(domain.url) response = make_response(redirect("/subscribe/%s" % domain.name)) response.set_cookie("subscription_email", request.form.get("email", "")) return response
def get(self, domain, **kwargs): queryset = Domain.objects.filter(domain_name = utils.sanitize_domain_name(domain)) paginated_queryset = self.paginate(queryset) data = [] for domain in paginated_queryset: details = { 'domain_name': domain.name, 'monitoring_status': domain.monitoring_status, 'thumbnail_url': domain.thumbnail_url } if domain.monitoring_status == 'active': details.update({ 'current_status': domain.status, 'availability': domain.availability, 'description': domain.overview, 'rankings': domain.rankings, 'registration': domain.registration, 'hosting': domain.hosting, 'twitter': domain.twitter, 'response_times': domain.response_times, 'outages_count': domain.outages_count, 'uptime_percentage': domain.uptime_percentage }) if domain.visibility_index: vi = domain.visibility_index.items() vi.sort(key=lambda s: s[0]) details['visibility_index'] = dict(vi[-3:]) else: #details['visibility_index'] = {} # generate a random visibility index for the past 30 days v_index = {} mtm = 1 while mtm < 4: v_index[(date.today()+relativedelta(months=-mtm)).strftime("%Y-%m")] = random.randint(1,100) mtm += 1 details['visibility_index'] = v_index data.append(details) return {"objects": data, "meta": self.get_meta(queryset, status='search/match')}
def domain_details(domain_name): domain_name = utils.sanitize_domain_name(domain_name) top_nav = get_top_nav() panno_mascot = '/static/img/panno_mascot/Trends.png' try: domain = Domain.objects(domain_name=domain_name)[0] except: return redirect('/new_site/%s' % domain_name) user = session.get('auth_user', None) subscribed = user and user.is_subscribed(domain) if request.method == 'POST': action = request.form.get("action", None) if action == "subscribe": response = make_response(redirect("/subscribe/%s" % domain_name)) response.set_cookie("subscription_email", request.form.get("email", "")) return response elif action == "cant_monitor": if not validate_captcha(): panno_mascot = '/static/img/panno_mascot/CantMonitor.png' captcha = get_captcha() num_of_sites = WebsiteStatistics.total_active_sites() errors = ["The verification code was invalid."] return render_template('domain/cant_monitor.html', **locals()) else: send_mail( '*****@*****.**', "Request for Monitoring for %s" % domain_name, render_template("email/notify_admin.html", config = config, domain = domain ) ) return redirect('/') if domain.monitoring_status == 'optout': panno_mascot = '/static/img/panno_mascot/CantMonitor.png' captcha = get_captcha() num_of_sites = WebsiteStatistics.total_active_sites() errors = [] return render_template('domain/cant_monitor.html', **locals()) elif domain.metadata_status != 'complete': return render_template('domain/coming_soon.html', **locals()) yesterday = (datetime.today() + timedelta(days=-1)).strftime("%A - %B %d, %Y") yesterday_downtime = int(domain.uptime_downtime_availability_in_past_day[0]/60.0) yesterday_availability = domain.availability_str_in_past_day yesterday_num_outages = domain.num_outages_in_past_day last_month = (datetime.now() - relativedelta(months=1)).strftime("%B %Y") last_month_downtime = int(domain.uptime_downtime_availability_in_past_month[0]/60.0) last_month_availability = domain.availability_str_in_past_month last_month_num_outages = domain.num_outages_in_past_month visibility_index = [domain.vi_in_current_month, domain.vi_in_past_month, domain.vi_in_past_two_month] visibility_index_colors = [] for (vi, month) in visibility_index: if vi <= 33: visibility_index_colors.append('index-color-low') elif vi <= 66: visibility_index_colors.append('index-color-medium') else: visibility_index_colors.append('index-color-high') outage_highchart, tick_interval, show_last_label = domain.outage_highchart loadtime_highchart, tick_interval, show_last_label = domain.loadtime_highchart categories, (num_outages, uptime_percent) = outage_highchart thumbnail_url = domain.get_thumbnail_url(confirm=False) response_time_chart_data = loadtime_highchart outages_chart_data = { 'categories': categories, 'num_outages': num_outages, 'uptime_percent': uptime_percent } tweet_count = 5 tweets = [] if domain.twitter: for twitter in domain.twitter: try: tweet = twitter_api.userTweet(twitter, tweet_count) if tweet: tweets.append(tweet) except: continue else: try: tweet = twitter_api.searchTweet("@%s" % domain_name, tweet_count) if tweet: tweets.append(tweet) except: pass tweets = json.dumps(tweets) return render_template('domain/details.html', **locals())
def search_domain(): domain_name = request.args.get('domain_name', '') domain_name = utils.sanitize_domain_name(domain_name) return redirect('/%s' % domain_name)