summaryrefslogtreecommitdiff
path: root/py-fake-service/app/pixelated_user_agent.py
diff options
context:
space:
mode:
Diffstat (limited to 'py-fake-service/app/pixelated_user_agent.py')
-rw-r--r--py-fake-service/app/pixelated_user_agent.py32
1 files changed, 30 insertions, 2 deletions
diff --git a/py-fake-service/app/pixelated_user_agent.py b/py-fake-service/app/pixelated_user_agent.py
index 2bcc9de7..c500dd08 100644
--- a/py-fake-service/app/pixelated_user_agent.py
+++ b/py-fake-service/app/pixelated_user_agent.py
@@ -14,9 +14,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
from flask import Flask, request, Response, redirect
-
+import csv
import json
import datetime
+import mailbox
+import StringIO
import requests
from adapter import MailService
from search import SearchQuery
@@ -26,7 +28,7 @@ MEDIUM_TAGGED_URL = 'https://static.wazokazi.is/py-mediumtagged.tar.gz'
client = None
converter = None
account = None
-loaded = False
+loaded = True
mail_service = MailService()
@@ -125,6 +127,32 @@ def draft_reply_for(mail_id):
return respond_json(None)
+def utf_8_encoder(unicode_csv_data):
+ for line in unicode_csv_data:
+ yield line.encode('utf-8')
+
+
+@app.route('/control/mailset/csv/load', methods=['POST'])
+def load_mailset_from_csv():
+ csv_data = request.form.keys()[0]
+ csv_string = StringIO.StringIO(csv_data)
+ csv_reader = csv.reader(utf_8_encoder(csv_string))
+ headers = csv_reader.next()
+ messages = []
+ for row in csv_reader:
+ mail = ""
+ row[3] = ', '.join(filter(len, row[3].split(' ')))
+ for header, value in zip(headers, row):
+ if header == 'Body':
+ mail += "\n"
+ else:
+ mail += header + ": "
+ mail += value + "\n"
+ messages.append(mailbox.mboxMessage(mail))
+ mail_service.index_messages(messages)
+ return respond_json(None)
+
+
@app.route('/control/mailset/<mailset>/load', methods=['POST'])
def load_mailset(mailset):
import os