예제 #1
0
def scraper_delete_scraper(request, wiki_type, short_name):
    from frontend.utilities.messages import send_message

    scraper, resp = getscraperorresponse(request, wiki_type, short_name, None,
                                         "delete_scraper")
    if resp: return resp

    scraper.previous_privacy = scraper.privacy_status
    scraper.privacy_status = "deleted"
    scraper.save()

    send_message(
        request, {
            "message":
            "Your %s has been deleted" % wiki_type,
            "level":
            "warning",
            "actions": [(
                "Undo?",
                reverse('scraper_undelete_scraper',
                        args=[wiki_type, short_name]),
                False,
            )]
        })

    return HttpResponseRedirect(
        reverse('profile', kwargs=dict(username=request.user.username)))
예제 #2
0
def scraper_delete_data(request, short_name):
    from frontend.utilities.messages import send_message

    scraper, resp = getscraperorresponse(request, "scraper", short_name, None,
                                         "delete_data")
    if resp: return resp

    try:
        dataproxy = DataStore(scraper.short_name)
        dataproxy.request({"maincommand": "clear_datastore"})
        scraper.scraper.update_meta()
        scraper.save()
        dataproxy.close()
    except:
        pass

    send_message(
        request, {
            "message":
            "Your data has been deleted",
            "level":
            "warning",
            "actions": [(
                "Undo?",
                reverse('scraper_undo_delete_data', args=[short_name]),
                False,
            )]
        })

    return HttpResponseRedirect(
        reverse('code_overview', args=[scraper.wiki_type, short_name]))
예제 #3
0
def scraper_delete_data(request, short_name):
    from frontend.utilities.messages import send_message

    scraper,resp = getscraperorresponse(request, "scraper", short_name, None, "delete_data")
    if resp: return resp

    try:
        dataproxy = DataStore(scraper.short_name)
        dataproxy.request({"maincommand":"clear_datastore"})
        scraper.scraper.update_meta()
        scraper.save()
        dataproxy.close()
    except:
        pass

    send_message( request, {
        "message": "Your data has been deleted",
        "level"  : "warning",
        "actions":
            [
                ("Undo?", reverse('scraper_undo_delete_data', args=[short_name]), False,)
            ]
    } )

    return HttpResponseRedirect(reverse('code_overview', args=[scraper.wiki_type, short_name]))
예제 #4
0
def scraper_undelete_scraper(request, wiki_type, short_name):
    from frontend.utilities.messages import send_message
    from codewiki.models import Code

    scraper = get_object_or_404(Code, short_name=short_name)
    if scraper.privacy_status == "deleted" and scraper.owner() == request.user:
        scraper.privacy_status = scraper.previous_privacy
        scraper.save()

        send_message( request, {
            "message": "Your %s has been recovered" % wiki_type,
            "level"  : "info",
         } )

    return HttpResponseRedirect(reverse('code_overview', args=[wiki_type, short_name]))
예제 #5
0
def scraper_undelete_scraper(request, wiki_type, short_name):
    from frontend.utilities.messages import send_message
    from codewiki.models import Code

    scraper = get_object_or_404(Code, short_name=short_name)
    if scraper.privacy_status == "deleted" and scraper.owner() == request.user:
        scraper.privacy_status = scraper.vault and 'private' or scraper.previous_privacy
        scraper.save()

        send_message(request, {
            "message": "Your %s has been recovered" % wiki_type,
            "level": "info",
        })

    return HttpResponseRedirect(
        reverse('code_overview', args=[wiki_type, short_name]))
예제 #6
0
def scraper_delete_scraper(request, wiki_type, short_name):
    from frontend.utilities.messages import send_message            
    
    scraper,resp = getscraperorresponse(request, wiki_type, short_name, None, "delete_scraper")
    if resp: return resp
    
    scraper.previous_privacy = scraper.privacy_status
    scraper.privacy_status = "deleted"
    scraper.save()
    
    send_message( request, {
        "message": "Your %s has been deleted" % wiki_type,
        "level"  : "warning",
        "actions": 
            [ 
                ("Undo?", reverse('scraper_undelete_scraper', args=[wiki_type, short_name]), False,)
            ]
     } )

    return HttpResponseRedirect(reverse('dashboard'))
