def run(self, *args, **kwargs):
        Payment = apps.get_model(
            app_label='payments',
            model_name='Payment')
        payment = Payment.objects.get(id=kwargs.get('payment_pk'))

        try:
            attachment = []
            office_wrapper = PDFWrapper(payment.attached_file)
            office_wrapper.set_filename(payment.attached_filename)
            attachment = office_wrapper.serialize()

            email_data = {
                'concept': payment.concept,
                'full_name': payment.full_name,
                'from_email': settings.EMAIL_NOTIFICATIONS_FROM,
                'recipients': [payment.email],
                'bcc': [settings.EMAIL_FINANCE],
                'attachments': attachment,
            }

            mail_handler.send_mail(
                template='payment_received',
                **email_data
            )

        except Exception as e:
            logger.error(e)
            self.retry(countdown=30, max_retries=3)
    def run(self, pk, *args, **kwargs):
        Event = apps.get_model('event', 'Event')
        event = get_object_or_404(Event, pk=pk)

        mail_kwargs = {
            'workshop_name': event.title,
            'created_by': event.created_by_full_name,
        }
        mail_handler.send_mail(
            template='workshop_creation_reminder',
            recipients=settings.EVENT_CREATION_WORKSHOP_REMINDER_RECIPIENTS,
            **mail_kwargs)
Esempio n. 3
0
 def run(self, user_uuid, *args, **kwargs):
     user_wrapper = UserWrapper(uuid=user_uuid)
     mail_kwargs = {
         'user_full_name': user_wrapper.get_full_name(),
         'user_profile_url': user_wrapper.profile_url,
         'comments': kwargs.get('comment', ''),
     }
     mail_handler.send_mail(
         template='event_summit_notification',
         recipients=[settings.EVENT_SUMMIT_DISTRIBUTION_LIST_EMAIL],
         **mail_kwargs,
     )
Esempio n. 4
0
    def run(self, *args, **kwargs):
        Project = apps.get_model('project', 'Project')
        project = Project.objects.get(pk=kwargs.get('project_id'))
        user = get_user_model().objects.get(pk=kwargs.get('user_id'))

        if settings.POPULATOR_MODE and not settings.TEST_MODE:
            return
        user_data = RoleChanged(project, user).get_data()
        email_name = settings.PROJECT_EMAIL_ROLE_CHANGED
        mail_handler.send_mail(
            template=email_name,
            recipients=[user_data.pop('email')],
            **user_data)
Esempio n. 5
0
    def run(self, *args, **kwargs):
        Team = apps.get_model('team', 'Team')
        team = Team.objects.get(pk=kwargs.get('team_id'))
        user = get_user_model().objects.get(pk=kwargs.get('user_id'))

        if settings.POPULATOR_MODE and not settings.TEST_MODE:
            return
        user_data = UserAddedTeamChanged(team, user).get_data()
        email_name = settings.PROJECT_EMAIL_MEMBER_ADDED_TEAM
        mail_handler.send_mail(
            template=email_name,
            recipients=[user_data.pop('email')],
            **user_data)
Esempio n. 6
0
    def run(self, *args, **kwargs):
        Step = apps.get_model('project', 'Step')
        step = Step.objects.get(pk=kwargs.get('step_id'))

        if settings.POPULATOR_MODE and not settings.TEST_MODE:
            return
        for user in step.project.members:
            user_data = StepDateChanged(step, user).get_data()
            email_name = settings.PROJECT_EMAIL_START_CHANGED
            mail_handler.send_mail(
                template=email_name,
                recipients=[user_data.pop('email')],
                **user_data)
Esempio n. 7
0
    def run(self, *args, **kwargs):
        Project = apps.get_model('project', 'Project')
        project = Project.objects.get(pk=kwargs.get('project_id'))

        if settings.POPULATOR_MODE and not settings.TEST_MODE:
            return
        for user in project.members:
            user_data = LocationChanged(project, user).get_data()
            email_name = settings.PROJECT_EMAIL_LOCATION_CHANGED
            mail_handler.send_mail(
                template=email_name,
                recipients=[user_data.pop('email')],
                **user_data)
 def _send_members_email(self, user_from, users_created=[], message=None):
     if settings.POPULATOR_MODE and not settings.TEST_MODE:
         return
     for user in self.members:
         user_data = MemberLaunch(self, user).get_data()
         if message is not None:
             user_data['message'] = message
         if user in users_created:
             user_data['password'] = self.settings.launch[
                 'default_password']
         email_name = settings.PROJECT_EMAIL_MEMBER_LAUNCH
         mail_handler.send_mail(template=email_name,
                                recipients=[user_data.pop('email')],
                                **user_data)
