예제 #1
0
def adminDeleteCoin(request):
    if request.user.is_superuser:
        message = ""
        success = ""
        image = ""
        symbol = ""
        if request.method == 'POST':
            coin = request.POST['code']
            symbol = coinSymbol(coin)
            if coin.lower() == "usd":
                image = "https://media.giphy.com/media/xUPGcl3ijl0vAEyIDK/giphy.gif"
            elif symbol:
                query = """
                   PREFIX pred: <http://wikicompany.pt/pred/>
                   PREFIX coin: <http://wikicompany.pt/coin/>
                   DELETE {{
                       coin:{code} ?s ?o.
                   }}
                   WHERE {{
                       coin:{code} ?s ?o.
                   }}
                   """.format(code=coin.lower())
                success = "Coin Deleted"
                queryDB(query, simplify=False, update=True)
            else:
                message = "Coin not in DB currently"
        context = {
            'coinSymbol': symbol,
            'message': message,
            'success': success,
            'image': image
        }
        return render(request, 'pages/admin/deleteCoin.html', context)
    return redirect("/")
예제 #2
0
def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            name = form.cleaned_data.get('name')
            user = authenticate(username=username, password=raw_password)
            # Add user to DB
            query = """
            PREFIX pred: <http://wikicompany.pt/pred/>
            PREFIX user: <http://wikicompany.pt/user/>
            INSERT DATA {{
                user:{id} a "user".
                user:{id} pred:idUser "{id}".
                user:{id} pred:name "{name}".
            }}
            """.format(id=user.id, name=name)
            queryDB(query, update=True, simplify=False)
            login(request, user)
            return redirect('/profile')
    else:
        form = RegisterForm()
    context = {'form': form}
    return render(request, 'registration/register.html', context)
예제 #3
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)
예제 #4
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)
예제 #5
0
def adminDeleteCompany(request):
    if request.user.is_superuser:
        companySymbol = ""
        companyName = ""
        message = ""
        success = False
        foundCompany = False
        if request.method == 'POST':
            # Delete company
            query = """
            PREFIX pred: <http://wikicompany.pt/pred/>
            PREFIX company: <http://wikicompany.pt/companies/>
            DELETE {{
                ?user pred:favCompany ?company.
            }}
            WHERE {{
                ?company a "company".
                ?company pred:symbol "{code}".
                ?user pred:favCompany ?company.
            }};
            DELETE {{
                ?company ?a ?b.
            }}
            WHERE {{
                ?company a "company".
                ?company pred:symbol "{code}".
                ?company ?a ?b.
            }};
            """.format(code=request.POST['companySymbol'].upper())
            queryDB(query, simplify=False, update=True)
            message = "Company Deleted"
        elif 'companySymbol' in request.GET:
            # Get Data from Wikidata and set default Values
            fields = getCompanyFromDB(request.GET['companySymbol'])
            if fields:
                companySymbol = request.GET['companySymbol']
                companyName = fields['name']
        context = {
            'companySymbol': companySymbol,
            'companyName': companyName,
            'message': message,
            'success': success,
        }
        return render(request, 'pages/admin/deleteCompany.html', context)
    return redirect("/")
예제 #6
0
def companies(request):
    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'])
    defaultValues = {}
    collapseDropdown = False
    if request.method == "GET":
        if 'industry' in request.GET:
            defaultValues['industry'] = request.GET['industry']
            collapseDropdown = True
        if 'founder' in request.GET:
            defaultValues['founder'] = request.GET['founder']
            collapseDropdown = True
        if 'foundingYear' in request.GET:
            defaultValues['foundingYear'] = request.GET['foundingYear']
            collapseDropdown = True
        if 'country' in request.GET:
            defaultValues['country'] = request.GET['country']
            collapseDropdown = True
    query = """
    PREFIX pred: <http://wikicompany.pt/pred/>
    SELECT ?company ?companyName ?companySymbol ?companyIndustry
    WHERE {{
        ?company a "company".
        ?company pred:name ?companyName.
        ?company pred:symbol ?companySymbol.
        ?company pred:industry ?companyIndustry.
        {}
    }}
    """.format(queryArgs)
    companies = queryDB(query)
    print(query)
    context = {
        'companies': companies,
        'defaultValues': defaultValues,
        'collapseDropdown': collapseDropdown
    }
    return render(request, 'pages/companies.html', context)