예제 #7
0
def code_overview(request, wiki_type, short_name):
    from codewiki.models import ScraperRunEvent, DomainScrape
    
    scraper,resp = getscraperorresponse(request, wiki_type, short_name, "code_overview", "overview")
    if resp: return resp
    
    alert_test = request.GET.get('alert', '')
    if alert_test:
        from frontend.utilities.messages import send_message        
        if alert_test == '1':
            actions = [
                ("Secondary", reverse('code_overview', args=[wiki_type, short_name]), True,),
                ("Primary", reverse('code_overview', args=[wiki_type, short_name]), False,),            
            ]
            level = 'info'
        elif alert_test == '2':
            actions =  [ 
                ("Secondary", reverse('code_overview', args=[wiki_type, short_name]), True,),
                ("Primary", reverse('code_overview', args=[wiki_type, short_name]), False,),                
            ]
            level = 'warning'
        elif alert_test == '3':
            actions =  [ 
                ("Secondary", reverse('code_overview', args=[wiki_type, short_name]), True,),
                ("Primary", reverse('code_overview', args=[wiki_type, short_name]), False,),                
            ]
            level = 'error'
        else:
            actions = []
            
        send_message( request,{
            "message": "This is an example " + level + " alert",
            "level"  :  level,
            "actions":  actions,
        })        
    
    context = {'selected_tab':'overview', 'scraper':scraper }
    context["scraper_tags"] = scraper.gettags()
    context["userrolemap"] = scraper.userrolemap()

    context["schedule_options"] = list(models.SCHEDULE_OPTIONS)
    
    # if {% if a in b %} worked we wouldn't need these two
    context["user_owns_it"] = (request.user in context["userrolemap"]["owner"])
    if request.user.is_anonymous():
        context['user_edits_it'] = False
    elif scraper.privacy_status == 'public' and request.user.is_authenticated():
        context["user_edits_it"] = True;
    else:
        context["user_edits_it"] = (request.user in context["userrolemap"]["owner"]) or (request.user in context["userrolemap"]["editor"])


    context['user_can_set_hourly'] = False
    context['self_service_vaults'] = False
    if request.user.is_authenticated():
        context['user_plan'] = request.user.get_profile().plan
        if context['user_plan'] == 'business' or context['user_plan'] == 'corporate':
            context['user_can_set_hourly'] = True
        if request.user.get_profile().has_feature('Self Service Vaults'):
            context['self_service_vaults'] = True
        else:
            del(context["schedule_options"][4])
    else:
        context['user_plan'] = None
        del(context["schedule_options"][4])


    context["PRIVACY_STATUSES"] = PRIVACY_STATUSES_UI[0:2]  
    if request.user.is_staff:
        context["PRIVACY_STATUSES"] = PRIVACY_STATUSES_UI[0:3]  
    context["privacy_status_name"] = dict(PRIVACY_STATUSES_UI).get(scraper.privacy_status)

    context["api_base"] = "%s/api/1.0/" % settings.API_URL
            
    # view tpe
    if wiki_type == 'view':
        context["related_scrapers"] = scraper.relations.filter(wiki_type='scraper')
        if scraper.language == 'html':
            code = scraper.saved_code()
            if re.match('<div\s+class="inline">', code):
                context["htmlcode"] = code
        return render_to_response('codewiki/view_overview.html', context, context_instance=RequestContext(request))

    #
    # (else) scraper type section
    #
    assert wiki_type == 'scraper'

    context["related_views"] = models.View.objects.filter(relations=scraper).exclude(privacy_status="deleted")

    try:
        beta_user = request.user.get_profile().beta_user
    except frontend.models.UserProfile.DoesNotExist:
        beta_user = False
    except AttributeError:  # happens with AnonymousUser which has no get_profile function!
        beta_user = False

    context['forked_to'] = models.Scraper.objects.filter(forked_from=scraper).exclude(privacy_status='deleted').exclude(privacy_status='private').order_by('-created_at')[:5]
    context['forked_to_total'] = models.Scraper.objects.filter(forked_from=scraper).exclude(privacy_status='deleted').exclude(privacy_status='private').count()

    context['forked_to_remainder'] = int(models.Scraper.objects.filter(forked_from=scraper).exclude(privacy_status='deleted').exclude(privacy_status='private').count()) - 5;    

    #if dataproxy:
    #    dataproxy.close()

    try:
        event = ScraperRunEvent.objects.filter(scraper=scraper).order_by('-last_run')[0]
        context['domain_scrapes'] = DomainScrape.objects.filter(scraper_run_event=event).all()
    except:
        context['domain_scrapes'] = []

    context["itemlog"] = populate_itemlog(scraper, run_count=10)
            
    context['url_screenshot'] = None
    try:
        s = scraper.scraperrunevent_set.filter(first_url_scraped__isnull=False).order_by('run_started')[0]
        context['url_screenshot'] = s.first_url_scraped
    except:
        pass
            
    return render_to_response('codewiki/scraper_overview.html', context, context_instance=RequestContext(request))