Esempio n. 9
0
    def run(self, *args, **kwargs):
        opportunity_pk = kwargs.get('pk')
        user_pk = kwargs.get('user_pk')
        comment = kwargs.get('comment')
        email_name = settings.OPPORTUNITIES_MAIL_VIEW_CLOSED_MANUALLY
        try:
            opp = Opportunity.objects.get(pk=opportunity_pk)
        except Opportunity.DoesNotExist:
            logger.error('Opportunity does not exist')
            raise Exception()
        try:
            user = User.objects.get(id=user_pk)
        except User.DoesNotExist:
            logger.error('User does not exist')
            raise Exception()

        user_wrapper = UserWrapper(user=user)
        try:
            data = ApplicantNotSelected(opp, user).get_data()
        except Exception as err:
            logger.error(
                'Applicant not selected data exception: {}'.format(err))
            raise Exception()
        data['recipients'] = [user_wrapper.email]
        if comment is not None:
            data['comment'] = comment
        status = mail_handler.send_mail(template=email_name, **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception()
Esempio n. 10
0
    def run(self, *args, **kwargs):
        opportunity_pk = kwargs.get('pk')
        comment = kwargs.get('comment')
        email_name = settings.OPPORTUNITIES_MAIL_VIEW_OPPORTUNITY_REMOVED

        try:
            opp = Opportunity.objects.get(pk=opportunity_pk)
        except Opportunity.DoesNotExist:
            logger.error('Opportunity does not exist')
            raise Exception()
        recipients = self.get_recipients(opp)

        try:
            data = Remove(opp).get_data()
        except Exception as err:
            logger.error('Remove data exception: {}'.format(err))
            raise Exception()
        for recipient in recipients:
            user_data = data.copy()
            user_data['applicant_name'] = recipient.get_full_name()
            user_data['recipients'] = [recipient.email]
            user_data['comment'] = comment or ''
            status = mail_handler.send_mail(
                template=email_name,
                **user_data)
            if not status:
                logger.error('Error sending email to: {}'.format(user_data))
            try:
                self.send_notification(recipient.user, opp)
            except Exception as err:
                logger.error('Send notification exception: {}'.format(err))
Esempio n. 11
0
 def send_email(self, user, conversations, period):
     user_wrapper = UserWrapper(user=user)
     data = {}
     if period == DAILY:
         data['subject_args'] = {'period': 'Daily'}
     else:
         data['subject_args'] = {'period': 'Weekly'}
     data['total'] = sum(map(lambda x: x[1].count(), conversations))
     data['name'] = user_wrapper.get_full_name()
     data['conversations'] = []
     for conversation, messages in conversations:
         url, related_title = get_info_related(conversation, user)
         data_conversation = {}
         data_conversation['total'] = messages.count()
         data_conversation['message'] = messages.first().message
         data_conversation['url'] = url
         title = CONVERSATION_TITLE.get(
             conversation._type).format(related_title)
         data_conversation['title'] = title
         data['conversations'].append(data_conversation)
     data['recipients'] = [user_wrapper.email]
     status = mail_handler.send_mail(template=EMAIL_NAME, **data)
     if not status:
         logger.error('Error sending email to: {}'.format(data))
         raise Exception('Error sending email to: {}'.format(data))
    def run(self, *args, **kwargs):
        opportunity_pk = kwargs.get('pk')
        user_pk = kwargs.get('user_pk')
        email_name = settings.OPPORTUNITIES_MAIL_VIEW_APPLICANT_NOT_SELECTED
        try:
            opp = Opportunity.objects.get(pk=opportunity_pk)
        except Opportunity.DoesNotExist:
            logger.error('Opportunity does not exist')
            raise Exception()
        try:
            user = get_user_model().objects.get(pk=user_pk)
        except get_user_model().DoesNotExist:
            logger.error('Applicant does not exist')
            raise Exception()

        user_wrapper = UserWrapper(user=user)
        try:
            data = ApplicantNotSelected(opp, user).get_data()
        except Exception as err:
            logger.error(
                'Applicant not selected data exception: {}'.format(err))
            raise Exception()
        data['recipients'] = [user_wrapper.email]
        status = mail_handler.send_mail(template=email_name, **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception()
Esempio n. 13
0
    def run(self, *args, **kwargs):
        survey_filled_pk = kwargs.get('pk')

        email_name = settings.SURVEY_RESULT_FOR_USER

        try:
            survey_filled = SurveyFilled.objects.get(pk=survey_filled_pk)
        except SurveyFilled.DoesNotExist:
            logger.error('SurveyFilled does not exist')
            raise Exception()
        translation.activate(survey_filled.language)

        results_data = ResultSerializer(survey_filled.results.all(), many=True).data

        data = {
            'name': survey_filled.name,
            'organization': survey_filled.organization,
            'total': survey_filled.total,
            'survey_name': survey_filled.survey.name,
            'public_url': '/',
            'recipients': [survey_filled.email],
            'results': results_data,
            'lang': survey_filled.language,
        }
        logger.info(data)
        status = mail_handler.send_mail(
            template=email_name,
            **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
Esempio n. 14
0
 def run(self, pk, *args, **kwargs):
     Event = apps.get_model('event', 'Event')
     event = get_object_or_404(Event, pk=pk)
     mail_kwargs = {
         'event_title': event.title,
         'event_type_name': event.type_event_name,
         'event_date': datetime.strftime(event.start, '%d/%m/%Y'),
         'event_status': event.get__status_display(),
         'event_approved': event.is_approved,
         'public_url': '{}{}'.format(
             settings.EVENT_MANAGE_URL,
             event.uuid,
         ),
         'user_full_name': event.main_speaker_data.get('fullName'),
         'user_profile_url': event.main_speaker_data.get('profileUrl'),
     }
     mail_handler.send_mail(
         template='event_manager_notification',
         recipients=self.get_manager_recipients(),
         **mail_kwargs,
     )
Esempio n. 15
0
    def run(self, *args, **kwargs):
        Payment = apps.get_model(app_label='payments', model_name='Payment')
        payment = Payment.objects.get(id=kwargs.get('payment_pk'))
        if payment.is_pending:
            try:
                attachment = []
                notification_url = '{}{}'.format(
                    settings.DOMAIN_NAME,
                    reverse('api:email-notify',
                            kwargs={'hash': payment._hash_code}))
                if payment.attached_file:
                    office_wrapper = PDFWrapper(payment.attached_file)
                    office_wrapper.set_filename(payment.attached_filename)
                    attachment = office_wrapper.serialize()

                email_data = {
                    'notify_webhook': notification_url,
                    'object_id': payment.pk,
                    'content_type_id':
                    ContentType.objects.get_for_model(payment).pk,
                    'concept': payment.concept,
                    'detail': payment.detail,
                    'full_name': payment.full_name,
                    'amount': payment.amount_str,
                    'currency': payment.get_currency_display(),
                    'public_url': payment.url,
                    'from_email': settings.EMAIL_NOTIFICATIONS_FROM,
                    'recipients': [payment.email],
                    'attachments': attachment,
                }

                mail_handler.send_mail(template='new_payment_created',
                                       **email_data)

                payment.attached_file.delete()

            except Exception as e:
                logger.error(e)
                self.retry(countdown=30, max_retries=3)
 def send_mail_to_requester(self, opportunity):
     email_name = settings.OPPORTUNITIES_MAIL_VIEW_CLOSED_BY_POSITIONS
     try:
         data = OpportunityClosed(opportunity).get_data()
     except Exception as err:
         logger.error(
             'Opportunity closed selected data exception: {}'.format(err))
         raise Exception()
     user_wrapper = UserWrapper(user=opportunity.created_by)
     data['recipients'] = [user_wrapper.email]
     status = mail_handler.send_mail(template=email_name, **data)
     if not status:
         logger.error('Error sending email to: {}'.format(data))
         raise Exception()
    def send_email(self, opportunity, applicant):
        email_name = settings.OPPORTUNITIES_MAIL_VIEW_APPLICANT_SELECTED
        user_wrapper = UserWrapper(user=applicant.user)

        try:
            data = ApplicantSelected(applicant).get_data()
        except Exception as err:
            logger.error('Applicant Selected data exception: {}'.format(err))
            raise Exception()
        data['recipients'] = [user_wrapper.email]
        status = mail_handler.send_mail(template=email_name, **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception('Error sending email to: {}'.format(data))
Esempio n. 18
0
    def run(self, pk, *args, **kwargs):
        Event = apps.get_model('event', 'Event')
        event = get_object_or_404(Event, pk=pk)

        mail_kwargs = {
            'event_owner_short_name': event.main_speaker_data.get('shortName'),
            'event_title': event.title,
            'event_type_name': event.type_event_name,
            'event_date': datetime.strftime(event.start, '%d/%m/%Y'),
            'event_approved': event.is_approved,
            'reviewer_user_name': self.get_manager_user().get('fullName'),
            'comments': kwargs.get('comment', ''),
            'public_url': '{}{}'.format(
                settings.EVENT_DETAIL_URL,
                event.uuid,
            )
        }
        mail_handler.send_mail(
            template='event_owner_notification',
            recipients=[event.main_speaker_data.get('email')],
            bcc=self.get_manager_recipients(),
            **mail_kwargs,
        )
 def send_to_applicant(self, opportunity, applicant):
     user_wrapper = UserWrapper(user=applicant.user)
     try:
         data = OpportunityFeedback(applicant).get_data()
     except Exception as err:
         logger.error('Opportunity Feedback data exception: {}'.format(err))
         raise Exception()
     data['recipients'] = [user_wrapper.email]
     data['public_url'] = settings.OPPORTUNITIES_FEEDBACK_URL.format(
         opportunity.pk)
     status = mail_handler.send_mail(
         template=MAIL_VIEW_APPLICANT_REQUESTED_FEEDBACK, **data)
     if not status:
         logger.error('Error sending email to: {}'.format(data))
         raise Exception()
Esempio n. 20
0
    def _notify_by_email(self, recipient, opp):

        if recipient.get('has_signed_marketplace_agreement', True):
            user_data = Create(opp).get_data()
            email_name = settings.OPPORTUNITIES_MAIL_VIEW_NEW_OPPORTUNITY
        else:
            user_data = CreateWithoutAgreementSigned(opp, recipient).get_data()
            email_name = settings.OPPORTUNITIES_MAIL_VIEW_NEW_OPPORTUNITY_WITHOUT_AGREEMENT

        status = mail_handler.send_mail(template=email_name,
                                        recipients=[recipient.get('email')],
                                        **user_data)

        if not status:
            logger.error(
                'NewOpportunityTask - Error sending email to: {}'.format(
                    recipient.get('email')))
 def send_mail_new_message(self, user_from, user_to, opportunity, message):
     value = enabled_config_param(user_to, CONFIG_PARAM_NAME)
     if not value:
         return
     data = self.get_data(opportunity, user_from)
     user_wrapper = UserWrapper(user=user_to)
     data['recipients'] = [user_wrapper.email]
     user_is_manager = opportunity.group and user_to in opportunity.group.managers.all(
     )
     if opportunity.created_by == user_to or user_is_manager:
         data['public_url'] = opportunity.admin_url_public
     else:
         data['public_url'] = settings.OPPORTUNITIES_CHAT_URL.format(
             opportunity.pk)
     data['message'] = message
     status = mail_handler.send_mail(template=MAIL_CHAT_FIRST_MESSAGE,
                                     **data)
     if not status:
         logger.error('Error sending email to {}: {}'.format(user_to, data))
         raise Exception()
    def send_summary(self, applicants):
        recipients = ['*****@*****.**']
        email_name = 'basic_email'

        date = timezone.now().strftime('%Y-%m-%d_%H:%M:%S')
        file = ['report-{}.csv'.format(date), self.get_file(applicants)]
        kwargs = {
            'mail_title': 'Opportunities report',
            'mail_content': 'Date - {}'.format(date),
            'attachments': [file],
            'attachments_parsed': True,
        }

        status = mail_handler.send_mail(template=email_name,
                                        recipients=recipients,
                                        **kwargs)

        if not status:
            logger.error('Error sending email to finance')
            raise Exception()
Esempio n. 23
0
    def run(self, *args, **kwargs):
        opportunity_pk = kwargs.get('pk')
        email_name = MAIL_VIEW_CLOSED_DEADLINE
        try:
            opp = Opportunity.objects.get(pk=opportunity_pk)
        except Opportunity.DoesNotExist:
            logger.error('Opportunity does not exist')
            raise Exception()

        user_wrapper = UserWrapper(user=opp.created_by)
        try:
            data = OpportunityClosed(opp).get_data()
        except Exception as err:
            logger.error('Requester deadline data exception: {}'.format(err))
            raise Exception()
        data['recipients'] = [user_wrapper.email]
        data['public_url'] = settings.OPPORTUNITIES_PUBLIC_URL
        status = mail_handler.send_mail(template=email_name, **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception()
Esempio n. 24
0
    def run(self, *args, **kwargs):
        opportunity_pk = kwargs.get('pk')
        applicant_pk = kwargs.get('applicant_pk')
        email_name = settings.OPPORTUNITIES_MAIL_VIEW_RESPOND_APPLICANT

        try:
            opp = Opportunity.objects.get(pk=opportunity_pk)
            opportunity_creator = UserWrapper(user=opp.created_by)

        except Opportunity.DoesNotExist as err:
            logger.error('Opportunity does not exist')
            raise err

        try:
            applicant = opp.applicants_info.get(pk=applicant_pk)
        except Applicant.DoesNotExist as err:
            logger.error('Applicant does not exist')
            raise err

        try:
            data = NewApplicant(applicant).get_data()
        except Exception as err:
            logger.error('New Applicant data exception: {}'.format(err))
            raise err

        data['recipients'] = [opportunity_creator.email]
        status = mail_handler.send_mail(
            template=email_name,
            **data)
        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception('Error sending email to: {}'.format(data))

        try:
            self.send_notification(opportunity_creator, applicant)
        except Exception as err:
            logger.error('Send notification exception: {}'.format(err))
    def send_reminder_requester(self, opportunity, days):
        user_wrapper = UserWrapper(user=opportunity.created_by)
        try:
            data = OpportunityCloseReminder(opportunity).get_data()
        except Exception as err:
            logger.error(
                'Applicant not selected data exception: {}'.format(err))
            raise Exception()

        duedate_timedelta = days
        data['duedate_timedelta'] = duedate_timedelta
        data['subject_args'] = {
            'duedate_timedelta': days,
        }
        data['recipients'] = [user_wrapper.email]
        if settings.TEST_MODE:
            self.stdout.write('{}'.format(data))
        if settings.POPULATOR_MODE:
            return
        status = mail_handler.send_mail(template=EMAIL_NAME, **data)

        if not status:
            logger.error('Error sending email to: {}'.format(data))
            raise Exception()
    def send_summary(self, total, roles, opportunities):
        recipients = _get_recipients()

        data_not_signed = self.get_data_not_signed(total, roles, opportunities)
        data_signed = self.get_data_signed(total, roles, opportunities)

        for recipient in recipients:
            if recipient.get('has_signed_marketplace_agreement', True):
                email_name = EMAIL_NAME_SIGNED
                data = data_signed.copy()
            else:
                email_name = EMAIL_NAME_NOT_SIGNED
                data = data_not_signed.copy()

            data['name'] = recipient.get('short_name')
            data['subject_args'] = {'total': str(total)}
            status = mail_handler.send_mail(
                template=email_name,
                recipients=[recipient.get('email')],
                **data)

            if not status:
                logger.error('Error sending email to: {}'.format(data))
                raise Exception()