Subversion Repositories SmartDukaan

Rev

Rev 3376 | Rev 4996 | 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
4806 varun.gupt 13
from shop2020.helpers.impl.DataService import Message, UserEmail, EntitiesShared, \
14
    Report, ReportRoleAuthority, CatalogDashboardUser, UserEmailArchive, QuickLink
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
 
3187 rajveer 26
def initialize(dbname='helper', db_hostname="localhost"):
494 rajveer 27
    log_entry("initialize@DataAccessor", "Initializing data service")
3187 rajveer 28
    DataService.initialize(dbname, db_hostname)
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()
3206 mandeep.dh 41
    return user_email.id
1422 varun.gupt 42
 
3086 rajveer 43
def get_emails_to_be_sent():
1422 varun.gupt 44
    print "get_emails_to_be_sent"
3005 chandransh 45
    return UserEmail.query.all()
1422 varun.gupt 46
 
47
def mark_email_as_sent(email_id):
3005 chandransh 48
    query = 'INSERT INTO ' + str(UserEmailArchive.table) + ' (select * from ' + str(UserEmail.table) + ' where id = ' + str(email_id) + ')'
49
    session.execute(query, mapper=UserEmailArchive)
1422 varun.gupt 50
    email = UserEmail.get_by(id = email_id)
3005 chandransh 51
    if email:
52
        email.delete()
1422 varun.gupt 53
    session.commit()
54
 
353 ashish 55
def sendMail(mail):
56
    if not mail:
57
        raise HelperServiceException(101, "mail not present")
581 rajveer 58
    #msg = MIMEMultipart()
59
    #mail = Mail()
928 rajveer 60
    if mail.sender:
61
        mail.data = "This mail is sent by " + mail.sender + "\n" + mail.data
62
 
581 rajveer 63
    msg = MIMEText(mail.data)
900 rajveer 64
    msg['To'] = ', '.join( mail.to )
928 rajveer 65
    if mail.sender:
66
        msg['From'] = mail.sender
67
    else:    
68
        msg['From'] = "help@saholic.com"
900 rajveer 69
    msg['Subject'] = mail.subject
581 rajveer 70
    #msg.attach(mail.data)
353 ashish 71
 
72
    #handle attachments in mail
73
    if mail.attachments:
74
        for attach in mail.attachments:
75
 
76
            part = MIMEBase('application', 'octet-stream')
77
            part.set_payload(open(attach, 'rb').read())
78
            encoders.encode_base64(part)
79
            part.add_header('Content-Disposition',
80
                    'attachment; filename="%s"' % os.path.basename(attach))
81
            msg.attach(part)
900 rajveer 82
 
353 ashish 83
    for to in mail.to:
873 rajveer 84
        mail.sender = "help@shop2020.in"
85
        mail.password = "5h0p2o2o"
353 ashish 86
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
87
        mailServer.ehlo()
88
        mailServer.starttls()
89
        mailServer.ehlo()
90
        mailServer.login(mail.sender, mail.password)
91
        mailServer.sendmail(mail.password, to, msg.as_string())
92
        # Should be mailServer.quit(), but that crashes...
93
        mailServer.close() 
94
 
95
def sendText(text):
96
    pass
97
 
98
def addMessage(message):
99
    msg = Message.get_by(message_id=message.id)
100
    if msg:
101
        raise HelperServiceException(101, "Message is already present. Please try updation api instead")
102
    msg = Message();
103
    msg.message_id = message.id
104
    msg.message = message.message
105
    session.commit()
106
 
107
def getMessage(message_id):
108
    msg = Message.get_by(id=message_id)
109
    message = Msg()
110
    message.id = msg.message_id
111
    message.message = msg.message
112
    return message
113
 
114
def updateMessage(id, message):
115
    msg = Message.get_by(message_id=id)
116
    if msg:
117
        msg.message = message
118
        session.commit()
119
    else:
120
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
121
 
122
def getSubstitutedMessage(id, params):
123
    #get the message first
124
    msg = Message.get_by(message_id=id)
125
    if not msg:
126
        raise HelperServiceException(101, "message could not be found with id %d" %(id))
127
    if params:
128
        s = Template(msg.message)
129
        s = s.safe_substitute(params)
130
        return s
131
    else:
132
        return msg.message
494 rajveer 133
 
134
def add_user(username, password, warehouseId):
135
    user = DashboardUser()
136
    user.username = username
137
    user.password = password
138
    user.warehouseId = warehouseId
139
    user.addedOn = datetime.datetime.now()
140
    user.status = 0
141
    try:
142
        session.commit()
143
        return True
144
    except:
145
        raise HelperServiceException(101, "Some error while adding user")
146
        return False
147
 
148
def delete_user(username):
149
    user = DashboardUser.get_by(username=username)
150
    if user is None:
151
        return False
152
    user.delete()
766 rajveer 153
    session.commit()
494 rajveer 154
    return True
155
 
2445 chandransh 156
def authenticate_dashboard_user(username, password):
157
    user = DashboardUser.get_by(username=username, password=password)
494 rajveer 158
    if user is None:
2445 chandransh 159
        raise HelperServiceException(101, "No dashboard user found")
494 rajveer 160
 
2445 chandransh 161
    user.loggedOn = datetime.datetime.now()
162
    session.commit()
163
    return user.to_thrift_object()
164
 
494 rajveer 165
def update_password(username, oldPassword, newPassword):
166
    user = DashboardUser.get_by(username=username)
167
    if user is None:
168
        return False
169
    if user.password == oldPassword:
170
        user.password = newPassword
766 rajveer 171
        session.commit()
494 rajveer 172
        return True
766 rajveer 173
    return False
174
 
1891 ankur.sing 175
def get_reports(role):
176
    query = session.query(Report).join(ReportRoleAuthority)
177
    query = query.filter(ReportRoleAuthority.role == role)
178
    reports = query.all()
179
    return reports
180
 
4806 varun.gupt 181
def share_entities(entityIds, email):
182
    if entityIds:
183
        entityIdsStr = ''
184
 
185
        for entityId in entityIds:
186
            entityIdsStr += str(entityId)
187
 
188
        entities_to_be_shared = EntitiesShared()
189
        entities_to_be_shared.entityIds = entityIdsStr
190
        entities_to_be_shared.email = email
191
        entities_to_be_shared.isEmailed = False
192
        session.commit()
193
 
194
def save_quick_link(url, text):
195
    quickLink = QuickLink()
196
    quickLink.url = url
197
    quickLink.text = text
198
    session.commit()
199
 
200
def get_quick_links():
201
    return QuickLink.query.all()
202
 
766 rajveer 203
def close_session():
204
    if session.is_active:
205
        print "session is active. closing it."
3376 rajveer 206
        session.close()
207
 
208
def is_alive():
209
    try:
210
        return True
211
    except:
212
        return False