Subversion Repositories SmartDukaan

Rev

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