예제 #7
0
def adminAddCoin(request):
    if request.user.is_superuser:
        message = ""
        success = ""
        coinSymbol = ""
        if request.method == 'POST':
            coin = request.POST['code']
            if coinExists(coin):
                # Get symbol from Wikidata
                query= """
                SELECT ?symbol
                WHERE {{
                  ?coin wdt:P498 "{}".
                  ?coin wdt:P5061 ?symbol.
                  SERVICE wikibase:label {{ bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }}
                }}
                """.format(coin.upper())
                res = queryWikidata(query)
                if not res:
                    message = "Couldn't find symbol on wikidata"
                coinSymbol = res[0]['symbol']
                query ="""
                PREFIX pred: <http://wikicompany.pt/pred/>
                PREFIX coin: <http://wikicompany.pt/coin/>
                INSERT DATA{{
                    coin:{code} pred:coinCode "{code}".
                    coin:{code} pred:coinSymbol "{symbol}".
                    coin:{code} a "coin".
                }}
                """.format(code=coin.lower(), symbol=coinSymbol)
                success = "Coin added"
                queryDB(query, simplify=False, update=True)
            else:
                message = "Coin not supported :("
        context = {
            'coinSymbol': coinSymbol,
            'message': message,
            'success': success
        }
        return render(request, 'pages/admin/addCoin.html', context)
    return redirect("/")
예제 #8
0
def unfavoriteCeo(request, name):
    if request.user.is_authenticated:
        referer = '/profile'
        if 'last' in request.GET:
            referer = request.GET['last']
        query = """
        PREFIX pred: <http://wikicompany.pt/pred/>
        PREFIX user: <http://wikicompany.pt/user/>
        DELETE {{
            ?user pred:favCeo ?ceo.
        }}
        WHERE {{
            ?user pred:idUser "{id}".
            ?ceo a "ceo".
            ?ceo pred:name "{name}".
        }}
        """.format(id=request.user.id, name=name)
        queryDB(query, simplify=False, update=True)
        return redirect(referer)
    else:
        return redirect('/accounts/login')
예제 #9
0
def favoriteCompany(request, code):
    if request.user.is_authenticated:
        referer = '/profile'
        if 'last' in request.GET:
            referer = request.GET['last']
        query = """
        PREFIX pred: <http://wikicompany.pt/pred/>
        PREFIX user: <http://wikicompany.pt/user/>
        INSERT {{
            ?user pred:favCompany ?company.
        }}
        WHERE {{
            ?user pred:idUser "{id}".
            ?company a "company".
            ?company pred:symbol "{symbol}".
        }}
        """.format(id=request.user.id, symbol=code.upper())
        queryDB(query, simplify=False, update=True)
        return redirect(referer)
    else:
        return redirect('/accounts/login')
예제 #10
0
def isFavouriteCEO(userID, name):
    query="""
    PREFIX pred: <http://wikicompany.pt/pred/>
    PREFIX user: <http://wikicompany.pt/user/>
    ASK {{
        ?user pred:favCeo ?ceo.
        ?ceo a "ceo".
        ?user pred:idUser "{}".
        ?ceo pred:name "{}".
    }}
    """.format(userID, name)
    res = queryDB(query, simplify=False)
    return checkAskQuery(res)
