Spaces:
Runtime error
Runtime error
Add missing important files: _app_.py, utils/, CVAT_download/, manifest.json, and documentation
989ec3c
| from mongoengine import * | |
| import datetime | |
| class TaskModel(DynamicDocument): | |
| id = SequenceField(primary_key=True) | |
| # Type of task: Importer, Exporter, Scanner, etc. | |
| group = StringField(required=True) | |
| name = StringField(required=True) | |
| desciption = StringField() | |
| status = StringField(default="PENDING") | |
| creator = StringField() | |
| #: Start date of the executor | |
| start_date = DateTimeField() | |
| #: End date of the executor | |
| end_date = DateTimeField() | |
| completed = BooleanField(default=False) | |
| failed = BooleanField(default=False) | |
| has_download = BooleanField(default=False) | |
| # If any of the information is relevant to the task | |
| # it should be added | |
| dataset_id = IntField() | |
| image_id = IntField() | |
| category_id = IntField() | |
| progress = FloatField(default=0, min_value=0, max_value=100) | |
| logs = ListField(default=[]) | |
| errors = IntField(default=0) | |
| warnings = IntField(default=0) | |
| priority = IntField() | |
| metadata = DictField(default={}) | |
| _update_every = 10 | |
| _progress_update = 0 | |
| def error(self, string): | |
| self._log(string, level="ERROR") | |
| def warning(self, string): | |
| self._log(string, level="WARNING") | |
| def info(self, string): | |
| self._log(string, level="INFO") | |
| def _log(self, string, level): | |
| level = level.upper() | |
| date = datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S") | |
| message = f"[{date}] [{level}] {string}" | |
| statment = { | |
| 'push__logs': message | |
| } | |
| if level == "ERROR": | |
| statment['inc__errors'] = 1 | |
| self.errors += 1 | |
| if level == "WARNING": | |
| statment['inc__warnings'] = 1 | |
| self.warnings += 1 | |
| self.update(**statment) | |
| def set_progress(self, percent, socket=None): | |
| self.update(progress=int(percent), completed=(percent >= 100)) | |
| # Send socket update every 10% | |
| if self._progress_update < percent or percent >= 100: | |
| if socket is not None: | |
| # logger.debug(f"Emitting {percent} progress update for task {self.id}") | |
| socket.emit('taskProgress', { | |
| 'id': self.id, | |
| 'progress': percent, | |
| 'errors': self.errors, | |
| 'warnings': self.warnings | |
| }, broadcast=True) | |
| self._progress_update += self._update_every | |
| def api_json(self): | |
| return { | |
| "id": self.id, | |
| "name": self.name | |
| } | |
| __all__ = ["TaskModel"] |