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