- 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>
|
||||
{% endif %}
|
||||
<h1>Abrechnung</h1>
|
||||
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
||||
<form name="billing" method="post" action="/billing">
|
||||
<table>
|
||||
<tr>
|
||||
@@ -30,5 +31,4 @@
|
||||
</table>
|
||||
<input type="submit" value="Änderungen übernehmen">
|
||||
</form>
|
||||
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
||||
{% endblock %}
|
||||
@@ -1,23 +1,34 @@
|
||||
{% extends "base.html"%}
|
||||
{% set title = "An alle User Rechnung versenden" %}
|
||||
{% set title = "An alle User Rechnungen versenden" %}
|
||||
{% block content %}
|
||||
<h3>TODO: </h3>
|
||||
<ul>
|
||||
<li>actual send emails</li>
|
||||
<li>save default text somewhere and make it configureable</li>
|
||||
<li>parse wildcards</li>
|
||||
<li>insert the right ammount of dept</li>
|
||||
</ul>
|
||||
{% if success %}
|
||||
<p>{{ success }}</p>
|
||||
{% endif %}
|
||||
<h1>Rechnung an alle verschicken</h1>
|
||||
<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%%
|
||||
du hast zurzeit viele Schulden.
|
||||
%%if_is_black%%Weil du zu hohe Schulden hast, bist du geschwärzt%%endif%%
|
||||
</textarea>
|
||||
du hast %%dept%%€ Schulden.
|
||||
Bitte überweise diesen Betrag an das Konto:
|
||||
|
||||
%%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">
|
||||
</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 %}
|
||||
@@ -11,13 +11,20 @@
|
||||
{% endif %}
|
||||
<h1>Rechnung an {{user_to_bill.longname}} verschicken</h1>
|
||||
<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}}
|
||||
du hast zurzeit viele Schulden.
|
||||
{% if user_to_bill.isblack %}Weil du zu hohe Schulden hast, bist du geschwärzt{% endif %}
|
||||
</textarea>
|
||||
du hast zurzeit n€ Schulden.
|
||||
{% if user_to_bill.isblack %}Weil du zu hohe Schulden hast, bist du geschwärzt.{% endif %}
|
||||
Bitte überweise den Betrag an das Konto:
|
||||
Peter Schleter;
|
||||
IBAN; BIC;
|
||||
|
||||
dein Baron,
|
||||
{{user.longname}}
|
||||
</textarea><br />
|
||||
<input type="submit" value="Email versenden">
|
||||
</form>
|
||||
<p>An alle User Rechnungen <a href="/billing/send_all_bills"> versenden</a>.</p>
|
||||
|
||||
{% endblock %}
|
||||
40
app/views.py
40
app/views.py
@@ -5,6 +5,7 @@ from database import *
|
||||
from plot import *
|
||||
from user import User
|
||||
from product import Product
|
||||
from send_email import send_email, send_emails
|
||||
from consumption import Consumption
|
||||
import bcrypt
|
||||
import os
|
||||
@@ -262,27 +263,54 @@ def personal():
|
||||
def billing():
|
||||
users = get_users()
|
||||
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':
|
||||
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
|
||||
def send_personal_bill(name=None):
|
||||
if request.method == 'POST':
|
||||
return "To be implemented"
|
||||
#return redirect('/billing')
|
||||
users = get_users()
|
||||
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':
|
||||
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
|
||||
def send_mass_mail(name=None):
|
||||
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':
|
||||
return render_template('billing_mass_mail.html', user=get_user_by_name(session.get('name')))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user