Changeset - aa3e860a1fe0
[Not reviewed]
kallithea/controllers/api/api.py
Show inline comments
 
@@ -1221,97 +1221,97 @@ class ApiController(JSONRPCController):
 
        """
 
        if not HasPermissionAny('hg.admin')():
 
            if owner is not None:
 
                # forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 
        if owner is None:
 
            owner = request.authuser.user_id
 

	
 
        owner = get_user_or_error(owner)
 

	
 
        if RepoModel().get_by_repo_name(repo_name):
 
            raise JSONRPCError("repo `%s` already exist" % repo_name)
 

	
 
        defs = db.Setting.get_default_repo_settings(strip_prefix=True)
 
        if private is None:
 
            private = defs.get('repo_private') or False
 
        if repo_type is None:
 
            repo_type = defs.get('repo_type')
 
        if enable_statistics is None:
 
            enable_statistics = defs.get('repo_enable_statistics')
 
        if enable_downloads is None:
 
            enable_downloads = defs.get('repo_enable_downloads')
 

	
 
        try:
 
            repo_name_parts = repo_name.split('/')
 
            repo_group = None
 
            if len(repo_name_parts) > 1:
 
                group_name = '/'.join(repo_name_parts[:-1])
 
                repo_group = db.RepoGroup.get_by_group_name(group_name)
 
                if repo_group is None:
 
                    raise JSONRPCError("repo group `%s` not found" % group_name)
 
            data = dict(
 
                repo_name=repo_name_parts[-1],
 
                repo_name_full=repo_name,
 
                repo_type=repo_type,
 
                repo_description=description,
 
                owner=owner,
 
                repo_private=private,
 
                clone_uri=clone_uri,
 
                repo_group=repo_group,
 
                repo_landing_rev=landing_rev,
 
                enable_statistics=enable_statistics,
 
                enable_downloads=enable_downloads,
 
                repo_copy_permissions=copy_permissions,
 
            )
 

	
 
            task = RepoModel().create(form_data=data, cur_user=owner)
 
            task = RepoModel().create(form_data=data, cur_user=owner.username)
 
            task_id = task.task_id
 
            # no commit, it's done in RepoModel, or async via celery
 
            return dict(
 
                msg="Created new repository `%s`" % (repo_name,),
 
                success=True,  # cannot return the repo data here since fork
 
                               # can be done async
 
                task=task_id
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to create repository `%s`' % (repo_name,))
 

	
 
    # permission check inside
 
    def update_repo(self, repoid, name=None,
 
                    owner=None,
 
                    group=None,
 
                    description=None, private=None,
 
                    clone_uri=None, landing_rev=None,
 
                    enable_statistics=None,
 
                    enable_downloads=None):
 

	
 
        """
 
        Updates repo
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param name:
 
        :param owner:
 
        :param group:
 
        :param description:
 
        :param private:
 
        :param clone_uri:
 
        :param landing_rev:
 
        :param enable_statistics:
 
        :param enable_downloads:
 
        """
 
        repo = get_repo_or_error(repoid)
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
            if (name != repo.repo_name and
 
                not HasPermissionAny('hg.create.repository')()
 
            ):
 
                raise JSONRPCError('no permission to create (or move) repositories')
 

	
 
            if owner is not None:
 
@@ -1395,97 +1395,97 @@ class ApiController(JSONRPCController):
 
        repo = get_repo_or_error(repoid)
 
        repo_name = repo.repo_name
 

	
 
        _repo = RepoModel().get_by_repo_name(fork_name)
 
        if _repo:
 
            type_ = 'fork' if _repo.fork else 'repo'
 
            raise JSONRPCError("%s `%s` already exist" % (type_, fork_name))
 

	
 
        if HasPermissionAny('hg.admin')():
 
            pass
 
        elif HasRepoPermissionLevel('read')(repo.repo_name):
 
            if owner is not None:
 
                # forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 

	
 
            if not HasPermissionAny('hg.create.repository')():
 
                raise JSONRPCError('no permission to create repositories')
 
        else:
 
            raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        if owner is None:
 
            owner = request.authuser.user_id
 

	
 
        owner = get_user_or_error(owner)
 

	
 
        try:
 
            fork_name_parts = fork_name.split('/')
 
            repo_group = None
 
            if len(fork_name_parts) > 1:
 
                group_name = '/'.join(fork_name_parts[:-1])
 
                repo_group = db.RepoGroup.get_by_group_name(group_name)
 
                if repo_group is None:
 
                    raise JSONRPCError("repo group `%s` not found" % group_name)
 

	
 
            form_data = dict(
 
                repo_name=fork_name_parts[-1],
 
                repo_name_full=fork_name,
 
                repo_group=repo_group,
 
                repo_type=repo.repo_type,
 
                description=description,
 
                private=private,
 
                copy_permissions=copy_permissions,
 
                landing_rev=landing_rev,
 
                update_after_clone=False,
 
                fork_parent_id=repo.repo_id,
 
            )
 
            task = RepoModel().create_fork(form_data, cur_user=owner)
 
            task = RepoModel().create_fork(form_data, cur_user=owner.username)
 
            # no commit, it's done in RepoModel, or async via celery
 
            task_id = task.task_id
 
            return dict(
 
                msg='Created fork of `%s` as `%s`' % (repo.repo_name,
 
                                                      fork_name),
 
                success=True,  # cannot return the repo data here since fork
 
                               # can be done async
 
                task=task_id
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to fork repository `%s` as `%s`' % (repo_name,
 
                                                            fork_name)
 
            )
 

	
 
    # permission check inside
 
    def delete_repo(self, repoid, forks=''):
 
        """
 
        Deletes a repository. This command can be executed only using api_key belonging
 
        to user with admin rights or regular user that have admin access to repository.
 
        When `forks` param is set it's possible to detach or delete forks of deleting
 
        repository
 

	
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param forks: `detach` or `delete`, what do do with attached forks for repo
 
        :type forks: Optional(str)
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "Deleted repository `<reponame>`",
 
                      "success": true
 
                    }
 
            error:  null
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAny('hg.admin')():
 
            if not HasRepoPermissionLevel('admin')(repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        try:
 
            handle_forks = forks
 
            _forks_msg = ''
kallithea/i18n/de/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1999,97 +1999,97 @@ msgid ""
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Aktivieren Sie diese Option, um alle Kommentare, Pull-Requests und andere "
 
"Datensätze zu entfernen, die sich auf Repositories beziehen, die nicht "
 
"mehr im Dateisystem vorhanden sind."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Cache für alle Repositories entwerten"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Aktivieren Sie dies, um Daten neu zu laden und Cache-Schlüssel für alle "
 
"Repositories zu löschen."
 

	
 
msgid "Install Git hooks"
 
msgstr "Git-Hooks installieren"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Überprüfen Sie, ob die Git-Hooks von Kallithea für jedes Repository "
 
"installiert sind. Aktuelle Hooks werden auf die neueste Version "
 
"aktualisiert."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Bestehende Git-Hooks überschreiben"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Wenn Sie Git-Hooks installieren, überschreiben Sie alle vorhandenen "
 
"Hooks, auch wenn sie nicht von Kallithea zu kommen scheinen. WARNUNG: "
 
"Diese Operation zerstört alle benutzerdefinierten Git-Hooks, die Sie "
 
"möglicherweise von Hand bereitgestellt haben!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Repositories erneut scannen"
 

	
 
msgid "Index build option"
 
msgstr "Option zum Aufbau eines Index"
 

	
 
msgid "Build from scratch"
 
msgstr "Von Grund auf neu bauen"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Diese Option führt zu einer vollständigen Neuindizierung aller "
 
"Repositories für eine korrekte Volltextsuche."
 

	
 
msgid "Reindex"
 
msgstr "Erneut Indizieren"
 

	
 
msgid "Checking for updates..."
 
msgstr "Prüfe auf Updates..."
 

	
 
msgid "Kallithea version"
 
msgstr "Kallithea-Version"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Kallithea Konfigurationsdatei"
 

	
 
msgid "Python version"
 
msgstr "Python-Version"
 

	
 
msgid "Platform"
 
msgstr "Plattform"
 

	
 
msgid "Git version"
 
msgstr "Git-Version"
 

	
 
msgid "Git path"
 
msgstr "Git-Pfad"
 

	
 
msgid "Python Packages"
 
msgstr "Python-Pakete"
 

	
 
msgid "Show repository size after push"
 
msgstr "Zeigt die Größe des Repositories nach dem Push an"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Repository nach dem Push aktualisieren (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurial-Erweiterungen"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Erweiterung largefiles aktivieren"
 

	
 
msgid "Location of repositories"
 
msgstr "Ort der Repositories"
 

	
 
msgid ""
kallithea/i18n/el/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -2156,97 +2156,97 @@ msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Επιλέξτε αυτήν την επιλογή για να καταργήσετε όλα τα σχόλια, να αιτήματα "
 
"έλξης και άλλες εγγραφές που σχετίζονται με αποθετήρια που δεν υπάρχουν "
 
"πλέον στο σύστημα αρχείων."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Ακυρώνει την προσωρινή αποθήκευση για όλα τα αποθετήρια"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Επιλέξτε αυτό για να φορτώσετε ξανά τα δεδομένα και να καταργήστε την "
 
"cache για όλα τα αποθετήρια."
 

	
 
msgid "Install Git hooks"
 
msgstr "Εγκατάσταση Git hooks"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Επαληθεύστε εάν τα Git hooks της Καλλιθέας είναι εγκατεστημένα για κάθε "
 
"αποθετήριο. Τα τρέχοντα hooks θα ενημερωθούν στην τελευταία έκδοση."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Αντικατάσταση υπαρχόντων Git hooks"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Εάν εγκαθιστάτε Git hooks, αντικαταστήστε τυχόν υπάρχοντα hooks, ακόμα κι "
 
"αν δεν φαίνεται να προέρχονται από την Καλλιθέα. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η "
 
"λειτουργία θα καταστρέψει τυχόν προσαρμοσμένα git hooks που μπορεί να "
 
"έχετε αναπτύξει με το χέρι!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Επανασάρωση αποθετηρίων"
 

	
 
msgid "Index build option"
 
msgstr "Επιλογή δημιουργίας ευρετηρίου"
 

	
 
msgid "Build from scratch"
 
msgstr "Κατασκευή από το μηδέν"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Αυτή η επιλογή ξαναδημιουργεί πλήρως τα ευρετήρια σε όλα τα αποθετήρια "
 
"για δυνατότητα αναζήτησης πλήρους κειμένου."
 

	
 
msgid "Reindex"
 
msgstr "Αναδημιουργία ευρετηρίου"
 

	
 
msgid "Checking for updates..."
 
msgstr "Έλεγχος για ενημερώσεις..."
 

	
 
msgid "Kallithea version"
 
msgstr "Έκδοση Καλλιθέας"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Αρχείο διαμόρφωσης Καλλιθέας"
 

	
 
msgid "Python version"
 
msgstr "Έκδοση Python"
 

	
 
msgid "Platform"
 
msgstr "Πλατφόρμα"
 

	
 
msgid "Git version"
 
msgstr "Έκδοση Git"
 

	
 
msgid "Git path"
 
msgstr "Διαδρομή Git"
 

	
 
msgid "Python Packages"
 
msgstr "Πακέτα Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Εμφάνιση μεγέθους αποθετηρίου μετά την ώθηση"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Ενημέρωση αποθετηρίου μετά την ώθηση (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Επεκτάσεις Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Ενεργοποίηση επέκτασης μεγάλων αρχείων"
 

	
 
msgid "Location of repositories"
 
msgstr "Τοποθεσία αποθετηρίων"
 

	
 
msgid ""
kallithea/i18n/fr/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -2286,97 +2286,97 @@ msgstr "Supprimer les enregistrements de dépôts manquants"
 

	
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Cocher cette option pour supprimer tous les commentaires, les requêtes de "
 
"pull et d'autres informations liées aux dépôts qui n'existent plus sur le "
 
"système de fichiers."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Invalider le cache pour tous les dépôts"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Cocher pour recharger les données et vider le cache pour tous les dépôts."
 

	
 
msgid "Install Git hooks"
 
msgstr "Installer des hooks Git"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Vérifier si les hooks Git de Kallithea sont installés pour chaque dépôt. "
 
"Les hooks actuels seront mis à jour vers la dernière version."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Écraser les hooks Git existants"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Lors de l'installation des hooks Git, écraser tous les hooks existants, "
 
"même s'ils ne semblent pas provenir de Kallithea. ATTENTION : cette "
 
"opération détruira tous les hooks Git que vous avez déployés à la main !"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Relancer le scan des dépôts"
 

	
 
msgid "Index build option"
 
msgstr "Option de construction de l'index"
 

	
 
msgid "Build from scratch"
 
msgstr "Construire ex nihilo"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Cette option ré-indexe complètement tous les dépôts pour pouvoir faire "
 
"des recherches dans le texte complet."
 

	
 
msgid "Reindex"
 
msgstr "Mettre à jour l’index"
 

	
 
msgid "Checking for updates..."
 
msgstr "Vérification des mises à jour…"
 

	
 
msgid "Kallithea version"
 
msgstr "Version de Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Fichier de configuration de Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Version de Python"
 

	
 
msgid "Platform"
 
msgstr "Plateforme"
 

	
 
msgid "Git version"
 
msgstr "Version de Git"
 

	
 
msgid "Git path"
 
msgstr "Chemin de Git"
 

	
 
msgid "Python Packages"
 
msgstr "Paquets Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Afficher la taille du dépôt après un push"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Mettre à jour les dépôts après un push (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Extensions Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Activer l'extension largefiles"
 

	
 
msgid "Location of repositories"
 
msgstr "Emplacement des dépôts"
 

	
 
msgid ""
kallithea/i18n/ja/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1714,97 +1714,97 @@ msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / "
 
"pull. They can trigger Python functions or external applications."
 
msgstr ""
 
"フックを使うと、リポジトリへのプッシュやプルといった特定のイベントに合わせ"
 
"て、何らかのアクションを実行できます。フック機能では、Pythonの関数を呼び出"
 
"したり、外部アプリケーションを起動したりできます。"
 

	
 
msgid "Failed to remove hook"
 
msgstr "フックの削除に失敗しました"
 

	
 
msgid "Delete records of missing repositories"
 
msgstr "見つからないリポジトリのレコードを削除"
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "すべてのリポジトリのキャッシュを無効化する"
 

	
 
msgid "Install Git hooks"
 
msgstr "Gitフックをインストール"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"各リポジトリに Kallitheas の Gitフックがインストールされているか確認してく"
 
"ださい。現在のフックは最新版に更新されます"
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "既存のGitフックを上書きする"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"GitフックをインストールするとKallitheaから設定されたものであっても既存の"
 
"フックは全て上書きされます。警告: この操作はあなたが手動で配置したGitのカ"
 
"スタムフックを全て破壊します!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "リポジトリを再スキャン"
 

	
 
msgid "Index build option"
 
msgstr "インデックス作成時の設定"
 

	
 
msgid "Build from scratch"
 
msgstr "一度削除してから再度インデックスを作成"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"このオプションを使うと、全文検索の機能が正しく発揮されるよう、 Kallithea "
 
"中の全てのファイルのインデックスを再生成します。"
 

	
 
msgid "Reindex"
 
msgstr "再インデックス"
 

	
 
msgid "Checking for updates..."
 
msgstr "更新を確認中..."
 

	
 
msgid "Kallithea version"
 
msgstr "Kallithea バージョン"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Kallithea の設定ファイル"
 

	
 
msgid "Python version"
 
msgstr "Python バージョン"
 

	
 
msgid "Platform"
 
msgstr "プラットフォーム"
 

	
 
msgid "Git version"
 
msgstr "Git バージョン"
 

	
 
msgid "Git path"
 
msgstr "Git パス"
 

	
 
msgid "Python Packages"
 
msgstr "Python パッケージ"
 

	
 
msgid "Show repository size after push"
 
msgstr "プッシュ後にリポジトリのサイズを表示する"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "プッシュ後にリポジトリを更新する (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurialエクステンション"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "largefilesエクステンションを有効にする"
 

	
 
msgid "Location of repositories"
 
msgstr "リポジトリの場所"
 

	
 
msgid ""
kallithea/i18n/ru/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -2238,97 +2238,97 @@ msgstr "Удалить записи об отсутствующих репозиториях"
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Отметьте для удаления всех комментариев, pull-запросов и других записей, "
 
"связанных с репозиториями, которые больше не существуют в файловой "
 
"системе."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Сбросить кэш для всех репозиториев"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Отметьте, чтобы перезагрузить данные и очистить ключи кэша у всех "
 
"репозиториев."
 

	
 
msgid "Install Git hooks"
 
msgstr "Установить хуки Git"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Проверяет установку Git хуков от Kallithea у каждого репозитория. Текущие "
 
"хуки будут обновлены до последней версии."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Перезаписать существующие хуки"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"Перезаписывает все существующие хуки при установке хуков Git, даже если "
 
"они не поставляются с Kallithea. ПРЕДУПРЕЖДЕНИЕ: это действие уничтожит "
 
"любые Git хуки, которые могли быть созданы вручную!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Пересканировать репозитории"
 

	
 
msgid "Index build option"
 
msgstr "Опции создания индекса"
 

	
 
msgid "Build from scratch"
 
msgstr "Пересобрать"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Эта опция полностью переиндексирует все репозитории для корректной работы "
 
"полнотекстового поиска."
 

	
 
msgid "Reindex"
 
msgstr "Перестроить индекс"
 

	
 
msgid "Checking for updates..."
 
msgstr "Поиск обновлений..."
 

	
 
msgid "Kallithea version"
 
msgstr "Версия Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Конфиг. Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Версия Python"
 

	
 
msgid "Platform"
 
msgstr "Платформа"
 

	
 
msgid "Git version"
 
msgstr "Версия Git"
 

	
 
msgid "Git path"
 
msgstr "Путь к Git"
 

	
 
msgid "Python Packages"
 
msgstr "Пакеты Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Показывать размер репозитория после отправки"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Обновлять репозиторий после отправки (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Расширения Mercurial"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Включить поддержку больших файлов"
 

	
 
msgid "Location of repositories"
 
msgstr "Местонахождение репозиториев"
 

	
 
msgid ""
kallithea/i18n/uk/LC_MESSAGES/kallithea.po
Show inline comments
 
@@ -1332,97 +1332,97 @@ msgstr "Видалення записів відсутніх репозиторіїв"
 
msgid ""
 
"Check this option to remove all comments, pull requests and other records "
 
"related to repositories that no longer exist in the filesystem."
 
msgstr ""
 
"Позначте цей пункт, щоб видалити всі коментарі, запити на пул-реквести та "
 
"інші записи, пов'язані з репозиторіями, які більше не існують в файловій "
 
"системі."
 

	
 
msgid "Invalidate cache for all repositories"
 
msgstr "Скинути кеш для всіх репозиторіїв"
 

	
 
msgid "Check this to reload data and clear cache keys for all repositories."
 
msgstr ""
 
"Відмітьте це, щоб перезавантажити дані і очистити ключі кешу для всіх "
 
"репозиторіїв."
 

	
 
msgid "Install Git hooks"
 
msgstr "Встановити Git хуки"
 

	
 
msgid ""
 
"Verify if Kallithea's Git hooks are installed for each repository. "
 
"Current hooks will be updated to the latest version."
 
msgstr ""
 
"Перевірити, чи є в Git хуки для кожного репозиторію. Поточні хуки буде "
 
"оновлено до останньої версії."
 

	
 
msgid "Overwrite existing Git hooks"
 
msgstr "Перезаписати існуючі хуки Git"
 

	
 
msgid ""
 
"If installing Git hooks, overwrite any existing hooks, even if they do "
 
"not seem to come from Kallithea. WARNING: This operation will destroy any "
 
"custom git hooks you may have deployed by hand!"
 
msgstr ""
 
"При установці Git хуків, перезаписати будь-які існуючі хуки, навіть якщо "
 
"вони, здається, не приходять з Каллітея. Увага: ця операція знищить будь-"
 
"які користувацькі хуки Git які ви, можливо, розгорнули вручну!"
 

	
 
msgid "Rescan Repositories"
 
msgstr "Пересканувати Репозиторії"
 

	
 
msgid "Index build option"
 
msgstr "Параметри побудови індексу"
 

	
 
msgid "Build from scratch"
 
msgstr "Побудувати з нуля"
 

	
 
msgid ""
 
"This option completely reindexeses all of the repositories for proper "
 
"This option completely reindexes all of the repositories for proper "
 
"fulltext search capabilities."
 
msgstr ""
 
"Цей варіант повністю переіндексує репозиторії для правильного "
 
"функціонування повнотекстового пошуку."
 

	
 
msgid "Reindex"
 
msgstr "Переіндексувати"
 

	
 
msgid "Checking for updates..."
 
msgstr "Перевірка оновлень..."
 

	
 
msgid "Kallithea version"
 
msgstr "Версія Kallithea"
 

	
 
msgid "Kallithea configuration file"
 
msgstr "Файл конфігурації Kallithea"
 

	
 
msgid "Python version"
 
msgstr "Версія Python"
 

	
 
msgid "Platform"
 
msgstr "Платформа"
 

	
 
msgid "Git version"
 
msgstr "Git версія"
 

	
 
msgid "Git path"
 
msgstr "Git шлях"
 

	
 
msgid "Python Packages"
 
msgstr "Пакети Python"
 

	
 
msgid "Show repository size after push"
 
msgstr "Показати розмір сховища після push"
 

	
 
msgid "Update repository after push (hg update)"
 
msgstr "Оновлення репозиторію після push (hg update)"
 

	
 
msgid "Mercurial extensions"
 
msgstr "Mercurial  розширення"
 

	
 
msgid "Enable largefiles extension"
 
msgstr "Увімкнути розширення largefiles"
 

	
 
msgid "Location of repositories"
 
msgstr "Розташування репозиторіїв"
 

	
 
msgid ""
kallithea/templates/admin/settings/settings_search.html
Show inline comments
 
${h.form(url('admin_settings_search'), method='post')}
 
    <div class="form">
 
            <div class="form-group">
 
                <label class="control-label">${_('Index build option')}:</label>
 
                <div>
 
                    <div class="checkbox">
 
                        <label>
 
                            ${h.checkbox('full_index',True)}
 
                            ${_('Build from scratch')}
 
                        </label>
 
                    </div>
 
                    <span class="help-block">${_('This option completely reindexeses all of the repositories for proper fulltext search capabilities.')}</span>
 
                    <span class="help-block">${_('This option completely reindexes all of the repositories for proper fulltext search capabilities.')}</span>
 
                </div>
 
            </div>
 

	
 
            <div class="form-group">
 
                <div class="buttons">
 
                    ${h.submit('reindex',_('Reindex'),class_="btn btn-default")}
 
                </div>
 
            </div>
 
    </div>
 
${h.end_form()}
kallithea/templates/changelog/changelog_table.html
Show inline comments
 
@@ -10,97 +10,97 @@
 
        %if show_checkbox:
 
        <td class="checkbox-column">
 
          ${h.checkbox(cs.raw_id,class_="changeset_range")}
 
        </td>
 
        %endif
 
        %if show_index:
 
        <td class="changeset-logical-index">
 
          <%
 
              index = num_cs - cnt
 
              if index == 1:
 
                  title = _('First (oldest) changeset in this list')
 
              elif index == num_cs:
 
                  title = _('Last (most recent) changeset in this list')
 
              else:
 
                  title = _('Position in this list of changesets')
 
          %>
 
          <span data-toggle="tooltip" title="${title}">
 
            ${index}
 
          </span>
 
        </td>
 
        %endif
 
        <td class="status">
 
          %if cs_statuses.get(cs.raw_id):
 
            %if cs_statuses.get(cs.raw_id)[2]:
 
              <a data-toggle="tooltip"
 
                  title="${_('Changeset status: %s by %s\nClick to open associated pull request %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username, cs_statuses.get(cs.raw_id)[4])}"
 
                  href="${h.url('pullrequest_show',repo_name=cs_statuses.get(cs.raw_id)[3],pull_request_id=cs_statuses.get(cs.raw_id)[2])}">
 
                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
 
              </a>
 
            %else:
 
              <a data-toggle="tooltip"
 
                  title="${_('Changeset status: %s by %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username)}"
 
                  href="${cs_comments[cs.raw_id][0].url()}">
 
                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
 
              </a>
 
            %endif
 
          %endif
 
        </td>
 
        <td class="author" data-toggle="tooltip" title="${cs.author}">
 
          ${h.gravatar(h.email_or_none(cs.author), size=16)}
 
          <span class="user">${h.person(cs.author)}</span>
 
        </td>
 
        <td class="hash">
 
          ${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id), class_='changeset_hash')}
 
        </td>
 
        <td class="date">
 
          <div data-toggle="tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
 
        </td>
 
        <% message_lines = cs.message.splitlines() %>
 
        <% message_lines = cs.message.strip().splitlines() or [_("(No commit message)")] %>
 
        %if len(message_lines) > 1:
 
        <td class="expand_commit" title="${_('Expand commit message')}">
 
          <i class="icon-align-left"></i>
 
        </td>
 
        %else:
 
        <td class="expand_commit"></td>
 
        %endif
 
        <td class="mid">
 
          <div class="log-container">
 
            <div class="message">
 
              <div class="message-firstline">${h.urlify_text(message_lines[0], c.repo_name,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</div>
 
              %if len(message_lines) > 1:
 
              <div class="message-full hidden">${h.urlify_text(cs.message, repo_name)}</div>
 
              %endif
 
            </div>
 
            <div class="extra-container">
 
              %if cs_comments.get(cs.raw_id):
 
                <a class="comments-container comments-cnt" href="${cs_comments[cs.raw_id][0].url()}" data-toggle="tooltip" title="${_('%s comments') % len(cs_comments[cs.raw_id])}">${len(cs_comments[cs.raw_id])}<i class="icon-comment-discussion"></i>
 
                </a>
 
              %endif
 
              %for book in cs.bookmarks:
 
                <span class="label label-bookmark" title="${_('Bookmark %s') % book}">${h.link_to(book,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</span>
 
              %endfor
 
              %for tag in cs.tags:
 
                <span class="label label-tag" title="${_('Tag %s') % tag}">${h.link_to(tag,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</span>
 
              %endfor
 
              %if cs.bumped:
 
                <span class="label label-bumped" title="Bumped">Bumped</span>
 
              %endif
 
              %if cs.divergent:
 
                <span class="label label-divergent" title="Divergent">Divergent</span>
 
              %endif
 
              %if cs.extinct:
 
                <span class="label label-extinct" title="Extinct">Extinct</span>
 
              %endif
 
              %if cs.unstable:
 
                <span class="label label-unstable" title="Unstable">Unstable</span>
 
              %endif
 
              %if cs.phase:
 
                <span class="label label-phase" title="Phase">${cs.phase}</span>
 
              %endif
 
              %if show_branch:
 
                %for branch in cs.branches:
 
                  <span class="label label-branch" title="${_('Branch %s' % branch)}">${h.link_to(branch,h.url('changelog_home',repo_name=repo_name,branch=branch))}</span>
 
                %endfor
 
              %endif
 
            </div>
 
          </div>
kallithea/templates/pullrequests/pullrequest_show.html
Show inline comments
 
@@ -122,97 +122,97 @@ ${self.repo_context_bar('showpullrequest
 
        </div>
 
        <div class="form-group">
 
          <label>${_('Owner')}:</label>
 
          <div class="pr-not-edit">
 
                  ${h.gravatar_div(c.pull_request.owner.email, size=20)}
 
                  <span>${c.pull_request.owner.full_name_and_username}</span><br/>
 
                  <span><a href="mailto:${c.pull_request.owner.email}">${c.pull_request.owner.email}</a></span><br/>
 
          </div>
 
          <div class="pr-do-edit" style="display:none">
 
               ${h.text('owner', class_='form-control', value=c.pull_request.owner.username, placeholder=_('Type name of user'))}
 
          </div>
 
        </div>
 

	
 
        <div class="form-group">
 
          <label>${_('Next iteration')}:</label>
 
            <div>
 
              <p>${c.update_msg}</p>
 
              %if c.avail_cs:
 
              <div id="updaterevs" class="clearfix">
 
                <div id="updaterevs-graph">
 
                  <canvas id="avail_graph_canvas"></canvas>
 
                </div>
 
                <table class="table" id="updaterevs-table">
 
                  %for cnt, cs in enumerate(c.avail_cs):
 
                    <tr id="chg_available_${cnt+1}" class="${'mergerow' if len(cs.parents) > 1 and not (editable and cs.revision in c.avail_revs) else ''}">
 
                      %if c.cs_ranges and cs.revision == c.cs_ranges[-1].revision:
 
                        %if editable:
 
                        <td>
 
                            ${h.radio(name='updaterev', value='', checked=True)}
 
                        </td>
 
                        %endif
 
                        <td colspan="4"><span>${_("Current revision - no change")}</span></td>
 
                      %else:
 
                        %if editable:
 
                        <td>
 
                          ${h.radio(name='updaterev', value=cs.raw_id, style=None if cs.revision in c.avail_revs else 'visibility: hidden')}
 
                        </td>
 
                        %endif
 
                        <td><span data-toggle="tooltip" title="${h.age(cs.date)}">${cs.date}</span></td>
 
                        <td>${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id), class_='changeset_hash')}</td>
 
                        <td>
 
                          <div class="pull-right">
 
                            %for tag in cs.tags:
 
                              <span class="label label-tag" title="${_('Tag %s') % tag}">
 
                                ${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
 
                              </span>
 
                            %endfor
 
                          </div>
 
                          <div class="message">${h.urlify_text(cs.message.splitlines()[0], c.repo_name)}</div>
 
                          <div class="message">${h.urlify_text(cs.message.strip().split('\n')[0] or _("(No commit message)"), c.repo_name)}</div>
 
                        </td>
 
                      %endif
 
                    </tr>
 
                  %endfor
 
                </table>
 
              </div>
 
              <div class="alert alert-info">${_("Pull request iterations do not change content once created. Select a revision to create a new iteration.")}</div>
 
              %endif
 
              %if c.update_msg_other:
 
                <div class="alert alert-info">${c.update_msg_other}</div>
 
              %endif
 
            </div>
 
        </div>
 
        %if editable:
 
        <div class="form-group">
 
          <div class="buttons">
 
            ${h.submit('pr-form-save',_('Save Changes'),class_="btn btn-default btn-sm")}
 
            ${h.submit('pr-form-clone',_('Create New Iteration with Changes'),class_="btn btn-default btn-sm",disabled='disabled')}
 
            ${h.reset('pr-form-reset',_('Cancel Changes'),class_="btn btn-default btn-sm")}
 
          </div>
 
        </div>
 
        %endif
 
      </div>
 
    </div>
 
    ## REVIEWERS
 
    <div class="pr-reviewers-box pull-left">
 
        <h4 class="pr-details-title">${_('Reviewers')}</h4>
 
        <div id="reviewers">
 
          ## members goes here !
 
          <div>
 
            %for member,status in c.pull_request_reviewers:
 
              <input type="hidden" value="${member.user_id}" name="org_review_members" />
 
            %endfor
 
            <ul id="review_members" class="list-unstyled">
 
            %for member,status in c.pull_request_reviewers:
 
              ## WARNING: the HTML below is duplicate with
 
              ## kallithea/public/js/base.js
 
              ## If you change something here it should be reflected in the template too.
 
              <li id="reviewer_${member.user_id}">
 
                <span class="reviewers_member">
 
                  <input type="hidden" value="${member.user_id}" name="review_members" />
 
                  <span class="reviewer_status" data-toggle="tooltip" title="${h.changeset_status_lbl(status)}">
 
                      <i class="icon-circle changeset-status-${status}"></i>
 
                  </span>
 
                  ${h.gravatar(member.email, size=14)}
 
                  <span>
 
                    ${member.full_name_and_username}
 
                    %if c.pull_request.owner_id == member.user_id:
0 comments (0 inline, 0 general)