def send_assestment(student_assessment): token = create_token(student_assessment.user, hours_length=48) data = { "SUBJECT": student_assessment.assessment.title, "LINK": f"https://assessment.breatheco.de/{student_assessment.id}?token={token.key}" } send_email_message("assessment", student_assessment.user.email, data) logger.info(f"Survey was sent for user: {str(student_assessment.user.id)}") student_assessment.status = "SENT" student_assessment.save() return True # keep track of sent survays until they get answered # def answer_survey(user, data): # answer = Answer.objects.create(**{ **data, "user": user }) # log = SurveyLog.objects.filter( # user__id=user.id, # cohort__id=answer.cohort.id, # academy__id=answer.academy.id, # mentor__id=answer.academy.id # )
def send_cohort_survey(self, user_id, survey_id): logger.debug("Starting send_cohort_survey") survey = Survey.objects.filter(id=survey_id).first() if survey is None: logger.error("Survey not found") return False user = User.objects.filter(id=user_id).first() if user is None: logger.error("User not found") return False utc_now = timezone.now() if utc_now > survey.created_at + survey.duration: logger.error("This survey has already expired") return False cu = CohortUser.objects.filter(cohort=survey.cohort, role="STUDENT", user=user).first() if cu is None: raise ValidationException( "This student does not belong to this cohort", 400) answers = generate_user_cohort_survey_answers(user, survey, status='SENT') has_slackuser = hasattr(user, 'slackuser') if not user.email and not has_slackuser: message = f'Author not have email and slack, this survey cannot be send by {str(user.id)}' logger.info(message) raise Exception(message) token = create_token(user, hours_length=48) data = { "SUBJECT": strings[survey.lang]["survey_subject"], "MESSAGE": strings[survey.lang]["survey_message"], "SURVEY_ID": survey_id, "BUTTON": strings[survey.lang]["button_label"], "LINK": f"https://nps.breatheco.de/survey/{survey_id}?token={token.key}", } if user.email: send_email_message("nps_survey", user.email, data) if hasattr(user, 'slackuser') and hasattr(survey.cohort.academy, 'slackteam'): send_slack("nps_survey", user.slackuser, survey.cohort.academy.slackteam, data=data)
def send_assestment(user_assessment): token = create_token(user_assessment.user, hours_length=48) data = { "SUBJECT": user_assessment.assessment.title, "LINK": f"https://assessment.breatheco.de/{user_assessment.id}?token={token.key}" } send_email_message("assessment", user_assessment.user.email, data) logger.info(f"Survey was sent for user: {str(user_assessment.user.id)}") user_assessment.status = "SENT" user_assessment.save() return True
def send_question(user, cohort=None): answer = Answer(user=user) if cohort is not None: answer.cohort = cohort else: cohorts = CohortUser.objects.filter( user__id=user.id).order_by("-cohort__kickoff_date") _count = cohorts.count() if _count == 1: _cohort = cohorts.first().cohort answer.cohort = _cohort if answer.cohort is None: message = 'Impossible to determine the student cohort, maybe it has more than one, or cero.' logger.info(message) raise Exception(message) else: answer.lang = answer.cohort.language answer.save() has_slackuser = hasattr(user, 'slackuser') if not user.email and not has_slackuser: message = f'User not have email and slack, this survey cannot be send: {str(user.id)}' logger.info(message) raise Exception(message) # if not answer.cohort.syllabus.certificate.name: if not answer.cohort.syllabus: message = 'Cohort not have one Syllabus' logger.info(message) raise Exception(message) # if not answer.cohort.syllabus.certificate.name: if not answer.cohort.syllabus.certificate: message = f'Syllabus not have one Certificate' logger.info(message) raise Exception(message) question_was_sent_previously = Answer.objects.filter( cohort=answer.cohort, user=user, status='SENT').count() question = build_question(answer) if question_was_sent_previously: answer = Answer.objects.filter(cohort=answer.cohort, user=user, status='SENT').first() Token.objects.filter(id=answer.token_id).delete() else: answer.title = question["title"] answer.lowest = question["lowest"] answer.highest = question["highest"] answer.lang = answer.cohort.language answer.save() token = create_token(user, hours_length=48) token_id = Token.objects.filter(key=token).values_list('id', flat=True).first() answer.token_id = token_id answer.save() data = { "QUESTION": question['title'], "HIGHEST": answer.highest, "LOWEST": answer.lowest, "SUBJECT": question['title'], "ANSWER_ID": answer.id, "BUTTON": strings[answer.cohort.language]["button_label"], "LINK": f"https://nps.breatheco.de/{answer.id}?token={token.key}", } if user.email: send_email_message("nps", user.email, data) if hasattr(user, 'slackuser') and hasattr(answer.cohort.academy, 'slackteam'): send_slack("nps", user.slackuser, answer.cohort.academy.slackteam, data=data) # keep track of sent survays until they get answered if not question_was_sent_previously: logger.info(f"Survey was sent for user: {str(user.id)}") answer.status = "SENT" answer.save() return True else: logger.info(f"Survey was resent for user: {str(user.id)}") return True