예제 #11
0
def isFavouriteCompany(userID, code):
    query="""
    PREFIX pred: <http://wikicompany.pt/pred/>
    PREFIX user: <http://wikicompany.pt/user/>
    ASK {{
        ?user pred:favCompany ?company.
        ?company a "company".
        ?user pred:idUser "{}".
        ?company pred:symbol "{}".
    }}
    """.format(userID, code.upper())
    res = queryDB(query, simplify=False)
    return checkAskQuery(res)
예제 #12
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)
예제 #13
0
def ceos(request):
    queryArgs = ""
    if request.method == "POST":
        # Add sucessive user filter options to query
        if request.POST['searchQuery']:
            queryArgs = queryArgs + "\n filter (contains(lcase(?ceoName),lcase(\"{arg}\"))).".format(
                arg=request.POST['searchQuery'])
        if request.POST['searchSex']:
            queryArgs = queryArgs + "\n ?ceo pred:sex ?ceoSex.\nfilter contains(lcase(?ceoSex),lcase(\"{}\")).".format(
                request.POST['searchSex'])
        if request.POST['searchCountry']:
            queryArgs = queryArgs + "\n ?ceo pred:nationality ?ceoNacionality.\nfilter contains(lcase(?ceoNacionality),lcase(\"{}\")).".format(
                request.POST['searchCountry'])

    defaultValues = {}
    collapseDropdown = False
    if request.method == "GET":
        if 'sex' in request.GET:
            defaultValues['sex'] = request.GET['sex']
            collapseDropdown = True
        if 'nationality' in request.GET:
            defaultValues['nationality'] = request.GET['nationality']
            collapseDropdown = True

    query = """
        PREFIX pred: <http://wikicompany.pt/pred/>
        SELECT ?ceo ?ceoName ?ceoSex ?ceoBirth
        WHERE {{
            ?ceo a "ceo".
            ?ceo pred:name  ?ceoName.
            ?ceo pred:sex   ?ceoSex.
            ?ceo pred:birth ?ceoBirth.
            {}
        }}
        """.format(queryArgs)
    ceos = queryDB(query)
    context = {
        'ceos': ceos,
        'defaultValues': defaultValues,
        'collapseDropdown': collapseDropdown
    }

    return render(request, 'pages/ceos.html', context)
