Subversion Repositories SmartDukaan

Rev

Rev 581 | Rev 873 | 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
    if not msg:
91
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
92
    if params:
93
        s = Template(msg.message)
94
        s = s.safe_substitute(params)
95
        return s
96
    else:
97
        return msg.message
494 rajveer 98
 
99
def add_user(username, password, warehouseId):
100
    user = DashboardUser()
101
    user.username = username
102
    user.password = password
103
    user.warehouseId = warehouseId
104
    user.addedOn = datetime.datetime.now()
105
    user.status = 0
106
    try:
107
        session.commit()
108
        return True
109
    except:
110
        raise HelperServiceException(101, "Some error while adding user")
111
        return False
112
 
113
def delete_user(username):
114
    user = DashboardUser.get_by(username=username)
115
    if user is None:
116
        return False
117
    user.delete()
766 rajveer 118
    session.commit()
494 rajveer 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
766 rajveer 137
        session.commit()
494 rajveer 138
        return True
766 rajveer 139
    return False
140
 
141
def close_session():
142
    if session.is_active:
143
        print "session is active. closing it."
144
        session.close()