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)
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})
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)
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)
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)
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)
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)
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)
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)
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 })
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 })
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})
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})
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)
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 })
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})
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)
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)
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)
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)
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)