Esempio n. 1
0
 def dispatch(self, request, *args, **kwargs):
     self.action = get_object_or_404(Action, pk=kwargs.get('pk', None))
     vacancy = self.action.pipeline.vacancy
     oracle = OracleHandler()
     mci = oracle.get_member_current_action_index(
         vacancy.company.contract_address, vacancy.uuid,
         request.user.contract_address)
     if mci != self.action.index:
         raise Http404
     return super().dispatch(request, *args, **kwargs)
Esempio n. 2
0
def may_apply_vacancy(member, vacancy):
    if not member.contract_address:
        return False
    oracle = OracleHandler()
    current_action_index = oracle.get_member_current_action_index(
        vacancy.company.contract_address, vacancy.uuid,
        member.contract_address)
    already_subscribed = MemberOnVacancy.objects.filter(
        member=member, vacancy=vacancy).exists()
    return current_action_index == -1 and not already_subscribed
Esempio n. 3
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['action'] = self.action_exam.action
     context['candidate'] = self.candidate
     oracle = OracleHandler()
     vacancy = self.action_exam.action.pipeline.vacancy
     mci = oracle.get_member_current_action_index(
         vacancy.company.contract_address, vacancy.uuid,
         self.candidate.contract_address)
     mci == self.action_exam.action.index and context.update(
         {'not_yet': True})
     return context
Esempio n. 4
0
def candidate_pass_exam(sender, instance, created, **kwargs):
    if created or not instance.processed:
        pr = ProcessExam()
        pr.delay(instance.id)
    else:
        if instance.processed and instance.points >= instance.exam.passing_grade:
            oracle = OracleHandler()
            vacancy = instance.exam.action.pipeline.vacancy
            cci = oracle.get_member_current_action_index(
                vacancy.company.contract_address, vacancy.uuid,
                instance.candidate.contract_address)
            if cci == instance.exam.action.index:
                if not instance.exam.action.chain.approvable:
                    candidate_level_up.delay(vacancy.id, instance.candidate.id)