Subversion Repositories SmartDukaan

Rev

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