def update_file(self, request, store): """Updates file from version control, retaining uncommitted translations""" try: self.update_file_from_version_control(store) # FIXME: This belongs to views msg = _(u'Updated file <em>%(filename)s</em> from version control', {'filename': store.file.name}) messages.info(request, msg) from pootle_app.signals import post_vc_update post_vc_update.send(sender=self) except versioncontrol.VersionControlError as e: # FIXME: This belongs to views msg = _(u"Failed to update <em>%(filename)s</em> from " u"version control: %(error)s", { 'filename': store.file.name, 'error': e, } ) messages.error(request, msg) self.scan_files()
def update_file(self, request, store): """Updates file from version control, retaining uncommitted translations""" try: self.update_file_from_version_control(store) # FIXME: This belongs to views msg = _(u'Updated file <em>%(filename)s</em> from version control', {'filename': store.file.name}) messages.info(request, msg) from pootle_app.signals import post_vc_update post_vc_update.send(sender=self) except VersionControlError as e: # FIXME: This belongs to views msg = _(u"Failed to update <em>%(filename)s</em> from " u"version control: %(error)s", { 'filename': store.file.name, 'error': e, } ) messages.error(request, msg) self.scan_files()
def update_dir(self, request=None, directory=None): """Updates translation project's files from version control, retaining uncommitted translations. """ remote_stats = {} try: versioncontrol.update_dir(self.real_path) except IOError as e: logging.exception(u"Error during update of %s", self.real_path) if request: msg = _("Failed to update from version control: %(error)s", {"error": e}) messages.error(request, msg) return all_files, new_files = self.scan_files() new_file_set = set(new_files) # Go through all stores except any pootle-terminology.* ones if directory.is_translationproject(): stores = self.stores.exclude(file="") else: stores = directory.stores.exclude(file="") for store in stores.iterator(): if store in new_file_set: continue store.sync(update_translation=True) filetoupdate = store.file.name # keep a copy of working files in memory before updating working_copy = store.file.store versioncontrol.copy_to_podir(filetoupdate) store.file._delete_store_cache() store.file._update_store_cache() try: logging.debug(u"Parsing version control copy of %s into db", store.file.name) store.update(update_structure=True, update_translation=True) #FIXME: Try to avoid merging if file was not updated logging.debug(u"Merging %s with version control update", store.file.name) store.mergefile(working_copy, None, allownewstrings=False, suggestions=True, notranslate=False, obsoletemissing=False) except Exception: logging.exception(u"Near fatal catastrophe, while merging %s " "with version control copy", store.file.name) working_copy.save() store.update(update_structure=True, update_translation=True) raise if request: msg = \ _(u'Updated project <em>%(project)s</em> from version control', {'project': self.fullname}) messages.info(request, msg) from pootle_app.signals import post_vc_update post_vc_update.send(sender=self)
def update_dir(self, request=None, directory=None): """Updates translation project's files from version control, retaining uncommitted translations. """ remote_stats = {} from pootle_misc import versioncontrol try: versioncontrol.update_dir(self.real_path) except IOError as e: logging.exception(u"Error during update of %s", self.real_path) if request: msg = _("Failed to update from version control: %(error)s", {"error": e}) messages.error(request, msg) return all_files, new_files = self.scan_files() new_file_set = set(new_files) from pootle.scripts import hooks # Go through all stores except any pootle-terminology.* ones if directory.is_translationproject(): stores = self.stores.exclude(file="") else: stores = directory.stores.exclude(file="") for store in stores.iterator(): if store in new_file_set: continue store.sync(update_translation=True) filetoupdate = store.file.name try: filetoupdate = hooks.hook(self.project.code, "preupdate", store.file.name) except: pass # keep a copy of working files in memory before updating working_copy = store.file.store versioncontrol.copy_to_podir(filetoupdate) store.file._delete_store_cache() store.file._update_store_cache() try: hooks.hook(self.project.code, "postupdate", store.file.name) except: pass try: logging.debug(u"Parsing version control copy of %s into db", store.file.name) store.update(update_structure=True, update_translation=True) #FIXME: Try to avoid merging if file was not updated logging.debug(u"Merging %s with version control update", store.file.name) store.mergefile(working_copy, None, allownewstrings=False, suggestions=True, notranslate=False, obsoletemissing=False) except Exception: logging.exception(u"Near fatal catastrophe, while merging %s " "with version control copy", store.file.name) working_copy.save() store.update(update_structure=True, update_translation=True) raise if request: msg = \ _(u'Updated project <em>%(project)s</em> from version control', {'project': self.fullname}) messages.info(request, msg) from pootle_app.signals import post_vc_update post_vc_update.send(sender=self)