Subversion Repositories SmartDukaan

Rev

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