- add sending of emails (works except dept)
This commit is contained in:
60
app/send_email.py
Normal file
60
app/send_email.py
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import smtplib
|
||||||
|
# import email
|
||||||
|
# from email.mime.text import MIMEText
|
||||||
|
# from email.MIMEText import MIMEText
|
||||||
|
import user
|
||||||
|
|
||||||
|
def send_email(recipient, subject, body):
|
||||||
|
gmail_user = 'bier1baroness'
|
||||||
|
gmail_pwd = 'test11test11'
|
||||||
|
FROM = 'bier1baroness@gmail.com'
|
||||||
|
SUBJECT = subject
|
||||||
|
TEXT = body
|
||||||
|
|
||||||
|
# Prepare actual message
|
||||||
|
message = u"Content-Type: text/plain; charset=utf-8\nFrom: Baroness <%s>\nTo: %s\nSubject: %s\n\n%s" % (FROM, recipient, SUBJECT, TEXT)
|
||||||
|
message = message.encode('utf-8')
|
||||||
|
|
||||||
|
# message = msg.as_string()
|
||||||
|
print message
|
||||||
|
try:
|
||||||
|
print '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\ntry_to_send'
|
||||||
|
server = smtplib.SMTP("smtp.gmail.com:587")
|
||||||
|
#server.set_debuglevel(1)
|
||||||
|
server.starttls()
|
||||||
|
server.login(gmail_user, gmail_pwd)
|
||||||
|
server.sendmail(FROM, recipient, message)
|
||||||
|
print 'sendmail'
|
||||||
|
server.quit()
|
||||||
|
print 'Mail send to %s' % recipient
|
||||||
|
|
||||||
|
except:
|
||||||
|
print "Failed to send mail to %s" %recipient
|
||||||
|
|
||||||
|
def send_emails(body, subject, users):
|
||||||
|
FROM = 'bier1baroness@gmail.com'
|
||||||
|
|
||||||
|
for user in users:
|
||||||
|
dept = 3 ###################################################### change this!!!!!
|
||||||
|
subject_parsed = parse_email(subject, user, dept)
|
||||||
|
body_parsed = parse_email(body, user, dept)
|
||||||
|
send_email(user.email, subject_parsed, body_parsed)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def parse_email(text, u, dept):
|
||||||
|
|
||||||
|
text = text.replace('%%longname%%', u.longname)
|
||||||
|
text = text.replace('%%dept%%', str(dept))
|
||||||
|
|
||||||
|
if text.find('%%if_is_black%%', 0, text.__len__()):
|
||||||
|
start = text.find('%%if_is_black%%', 0, text.__len__())
|
||||||
|
end = text.find('%%end_if_is_black%%')
|
||||||
|
|
||||||
|
if not u.isblack:
|
||||||
|
text = text.replace(text[start:end], '')
|
||||||
|
text = text.replace('%%if_is_black%%', '')
|
||||||
|
text = text.replace('%%end_if_is_black%%', '')
|
||||||
|
|
||||||
|
return text
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
<p>{{ success }}</p>
|
<p>{{ success }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h1>Abrechnung</h1>
|
<h1>Abrechnung</h1>
|
||||||
|
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
||||||
<form name="billing" method="post" action="/billing">
|
<form name="billing" method="post" action="/billing">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -30,5 +31,4 @@
|
|||||||
</table>
|
</table>
|
||||||
<input type="submit" value="Änderungen übernehmen">
|
<input type="submit" value="Änderungen übernehmen">
|
||||||
</form>
|
</form>
|
||||||
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -1,23 +1,34 @@
|
|||||||
{% extends "base.html"%}
|
{% extends "base.html"%}
|
||||||
{% set title = "An alle User Rechnung versenden" %}
|
{% set title = "An alle User Rechnungen versenden" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h3>TODO: </h3>
|
<h3>TODO: </h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>actual send emails</li>
|
<li>actual send emails</li>
|
||||||
<li>save default text somewhere and make it configureable</li>
|
<li>save default text somewhere and make it configureable</li>
|
||||||
<li>parse wildcards</li>
|
<li>insert the right ammount of dept</li>
|
||||||
</ul>
|
</ul>
|
||||||
{% if success %}
|
{% if success %}
|
||||||
<p>{{ success }}</p>
|
<p>{{ success }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h1>Rechnung an alle verschicken</h1>
|
<h1>Rechnung an alle verschicken</h1>
|
||||||
<form name="billing" method="post" action="/billing/send_all_bills">
|
<form name="billing" method="post" action="/billing/send_all_bills">
|
||||||
<textarea cols="80" rows="20">
|
Betreff:<input type="text" name="subject" value="Bierrechnung von der Baroness"/> <br />
|
||||||
|
<textarea cols="80" rows="20" name="message">
|
||||||
Hallo %%longname%%
|
Hallo %%longname%%
|
||||||
du hast zurzeit viele Schulden.
|
du hast %%dept%%€ Schulden.
|
||||||
%%if_is_black%%Weil du zu hohe Schulden hast, bist du geschwärzt%%endif%%
|
Bitte überweise diesen Betrag an das Konto:
|
||||||
</textarea>
|
|
||||||
|
|
||||||
|
%%if_is_black%%Weil du zu hohe Schulden hast, bist du geschwärzt%%end_if_is_black%%
|
||||||
|
</textarea><br />
|
||||||
|
<p> Warnung: Das versenden vieler emails dauert ein weilchen.</p>
|
||||||
<input type="submit" value="Email versenden">
|
<input type="submit" value="Email versenden">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<h1>Kommandos</h1>
|
||||||
|
<p>Der text den du eingibst wird von der Baroness noch personalisiert. Folgende Komandos kennt die Baroness.</p>
|
||||||
|
<ul>
|
||||||
|
<li> <b>%%longname%%</b> fügt den vollen namen des Benutzers ein.</li>
|
||||||
|
<li> <b>%%dept%%</b> fügt die Höhe der Schulden des Benutzers ein. </li>
|
||||||
|
<li> <b>%%if_is_black%% TEXT %%end_if_is_black%%</b> fügt den TEXT ein, falls der user geschwärzt ist.</li>
|
||||||
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -11,13 +11,20 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<h1>Rechnung an {{user_to_bill.longname}} verschicken</h1>
|
<h1>Rechnung an {{user_to_bill.longname}} verschicken</h1>
|
||||||
<form name="billing" method="post" action="/billing/send_personal_bill/{{user_to_bill.name}}">
|
<form name="billing" method="post" action="/billing/send_personal_bill/{{user_to_bill.name}}">
|
||||||
<textarea cols="80" rows="20">
|
Betreff:<input type="text" name="subject" value="Bierrechnung von der Baroness"/> <br />
|
||||||
|
<textarea cols="80" rows="20" name="message">
|
||||||
Hallo {{user_to_bill.longname}}
|
Hallo {{user_to_bill.longname}}
|
||||||
du hast zurzeit viele Schulden.
|
du hast zurzeit n€ Schulden.
|
||||||
{% if user_to_bill.isblack %}Weil du zu hohe Schulden hast, bist du geschwärzt{% endif %}
|
{% if user_to_bill.isblack %}Weil du zu hohe Schulden hast, bist du geschwärzt.{% endif %}
|
||||||
</textarea>
|
Bitte überweise den Betrag an das Konto:
|
||||||
|
Peter Schleter;
|
||||||
|
IBAN; BIC;
|
||||||
|
|
||||||
|
dein Baron,
|
||||||
|
{{user.longname}}
|
||||||
|
</textarea><br />
|
||||||
<input type="submit" value="Email versenden">
|
<input type="submit" value="Email versenden">
|
||||||
</form>
|
</form>
|
||||||
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
40
app/views.py
40
app/views.py
@@ -5,6 +5,7 @@ from database import *
|
|||||||
from plot import *
|
from plot import *
|
||||||
from user import User
|
from user import User
|
||||||
from product import Product
|
from product import Product
|
||||||
|
from send_email import send_email, send_emails
|
||||||
from consumption import Consumption
|
from consumption import Consumption
|
||||||
import bcrypt
|
import bcrypt
|
||||||
import os
|
import os
|
||||||
@@ -262,27 +263,54 @@ def personal():
|
|||||||
def billing():
|
def billing():
|
||||||
users = get_users()
|
users = get_users()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
return render_template('billing.html', users=users, success="Not Implemented", dept=0, user=get_user_by_name(session.get('name')))
|
for user in users:
|
||||||
|
formname = "%s_payed" % user.name
|
||||||
|
if formname in request.form:
|
||||||
|
# add payment here
|
||||||
|
payment = float(request.form[formname])
|
||||||
|
print "%s payed %d" % (user.name, payment)
|
||||||
|
|
||||||
|
|
||||||
|
return render_template('billing.html', users=users, success="Writing to database is not implemented", dept=0, user=get_user_by_name(session.get('name')))
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('billing.html', users=users, dept=0, user=get_user_by_name(session.get('name')))
|
return render_template('billing.html', users=users, dept=0, user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/billing/send_personal_bill/<name>', methods=['GET','POST'])
|
@app.route('/billing/send_personal_bill/<name>', methods=['GET', 'POST'])
|
||||||
@requires_baron
|
@requires_baron
|
||||||
def send_personal_bill(name=None):
|
def send_personal_bill(name=None):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
return "To be implemented"
|
users = get_users()
|
||||||
#return redirect('/billing')
|
u = get_user_by_name(name)
|
||||||
|
message = request.form['message']
|
||||||
|
subject = request.form['subject']
|
||||||
|
send_email(u.email, subject, message)
|
||||||
|
|
||||||
|
success = "Die Rechnung wurde an %s versendet." %u.longname
|
||||||
|
return render_template('billing.html', users=users, success=success, dept=0, user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('billing_personal.html', user_to_bill=get_user_by_name(name) ,user=get_user_by_name(session.get('name')))
|
return render_template('billing_personal.html', user_to_bill=get_user_by_name(name) ,user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/billing/send_all_bills', methods=['GET','POST'])
|
@app.route('/billing/send_all_bills', methods=['GET', 'POST'])
|
||||||
@requires_baron
|
@requires_baron
|
||||||
def send_mass_mail(name=None):
|
def send_mass_mail(name=None):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
return "To be implemented"
|
users = get_users()
|
||||||
|
u = get_user_by_name(name)
|
||||||
|
message = request.form['message']
|
||||||
|
subject = request.form['subject']
|
||||||
|
|
||||||
|
send_emails(message, subject, users)
|
||||||
|
#for user in users:
|
||||||
|
# message_parsed = parse_email(message, user, 3) # change ammount of depts here
|
||||||
|
# subject_parsed = parse_email(subject, user, 3) # change ammount of depts here!
|
||||||
|
# send_email(user.email, subject_parsed, message_parsed)
|
||||||
|
|
||||||
|
success = "An alle user werden Rechnungen versendet."
|
||||||
|
return render_template('billing.html', users=users, success=success, dept=0, user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('billing_mass_mail.html', user=get_user_by_name(session.get('name')))
|
return render_template('billing_mass_mail.html', user=get_user_by_name(session.get('name')))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user