From bfc5f6711e1e911cfbe521289e4867d595de3076 Mon Sep 17 00:00:00 2001
From: Brian Wood <legion.the.unforgiven@gmail.com>
Date: Mon, 21 Apr 2014 11:01:19 -0600
Subject: [PATCH] Wrote email reminder service and added config settings in
 __init__.py

---
 project/__init__.py         |  8 ++++++--
 project/controllers/loan.py | 32 +++++++++++++++++++++++++++++++-
 project/model/Movie.py      |  7 ++++++-
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/project/__init__.py b/project/__init__.py
index ae31105..706ffe2 100644
--- a/project/__init__.py
+++ b/project/__init__.py
@@ -10,11 +10,15 @@ sys.path.append('../pytmdb3/')
 
 from tmdb3 import set_key
 
-set_key('542606a6ccff81a0337dc370a0cbfc37')
-
 app = Flask('project')
 app.config['SECRET_KEY'] = 'random'
 app.config['MONGODB_SETTINGS'] = {'DB': 'my_movie_library'}
+app.config['SMTP_USER'] = ""
+app.config['SMTP_PASSWORD'] = ""
+app.config['SMTP_SERVER'] = "smtp.gmail.com:587"
+app.config['TMDB_API_KEY'] = ""
+set_key(app.config['TMDB_API_KEY'])
+
 # app.config["MONGODB_SETTINGS"] = {'DB': "my_movie_library",
 								   # 'host': '192.168.1.89'}
 app.debug = True
diff --git a/project/controllers/loan.py b/project/controllers/loan.py
index 52ab879..4ed4ea1 100644
--- a/project/controllers/loan.py
+++ b/project/controllers/loan.py
@@ -6,4 +6,34 @@ from flask.ext.wtf import Form, TextField, validators
 @app.route('/loaned')
 @security('user')
 def loaned(user=None):
-	return render_template('loan/master.html', user=user)
\ No newline at end of file
+	return render_template('loan/master.html', user=user)
+
+@app.route('/send-reminder', methods=['POST'])
+@security('user')
+def reminderEmail(user=None):
+	from_addr = user.email
+	to_addr = request.form['email']
+	subject = request.form['subject'] or "Movie Return Reminder"
+	movie_id = request.form['movie']
+	if not movie_id:
+		return jsonify(response='error',message='Invalid Movie given'),404
+	from project.model.Movie import Movie
+	movie = Movie.objects(id=movie_id).first()
+	if not movie:
+		return jsonify(response='error',message='Invalid Movie given'),404
+	loan = movie.getLoan(user)
+	message = request.form['message'] or "The movie %s, borrowed form %s is due on %s" % (movie.title, user.email, loan.expected_return_date)
+	login = app.config['SMTP_USER']
+	password = app.config['SMTP_PASSWORD']
+	smtpserver= app.config['SMTP_SERVER']
+
+	header  = 'From: %s\n' % from_addr
+	header += 'To: %s\n' % to_addr
+	header += 'Subject: %s\n\n' % subject
+	message = header + message
+ 
+	server = smtplib.SMTP(smtpserver)
+	server.starttls()
+	server.login(login,password)
+	problems = server.sendmail(from_addr, to_addr, message)
+	server.quit()   
\ No newline at end of file
diff --git a/project/model/Movie.py b/project/model/Movie.py
index 0998b41..866bf62 100644
--- a/project/model/Movie.py
+++ b/project/model/Movie.py
@@ -19,7 +19,12 @@ class Movie(db.Document):
 	def removeTag(self,tag):
 		if tag in self.tags:
 			self.tags.remove(tag)
-		return self    
+		return self
+
+	def getLoan(self,user):
+		from Loan import Loan
+		loan = Loan.objects(movie=self,user=user).first()
+		return loan
 
 	def __str__(self):
 		return self.title
-- 
GitLab