示例#1
0
文件: models.py 项目: shayanb/pootle
    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()
示例#2
0
文件: models.py 项目: henriksa/pootle
    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()
示例#3
0
文件: models.py 项目: shayanb/pootle
    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)
示例#4
0
文件: models.py 项目: henriksa/pootle
    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)