def contact_project_volunteer(request, application_id): if not request.user.is_authenticated(): return HttpResponse(status=401) user = get_request_contributor(request) volunteer_relation = VolunteerRelation.objects.get(id=application_id) project = volunteer_relation.project body = json.loads(request.body) subject = body['subject'] message = body['message'] # TODO: Condense common code between this and contact_project_volunteers if not user.email_verified or not is_co_owner_or_owner(user, project): return HttpResponse(status=403) email_subject = '{project}: {subject}'.format(project=project.project_name, subject=subject) email_template = HtmlEmailTemplate(use_signature=False) \ .paragraph('\"{message}\" - {firstname} {lastname}'.format( message=message, firstname=user.first_name, lastname=user.last_name)) \ .paragraph('To reply, email at {email}'.format(email=user.email)) send_to_project_volunteer(volunteer_relation, email_subject, email_template) return HttpResponse(status=200)
def contact_project_volunteers(request, project_id): if not request.user.is_authenticated(): return HttpResponse(status=401) user = get_request_contributor(request) body = json.loads(request.body) subject = body['subject'] message = body['message'] project = Project.objects.get(id=project_id) if not user.email_verified or not is_co_owner_or_owner(user, project): return HttpResponse(status=403) volunteers = VolunteerRelation.get_by_project(project) email_subject = '{project}: {subject}'.format(project=project.project_name, subject=subject) email_template = HtmlEmailTemplate(use_signature=False) \ .paragraph('\"{message}\" - {firstname} {lastname}'.format( message=message, firstname=user.first_name, lastname=user.last_name)) \ .paragraph('To reply, email at {email}'.format(email=user.email)) for volunteer in volunteers: # TODO: See if we can send emails in a batch # https://docs.djangoproject.com/en/2.2/topics/email/#topics-sending-multiple-emails send_to_project_volunteer(volunteer, email_subject, email_template) return HttpResponse(status=200)
def dismiss_project_volunteer(request, application_id): volunteer_relation = VolunteerRelation.objects.get(id=application_id) if volunteer_operation_is_authorized(request, volunteer_relation): body = json.loads(request.body) message = body['dismissal_message'] email_body = 'The owner for {project_name} has removed you from the project for the following reason:\n{message}'.format( project_name=volunteer_relation.project.project_name, message=message) send_to_project_volunteer(volunteer_relation=volunteer_relation, subject='You have been dismissed from ' + volunteer_relation.project.project_name, body=email_body) volunteer_relation.update_project_timestamp() volunteer_relation.delete() return HttpResponse(status=200) else: raise PermissionDenied()
def reject_project_volunteer(request, application_id): volunteer_relation = VolunteerRelation.objects.get(id=application_id) if volunteer_operation_is_authorized(request, volunteer_relation): body = json.loads(request.body) message = body['rejection_message'] email_body_template = 'The project owner for {project_name} has declined your application for the following reason:\n{message}' email_body = email_body_template.format(project_name=volunteer_relation.project.project_name,message=message) send_to_project_volunteer(volunteer_relation=volunteer_relation, subject='Your application to join ' + volunteer_relation.project.project_name, body=email_body) volunteer_relation.update_project_timestamp() volunteer_relation.delete() return HttpResponse(status=200) else: raise PermissionDenied()
def reject_project_volunteer(request, application_id): volunteer_relation = VolunteerRelation.objects.get(id=application_id) if volunteer_operation_is_authorized(request, volunteer_relation): body = json.loads(request.body) message = body['rejection_message'] email_template = HtmlEmailTemplate()\ .paragraph('The project owner of {project_name} has declined your application for the following reason:'.format(project_name=volunteer_relation.project.project_name))\ .paragraph('\"{message}\"'.format(message=message)) email_subject = 'Your application to join {project_name}'.format( project_name=volunteer_relation.project.project_name) send_to_project_volunteer(volunteer_relation=volunteer_relation, subject=email_subject, template=email_template) update_project_timestamp(request, volunteer_relation.project) volunteer_relation.delete() return HttpResponse(status=200) else: raise PermissionDenied()
def demote_project_volunteer(request, application_id): volunteer_relation = VolunteerRelation.objects.get(id=application_id) if volunteer_operation_is_authorized(request, volunteer_relation): volunteer_relation.is_co_owner = False volunteer_relation.save() update_project_timestamp(request, volunteer_relation.project) body = json.loads(request.body) message = body['demotion_message'] email_template = HtmlEmailTemplate()\ .paragraph('The owner of {project_name} has removed you as a co-owner of the project for the following reason:'.format( project_name=volunteer_relation.project.project_name))\ .paragraph('\"{message}\"'.format(message=message)) email_subject = 'You have been removed as a co-owner from {project_name}'.format( project_name=volunteer_relation.project.project_name) send_to_project_volunteer(volunteer_relation=volunteer_relation, subject=email_subject, template=email_template) return HttpResponse(status=200) else: raise PermissionDenied()