Subversion Repositories SmartDukaan

Rev

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