def resend_certificate(self, payloads): response = ResponseBuilder() emailservice = EmailService() mail_template = EmailHackaton("devsummit-hackathon-certificate.html") checked_in = db.session.query(UserTicket.user_id).join(CheckIn).all() checkins = [i[0] for i in checked_in] print(checkins) user = db.session.query(User).filter( or_(User.id == payloads['user_id'], User.email == payloads['user_id'])).first() if user is None: return response.set_data(None).set_message( 'user not found.').set_error(True).build() if user.id not in checkins: return response.set_data(None).set_message( 'user found but did not check in.').set_error(True).build() extra = "<br/><br/><br/>Link to your downloadable certificate: <a href='https://api.devsummit.io/certificate-%s.pdf'>here</a>" % user.id template = mail_template.build(user.first_name + ' ' + user.last_name, extra) email = emailservice.set_recipient(user.email).set_subject( 'Indonesia Developer Summit 2017').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(None).set_message('email has been sent to: ' + user.email).build()
def send_reset_password_email(self, user): token = user.generate_auth_token(1800) token = token.decode('utf-8') email_subject = "Devsummit: Password Reset" message = "<h4>You just tried to reset your password</h4><h4>Click here to change your password</h4><a href='%sreset-password?action=reset_password&token=%s'>%sreset-password?action=reset_password&token=%s</a>" %(request.url_root, token, request.url_root, token) emailservice = EmailService() email = emailservice.set_recipient(user.email).set_subject(email_subject).set_sender(current_app.config['MAIL_DEFAULT_SENDER']).set_html(message).build() mail.send(email) return True
def email_certificate(self, payload): response = ResponseBuilder() emailservice = EmailService() mail_template = EmailHackaton("devsummit-hackathon-certificate.html") emailservice = EmailService() extra = "<br/>Link to your downloadable certificate: <a href='https://api.devsummit.io/certificate-email-%s.pdf'>here</a>" % payload[ 'name'] template = mail_template.build(payload['name'], extra) email = emailservice.set_recipient(payload['email']).set_subject( 'Indonesia Developer Summit 2017 Hackathon').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(None).set_message('Email sent').build()
def send_confirmation_email (self, user): # generate token that expire in 1 hours token = user.generate_auth_token(3600) # generate url parameter params = "?token={}".format(token.decode('utf-8')) url = Helper().url_helper(params, current_app.config['EMAIL_HANDLER_ROUTE']) # generate email attributes email_subject = "DevSummit: Email Address Verification" message_body = ("Dear " + user.username + ", <br /> <br/>" + "Please confirm your email address by click in this provided link in one hour: <br />" + url + "<br /> <br/> Regards, <br /> DevSummit Team") receiver = user.email email = EmailService() email = email.set_subject(email_subject).set_html(message_body).set_sender(current_app.config['MAIL_DEFAULT_SENDER']).set_recipient(receiver).build() mail.send(email) return True
def resend_order_email(self, payload): response = ResponseBuilder() emailservice = EmailService() mail_template = EmailPurchase() order = db.session.query(Order).filter_by( id=payload['order_id']).first() if order is None: return response.set_data(None).set_error(True).set_message( 'Order not found').build() # send email template = mail_template.set_invoice_path(order.id).build() email = emailservice.set_recipient(order.user.email).set_subject( 'Congratulations !! you received hackaton code').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(None).set_message('Email sent').build()
def send_email(request, user): body = request.json['body'] if 'body' in request.json else None recipient = request.json[ 'recipient'] if 'recipient' in request.json else None title = request.json['title'] if 'title' in request.json else None email = Message(subject=title + '-' + user['first_name'] + ' ' + user['last_name']) email.recipients = [recipient] email.html = body try: mail.send(email) return BaseController.send_response_api( {'email_sent': True}, 'email sent successfully to: ' + recipient) except Exception as e: return BaseController.send_error_api( {'email_sent': False}, 'some error occured when sending email')
def resend_email(self, payloads): response = ResponseBuilder() emailservice = EmailService() hackaton_proposal = db.session.query(HackatonProposal).filter( HackatonProposal.order_id == payloads['order_id']).first() if hackaton_proposal is None: return response.set_error(True).set_data(None).set_message( 'proposal not found').build() mail_template = EmailHackaton("devsummit-hackathon.html") user = hackaton_proposal.order.user template = mail_template.build(user.first_name + ' ' + user.last_name) email = emailservice.set_recipient(user.email).set_subject( 'Indonesia Developer Summit 2017 Hackathon').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(None).set_message('email has been sent to: ' + user.email).build()
def send_certificate(self): response = ResponseBuilder() emailservice = EmailService() mail_template = EmailHackaton("devsummit-hackathon-certificate.html") checked_in = db.session.query(UserTicket.user_id).join(CheckIn).all() hackers = db.session.query(User).filter( or_(User.role_id == ROLE['hackaton'], User.role_id == ROLE['user']), User.id.in_(checked_in)).all() if hackers is None: return response.set_data(None).set_message( 'user not found').set_error(True).build() for user in hackers: emailservice = EmailService() extra = "<br/>Link to your downloadable certificate: <a href='https://api.devsummit.io/certificate-%s.pdf'>here</a>" % user.id template = mail_template.build( user.first_name + ' ' + user.last_name, extra) email = emailservice.set_recipient(user.email).set_subject( 'Indonesia Developer Summit 2017 Hackathon').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(None).set_message( 'email has been sent').build()
def create(self, payloads): response = ResponseBuilder() emailservice = EmailService() hackaton_proposal = HackatonProposal() hackaton_proposal.github_link = payloads['github_link'] hackaton_proposal.order_id = payloads['order_id'] hackaton_proposal.status = 'pending' db.session.add(hackaton_proposal) try: db.session.commit() mail_template = EmailHackaton("devsummit-hackathon.html") user = hackaton_proposal.order.user template = mail_template.build(user.first_name + ' ' + user.last_name) email = emailservice.set_recipient( hackaton_proposal.order.user.email).set_subject( 'Indonesia Developer Summit 2017 Hackathon').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) return response.set_data(hackaton_proposal.as_dict()).set_message( 'proposal succesfully created').build() except SQLAlchemyError as e: data = e.orig.args return response.set_data(data).set_error(True).build()
def confirm(self, payload, user_id, request): response = ResponseBuilder() emailservice = EmailService() transaction_exist = db.session.query(Payment).filter_by( transaction_id=payload['transaction_id']).first() if transaction_exist: return response.set_error(True).set_message( 'this transaction have been used before').set_data( None).build() paypal_details = self.get_paypal_detail(payload['transaction_id']) if paypal_details == False: return response.set_error(True).set_message( 'Transaction id not found').set_data(None).build() paypal_details_amount = int( paypal_details['transactions'][0]['amount']['total'].split('.')[0]) order_ = db.session.query(Order).filter_by( id=payload['order_id']).first() if order_ is None: return response.set_error(True).set_data(None).set_message( 'Order not found').build() user = order_.user order_details = db.session.query(OrderDetails).filter_by( order_id=payload['order_id']).all() check_total = 0 discount = 0 for order in order_details: check_total += order.price * order.count if order_.referal_id is not None: discount = check_total * order_.referal.discount_amount if check_total - discount <= paypal_details_amount: payment_exist = db.session.query(Payment).filter_by( transaction_id=payload['transaction_id']).first() if payment_exist: return response.set_data(None).set_message( 'Payment had been completed!').set_error(True).build() payment = Payment() payment.order_id = payload['order_id'] payment.transaction_id = payload['transaction_id'] payment.gross_amount = paypal_details_amount payment.payment_type = 'paypal' payment.transaction_status = "captured" try: db.session.add(payment) db.session.commit() except SQLAlchemyError as e: data = e.orig.args return response.set_data(None).set_message(data).set_error( True).build() items = db.session.query(OrderDetails).filter_by( order_id=payment.order_id).first() url_invoice = request.host + '/invoices/' + order_.id if items.ticket.type == TICKET_TYPES['exhibitor']: payload = {} payload['user_id'] = user.id payload['ticket_id'] = items.ticket_id UserTicketService().create(payload) self.create_booth(user) user_query = db.session.query(User).filter_by(id=user.id) user_query.update({'role_id': ROLE['booth']}) redeem_payload = {} redeem_payload['ticket_id'] = items.ticket_id redeem_payload['codeable_id'] = user.id RedeemCodeService().purchase_user_redeems(redeem_payload) get_codes = db.session.query(RedeemCode).filter_by( codeable_type='user', codeable_id=user.id).all() code = [] for get_code in get_codes: code.append("<li>%s</li>" % (get_code.code)) li = ''.join(code) template = "<h3>You have complete the payment with order_id = %s</h3><h4>Here are the redeem codes for claiming full 3 days ticket at devsummit event as described in the package information : </h4>%s<h3>Use the above code to claim your ticket</h3><h3>Thank you for your purchase</h3>" % ( order_.id, li) template += "<h4>And here is your Invoice:</h4>" template += '<a href="' + url_invoice + '">Klik here to show the invoice</a>' email = emailservice.set_recipient(user.email).set_subject( 'Congratulations !! you received exhibitor code' ).set_sender('*****@*****.**').set_html( template).build() mail.send(email) if items.ticket.type == TICKET_TYPES['hackaton']: payload = {} payload['user_id'] = user.id payload['ticket_id'] = items.ticket_id UserTicketService.create(payload) self.create_hackaton_team(user, items.ticket_id) user_query = db.session.query(User).filter_by(id=user.id) user_query.update({'role_id': ROLE['hackaton']}) hacker_team = db.session.query(HackerTeam).order_by( HackerTeam.created_at.desc()).first() redeem_payload = {} redeem_payload['codeable_type'] = TICKET_TYPES['hackaton'] redeem_payload['codeable_id'] = hacker_team.id, redeem_payload['count'] = items.ticket.quota RedeemCodeService().create(redeem_payload) get_codes = db.session.query(RedeemCode).filter_by( codeable_type='hackaton', codeable_id=hacker_team.id).all() code = [] for get_code in get_codes: code.append("<li>%s</li>" % (get_code.code)) li = ''.join(code) template = "<h3>You have complete the payment with order_id = %s</h3><h4>Here your redeem codes : </h4>%s<h3>Share the above code to your teammate, and put it into redeem code menu to let them join your team and claim their ticket</h3><h3>Thank you for your purchase</h3>" % ( order_.id, li) template += "<h4>And here is your Invoice:</h4>" template += '<a href="' + url_invoice + '">Klik here to show the invoice</a>' email = emailservice.set_recipient(user.email).set_subject( 'Congratulations !! you received hackaton code' ).set_sender('*****@*****.**').set_html( template).build() mail.send(email) else: result = None for order in order_details: for i in range(0, order.count): payload = {} payload['user_id'] = user.id payload['ticket_id'] = order.ticket_id result = UserTicketService().create(payload) if (result and (not result['error'])): template = "<h3>Congratulation! you have the previlege to attend Indonesia Developer Summit</h3>" template += "<h4>Here is your Invoice:</h4>" template += '<a href="' + url_invoice + '">Klik here to show the invoice</a>' template += "<h5>Thank you.</h5>" email = emailservice.set_recipient(user.email).set_subject( 'Devsummit Ticket Invoice').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) confirmed_order = db.session.query(Order).filter_by( id=payment.order_id) confirmed_order.update({'status': 'paid'}) db.session.commit() send_notification = FCMService().send_single_notification( 'Payment Status', 'Your payment has been confirmed', user.id, ROLE['admin']) return response.set_data(None).set_message( 'Purchase Completed').build() else: return response.set_error(True).set_message( 'Paypal amount did not match').build()
def verify(self, id, request, hacker_team_name=None): response = ResponseBuilder() emailservice = EmailService() orderverification_query = db.session.query( OrderVerification).filter_by(id=id) orderverification = orderverification_query.first() order = orderverification.order if orderverification.is_used is not 1: user_query = db.session.query(User).filter_by( id=orderverification.user_id) user = user_query.first() items = db.session.query(OrderDetails).filter_by( order_id=orderverification.order_id).all() url_invoice = request.url_root + '/invoices/' + orderverification.order_id if items[0].ticket.type == TICKET_TYPES['exhibitor']: payload = {} payload['user_id'] = user.id payload['ticket_id'] = items[0].ticket_id UserTicketService().create(payload) self.create_booth(user, items[0].ticket.ticket_type) user_query.update({ 'role_id': ROLE['booth'], 'updated_at': datetime.datetime.now() }) redeem_payload = {} redeem_payload['ticket_id'] = items[0].ticket_id redeem_payload['codeable_id'] = user.id RedeemCodeService().purchase_user_redeems(redeem_payload) get_codes = db.session.query(RedeemCode).filter_by( codeable_type='user', codeable_id=user.id).all() mail_template = EmailPurchase() template = mail_template.set_invoice_path( order.id).set_redeem_code(get_codes).build() email = emailservice.set_recipient(user.email).set_subject( 'Congratulations !! you received exhibitor code' ).set_sender('*****@*****.**').set_html( template).build() mail.send(email) elif items[0].ticket.type == TICKET_TYPES['hackaton']: payload = {} payload['user_id'] = user.id payload['ticket_id'] = items[0].ticket_id UserTicketService().create(payload) user_query.update({ 'role_id': ROLE['hackaton'], 'updated_at': datetime.datetime.now() }) send_notification = FCMService().send_single_notification( 'Hackaton Status', 'Congratulations you are accepted to join our hackaton. Further information can be seen at your registered email.', user.id, ROLE['admin']) mail_template = EmailPurchase() template = mail_template.set_invoice_path(order.id).build() email = emailservice.set_recipient(user.email).set_subject( 'Congratulations!! you are accepted to join Indonesia Developer Summit 2017 hackaton' ).set_sender('*****@*****.**').set_html( template).build() mail.send(email) else: result = None for item in items: for i in range(0, item.count): payload = {} payload['user_id'] = user.id payload['ticket_id'] = item.ticket_id result = UserTicketService().create(payload) if (result and (not result['error'])): mail_template = EmailPurchase() template = mail_template.set_invoice_path(order.id).build() email = emailservice.set_recipient(user.email).set_subject( 'Devsummit Ticket Invoice').set_sender( '*****@*****.**').set_html(template).build() mail.send(email) orderverification_query.update({ 'is_used': 1, 'updated_at': datetime.datetime.now() }) payment_query = db.session.query(Payment).filter_by( order_id=orderverification.order_id) payment_query.update({ 'updated_at': datetime.datetime.now(), 'transaction_status': 'captured' }) completed_order = db.session.query(Order).filter_by( id=orderverification.order_id) completed_order.update({ 'updated_at': datetime.datetime.now(), 'status': 'paid' }) db.session.commit() send_notification = FCMService().send_single_notification( 'Payment Status', 'Your payment has been verified', user.id, ROLE['admin']) return response.set_data(None).set_message( 'ticket purchased').build() else: return response.set_data(None).set_error(True).set_message( 'This payment has already verified').build()