Ejemplo n.º 1
0
    def get_context_data(self, **kwargs):
        if not JobAccess(self.request.user, self.object.job).can_decide:
            raise BridgeException(
                _("You don't have an access to create job version"))
        context = super(DecisionCopyFormPage, self).get_context_data(**kwargs)
        decision_files = json.dumps(JSTreeConverter().make_tree(
            list(
                FileSystem.objects.filter(decision=self.object).values_list(
                    'name', 'file__hash_sum'))),
                                    ensure_ascii=False)

        other_decisions = Decision.objects.filter(job=self.object.job).order_by('id')\
            .exclude(status=DECISION_STATUS[0][0]).only('id', 'title', 'start_date')
        context.update({
            'job':
            self.object.job,
            'unique_name':
            get_unique_decision_name(self.object.job),
            'base_decision':
            self.object,
            'cancel_url':
            reverse('jobs:decision', args=[self.object.id]),
            'files_data':
            decision_files,
            'start_data':
            StartDecisionData(self.request.user, base_decision=self.object),
            'other_decisions':
            other_decisions
        })
        return context
Ejemplo n.º 2
0
 def get_context_data(self, **kwargs):
     if not DecisionAccess(self.request.user, self.object).can_copy:
         raise BridgeException(
             _("You don't have an access to copy job version"))
     context = super(DecisionCopyFormPage, self).get_context_data(**kwargs)
     decision_files = json.dumps(JSTreeConverter().make_tree(
         list(
             FileSystem.objects.filter(decision=self.object).values_list(
                 'name', 'file__hash_sum'))),
                                 ensure_ascii=False)
     context.update({
         'job':
         self.object.job,
         'unique_name':
         get_unique_decision_name(self.object.job),
         'cancel_url':
         reverse('jobs:decision', args=[self.object.id]),
         'files_data':
         decision_files,
         'start_data':
         StartDecisionData(self.request.user,
                           self.object.job,
                           base_decision=self.object)
     })
     return context
Ejemplo n.º 3
0
 def to_internal_value(self, data):
     try:
         if isinstance(data, str):
             data = json.loads(data)
         return JSTreeConverter().parse_tree(data)
     except BridgeException as e:
         raise exceptions.ValidationError(str(e))
     except Exception as e:
         logger.exception(e)
         self.fail('wrong_format')
Ejemplo n.º 4
0
 def to_representation(self, value):
     # Get list of files [(<id>, <hash_sum>)]
     queryset = FileSystem.objects.all()
     if isinstance(value, Decision):
         queryset = queryset.filter(decision=value)
     elif isinstance(value, QuerySet):
         queryset = value
     else:
         # Internal value
         queryset = queryset.filter(id__in=list(x['file_id'] for x in value))
     return JSTreeConverter().make_tree(list(queryset.values_list('name', 'file__hash_sum')))
Ejemplo n.º 5
0
def preset_job_files_tree_json(preset_job):
    # Get preset files
    if preset_job.type == PRESET_JOB_TYPE[1][0]:
        preset_files_qs = PresetFile.objects.filter(
            preset=preset_job).values_list('name', 'file__hash_sum')
    else:
        # Get files from parent for custom preset job
        preset_files_qs = PresetFile.objects.filter(preset_id=preset_job.parent_id) \
            .values_list('name', 'file__hash_sum')
    preset_files_hashsums = list(
        (name, hash_sum) for name, hash_sum in preset_files_qs)
    return json.dumps(JSTreeConverter().make_tree(preset_files_hashsums),
                      ensure_ascii=False)
Ejemplo n.º 6
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Decision access
        context['access'] = DecisionAccess(self.request.user, self.object)
        if not context['access'].can_view:
            raise PermissionDenied(
                _("You don't have an access to this decision"))

        # Decision files
        context['files'] = json.dumps(JSTreeConverter().make_tree(
            list(
                FileSystem.objects.filter(decision=self.object).values_list(
                    'name', 'file__hash_sum'))),
                                      ensure_ascii=False)

        # Other job decisions
        context['other_decisions'] = Decision.objects.filter(job=self.object.job)\
            .exclude(id=self.object.id).exclude(status=DECISION_STATUS[0][0])\
            .select_related('configuration').order_by('-start_date')

        # Decision progress and core report link
        context['progress'] = ProgressSerializerRO(instance=self.object,
                                                   context={
                                                       'request': self.request
                                                   }).data
        context['core_link'] = get_core_link(self.object)

        # Decision coverages
        context['Coverage'] = DecisionCoverageStatistics(self.object)

        context['parents'] = self.object.job.preset.get_ancestors(
            include_self=True)

        # Verification results
        context['reportdata'] = ViewJobData(self.request.user,
                                            self.get_view(VIEW_TYPES[2]),
                                            self.object)

        return context