def merge_upload(self, request, fileobj, overwrite, author=None, merge_header=True, method=''): ''' Top level handler for file uploads. ''' # Load backend file try: # First try using own loader store = self.subproject.file_format_cls( fileobj, self.subproject.template_store ) except: # Fallback to automatic detection fileobj.seek(0) store = AutoFormat(fileobj) # Optionally set authorship if author is None: author = self.get_author_name(request.user) # List translations we should process translations = Translation.objects.filter( language=self.language, subproject__project=self.subproject.project ) # Filter out those who don't want automatic update, but keep ourselves translations = translations.filter( Q(pk=self.pk) | Q(subproject__allow_translation_propagation=True) ) ret = False if method in ('', 'fuzzy'): # Do actual merge for translation in translations: ret |= translation.merge_store( request, author, store, overwrite, merge_header, (method == 'fuzzy') ) else: # Add as sugestions ret = self.merge_suggestions(request, store) return ret, store.count_units()