Subversion Repositories SmartDukaan

Rev

Rev 3005 | Rev 3187 | 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
2445 chandransh 13
from shop2020.helpers.impl.DataService import Message, UserEmail,\
3005 chandransh 14
    Report, ReportRoleAuthority, CatalogDashboardUser, UserEmailArchive
494 rajveer 15
 
353 ashish 16
from elixir import *
17
 
18
from shop2020.thriftpy.utils.ttypes import Message as Msg
19
from string import Template
494 rajveer 20
import datetime
21
from shop2020.helpers.impl import DataService
581 rajveer 22
from email.mime.text import MIMEText
1422 varun.gupt 23
from sqlalchemy.orm import query
2445 chandransh 24
from shop2020.helpers.impl.model.DashboardUser import DashboardUser
353 ashish 25
 
1248 chandransh 26
def initialize(dbname='helper'):
494 rajveer 27
    log_entry("initialize@DataAccessor", "Initializing data service")
1248 chandransh 28
    DataService.initialize(dbname)
494 rajveer 29
 
1395 varun.gupt 30
def save_user_email_for_sending(email_to, email_from, subject, body, source, email_type):
31
    user_email = UserEmail()
32
    user_email.emailTo = email_to
33
    user_email.emailFrom = email_from
34
    user_email.subject = subject
35
    user_email.body = body
36
    user_email.source = source
37
    user_email.emailType = email_type
38
    user_email.status = False
39
    user_email.timestamp = datetime.datetime.now()
40
    session.commit()
1422 varun.gupt 41
 
3086 rajveer 42
def get_emails_to_be_sent():
1422 varun.gupt 43
    print "get_emails_to_be_sent"
3005 chandransh 44
    return UserEmail.query.all()
1422 varun.gupt 45
 
46
def mark_email_as_sent(email_id):
3005 chandransh 47
    query = 'INSERT INTO ' + str(UserEmailArchive.table) + ' (select * from ' + str(UserEmail.table) + ' where id = ' + str(email_id) + ')'
48
    session.execute(query, mapper=UserEmailArchive)
1422 varun.gupt 49
    email = UserEmail.get_by(id = email_id)
3005 chandransh 50
    if email:
51
        email.delete()
1422 varun.gupt 52
    session.commit()
53
 
353 ashish 54
def sendMail(mail):
55
    if not mail:
56
        raise HelperServiceException(101, "mail not present")
581 rajveer 57
    #msg = MIMEMultipart()
58
    #mail = Mail()
928 rajveer 59
    if mail.sender:
60
        mail.data = "This mail is sent by " + mail.sender + "\n" + mail.data
61
 
581 rajveer 62
    msg = MIMEText(mail.data)
900 rajveer 63
    msg['To'] = ', '.join( mail.to )
928 rajveer 64
    if mail.sender:
65
        msg['From'] = mail.sender
66
    else:    
67
        msg['From'] = "help@saholic.com"
900 rajveer 68
    msg['Subject'] = mail.subject
581 rajveer 69
    #msg.attach(mail.data)
353 ashish 70
 
71
    #handle attachments in mail
72
    if mail.attachments:
73
        for attach in mail.attachments:
74
 
75
            part = MIMEBase('application', 'octet-stream')
76
            part.set_payload(open(attach, 'rb').read())
77
            encoders.encode_base64(part)
78
            part.add_header('Content-Disposition',
79
                    'attachment; filename="%s"' % os.path.basename(attach))
80
            msg.attach(part)
900 rajveer 81
 
353 ashish 82
    for to in mail.to:
873 rajveer 83
        mail.sender = "help@shop2020.in"
84
        mail.password = "5h0p2o2o"
353 ashish 85
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
86
        mailServer.ehlo()
87
        mailServer.starttls()
88
        mailServer.ehlo()
89
        mailServer.login(mail.sender, mail.password)
90
        mailServer.sendmail(mail.password, to, msg.as_string())
91
        # Should be mailServer.quit(), but that crashes...
92
        mailServer.close() 
93
 
94
def sendText(text):
95
    pass
96
 
97
def addMessage(message):
98
    msg = Message.get_by(message_id=message.id)
99
    if msg:
100
        raise HelperServiceException(101, "Message is already present. Please try updation api instead")
101
    msg = Message();
102
    msg.message_id = message.id
103
    msg.message = message.message
104
    session.commit()
105
 
106
def getMessage(message_id):
107
    msg = Message.get_by(id=message_id)
108
    message = Msg()
109
    message.id = msg.message_id
110
    message.message = msg.message
111
    return message
112
 
113
def updateMessage(id, message):
114
    msg = Message.get_by(message_id=id)
115
    if msg:
116
        msg.message = message
117
        session.commit()
118
    else:
119
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
120
 
121
def getSubstitutedMessage(id, params):
122
    #get the message first
123
    msg = Message.get_by(message_id=id)
124
    if not msg:
125
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
126
    if params:
127
        s = Template(msg.message)
128
        s = s.safe_substitute(params)
129
        return s
130
    else:
131
        return msg.message
494 rajveer 132
 
133
def add_user(username, password, warehouseId):
134
    user = DashboardUser()
135
    user.username = username
136
    user.password = password
137
    user.warehouseId = warehouseId
138
    user.addedOn = datetime.datetime.now()
139
    user.status = 0
140
    try:
141
        session.commit()
142
        return True
143
    except:
144
        raise HelperServiceException(101, "Some error while adding user")
145
        return False
146
 
147
def delete_user(username):
148
    user = DashboardUser.get_by(username=username)
149
    if user is None:
150
        return False
151
    user.delete()
766 rajveer 152
    session.commit()
494 rajveer 153
    return True
154
 
2445 chandransh 155
def authenticate_dashboard_user(username, password):
156
    user = DashboardUser.get_by(username=username, password=password)
494 rajveer 157
    if user is None:
2445 chandransh 158
        raise HelperServiceException(101, "No dashboard user found")
494 rajveer 159
 
2445 chandransh 160
    user.loggedOn = datetime.datetime.now()
161
    session.commit()
162
    return user.to_thrift_object()
163
 
494 rajveer 164
def update_password(username, oldPassword, newPassword):
165
    user = DashboardUser.get_by(username=username)
166
    if user is None:
167
        return False
168
    if user.password == oldPassword:
169
        user.password = newPassword
766 rajveer 170
        session.commit()
494 rajveer 171
        return True
766 rajveer 172
    return False
173
 
1891 ankur.sing 174
def get_reports(role):
175
    query = session.query(Report).join(ReportRoleAuthority)
176
    query = query.filter(ReportRoleAuthority.role == role)
177
    reports = query.all()
178
    return reports
179
 
766 rajveer 180
def close_session():
181
    if session.is_active:
182
        print "session is active. closing it."
183
        session.close()