mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 18:22:40 -04:00 
			
		
		
		
	Merge branch 'rhaamo-add_retagger_correspondents'
This commit is contained in:
		
						commit
						9cef689106
					
				
							
								
								
									
										82
									
								
								src/documents/management/commands/document_correspondents.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								src/documents/management/commands/document_correspondents.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| import sys | ||||
| 
 | ||||
| from django.core.management.base import BaseCommand | ||||
| 
 | ||||
| from documents.models import Correspondent, Document | ||||
| 
 | ||||
| from ...mixins import Renderable | ||||
| 
 | ||||
| 
 | ||||
| class Command(Renderable, BaseCommand): | ||||
| 
 | ||||
|     help = """ | ||||
|         Using the current set of correspondent rules, apply said rules to all | ||||
|         documents in the database, effectively allowing you to back-tag all | ||||
|         previously indexed documents with correspondent created (or modified) | ||||
|         after their initial import. | ||||
|     """.replace("    ", "") | ||||
| 
 | ||||
|     TOO_MANY_CONTINUE = ( | ||||
|         "Detected {} potential correspondents for {}, so we've opted for {}") | ||||
|     TOO_MANY_SKIP = ( | ||||
|         "Detected {} potential correspondents for {}, so we're skipping it") | ||||
|     CHANGE_MESSAGE = ( | ||||
|         'Document {}: "{}" was given the correspondent id {}: "{}"') | ||||
| 
 | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         self.verbosity = 0 | ||||
|         BaseCommand.__init__(self, *args, **kwargs) | ||||
| 
 | ||||
|     def add_arguments(self, parser): | ||||
|         parser.add_argument( | ||||
|             "--use-first", | ||||
|             default=False, | ||||
|             action="store_true", | ||||
|             help="By default this command won't try to assign a correspondent " | ||||
|                  "if more than one matches the document.  Use this flag if " | ||||
|                  "you'd rather it just pick the first one it finds." | ||||
|         ) | ||||
| 
 | ||||
|     def handle(self, *args, **options): | ||||
| 
 | ||||
|         self.verbosity = options["verbosity"] | ||||
| 
 | ||||
|         for document in Document.objects.filter(correspondent__isnull=True): | ||||
| 
 | ||||
|             potential_correspondents = list( | ||||
|                 Correspondent.match_all(document.content)) | ||||
| 
 | ||||
|             if not potential_correspondents: | ||||
|                 continue | ||||
| 
 | ||||
|             potential_count = len(potential_correspondents) | ||||
|             correspondent = potential_correspondents[0] | ||||
| 
 | ||||
|             if potential_count > 1: | ||||
|                 if not options["use_first"]: | ||||
|                     print( | ||||
|                         self.TOO_MANY_SKIP.format(potential_count, document), | ||||
|                         file=sys.stderr | ||||
|                     ) | ||||
|                     continue | ||||
|                 print( | ||||
|                     self.TOO_MANY_CONTINUE.format( | ||||
|                         potential_count, | ||||
|                         document, | ||||
|                         correspondent | ||||
|                     ), | ||||
|                     file=sys.stderr | ||||
|                 ) | ||||
| 
 | ||||
|             document.correspondent = correspondent | ||||
|             document.save(update_fields=("correspondent",)) | ||||
| 
 | ||||
|             print( | ||||
|                 self.CHANGE_MESSAGE.format( | ||||
|                     document.pk, | ||||
|                     document.title, | ||||
|                     correspondent.pk, | ||||
|                     correspondent.name | ||||
|                 ), | ||||
|                 file=sys.stderr | ||||
|             ) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user