Ejemplo n.º 1
0
def notify_freelancer_on_decline(sender, invitation, **kwargs):
    "Notifies the freelancer when their job application is declined."
    subject = 'Unsuccessful application for job for %s' % \
                invitation.jobrequest.reference_number
    content = render_to_string(
        'booking/email/includes/freelancer_invitation_declined.html',
        {'object': invitation.jobrequest})
    send_mail(invitation.freelancer.user.email,
              subject,
              'email/base',
              {'title': 'Your application was unsuccessful',
               'content': content},
              from_email=settings.BOOKINGS_FROM_EMAIL)

        # Notification for app
    Notification.objects.create(
            message='Your application was unsuccessful.',
            category='freelancer_declined',
            related_object=invitation.jobrequest,
            user=invitation.freelancer.user)

    send_sms(invitation.freelancer.user,
             render_to_string('booking/sms/freelancer_declined.txt',
                              {'object': invitation,
                               'job_request': invitation.jobrequest}),
             invitation.jobrequest)
Ejemplo n.º 2
0
def notify_admin_when_invitation_applied(sender, invitation, **kwargs):
    """Notifies the admin when a job request is applied for.
    """
    job_request = invitation.jobrequest

    if job_request.has_enough_applications:
        subject = 'Job request %s now has enough applications' % \
                job_request.reference_number

        content = render_to_string(
            'booking/email/includes/admin_enough_applications.html',
            {'object': job_request}
        )
    else:
        # Just the regular notification
        subject = 'New application for job request %s' % \
                job_request.reference_number

        content = render_to_string(
            'booking/email/includes/admin_invitation_applied.html',
            {'object': job_request,
             'freelancer': invitation.freelancer}
        )

    send_mail(settings.BOOKINGS_EMAIL,
                  subject,
                  'email/base',
                  {'title': subject,
                   'content': content})
Ejemplo n.º 3
0
    def send_to_recipient(self, recipient, recipient_type):
        "Sends reminders to a single recipient."
        content = render_to_string(
            'reminder/email/includes/jobrequest_reminder_%s.html' \
                                                        % recipient_type,
            {'object': self.job_request,
             'base_url': settings.BASE_URL})

        send_mail(recipient.user.email,
              self.title,
              'email/base',
              {'title': self.title,
               'content': content,
               'bookings_email': settings.BOOKINGS_EMAIL},
              from_email=settings.BOOKINGS_FROM_EMAIL)

        Notification.objects.create(
                message=self.title,
                category='%s_reminder' % recipient_type,
                related_object=self.job_request,
                user=recipient.user)

        # Only send reminders to freelancers
        if recipient_type == 'freelancer':
            if self.sms_template_name:
                send_sms(recipient.user, self.get_sms_message(),
                         self.job_request)
Ejemplo n.º 4
0
def notify_freelancer_on_invitation(sender, invitation, **kwargs):
    "Notifies the freelancer when they are invited to book a job."
    title = 'A new job was just posted'
    content = render_to_string(
        'booking/email/includes/freelancer_invitation.html',
        {
            'object': invitation,
            'job_request': invitation.jobrequest
         }
    )
    send_mail(invitation.freelancer.user.email,
              title,
              'email/base',
              {'title': title,
               'content': content},
              from_email=settings.BOOKINGS_FROM_EMAIL)

    # Create notification
    Notification.objects.create(
            message='A new job was just posted.',
            category='freelancer_invitation',
            related_object=invitation.jobrequest,
            user=invitation.freelancer.user)


    if(invitation.freelancer.is_active):
        send_sms(invitation.freelancer.user,
                 render_to_string('booking/sms/freelancer_invitation.txt',
                                  {'object': invitation,
                                   'job_request': invitation.jobrequest}),
                 invitation.jobrequest)
Ejemplo n.º 5
0
def notify_client_on_jobrequest_cancelled(sender, instance, name, source,
                                          target, **kwargs):
    """Sends a notification email to the client when a job request
    is cancelled."""
    if isinstance(instance, JobRequest) and \
                                        target == JobRequest.STATUS_CANCELLED:
        content = render_to_string(
            'job/email/includes/jobrequest_cancelled.html', {
                'object': instance,
                'bookings_email': settings.BOOKINGS_EMAIL
            })
        send_mail(instance.client.user.email,
                  'Your job request has been cancelled',
                  'email/base', {
                      'title': 'Your job request has been cancelled',
                      'content': content,
                      'bookings_email': settings.BOOKINGS_EMAIL
                  },
                  from_email=settings.BOOKINGS_FROM_EMAIL)

        # Create notification
        message = 'Your job request for a %s has been cancelled.' \
                                                % instance.service
        Notification.objects.create(message=message,
                                    category='client_job_request_cancelled',
                                    related_object=instance,
                                    user=instance.client.user)
