Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
 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