Exemple #1
0
def home(request):
    selected_coin = 'usd'
    if 'selected_coin' in request.session:
        selected_coin = request.session['selected_coin']

    # Reads from the database all companies, their revenue from 2017 and their CEOs
    query = """
    PREFIX pred: <http://wikicompany.pt/pred/>
    SELECT ?companyName ?value ?ceoName ?company ?ceo ?symbol
    WHERE {
        ?company 	pred:revenue	?revnode.
        ?company    pred:symbol     ?symbol.
        ?revnode 	pred:revenueValues	?revSubNode.
        ?revSubNode pred:Year		"2017";
                    pred:Value 		?value.
        ?company	pred:ceo		?ceo.
        OPTIONAL{
        ?ceo        pred:name       ?ceoName.}
        ?company 	pred:name		?companyName.
    }
    """
    res = queryDB(query)
    res = sorted(res, key=lambda x: int(x['value']))
    res = forexValuesExchange(res, "value", selected_coin)
    context = {'lowRevenue': res[:4], 'highRevenue': res[-4:]}
    return render(request, 'pages/home.html', context)
Exemple #2
0
def companiesInfo(request, symbol):
    selected_coin = 'usd'
    if 'selected_coin' in request.session:
        selected_coin = request.session['selected_coin']

    query = """
            PREFIX pred: <http://wikicompany.pt/pred/>
            SELECT ?companyCeo ?companyName ?companySymbol ?companyIndustry ?companyWebsite ?companyWikiRef ?companyFounder ?companyFoundingYear ?companyCountry ?companyDescription ?companyLogo ?ceoName ?revenue ?revenueYear ?revenueValue 
            WHERE {{
                ?company a "company".
                ?company pred:symbol '{s}'.
                ?company pred:name ?companyName.
                ?company pred:industry ?companyIndustry.
                ?company pred:symbol ?companySymbol.
                ?company pred:website ?companyWebsite.
                ?company pred:wikidataRef ?companyWikiRef.
                ?company pred:foundedBy ?companyFounder.
                ?company pred:foundingYear ?companyFoundingYear.
                ?company pred:country ?companyCountry.
                ?company pred:description ?companyDescription.
                ?company pred:logo ?companyLogo.
                ?company pred:ceo ?companyCeo.
                OPTIONAL{{?companyCeo pred:name ?ceoName.}}


            }}
                """.format(s=symbol)

    company = queryDB(query)

    query = """
                PREFIX pred: <http://wikicompany.pt/pred/>
                SELECT ?revenueYear ?revenueValue 
                WHERE {{
                    ?company a "company".
                    ?company pred:symbol '{s}'.
    
                    ?company pred:revenue ?rev.
                    ?rev pred:revenueValues ?revenueValues.
                    ?revenueValues pred:Year ?revenueYear.
                    ?revenueValues pred:Value ?revenueValue.
                    
                }}
                    """.format(s=symbol)

    revenues = queryDB(query)
    if not revenues:
        redirect("/companies/")
    revenues = sorted(revenues, key=lambda x: x['revenueYear'])
    revenues = forexValuesExchange(revenues,
                                   'revenueValue',
                                   selected_coin,
                                   addSymbol=False)
    #print(company[0])

    context = {'company': company[0], 'revenues': revenues}

    return render(request, 'pages/companiesInfo.html', context)