예제 #14
0
def adminAddCompany(request):
    if request.user.is_superuser:
        defaultValues = {}
        message = ""
        companySearchMessage = ""
        success = False
        showForm = False
        if request.method == 'POST':
            # Get items from request
            valuesToAdd = dict(request.POST)
            valuesToAdd.pop('csrfmiddlewaretoken')
            valuesToAdd.pop('action')
            # Get items out of lists
            for key in valuesToAdd:
                valuesToAdd[key] = valuesToAdd[key][0]
            # Deal with revenues
            revenueQuery = transformRevenue(valuesToAdd['companyRevenues'])
            if revenueQuery is None:
                message = "Revenue Values are incorrectly formatted"
            else: # If revenue is correctly formatted
                # Fill blank values
                for key in valuesToAdd:
                    if valuesToAdd[key] == "":
                        valuesToAdd[key] = "Unknown"
                # Check if CEO is in DB
                query = """
                PREFIX pred: <http://wikicompany.pt/pred/>
                PREFIX user: <http://wikicompany.pt/user/>
                SELECT ?ceo 
                WHERE {{
                    ?ceo a "ceo".
                    ?ceo pred:name "{}".
                }}
                """.format(valuesToAdd['companyCeo'])
                res = queryDB(query)
                if res:
                    ceo = '<' + res[0]['ceo'] + ">"
                else:
                    ceo = "\"" + valuesToAdd['companyCeo'] + "\""
                # Add company to DB
                query = """
                    PREFIX pred: <http://wikicompany.pt/pred/>
                    PREFIX company: <http://wikicompany.pt/companies/>
                    DELETE {{
                        company:{symbol} ?a ?b
                    }}
                    WHERE {{
                        company:{symbol} ?a ?b
                    }};
                    INSERT DATA{{
                        company:{symbol} pred:name "{name}".
                        company:{symbol} pred:symbol "{symbolUpper}".
                        company:{symbol} pred:website "{website}".
                        company:{symbol} pred:wikidataRef "{wikidataRef}".
                        company:{symbol} pred:revenue  [{revenue}].
                        company:{symbol} pred:industry "{industry}".
                        company:{symbol} pred:ceo {ceo}.
                        company:{symbol} pred:foundedBy "{founder}".
                        company:{symbol} pred:foundingYear "{fYear}".
                        company:{symbol} pred:country "{country}".
                        company:{symbol} pred:description "{description}".
                        company:{symbol} pred:logo "{logo}".
                        company:{symbol} a "company".
                    }}
                """.format(symbol=valuesToAdd['companySymbol'].lower(), name=valuesToAdd['companyName'], symbolUpper=valuesToAdd['companySymbol'].upper()
                           , website=valuesToAdd['companyWebsite'], wikidataRef=valuesToAdd['companyWikidataRef'], revenue=revenueQuery,
                           industry=valuesToAdd['companyIndustry'], ceo=ceo, founder=valuesToAdd['companyFounder'], fYear=valuesToAdd['companyFoundingYear']
                           , country=valuesToAdd['companyCountry'], description=valuesToAdd['companyDescription'], logo=valuesToAdd['companyLogo'])
                queryDB(query, update=True, simplify=False)
                success = True
        if 'companySymbol' in request.GET:
            # Get Data from Wikidata and set default Values
            defaultValues['symbol'] = request.GET['companySymbol']
            if getCompanyFromDB(request.GET['companySymbol']):
                companySearchMessage = "Company Already exists"
            else:
                fields = getWikidataCompany(request.GET['companySymbol'])
                showForm = True
                if fields:
                    defaultValues = {**defaultValues, **fields}
                else:
                    companySearchMessage = "Company not found in Wikidata"
        context = {
            'defaultValues': defaultValues,
            'companySearchMessage': companySearchMessage,
            'showForm': showForm,
            'message': message,
            'success': success
        }
        return render(request, 'pages/admin/addCompany.html', context)
    return redirect("/")
