def delete_marks(user, marks_type, mark_ids, report_id=None): if marks_type == 'safe': marks = MarkSafe.objects.filter(id__in=mark_ids) elif marks_type == 'unsafe': marks = MarkUnsafe.objects.filter(id__in=mark_ids) elif marks_type == 'unknown': marks = MarkUnknown.objects.filter(id__in=mark_ids) else: raise ValueError('Unsupported marks type: %s' % marks_type) if not all(MarkAccess(user, mark=mark).can_delete() for mark in marks): if len(marks) > 1: raise BridgeException(_("You can't delete one of the selected marks")) elif len(marks) == 1: raise BridgeException(_("You don't have an access to delete this mark")) else: raise BridgeException(_('Nothing to delete')) if marks_type == 'safe': SafeUtils.delete_marks(marks) reports_model = ReportSafe elif marks_type == 'unsafe': UnsafeUtils.delete_marks(marks) reports_model = ReportUnsafe else: UnknownUtils.delete_marks(marks) reports_model = ReportUnknown if report_id: try: report = reports_model.objects.get(id=report_id) except ObjectDoesNotExist: return None return report.id if not isinstance(report, ReportUnsafe) else report.trace_id
def __upload_all(self, marks_dir): if self.delete_all: SafeUtils.delete_marks(MarkSafe.objects.all()) UnsafeUtils.delete_marks(MarkUnsafe.objects.all()) UnknownUtils.delete_marks(MarkUnknown.objects.all()) for file_name in os.listdir(marks_dir): mark_path = os.path.join(marks_dir, file_name) if os.path.isfile(mark_path): with open(mark_path, mode='rb') as fp: try: mark_type = UploadMark(self.user, fp).type if mark_type in self.numbers: self.numbers[mark_type] += 1 except Exception as e: logger.exception(e) self.numbers['fail'] += 1