Exemple #3
0
def valuesHome(request):
    selected_coin = 'usd'
    if 'selected_coin' in request.session:
        selected_coin = request.session['selected_coin']
    queryArgs = ""
    if request.method == "POST":
        # Add sucessive user filter options to query
        if request.POST['searchQuery']:
            queryArgs = queryArgs + "\n filter (contains(lcase(?companyName),lcase(\"{arg}\")) ||  contains(lcase(?companySymbol),lcase(\"{arg}\"))).".format(
                arg=request.POST['searchQuery'])
        if request.POST['searchIndustry']:
            queryArgs = queryArgs + "\n ?company pred:industry ?companyIndustry.\nfilter contains(lcase(?companyIndustry),lcase(\"{}\")).".format(
                request.POST['searchIndustry'].lower().replace(
                    " industry", ""))
        if request.POST['searchCEO']:
            queryArgs = queryArgs + "\n ?company pred:ceo ?ceo.\n optional{{?ceo a \"ceo\".\n?ceo pred:name ?ceoName.}} \nfilter( contains(lcase(?ceoName),lcase(\"{arg}\")) || contains(lcase(?ceo),lcase(\"{arg}\")) ).".format(
                arg=request.POST['searchCEO'])
        if request.POST['searchFounder']:
            queryArgs = queryArgs + "\n ?company pred:foundedBy ?founder.\nfilter contains(lcase(?founder),lcase(\"{}\")).".format(
                request.POST['searchFounder'])
        if request.POST['searchFoundYear']:
            queryArgs = queryArgs + "\n ?company pred:foundingYear ?foundingYear.\nfilter (?foundingYear = \"{}\").".format(
                request.POST['searchFoundYear'])
        if request.POST['searchCountry']:
            queryArgs = queryArgs + "\n ?company pred:country ?country.\nfilter contains(lcase(?country),lcase(\"{}\")).".format(
                request.POST['searchCountry'])

    query = """
        PREFIX pred: <http://wikicompany.pt/pred/>
        SELECT ?companyName ?revenueYear ?revenueValue
        WHERE {{
            ?company a "company".
            ?company pred:name ?companyName.
            ?company pred:symbol ?companySymbol.
            {}
            ?company pred:revenue ?rev.
            ?rev pred:revenueValues ?revenue.
            ?revenue pred:Year ?revenueYear.
            ?revenue pred:Value ?revenueValue.
        }}
        """.format(queryArgs)
    values = queryDB(query)
    values = forexValuesExchange(values,
                                 'revenueValue',
                                 selected_coin,
                                 addSymbol=False)
    values, years = transformDataToChart(values)
    #print(years)
    context = {'values': values, 'years': years}
    return render(request, 'pages/valuesFilter.html', context)
Exemple #4
0
def seefull(request, type):
    if request.user.is_authenticated:
        selected_coin = 'usd'
        if 'selected_coin' in request.session:
            selected_coin = request.session['selected_coin']

        # Get user name
        query = """
                        PREFIX pred: <http://wikicompany.pt/pred/> 
                        SELECT ?userName 
                        WHERE {{
                            ?user a "user".
                            ?user pred:idUser "{}".
                            ?user pred:name ?userName.
                        }}
                        """.format(request.user.id)

        user = queryDB(query)

        if type == "companies":

            # Get user fav companies
            query = """
                    PREFIX pred: <http://wikicompany.pt/pred/>
                    SELECT distinct ?companyName ?companySymbol ?revenueValue  ?company
                    WHERE {{
                            ?user a "user".
                            ?user pred:idUser "{}".
                            ?user pred:favCompany ?company.
                            ?company pred:name ?companyName.
                            ?company pred:symbol ?companySymbol.
                            ?company pred:revenue ?rev.
                            optional{{
                                ?rev pred:revenueValues ?revenueValues.
                                ?revenueValues pred:Year '2017'.
                                ?revenueValues pred:Value ?revenueValue.
                            }}
                        }}
                    """.format(request.user.id)

            items = queryDB(query)

            # apply metric prefix to rev values
            items = forexValuesExchange(items, 'revenueValue', selected_coin)

            # Get companies suggestion
            query = """
                            PREFIX pred: <http://wikicompany.pt/pred/>
                            PREFIX user: <http://wikicompany.pt/user/>
                            select ?companyName ?companySymbol  ?company
                            where{{
                                ?company a "company".
                                ?company pred:name ?companyName.
                                ?company pred:symbol ?companySymbol.
                                ?company pred:ceo ?ceo.
                                ?user pred:idUser "{}".
                                ?user pred:favCeo ?ceo.
                                ?ceo a "ceo".
                                minus{{
                                ?user pred:favCompany ?company.
                                }}
                            }}
                                    """.format(request.user.id)

            suggestions = queryDB(query)

        else:
            # Get user fav CEOs
            query = """
                    PREFIX pred: <http://wikicompany.pt/pred/>
                    SELECT ?ceoName ?ceoWorth  ?ceoBirth ?ceo
                    WHERE {{
                            ?user a "user".
                            ?user pred:idUser "{}".
                            ?user pred:favCeo ?ceo.
                            ?ceo  pred:name ?ceoName.
                            ?ceo  pred:worth ?ceoWorth.
                            ?ceo  pred:birth ?ceoBirth
                    }}
                    """.format(request.user.id)

            items = queryDB(query)

            # apply metric prefix to ceos worth
            number = True
            for ceo in items:

                try:
                    if ceo['ceoWorth'] == 'Unknown':
                        number = False

                except:
                    continue

                if number:
                    ceo = forexValuesExchange([ceo], 'ceoWorth', selected_coin)

                number = True

            # Get CEOs suggestion
            query = """
                    PREFIX pred: <http://wikicompany.pt/pred/>
                    PREFIX user: <http://wikicompany.pt/user/>
                    select ?ceoName ?ceoWorth ?ceo
                    where{{
                        ?user pred:idUser "{}".
                        ?user pred:favCompany ?company.
                        ?company a "company".
                        ?company pred:ceo ?ceo.
                        ?ceo a "ceo".
                        ?ceo pred:name ?ceoName.
                        ?ceo pred:worth ?ceoWorth.
                        minus{{
                            ?user pred:favCeo ?ceo.
                        }}
                    }}
                        """.format(request.user.id)

            suggestions = queryDB(query)
            # apply metric prefix to ceos worth
            number = True
            for ceo in suggestions:

                try:
                    if ceo['ceoWorth'] == 'Unknown':
                        number = False

                except:
                    continue

                if number:
                    ceo = forexValuesExchange([ceo], 'ceoWorth', selected_coin)

                number = True

        context = {
            'user': user[0],
            'type': type,
            'items': items,
            'suggestions': suggestions
        }

        return render(request, 'pages/seefull.html', context)
    else:
        return redirect('/accounts/login')