Ejemplo n.º 6
0
    def send_to_recipient(self, recipient, recipient_type):
        "Sends reminders to a single recipient."
        content = render_to_string(
            'reminder/email/includes/jobrequest_reminder_%s.html' \
                                                        % recipient_type,
            {'object': self.job_request,
             'base_url': settings.BASE_URL})

        send_mail(recipient.user.email,
                  self.title,
                  'email/base', {
                      'title': self.title,
                      'content': content,
                      'bookings_email': settings.BOOKINGS_EMAIL
                  },
                  from_email=settings.BOOKINGS_FROM_EMAIL)

        Notification.objects.create(message=self.title,
                                    category='%s_reminder' % recipient_type,
                                    related_object=self.job_request,
                                    user=recipient.user)

        # Only send reminders to freelancers
        if recipient_type == 'freelancer':
            if self.sms_template_name:
                send_sms(recipient.user, self.get_sms_message(),
                         self.job_request)
Ejemplo n.º 7
0
def notifications_on_job_request_opened(sender, instance, name, source, target,
                                        **kwargs):
    "Sends notifies when a new job request is opened."
    if isinstance(instance, JobRequest) and name == 'open':

        # First, notify the bookings email address
        subject = 'New job request %s' % instance.reference_number
        send_mail(
            settings.BOOKINGS_EMAIL, subject, 'email/base', {
                'title': 'New job request',
                'content': summary_for_email(instance, 'admin')
            })

        # Next, send a confirmation email to the client
        send_mail(
            instance.client.user.email,
            'Thank you for your booking',
            'email/base', {
                'title':
                'Thank you for your booking',
                'content':
                render_to_string('job/email/includes/jobrequest_created.html',
                                 {'object': instance}),
                'bookings_email':
                settings.BOOKINGS_EMAIL
            },
            from_email=settings.BOOKINGS_FROM_EMAIL)
Ejemplo n.º 8
0
def notify_client_on_jobrequest_cancelled(sender, instance, name,
                                          source, target, **kwargs):
    """Sends a notification email to the client when a job request
    is cancelled."""
    if isinstance(instance, JobRequest) and \
                                        target == JobRequest.STATUS_CANCELLED:
            content = render_to_string(
                'job/email/includes/jobrequest_cancelled.html',
                {'object': instance,
                 'bookings_email': settings.BOOKINGS_EMAIL
                 })
            send_mail(instance.client.user.email,
                  'Your job request has been cancelled',
                  'email/base',
                  {'title': 'Your job request has been cancelled',
                   'content': content,
                   'bookings_email': settings.BOOKINGS_EMAIL},
                  from_email=settings.BOOKINGS_FROM_EMAIL)

            # Create notification
            message = 'Your job request for a %s has been cancelled.' \
                                                    % instance.service
            Notification.objects.create(
                    message=message,
                    category='client_job_request_cancelled',
                    related_object=instance,
                    user=instance.client.user)
Ejemplo n.º 9
0
def notify_freelancer_on_booking(sender, booking, **kwargs):
    "Notifies the freelancer when a booking is created."
    subject = 'Confirmation of booking for %s' % \
                booking.jobrequest.reference_number
    content = render_to_string(
        'booking/email/includes/freelancer_booking_confirmation.html',
        {'object': booking.jobrequest})
    send_mail(booking.freelancer.user.email,
              subject,
              'email/base',
              {'title': 'Confirmation of booking',
               'content': content},
              from_email=settings.BOOKINGS_FROM_EMAIL)

    # Notification for app
    Notification.objects.create(
            message='Your booking has been confirmed.',
            category='freelancer_booked',
            related_object=booking.jobrequest,
            user=booking.freelancer.user)

    send_sms(booking.freelancer.user,
             render_to_string('booking/sms/freelancer_accepted.txt',
                              {'object': booking,
                               'job_request': booking.jobrequest}),
             booking.jobrequest)
