def peek(self, full=True) -> CaseResult: if full: return CaseResult( uuid=self.uuid, id=self.id, status=self.status.str, cmd=self.cmd, duration=self.duration, returncode=self.returncode, console=ensure_iterable(self.console)[:100], message=self.message, message_details=ensure_iterable(self.message_details)[:100], attachments=ensure_iterable(self.attachments), score=self.score, scores=self.scores, ) return CaseResult( id=self.id, status=self.status.str, cmd=' '.join(ensure_iterable(self.cmd)), duration=self.duration, returncode=self.returncode, message=self.message, message_details=ensure_iterable(self.message_details), score=self.score, scores=self.scores, )
def __init__(self, item: dict): super().__init__() self.id = item['id'] self.name = item.get('name') self.extension = item.get('extension') self.version = item.get('version') self.compile = strings.ensure_iterable(item.get('compile', list())) self.run = strings.ensure_iterable(item.get('run', list())) self.scale = item.get('scale', 1.0) self.image = item.get('image') self.disabled = item.get('disabled', False) self.style = item.get('style')
def peek(self, full=True): if full: return dict( uuid=self.uuid, id=self.id, status=self.status.str, cmd=self.cmd, duration=self.duration, returncode=self.returncode, stdin=ensure_iterable(self.stdinn)[:100], stdout=ensure_iterable(self.stdout)[:100], stderr=ensure_iterable(self.stderr)[:100], console=ensure_iterable(self.console)[:100], message=self.message, message_details=ensure_iterable(self.message_details)[:100], attachments=ensure_iterable(self.attachments), ) doc = dict( id=self.id, status=self.status.str, cmd=' '.join(ensure_iterable(self.cmd)), duration=self.duration, returncode=self.returncode, message=self.message, message_details=ensure_iterable(self.message_details), ) for p in ('cmd', 'message', 'message_details'): if p in doc and not doc[p]: doc.pop(p) return doc
def last_n_results(self, n=10, user_id=None, course_id=None, problem_id=None, statuses=None, status_op='$in'): filters = self._fix_dict(dict(user=user_id, course=course_id, problem=problem_id)) statuses = ensure_iterable(statuses) if statuses: filters['result.status'] = {status_op: statuses} logger.info('Fetching db documents using filter {}', filters) cursor = self.data.find(filters).sort('_id', -1).limit(n) return cursor
def peek_last_n_results(self, n=10, user_id=None, course_id=None, problem_id=None, statuses=None, status_op='$in'): from entities.crates import TestResult filters = self._fix_dict(dict(user=user_id, course=course_id, problem=problem_id)) filters['action'] = 'solve' statuses = ensure_iterable(statuses) if statuses: filters['result.status'] = {status_op: statuses} logger.info('Fetching db documents using filter {}', filters) cursor = self.data.find( filters, {x: 1 for x in self.base_properties} ).sort('_id', -1).limit(n) return [TestResult(**x) for x in cursor]
def __init__(self, message, details=None): self.message = message self.details = ensure_iterable(details) super().__init__(self.message)
def __init__(self, message, details=None): self.message = '[visible to admin only] {}'.format(message) self.details = ensure_iterable(details) super().__init__(self.message)
def try_read(stream: pathlib.Path) -> typing.List[str]: try: return ensure_iterable(stream.read_text().splitlines()) except: return []