예제 #15
0
def adminEditCEO(request):
    if request.user.is_superuser:
        defaultValues = {}
        message = ""
        searchMessage = ""
        success = False
        showForm = False
        if request.method == 'POST':
            # Get items from request
            valuesToAdd = dict(request.POST)
            valuesToAdd.pop('csrfmiddlewaretoken')
            valuesToAdd.pop('action')
            # Get items out of lists
            for key in valuesToAdd:
                valuesToAdd[key] = valuesToAdd[key][0]
            # Deal with nationalities
            code = valuesToAdd['ceoName'].lower().replace(" ","_")
            natQuery = transformCEONat(valuesToAdd['ceoNationality'], code)
            # Fill blank values
            for key in valuesToAdd:
                if valuesToAdd[key] == "":
                    valuesToAdd[key] = "Unknown"
            # Add CEO to DB
            query = """
                PREFIX pred: <http://wikicompany.pt/pred/>
                PREFIX ceo: <http://wikicompany.pt/ceo/>
                DELETE {{
                    ceo:{code} ?a ?b.
                }}
                WHERE {{
                    ceo:{code} ?a ?b.
                }};
                INSERT DATA{{
                    ceo:{code} pred:name "{name}".
                    ceo:{code} pred:photo "{logo}".
                    ceo:{code} pred:description "{description}".
                    ceo:{code} pred:sex "{sex}".
                    {nat}
                    ceo:{code} pred:birth "{birth}".
                    ceo:{code} pred:worth "{worth}".
                    ceo:{code} pred:wikidataRef "{wiki}".
                    ceo:{code} a "ceo".
                }}
            """.format(code=code, name=valuesToAdd['ceoName'], logo=valuesToAdd['ceoLogo'],
                       description=valuesToAdd['ceoDescription'], sex=valuesToAdd['ceoSex'],
                       birth=valuesToAdd['ceoBirth'], worth=valuesToAdd['ceoWorth'],
                       wiki=valuesToAdd['ceoWikidataRef'], nat=natQuery)
            queryDB(query, update=True, simplify=False)
            success = True
            # Check if CEO of Companies
            query = """
               PREFIX pred: <http://wikicompany.pt/pred/>
               PREFIX company: <http://wikicompany.pt/companies/>
               INSERT{{
                 ?company pred:ceo ?ceo. 
               }}
               WHERE {{
                   ?company a "company".
                   ?company pred:ceo "{name}".
                   ?ceo a "ceo".
                   ?ceo pred:name "{name}".
               }};
               DELETE{{
                 ?company pred:ceo "{name}". 
               }}
               WHERE {{
                   ?company a "company".
               }};
               """.format(name=valuesToAdd['ceoName'])
            queryDB(query, simplify=False, update=True)
        if 'ceoName' in request.GET:
            # Get Data from Wikidata and set default Values
            fields = getCEOfromDB(request.GET['ceoName'])
            if fields:
                defaultValues = {**defaultValues, **fields}
                showForm = True
                searchMessage = defaultValues['name']
            else:
                searchMessage = "CEO not in DB"
        context = {
            'defaultValues': defaultValues,
            'searchMessage': searchMessage,
            'showForm': showForm,
            'message': message,
            'success': success
        }
        return render(request, 'pages/admin/editCEO.html', context)
    return redirect("/")
예제 #16
0
def adminDeleteCEO(request):
    if request.user.is_superuser:
        ceoName = ""
        message = ""
        showForm = True
        success = False
        foundCompany = False
        if request.method == 'POST':
            # Check if ceo is associated to a company
            query = """
            PREFIX pred: <http://wikicompany.pt/pred/>
           PREFIX company: <http://wikicompany.pt/companies/>
            INSERT{{
             ?company pred:ceo "{name}". 
           }}
           WHERE {{
               ?company a "company".
               ?company pred:ceo ?ceo.
               ?ceo a "ceo".
               ?ceo pred:name "{name}"
           }};
           DELETE{{
             ?company pred:ceo ?ceo. 
           }}
           WHERE {{
               ?company a "company".
               ?company pred:ceo ?ceo.
               ?ceo a "ceo".
               ?ceo pred:name "{name}".
           }};
            """.format(name=request.POST['ceoName'])
            queryDB(query, simplify=False, update=True)
            # Delete CEO from DB
            query = """
               PREFIX pred: <http://wikicompany.pt/pred/>
               PREFIX company: <http://wikicompany.pt/companies/>
               DELETE {{
                   ?user pred:favCeo ?ceo.
               }}
               WHERE {{
                   ?ceo a "ceo".
                   ?ceo pred:name "{}".
                   ?user pred:favCeo ?ceo.
               }};
               DELETE {{
                   ?ceo ?a ?b.
               }}
               WHERE {{
                   ?ceo a "ceo".
                   ?ceo pred:name "{}".
                   ?ceo ?a ?b.
               }};                    
               """.format(request.POST['ceoName'], request.POST['ceoName'])
            queryDB(query, simplify=False, update=True)
            message = "CEO Deleted"
        elif 'ceoName' in request.GET:
            # Get Data from Wikidata and set default Values
            fields = getCEOfromDB(request.GET['ceoName'])
            if fields:
                ceoName = request.GET['ceoName']
                showForm = True
        context = {
            'ceoName': ceoName,
            'showForm': showForm,
            'message': message,
            'success': success,
        }
        return render(request, 'pages/admin/deleteCEO.html', context)
    return redirect("/")
예제 #17
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')
예제 #18
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)