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