Ejemplo n.º 10
0
def notify_admin_on_client_created(sender, instance, created, **kwargs):
    "Notifies the admin when a client signs up."
    if created and isinstance(instance, Client):
        subject = 'New client sign up: %s' % instance.get_full_name()
        content = render_to_string('client/email/includes/client_created.html',
                                   {'object': instance})
        send_mail(settings.CONTACT_EMAIL, subject, 'email/base', {
            'title': subject,
            'content': content
        })
Ejemplo n.º 11
0
def welcome_client_on_sign_up(sender, instance, created, **kwargs):
    "Sends a welcome email when a client signs up."
    if created and isinstance(instance, Client):
        subject = 'Welcome to BuzzHire!'
        content = render_to_string('client/email/includes/client_welcome.html',
                                   {'object': instance})
        send_mail(instance.user.email, subject, 'email/base', {
            'title': subject,
            'content': content
        })
Ejemplo n.º 12
0
def welcome_client_on_sign_up(sender, instance, created, **kwargs):
    "Sends a welcome email when a client signs up."
    if created and isinstance(instance, Client):
        subject = 'Welcome to BuzzHire!'
        content = render_to_string(
            'client/email/includes/client_welcome.html',
            {'object': instance}
        )
        send_mail(instance.user.email,
                  subject,
                  'email/base',
                  {'title': subject,
                   'content': content})
Ejemplo n.º 13
0
def notify_admin_on_client_created(sender, instance, created, **kwargs):
    "Notifies the admin when a client signs up."
    if created and isinstance(instance, Client):
        subject = 'New client sign up: %s' % instance.get_full_name()
        content = render_to_string(
            'client/email/includes/client_created.html',
            {'object': instance}
        )
        send_mail(settings.CONTACT_EMAIL,
                  subject,
                  'email/base',
                  {'title': subject,
                   'content': content})
Ejemplo n.º 14
0
def notify_freelancer_on_apply(sender, invitation, **kwargs):
    "Notifies the freelancer when they apply for a job."
    subject = 'You have now applied for %s' % \
                invitation.jobrequest.reference_number
    content = render_to_string(
        'booking/email/includes/freelancer_invitation_applied.html',
        {'object': invitation.jobrequest})
    send_mail(invitation.freelancer.user.email,
              subject,
              'email/base',
              {'title': 'We have received your application',
               'content': content},
              from_email=settings.BOOKINGS_FROM_EMAIL)
Ejemplo n.º 15
0
def notify_personnel_on_freelancer_created(sender, instance, created,
                                           **kwargs):
    """Notifies the staff responsible for personnel (i.e. the jobs email)
    when a freelancer is created.
    """
    if created and isinstance(instance, Freelancer):
        subject = 'New freelancer sign up: %s' % instance.get_full_name()
        content = render_to_string(
            'freelancer/email/includes/freelancer_created.html',
            {'object': instance})
        send_mail(settings.JOBS_EMAIL, subject, 'email/base', {
            'title': subject,
            'content': content
        })
Ejemplo n.º 16
0
def notify_personnel_on_freelancer_created(sender, instance, created, **kwargs):
    """Notifies the staff responsible for personnel (i.e. the jobs email)
    when a freelancer is created.
    """
    if created and isinstance(instance, Freelancer):
        subject = 'New freelancer sign up: %s' % instance.get_full_name()
        content = render_to_string(
            'freelancer/email/includes/freelancer_created.html',
            {'object': instance}
        )
        send_mail(settings.JOBS_EMAIL,
                  subject,
                  'email/base',
                  {'title': subject,
                   'content': content})
Ejemplo n.º 17
0
def prompt_client_and_drivers_for_feedback(sender, instance, name, source,
                                           target, **kwargs):
    """Emails the client and the drivers for feedback, when a job request
    is finished."""
    if isinstance(instance, JobRequest) and \
                                    target == JobRequest.STATUS_COMPLETE:

        # Email client
        content = render_to_string(
            'feedback/email/includes/feedback_prompt.html', {
                'object': instance,
                'client': instance.client
            })

        send_mail(instance.client.user.email,
                  'Tell us how it went',
                  'email/base', {
                      'title': 'Tell us how it went',
                      'content': content,
                      'bookings_email': settings.BOOKINGS_EMAIL
                  },
                  from_email=settings.BOOKINGS_FROM_EMAIL)

        # Notification for app
        Notification.objects.create(message='Tell us how it went.',
                                    category='client_feedback_request',
                                    related_object=instance,
                                    user=instance.client.user)

        # Email freelancers
        content = render_to_string(
            'feedback/email/includes/feedback_prompt.html',
            {'object': instance})
        recipients = [booking.freelancer.user.email \
                                    for booking in instance.bookings.all()]

        send_mail(recipients,
                  'Tell us how it went',
                  'email/base', {
                      'title': 'Tell us how it went',
                      'content': content,
                      'bookings_email': settings.BOOKINGS_EMAIL
                  },
                  from_email=settings.BOOKINGS_FROM_EMAIL)
