Subversion Repositories SmartDukaan

Rev

Rev 1248 | Rev 1422 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
353 ashish 1
'''
2
Created on 14-Jul-2010
3
 
4
@author: ashish
5
'''
6
from email.mime.multipart import MIMEMultipart
7
from shop2020.thriftpy.utils.ttypes import HelperServiceException, Mail
8
from email.mime.base import MIMEBase
9
from email import encoders
10
import os
11
import smtplib
494 rajveer 12
from shop2020.utils.Utils import log_entry, to_py_date
1395 varun.gupt 13
from shop2020.helpers.impl.DataService import Message, DashboardUser, UserEmail
494 rajveer 14
 
353 ashish 15
from elixir import *
16
 
17
from shop2020.thriftpy.utils.ttypes import Message as Msg
18
from string import Template
494 rajveer 19
import datetime
20
from shop2020.helpers.impl import DataService
581 rajveer 21
from email.mime.text import MIMEText
353 ashish 22
 
1248 chandransh 23
def initialize(dbname='helper'):
494 rajveer 24
    log_entry("initialize@DataAccessor", "Initializing data service")
1248 chandransh 25
    DataService.initialize(dbname)
494 rajveer 26
 
1395 varun.gupt 27
def save_user_email_for_sending(email_to, email_from, subject, body, source, email_type):
28
    user_email = UserEmail()
29
    user_email.emailTo = email_to
30
    user_email.emailFrom = email_from
31
    user_email.subject = subject
32
    user_email.body = body
33
    user_email.source = source
34
    user_email.emailType = email_type
35
    user_email.status = False
36
    user_email.timestamp = datetime.datetime.now()
37
    session.commit()
38
 
353 ashish 39
def sendMail(mail):
40
    if not mail:
41
        raise HelperServiceException(101, "mail not present")
581 rajveer 42
    #msg = MIMEMultipart()
43
    #mail = Mail()
928 rajveer 44
    if mail.sender:
45
        mail.data = "This mail is sent by " + mail.sender + "\n" + mail.data
46
 
581 rajveer 47
    msg = MIMEText(mail.data)
900 rajveer 48
    msg['To'] = ', '.join( mail.to )
928 rajveer 49
    if mail.sender:
50
        msg['From'] = mail.sender
51
    else:    
52
        msg['From'] = "help@saholic.com"
900 rajveer 53
    msg['Subject'] = mail.subject
581 rajveer 54
    #msg.attach(mail.data)
353 ashish 55
 
56
    #handle attachments in mail
57
    if mail.attachments:
58
        for attach in mail.attachments:
59
 
60
            part = MIMEBase('application', 'octet-stream')
61
            part.set_payload(open(attach, 'rb').read())
62
            encoders.encode_base64(part)
63
            part.add_header('Content-Disposition',
64
                    'attachment; filename="%s"' % os.path.basename(attach))
65
            msg.attach(part)
900 rajveer 66
 
353 ashish 67
    for to in mail.to:
873 rajveer 68
        mail.sender = "help@shop2020.in"
69
        mail.password = "5h0p2o2o"
353 ashish 70
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
71
        mailServer.ehlo()
72
        mailServer.starttls()
73
        mailServer.ehlo()
74
        mailServer.login(mail.sender, mail.password)
75
        mailServer.sendmail(mail.password, to, msg.as_string())
76
        # Should be mailServer.quit(), but that crashes...
77
        mailServer.close() 
78
 
79
def sendText(text):
80
    pass
81
 
82
def addMessage(message):
83
    msg = Message.get_by(message_id=message.id)
84
    if msg:
85
        raise HelperServiceException(101, "Message is already present. Please try updation api instead")
86
    msg = Message();
87
    msg.message_id = message.id
88
    msg.message = message.message
89
    session.commit()
90
 
91
def getMessage(message_id):
92
    msg = Message.get_by(id=message_id)
93
    message = Msg()
94
    message.id = msg.message_id
95
    message.message = msg.message
96
    return message
97
 
98
def updateMessage(id, message):
99
    msg = Message.get_by(message_id=id)
100
    if msg:
101
        msg.message = message
102
        session.commit()
103
    else:
104
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
105
 
106
def getSubstitutedMessage(id, params):
107
    #get the message first
108
    msg = Message.get_by(message_id=id)
109
    if not msg:
110
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
111
    if params:
112
        s = Template(msg.message)
113
        s = s.safe_substitute(params)
114
        return s
115
    else:
116
        return msg.message
494 rajveer 117
 
118
def add_user(username, password, warehouseId):
119
    user = DashboardUser()
120
    user.username = username
121
    user.password = password
122
    user.warehouseId = warehouseId
123
    user.addedOn = datetime.datetime.now()
124
    user.status = 0
125
    try:
126
        session.commit()
127
        return True
128
    except:
129
        raise HelperServiceException(101, "Some error while adding user")
130
        return False
131
 
132
def delete_user(username):
133
    user = DashboardUser.get_by(username=username)
134
    if user is None:
135
        return False
136
    user.delete()
766 rajveer 137
    session.commit()
494 rajveer 138
    return True
139
 
140
def authenticate_user(username, password):
141
    user = DashboardUser.get_by(username=username)
142
    if user is None:
143
        return -1
144
    if user.password == password:
145
        user.loggedOn = datetime.datetime.now()
146
        session.commit()
147
        return user.warehouseId
148
    return -1
149
 
150
def update_password(username, oldPassword, newPassword):
151
    user = DashboardUser.get_by(username=username)
152
    if user is None:
153
        return False
154
    if user.password == oldPassword:
155
        user.password = newPassword
766 rajveer 156
        session.commit()
494 rajveer 157
        return True
766 rajveer 158
    return False
159
 
160
def close_session():
161
    if session.is_active:
162
        print "session is active. closing it."
163
        session.close()