Exemple #5
0
def ceosinfo(request, name):
    selected_coin = 'usd'
    if 'selected_coin' in request.session:
        selected_coin = request.session['selected_coin']

    query = """
                PREFIX pred: <http://wikicompany.pt/pred/>
                SELECT ?ceoName ?ceoPhoto ?ceoSex ?ceoBirth ?ceoWorth ?ceoDescription ?ceoNationality ?companyName ?companySymbol ?ceoWiki ?ceo
                WHERE {{
                        {{
                                ?ceo a "ceo".
                                ?ceo pred:name '{x}'.
                                ?ceo pred:name ?ceoName.
                                ?ceo pred:photo ?ceoPhoto.
                                ?ceo pred:sex ?ceoSex.
                                ?ceo pred:birth ?ceoBirth.
                                ?ceo pred:worth ?ceoWorth.
                                ?ceo pred:description ?ceoDescription.
                                ?ceo pred:wikidataRef ?ceoWiki.
                
                            }}
                        UNION
                        {{
                				?ceo a "ceo".
                                ?ceo pred:name '{x}'.
                                 ?ceo pred:nationality ?ceoNationality.
                            }}
                        UNION{{
                				?ceo a "ceo".
                                ?ceo pred:name '{x}'.
                                ?company a "company".
                                ?company pred:name ?companyName.
                                ?company pred:symbol ?companySymbol.
                                ?company pred:ceo ?ceo
                                
                            }}
                    }}
                    """.format(x=name)

    ceo = queryDB(query)
    if not ceo:
        redirect("/ceos/")
    number = True
    for itm in ceo:
        try:
            if itm['ceoWorth'] == 'Unknown':
                number = False

        except:
            continue

    if number:
        ceo = forexValuesExchange(ceo, 'ceoWorth', selected_coin)

    nationalities = []
    companies = []

    for itm in ceo[1:]:
        try:
            if itm['ceoNationality']:
                nationalities.append(itm)
        except:
            try:
                if itm['companySymbol']:
                    companies.append(itm)
            except:
                continue

    context = {
        'ceo': ceo[0],
        'nationalities': nationalities,
        'companies': companies
    }

    return render(request, 'pages/ceosinfo.html', context)