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("/")
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)
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)
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)
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("/")
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)
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("/")
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')
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')
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)
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)
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)
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)
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("/")
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("/")
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("/")
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')
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)