コード例 #1
0
 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()
コード例 #2
0
	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
コード例 #3
0
 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()
コード例 #4
0
	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
コード例 #5
0
 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()
コード例 #6
0
 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')
コード例 #7
0
 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()
コード例 #8
0
    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()
コード例 #9
0
 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()
コード例 #10
0
 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()
コード例 #11
0
    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()