Subversion Repositories SmartDukaan

Rev

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