def create_copies_from_document(document: ClassifiedDocument, copy_count: int) -> list: """Crée le nombre de copies demandées et renvoie la liste des DocumentCopy et des pdf associés. Génère également les fichiers, qui *doivent* être effacés par l'appelant. :param document: :param copy_count: :return: liste des copies de documents créées :rtype: :class:`list` of (:class:`pigi1300.models.DocumentCopy`, :class:`str`) """ if not document.pk: document.save() start_index = document.documentcopy_set.all().count() copies = [DocumentCopy(copy_number=start_index + 1 + index, document=document) for index in range(copy_count)] DocumentCopy.objects.bulk_create(copies) copies = [x for x in document.documentcopy_set.filter(copy_number__gt=start_index)] return [(copy, generate_copy_pdf(copy, copy_count=start_index + copy_count)) for copy in copies]
def test_2d(self): doc_1 = ClassifiedDocument(record_number='record-1', classification=SD) doc_1.save() code_1d = '%s%05d%07d' % (Copy.PREFIX_1D, settings.EAN13_IDENTIFIER, 1) copy_1 = Copy(document=doc_1, copy_identifier=1, reproduction_identifier=None, self_issued=True, signature=get_signature(doc_1.record_number), code_1d=code_1d) copy_1.save() record_number = 'pv-1' obj_1 = DestructionPV(record_number=record_number, signature=get_signature(record_number), code_1d=code_1d) obj_1.save() obj_1.copies.add(copy_1) self.assertEqual(obj_1.to_2d(), 'pv-1:pv-1:1000010000001:record-1;SD;1;-') result = obj_1.to_2d() result += ':record-2;SD;2;-' obj_2 = DestructionPV.from_2d(result) self.assertEqual(obj_2.record_number, record_number) self.assertEqual(2, obj_2.copies.all().count()) self.assertEqual(1, ClassifiedDocument.objects.filter(record_number='record-2', classification=SD).count())