Ejemplo n.º 18
0
def prompt_client_and_drivers_for_feedback(sender, instance, name,
                                          source, target, **kwargs):
    """Emails the client and the drivers for feedback, when a job request
    is finished."""
    if isinstance(instance, JobRequest) and \
                                    target == JobRequest.STATUS_COMPLETE:

        # Email client
        content = render_to_string(
            'feedback/email/includes/feedback_prompt.html',
            {'object': instance,
             'client': instance.client})

        send_mail(instance.client.user.email,
              'Tell us how it went',
              'email/base',
              {'title': 'Tell us how it went',
               'content': content,
               'bookings_email': settings.BOOKINGS_EMAIL},
               from_email=settings.BOOKINGS_FROM_EMAIL)

        # Notification for app
        Notification.objects.create(
            message='Tell us how it went.',
            category='client_feedback_request',
            related_object=instance,
            user=instance.client.user)

        # Email freelancers
        content = render_to_string(
            'feedback/email/includes/feedback_prompt.html',
            {'object': instance})
        recipients = [booking.freelancer.user.email \
                                    for booking in instance.bookings.all()]

        send_mail(recipients,
              'Tell us how it went',
              'email/base',
              {'title': 'Tell us how it went',
               'content': content,
               'bookings_email': settings.BOOKINGS_EMAIL},
               from_email=settings.BOOKINGS_FROM_EMAIL)
Ejemplo n.º 19
0
def notify_client_on_job_request_changed(sender, instance, changed_data,
                                         silent, **kwargs):
    """Notifies the client if their job request is edited by a staff member.
    """
    if not silent:
        content = render_to_string(
            'job/email/includes/jobrequest_changed.html', {'object': instance})
        send_mail(instance.client.user.email,
                  'Your job request has been changed',
                  'email/base', {
                      'title': 'Your job request has been changed',
                      'content': content,
                      'bookings_email': settings.BOOKINGS_EMAIL
                  },
                  from_email=settings.BOOKINGS_FROM_EMAIL)

        # Notification for app
        Notification.objects.create(
            message='Your job request has been changed.',
            category='client_job_request_changed',
            related_object=instance,
            user=instance.client.user)
Ejemplo n.º 20
0
def notify_client_on_job_request_changed(sender, instance,
                                         changed_data, silent, **kwargs):
    """Notifies the client if their job request is edited by a staff member.
    """
    if not silent:
        content = render_to_string(
            'job/email/includes/jobrequest_changed.html',
            {'object': instance})
        send_mail(instance.client.user.email,
              'Your job request has been changed',
              'email/base',
              {'title':
               'Your job request has been changed',
               'content': content,
               'bookings_email': settings.BOOKINGS_EMAIL},
              from_email=settings.BOOKINGS_FROM_EMAIL)

        # Notification for app
        Notification.objects.create(
                message='Your job request has been changed.',
                category='client_job_request_changed',
                related_object=instance,
                user=instance.client.user)
Ejemplo n.º 21
0
def notifications_on_job_request_opened(sender, instance, name,
                                source, target, **kwargs):
    "Sends notifies when a new job request is opened."
    if isinstance(instance, JobRequest) and name == 'open':

            # First, notify the bookings email address
            subject = 'New job request %s' % instance.reference_number
            send_mail(settings.BOOKINGS_EMAIL,
                      subject,
                      'email/base',
                      {'title': 'New job request',
                       'content': summary_for_email(instance, 'admin')
                    })

            # Next, send a confirmation email to the client
            send_mail(instance.client.user.email,
                  'Thank you for your booking',
                  'email/base',
                  {'title': 'Thank you for your booking',
                   'content': render_to_string(
                            'job/email/includes/jobrequest_created.html',
                            {'object': instance}),
                   'bookings_email': settings.BOOKINGS_EMAIL},
                  from_email=settings.BOOKINGS_FROM_EMAIL)