Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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')}
Ejemplo n.º 3
0
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())
Ejemplo n.º 4
0
def search_domain():

    domain_name = request.args.get('domain_name', '')
    domain_name = utils.sanitize_domain_name(domain_name)

    return redirect('/%s' % domain_name)