ajout calcul du rendement

This commit is contained in:
2019-10-22 10:40:01 +02:00
parent 80a45bf297
commit e80543a956
5 changed files with 50 additions and 37 deletions

View File

@@ -10,7 +10,7 @@ from .views.default import (
@layout_config(template='templates/layouts/global_layout.pt')
class GlobalLayout(object):
# page_title = u"Pagode Tinh-Do"
# page_title = "Pagode Tinh-Do"
def __init__(self, context, request):
self.context = context

View File

@@ -49,9 +49,9 @@ def update_actif_devise(request, devise, taux):
query = "UPDATE actifs SET parite = :taux WHERE devise = :devise;"
execute_query(request, query, {'taux': taux, 'devise': devise})
def update_actif_valeur(request, symbole, cours):
query = "UPDATE actifs SET cours = :cours WHERE symbole = :symbole;"
execute_query(request, query, {'symbole': symbole, 'cours': cours})
def update_actif_valeur(request, symbole, cours, dividends):
query = "UPDATE actifs SET cours = :cours, rendement = :dividends * nombre WHERE symbole = :symbole;"
execute_query(request, query, {'symbole': symbole, 'cours': cours, 'dividends': dividends})
def update_portefeuille(request, logged_in):
query = "CALL spUPD_PORTEFEUILLE(:logged_in);"

View File

@@ -62,7 +62,7 @@ def actif_edit(request):
if not actif:
request.session.flash(u"Actif non trouvé : %s" % no_id, 'warning')
return HTTPFound(location=request.route_url('home'))
page_title= u"Actif ACTION : %s" % (actif.libelle)
page_title= "Actif ACTION : %s" % (actif.libelle)
if 'form.submitted' in request.params:
new_values = {}
@@ -123,7 +123,7 @@ def actif2_edit(request):
if not actif:
request.session.flash(u"Actif non trouvé : %s" % no_id, 'warning')
return HTTPFound(location=request.route_url('home'))
page_title= u"Actif : %s" % (actif.symbole)
page_title= "Actif : %s" % (actif.symbole)
if 'form.submitted' in request.params:
new_values = {}
@@ -166,14 +166,14 @@ def allocation_edit(request):
allocation['classe'] = ''
allocation['type'] = 'ACTION'
allocation['pc_cible'] = '0'
page_title= u'Nouvelle classe'
page_title= 'Nouvelle classe'
else:
# lire la fiche de la categorie
allocation = get_allocation(request, no_cat)
if not allocation:
request.session.flash(u"Classe non trouvé : %s" % no_cat, 'warning')
return HTTPFound(location=request.route_url('home'))
page_title= u"Classe : %s" % (allocation.classe)
page_title= "Classe : %s" % (allocation.classe)
if 'form.submitted' in request.params:
new_values = {}
@@ -212,7 +212,7 @@ def histo_list(request):
liste.append(d)
return {
'page_title': u'Historique',
'page_title': 'Historique',
'dt_data': json.dumps(liste),
}
@@ -230,14 +230,14 @@ def histo_edit(request):
item['date'] = today
item['mvt_cash'] = 0.0
item['nb_part'] = 0.0
page_title= u'Nouvelle valeur part'
page_title= 'Nouvelle valeur part'
else:
# lire la fiche de la categorie
item = get_histo(request, no_id)
if not item:
request.session.flash(u"Histo non trouvé : %s" % no_id, 'warning')
return HTTPFound(location=request.route_url('histo_list'))
page_title= u"Valeur part au %s" % (item.date.strftime('%d/%m/%Y'))
page_title= "Valeur part au %s" % (item.date.strftime('%d/%m/%Y'))
if 'form.submitted' in request.params:
new_values = {}

View File

@@ -38,7 +38,7 @@ def to_euro(x):
#if x == 0:
# return ""
#else:
return (u"{:,.2f}".format(x).replace(',', ' ').replace('.', ',') + u"")
return (u"{:,.2f}".format(x).replace(',', ' ').replace('.', ',') + "")
def to_usd(x):
"""Takes a float and returns a string"""
@@ -60,11 +60,11 @@ def to_percent(x, d):
if x == 0:
pc = ''
elif d == 2:
pc = u"%.2f " % x
pc = "%.2f " % x
elif d == 3:
pc = u"%.3f " % x
pc = "%.3f " % x
else:
pc = u"%.1f " % x
pc = "%.1f " % x
if len(pc) > 0:
pc += "%"
return pc.replace('.', ',')
@@ -115,7 +115,9 @@ def home(request):
if item.type == 'ACTION':
# lire le cours de l'action
ticker = yf.Ticker(item.symbole)
update_actif_valeur(request, item.symbole, ticker.info.get('regularMarketPrice'))
# caluler son rendement
dividends = get_dividends(ticker)
update_actif_valeur(request, item.symbole, ticker.info.get('regularMarketPrice'), dividends)
time.sleep(1) # attendre 2 secondes
# update du portefeuille
@@ -144,7 +146,7 @@ def home(request):
courbe_evoln.append(d)
return {
'page_title': u"Allocation d'actifs",
'page_title': "Allocation d'actifs",
'message': message,
'url': url,
'items': items,
@@ -168,7 +170,7 @@ def doc_list(request):
docs_voiture = get_docs_bytheme(request, 'VOITURE')
return {
'page_title': u"Documents",
'page_title': "Documents",
'docs_finance': docs_finance,
'docs_maison': docs_maison,
'docs_voiture': docs_voiture,
@@ -179,12 +181,12 @@ def doc_edit(request):
doc_id = request.matchdict['doc_id']
url = request.route_url('doc_edit',doc_id=doc_id)
message = u""
message = ""
if doc_id == '0':
titre = "Nouveau doc"
intitule = u""
texte = u""
theme = u""
intitule = ""
texte = ""
theme = ""
else:
titre = "Modifier : %s" % str(doc_id)
doc = get_docs(request, doc_id)
@@ -243,7 +245,7 @@ def doc_view(request):
}
def envoyerMail(request, destinataire, objet, corps):
body = u"""
body = """
%s
@@ -261,3 +263,14 @@ monaa.caotek.fr
mailer.send_immediately(message)
def get_dividends(ticker):
d = 0
# le ticker a des dividendes ?
if len(ticker.dividends) > 0:
# oui, cumuler les dividendes sur un an
h = ticker.history(period="1y")
nb = len(ticker.dividends)
for i in range(nb):
d += ticker.dividends[nb - 1 - i]
return d

View File

@@ -35,7 +35,7 @@ def to_sha1(message):
@view_config(route_name='envoyer_mdp', renderer='../templates/members/envoyer_mdp.pt')
def envoyer_mdp(request):
url = request.route_url('envoyer_mdp')
message = u''
message = ''
if 'form.submitted' in request.params:
login = request.params['login']
@@ -43,7 +43,7 @@ def envoyer_mdp(request):
if member:
# Fabrication du corps du email_passwordMessage
lien = update_membre_mdp_oublie(request, login)
body = u"""
body = """
Le lien suivant vous dirigera vers une page où vous pourrez ré-initialiser votre mot de passe d'accès à « monaa.caotek.fr » :
@@ -54,13 +54,13 @@ Le lien suivant vous dirigera vers une page où vous pourrez ré-initialiser vot
""" % (request.route_url('redefinir_mdp', lien=lien))
envoyerMail(request, member.email, u"Demande de ré-initialisation du mot de passe", body)
envoyerMail(request, member.email, "Demande de ré-initialisation du mot de passe", body)
request.session.flash(u"Votre demande de ré-initialisation de mot de passe vous a été envoyée à %s." % member.email)
return HTTPFound(location=request.route_url('login'))
else:
message = u"Le mot de passe fourni est incorrect."
message = "Le mot de passe fourni est incorrect."
return {
'page_title': u"Changer mon mot de passe",
'page_title': "Changer mon mot de passe",
'url': url,
'message': message,
}
@@ -82,10 +82,10 @@ def changer_mdp(request):
request.session.flash(u"Votre mot de passe a été mis à jour avec succès.")
return HTTPFound(location=request.route_url('home'))
else:
message = u"Le mot de passe actuel n'est pas correct."
message = "Le mot de passe actuel n'est pas correct."
return {
'page_title': u"Changer mon mot de passe",
'page_title': "Changer mon mot de passe",
'url': url,
'member': member,
'message': message,
@@ -113,7 +113,7 @@ def redefinir_mdp(request):
request.session.flash(u"Le lien n'est plus valable.", 'warning')
return HTTPFound(location=request.route_url('login'))
return {
'page_title': u"Définissez votre mot de passe",
'page_title': "Définissez votre mot de passe",
'url': url,
}
@@ -131,8 +131,8 @@ def login(request):
referrer = '/' # never use the login form itself as came_from
came_from = request.params.get('came_from', referrer)
password = u''
message = u''
password = ''
message = ''
if 'form.submitted' in request.params:
login = request.params['login']
password = request.params['password']
@@ -147,10 +147,10 @@ def login(request):
headers = remember(request, login)
return HTTPFound(location=came_from, headers=headers)
message = u"Email et mot de passe invalides. La connexion a échoué."
message = "Email et mot de passe invalides. La connexion a échoué."
return {
'page_title': u"",
'page_title': "",
'url': login_url,
'came_from': came_from,
'login': login,
@@ -180,7 +180,7 @@ def users_list(request):
liste.append(d)
return {
'page_title': u'Liste des utilisateurs',
'page_title': 'Liste des utilisateurs',
'dt_data': json.dumps(liste),
}
@@ -219,7 +219,7 @@ def user_edit(request):
if not membre:
request.session.flash(u"Utilisateur non trouvé : %s" % email, 'warning')
return HTTPFound(location=request.route_url('users_list'))
page_title= u"Membre : %s" %(membre.nom)
page_title= "Membre : %s" %(membre.nom)
if 'form.submitted' in request.params:
new_values = {}