Changeset - 923037eb67d4
[Not reviewed]
default
0 31 0
Thomas De Schampheleire - 11 years ago 2015-01-24 21:17:39
thomas.de_schampheleire@alcatel-lucent.com
spelling: fix various typos

This commit fixes various typos or basic English grammar mistakes found by
reviewing the kallithea.pot file.

Full correction of sentences that are not very well formulated, like missing
articles, is out of scope for this commit. Likewise for inconsistent
capitalization of strings like 'Repository group'/'Repository Group'.
4 files changed:
0 comments (0 inline, 0 general)
kallithea/controllers/admin/repo_groups.py
Show inline comments
 
@@ -95,378 +95,378 @@ class RepoGroupsController(BaseControlle
 

	
 
        # fill repository group users
 
        for p in repo_group.repo_group_to_perm:
 
            data.update({'u_perm_%s' % p.user.username:
 
                             p.permission.permission_name})
 

	
 
        # fill repository group groups
 
        for p in repo_group.users_group_to_perm:
 
            data.update({'g_perm_%s' % p.users_group.users_group_name:
 
                             p.permission.permission_name})
 

	
 
        return data
 

	
 
    def _revoke_perms_on_yourself(self, form_result):
 
        _up = filter(lambda u: c.authuser.username == u[0],
 
                     form_result['perms_updates'])
 
        _new = filter(lambda u: c.authuser.username == u[0],
 
                      form_result['perms_new'])
 
        if _new and _new[0][1] != 'group.admin' or _up and _up[0][1] != 'group.admin':
 
            return True
 
        return False
 

	
 
    def index(self, format='html'):
 
        """GET /repo_groups: All items in the collection"""
 
        # url('repos_groups')
 
        _list = RepoGroup.query()\
 
                    .order_by(func.lower(RepoGroup.group_name))\
 
                    .all()
 
        group_iter = RepoGroupList(_list, perm_set=['group.admin'])
 
        repo_groups_data = []
 
        total_records = len(group_iter)
 
        _tmpl_lookup = kallithea.CONFIG['pylons.app_globals'].mako_lookup
 
        template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
 

	
 
        repo_group_name = lambda repo_group_name, children_groups: (
 
            template.get_def("repo_group_name")
 
            .render(repo_group_name, children_groups, _=_, h=h, c=c)
 
        )
 
        repo_group_actions = lambda repo_group_id, repo_group_name, gr_count: (
 
            template.get_def("repo_group_actions")
 
            .render(repo_group_id, repo_group_name, gr_count, _=_, h=h, c=c,
 
                    ungettext=ungettext)
 
        )
 

	
 
        for repo_gr in group_iter:
 
            children_groups = map(h.safe_unicode,
 
                itertools.chain((g.name for g in repo_gr.parents),
 
                                (x.name for x in [repo_gr])))
 
            repo_count = repo_gr.repositories.count()
 
            repo_groups_data.append({
 
                "raw_name": repo_gr.group_name,
 
                "group_name": repo_group_name(repo_gr.group_name, children_groups),
 
                "desc": repo_gr.group_description,
 
                "repos": repo_count,
 
                "owner": h.person(repo_gr.user),
 
                "action": repo_group_actions(repo_gr.group_id, repo_gr.group_name,
 
                                             repo_count)
 
            })
 

	
 
        c.data = json.dumps({
 
            "totalRecords": total_records,
 
            "startIndex": 0,
 
            "sort": None,
 
            "dir": "asc",
 
            "records": repo_groups_data
 
        })
 

	
 
        return render('admin/repo_groups/repo_groups.html')
 

	
 
    def create(self):
 
        """POST /repo_groups: Create a new item"""
 
        # url('repos_groups')
 

	
 
        self.__load_defaults()
 

	
 
        # permissions for can create group based on parent_id are checked
 
        # here in the Form
 
        repo_group_form = RepoGroupForm(available_groups=
 
                                map(lambda k: unicode(k[0]), c.repo_groups))()
 
        try:
 
            form_result = repo_group_form.to_python(dict(request.POST))
 
            RepoGroupModel().create(
 
                group_name=form_result['group_name'],
 
                group_description=form_result['group_description'],
 
                parent=form_result['group_parent_id'],
 
                owner=self.authuser.user_id,
 
                copy_permissions=form_result['group_copy_permissions']
 
            )
 
            Session().commit()
 
            h.flash(_('Created repository group %s') \
 
                    % form_result['group_name'], category='success')
 
            #TODO: in futureaction_logger(, '', '', '', self.sa)
 
        except formencode.Invalid, errors:
 
            return htmlfill.render(
 
                render('admin/repo_groups/repo_group_add.html'),
 
                defaults=errors.value,
 
                errors=errors.error_dict or {},
 
                prefix_error=False,
 
                encoding="UTF-8")
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('Error occurred during creation of repository group %s') \
 
                    % request.POST.get('group_name'), category='error')
 
        parent_group_id = form_result['group_parent_id']
 
        #TODO: maybe we should get back to the main view, not the admin one
 
        return redirect(url('repos_groups', parent_group=parent_group_id))
 

	
 
    def new(self):
 
        """GET /repo_groups/new: Form to create a new item"""
 
        # url('new_repos_group')
 
        if HasPermissionAll('hg.admin')('group create'):
 
            #we're global admin, we're ok and we can create TOP level groups
 
            pass
 
        else:
 
            # we pass in parent group into creation form, thus we know
 
            # what would be the group, we can check perms here !
 
            group_id = safe_int(request.GET.get('parent_group'))
 
            group = RepoGroup.get(group_id) if group_id else None
 
            group_name = group.group_name if group else None
 
            if HasRepoGroupPermissionAll('group.admin')(group_name, 'group create'):
 
                pass
 
            else:
 
                return abort(403)
 

	
 
        self.__load_defaults()
 
        return render('admin/repo_groups/repo_group_add.html')
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def update(self, group_name):
 
        """PUT /repo_groups/group_name: Update an existing item"""
 
        # Forms posted to this method should contain a hidden field:
 
        #    <input type="hidden" name="_method" value="PUT" />
 
        # Or using helpers:
 
        #    h.form(url('repos_group', group_name=GROUP_NAME),
 
        #           method='put')
 
        # url('repos_group', group_name=GROUP_NAME)
 

	
 
        c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        if HasPermissionAll('hg.admin')('group edit'):
 
            #we're global admin, we're ok and we can create TOP level groups
 
            allow_empty_group = True
 
        elif not c.repo_group.parent_group:
 
            allow_empty_group = True
 
        else:
 
            allow_empty_group = False
 
        self.__load_defaults(allow_empty_group=allow_empty_group,
 
                             exclude_group_ids=[c.repo_group.group_id])
 

	
 
        repo_group_form = RepoGroupForm(
 
            edit=True,
 
            old_data=c.repo_group.get_dict(),
 
            available_groups=c.repo_groups_choices,
 
            can_create_in_root=allow_empty_group,
 
        )()
 
        try:
 
            form_result = repo_group_form.to_python(dict(request.POST))
 

	
 
            new_gr = RepoGroupModel().update(group_name, form_result)
 
            Session().commit()
 
            h.flash(_('Updated repository group %s') \
 
                    % form_result['group_name'], category='success')
 
            # we now have new name !
 
            group_name = new_gr.group_name
 
            #TODO: in future action_logger(, '', '', '', self.sa)
 
        except formencode.Invalid, errors:
 

	
 
            return htmlfill.render(
 
                render('admin/repo_groups/repo_group_edit.html'),
 
                defaults=errors.value,
 
                errors=errors.error_dict or {},
 
                prefix_error=False,
 
                encoding="UTF-8")
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('Error occurred during update of repository group %s') \
 
                    % request.POST.get('group_name'), category='error')
 

	
 
        return redirect(url('edit_repo_group', group_name=group_name))
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def delete(self, group_name):
 
        """DELETE /repo_groups/group_name: Delete an existing item"""
 
        # Forms posted to this method should contain a hidden field:
 
        #    <input type="hidden" name="_method" value="DELETE" />
 
        # Or using helpers:
 
        #    h.form(url('repos_group', group_name=GROUP_NAME),
 
        #           method='delete')
 
        # url('repos_group', group_name=GROUP_NAME)
 

	
 
        gr = c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        repos = gr.repositories.all()
 
        if repos:
 
            h.flash(_('This group contains %s repositores and cannot be '
 
            h.flash(_('This group contains %s repositories and cannot be '
 
                      'deleted') % len(repos), category='warning')
 
            return redirect(url('repos_groups'))
 

	
 
        children = gr.children.all()
 
        if children:
 
            h.flash(_('This group contains %s subgroups and cannot be deleted'
 
                      % (len(children))), category='warning')
 
            return redirect(url('repos_groups'))
 

	
 
        try:
 
            RepoGroupModel().delete(group_name)
 
            Session().commit()
 
            h.flash(_('Removed repository group %s') % group_name,
 
                    category='success')
 
            #TODO: in future action_logger(, '', '', '', self.sa)
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('Error occurred during deletion of repository group %s')
 
                    % group_name, category='error')
 

	
 
        if gr.parent_group:
 
            return redirect(url('repos_group_home', group_name=gr.parent_group.group_name))
 
        return redirect(url('repos_groups'))
 

	
 
    def show_by_name(self, group_name):
 
        """
 
        This is a proxy that does a lookup group_name -> id, and shows
 
        the group by id view instead
 
        """
 
        group_name = group_name.rstrip('/')
 
        id_ = RepoGroup.get_by_group_name(group_name)
 
        if id_:
 
            return self.show(group_name)
 
        raise HTTPNotFound
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.read', 'group.write',
 
                                         'group.admin')
 
    def show(self, group_name):
 
        """GET /repo_groups/group_name: Show a specific item"""
 
        # url('repos_group', group_name=GROUP_NAME)
 
        c.active = 'settings'
 

	
 
        c.group = c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        c.group_repos = c.group.repositories.all()
 

	
 
        #overwrite our cached list with current filter
 
        c.repo_cnt = 0
 

	
 
        groups = RepoGroup.query().order_by(RepoGroup.group_name)\
 
            .filter(RepoGroup.group_parent_id == c.group.group_id).all()
 
        c.groups = self.scm_model.get_repo_groups(groups)
 

	
 
        c.repos_list = Repository.query()\
 
                        .filter(Repository.group_id == c.group.group_id)\
 
                        .order_by(func.lower(Repository.repo_name))\
 
                        .all()
 

	
 
        repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
 
                                                   admin=False)
 
        #json used to render the grid
 
        c.data = json.dumps(repos_data)
 

	
 
        return render('admin/repo_groups/repo_group_show.html')
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def edit(self, group_name):
 
        """GET /repo_groups/group_name/edit: Form to edit an existing item"""
 
        # url('edit_repo_group', group_name=GROUP_NAME)
 
        c.active = 'settings'
 

	
 
        c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        #we can only allow moving empty group if it's already a top-level
 
        #group, ie has no parents, or we're admin
 
        if HasPermissionAll('hg.admin')('group edit'):
 
            #we're global admin, we're ok and we can create TOP level groups
 
            allow_empty_group = True
 
        elif not c.repo_group.parent_group:
 
            allow_empty_group = True
 
        else:
 
            allow_empty_group = False
 

	
 
        self.__load_defaults(allow_empty_group=allow_empty_group,
 
                             exclude_group_ids=[c.repo_group.group_id])
 
        defaults = self.__load_data(c.repo_group.group_id)
 

	
 
        return htmlfill.render(
 
            render('admin/repo_groups/repo_group_edit.html'),
 
            defaults=defaults,
 
            encoding="UTF-8",
 
            force_defaults=False
 
        )
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def edit_repo_group_advanced(self, group_name):
 
        """GET /repo_groups/group_name/edit: Form to edit an existing item"""
 
        # url('edit_repo_group', group_name=GROUP_NAME)
 
        c.active = 'advanced'
 
        c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 

	
 
        return render('admin/repo_groups/repo_group_edit.html')
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def edit_repo_group_perms(self, group_name):
 
        """GET /repo_groups/group_name/edit: Form to edit an existing item"""
 
        # url('edit_repo_group', group_name=GROUP_NAME)
 
        c.active = 'perms'
 
        c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        self.__load_defaults()
 
        defaults = self.__load_data(c.repo_group.group_id)
 

	
 
        return htmlfill.render(
 
            render('admin/repo_groups/repo_group_edit.html'),
 
            defaults=defaults,
 
            encoding="UTF-8",
 
            force_defaults=False
 
        )
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def update_perms(self, group_name):
 
        """
 
        Update permissions for given repository group
 

	
 
        :param group_name:
 
        """
 

	
 
        c.repo_group = RepoGroupModel()._get_repo_group(group_name)
 
        valid_recursive_choices = ['none', 'repos', 'groups', 'all']
 
        form_result = RepoGroupPermsForm(valid_recursive_choices)().to_python(request.POST)
 
        if not c.authuser.is_admin:
 
            if self._revoke_perms_on_yourself(form_result):
 
                msg = _('Cannot revoke permission for yourself as admin')
 
                h.flash(msg, category='warning')
 
                return redirect(url('edit_repo_group_perms', group_name=group_name))
 
        recursive = form_result['recursive']
 
        # iterate over all members(if in recursive mode) of this groups and
 
        # set the permissions !
 
        # this can be potentially heavy operation
 
        RepoGroupModel()._update_permissions(c.repo_group,
 
                                             form_result['perms_new'],
 
                                             form_result['perms_updates'],
 
                                             recursive)
 
        #TODO: implement this
 
        #action_logger(self.authuser, 'admin_changed_repo_permissions',
 
        #              repo_name, self.ip_addr, self.sa)
 
        Session().commit()
 
        h.flash(_('Repository Group permissions updated'), category='success')
 
        return redirect(url('edit_repo_group_perms', group_name=group_name))
 

	
 
    @HasRepoGroupPermissionAnyDecorator('group.admin')
 
    def delete_perms(self, group_name):
 
        """
 
        DELETE an existing repository group permission user
 

	
 
        :param group_name:
 
        """
 
        try:
 
            obj_type = request.POST.get('obj_type')
 
            obj_id = None
 
            if obj_type == 'user':
 
                obj_id = safe_int(request.POST.get('user_id'))
 
            elif obj_type == 'user_group':
 
                obj_id = safe_int(request.POST.get('user_group_id'))
 

	
 
            if not c.authuser.is_admin:
 
                if obj_type == 'user' and c.authuser.user_id == obj_id:
 
                    msg = _('Cannot revoke permission for yourself as admin')
 
                    h.flash(msg, category='warning')
 
                    raise Exception('revoke admin permission on self')
 
            recursive = request.POST.get('recursive', 'none')
 
            if obj_type == 'user':
 
                RepoGroupModel().delete_permission(repo_group=group_name,
 
                                                   obj=obj_id, obj_type='user',
 
                                                   recursive=recursive)
 
            elif obj_type == 'user_group':
 
                RepoGroupModel().delete_permission(repo_group=group_name,
 
                                                   obj=obj_id,
 
                                                   obj_type='user_group',
 
                                                   recursive=recursive)
 

	
 
            Session().commit()
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('An error occurred during revoking of permission'),
 
                    category='error')
 
            raise HTTPInternalServerError()
kallithea/controllers/api/api.py
Show inline comments
 
@@ -1242,385 +1242,385 @@ class ApiController(JSONRPCController):
 
                                  },
 
 
                                ]
 
                 "followers":   [<user_obj>, ...]
 
                 ]
 
            }
 
          }
 
          error :  null
 

	
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            # check if we have admin permission for this repo !
 
            perms = ('repository.admin', 'repository.write', 'repository.read')
 
            if not HasRepoPermissionAnyApi(*perms)(user=apiuser, repo_name=repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        members = []
 
        followers = []
 
        for user in repo.repo_to_perm:
 
            perm = user.permission.permission_name
 
            user = user.user
 
            user_data = {
 
                'name': user.username,
 
                'type': "user",
 
                'permission': perm
 
            }
 
            members.append(user_data)
 

	
 
        for user_group in repo.users_group_to_perm:
 
            perm = user_group.permission.permission_name
 
            user_group = user_group.users_group
 
            user_group_data = {
 
                'name': user_group.users_group_name,
 
                'type': "user_group",
 
                'permission': perm
 
            }
 
            members.append(user_group_data)
 

	
 
        for user in repo.followers:
 
            followers.append(user.user.get_api_data())
 

	
 
        data = repo.get_api_data()
 
        data['members'] = members
 
        data['followers'] = followers
 
        return data
 

	
 
    # permission check inside
 
    def get_repos(self, apiuser):
 
        """
 
        Lists all existing repositories. This command can be executed only using
 
        api_key belonging to user with admin rights or regular user that have
 
        admin, write or read access to repository.
 

	
 
        :param apiuser: filled automatically from apikey
 
        :type apiuser: AuthUser
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: [
 
                      {
 
                        "repo_id" :          "<repo_id>",
 
                        "repo_name" :        "<reponame>"
 
                        "repo_type" :        "<repo_type>",
 
                        "clone_uri" :        "<clone_uri>",
 
                        "private": :         "<bool>",
 
                        "created_on" :       "<datetimecreated>",
 
                        "description" :      "<description>",
 
                        "landing_rev":       "<landing_rev>",
 
                        "owner":             "<repo_owner>",
 
                        "fork_of":           "<name_of_fork_parent>",
 
                        "enable_downloads":  "<bool>",
 
                        "enable_locking":    "<bool>",
 
                        "enable_statistics": "<bool>",
 
                      },
 
 
                    ]
 
            error:  null
 
        """
 
        result = []
 
        if not HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            repos = RepoModel().get_all_user_repos(user=apiuser)
 
        else:
 
            repos = RepoModel().get_all()
 

	
 
        for repo in repos:
 
            result.append(repo.get_api_data())
 
        return result
 

	
 
    # permission check inside
 
    def get_repo_nodes(self, apiuser, repoid, revision, root_path,
 
                       ret_type=Optional('all')):
 
        """
 
        returns a list of nodes and it's children in a flat list for a given path
 
        at given revision. It's possible to specify ret_type to show only `files` or
 
        `dirs`.  This command can be executed only using api_key belonging to
 
        user with admin rights or regular user that have at least read access to repository.
 

	
 
        :param apiuser: filled automatically from apikey
 
        :type apiuser: AuthUser
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param revision: revision for which listing should be done
 
        :type revision: str
 
        :param root_path: path from which start displaying
 
        :type root_path: str
 
        :param ret_type: return type 'all|files|dirs' nodes
 
        :type ret_type: Optional(str)
 

	
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: [
 
                      {
 
                        "name" :        "<name>"
 
                        "type" :        "<type>",
 
                      },
 
 
                    ]
 
            error:  null
 
        """
 
        repo = get_repo_or_error(repoid)
 

	
 
        if not HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            # check if we have admin permission for this repo !
 
            perms = ('repository.admin', 'repository.write', 'repository.read')
 
            if not HasRepoPermissionAnyApi(*perms)(user=apiuser, repo_name=repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        ret_type = Optional.extract(ret_type)
 
        _map = {}
 
        try:
 
            _d, _f = ScmModel().get_nodes(repo, revision, root_path,
 
                                          flat=False)
 
            _map = {
 
                'all': _d + _f,
 
                'files': _f,
 
                'dirs': _d,
 
            }
 
            return _map[ret_type]
 
        except KeyError:
 
            raise JSONRPCError('ret_type must be one of %s'
 
                               % (','.join(_map.keys())))
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to get repo: `%s` nodes' % repo.repo_name
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
 
    def create_repo(self, apiuser, repo_name, owner=Optional(OAttr('apiuser')),
 
                    repo_type=Optional('hg'), description=Optional(''),
 
                    private=Optional(False), clone_uri=Optional(None),
 
                    landing_rev=Optional('rev:tip'),
 
                    enable_statistics=Optional(False),
 
                    enable_locking=Optional(False),
 
                    enable_downloads=Optional(False),
 
                    copy_permissions=Optional(False)):
 
        """
 
        Creates a repository. If repository name contains "/", all needed repository
 
        groups will be created. For example "foo/bar/baz" will create groups
 
        "foo", "bar" (with "foo" as parent), and create "baz" repository with
 
        "bar" as group. This command can be executed only using api_key
 
        belonging to user with admin rights or regular user that have create
 
        repository permission. Regular users cannot specify owner parameter
 

	
 
        :param apiuser: filled automatically from apikey
 
        :type apiuser: AuthUser
 
        :param repo_name: repository name
 
        :type repo_name: str
 
        :param owner: user_id or username
 
        :type owner: Optional(str)
 
        :param repo_type: 'hg' or 'git'
 
        :type repo_type: Optional(str)
 
        :param description: repository description
 
        :type description: Optional(str)
 
        :param private:
 
        :type private: bool
 
        :param clone_uri:
 
        :type clone_uri: str
 
        :param landing_rev: <rev_type>:<rev>
 
        :type landing_rev: str
 
        :param enable_locking:
 
        :type enable_locking: bool
 
        :param enable_downloads:
 
        :type enable_downloads: bool
 
        :param enable_statistics:
 
        :type enable_statistics: bool
 
        :param copy_permissions: Copy permission from group that repository is
 
            beeing created.
 
            being created.
 
        :type copy_permissions: bool
 

	
 
        OUTPUT::
 

	
 
            id : <id_given_in_input>
 
            result: {
 
                      "msg": "Created new repository `<reponame>`",
 
                      "success": true,
 
                      "task": "<celery task id or None if done sync>"
 
                    }
 
            error:  null
 

	
 
        ERROR OUTPUT::
 

	
 
          id : <id_given_in_input>
 
          result : null
 
          error :  {
 
             'failed to create repository `<repo_name>`
 
          }
 

	
 
        """
 
        if not HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            if not isinstance(owner, Optional):
 
                #forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only Kallithea admin can specify `owner` param'
 
                )
 
        if isinstance(owner, Optional):
 
            owner = apiuser.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 = Setting.get_default_repo_settings(strip_prefix=True)
 
        if isinstance(private, Optional):
 
            private = defs.get('repo_private') or Optional.extract(private)
 
        if isinstance(repo_type, Optional):
 
            repo_type = defs.get('repo_type')
 
        if isinstance(enable_statistics, Optional):
 
            enable_statistics = defs.get('repo_enable_statistics')
 
        if isinstance(enable_locking, Optional):
 
            enable_locking = defs.get('repo_enable_locking')
 
        if isinstance(enable_downloads, Optional):
 
            enable_downloads = defs.get('repo_enable_downloads')
 

	
 
        clone_uri = Optional.extract(clone_uri)
 
        description = Optional.extract(description)
 
        landing_rev = Optional.extract(landing_rev)
 
        copy_permissions = Optional.extract(copy_permissions)
 

	
 
        try:
 
            repo_name_cleaned = repo_name.split('/')[-1]
 
            # create structure of groups and return the last group
 
            repo_group = map_groups(repo_name)
 
            data = dict(
 
                repo_name=repo_name_cleaned,
 
                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_locking=enable_locking,
 
                enable_downloads=enable_downloads,
 
                repo_copy_permissions=copy_permissions,
 
            )
 

	
 
            task = RepoModel().create(form_data=data, cur_user=owner)
 
            from celery.result import BaseAsyncResult
 
            task_id = None
 
            if isinstance(task, BaseAsyncResult):
 
                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
 
                               # cann 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, apiuser, repoid, name=Optional(None),
 
                    owner=Optional(OAttr('apiuser')),
 
                    group=Optional(None),
 
                    description=Optional(''), private=Optional(False),
 
                    clone_uri=Optional(None), landing_rev=Optional('rev:tip'),
 
                    enable_statistics=Optional(False),
 
                    enable_locking=Optional(False),
 
                    enable_downloads=Optional(False)):
 

	
 
        """
 
        Updates repo
 

	
 
        :param apiuser: filled automatically from apikey
 
        :type apiuser: AuthUser
 
        :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_locking:
 
        :param enable_downloads:
 
        """
 
        repo = get_repo_or_error(repoid)
 
        if not HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            # check if we have admin permission for this repo !
 
            if not HasRepoPermissionAnyApi('repository.admin')(user=apiuser,
 
                                                               repo_name=repo.repo_name):
 
                raise JSONRPCError('repository `%s` does not exist' % (repoid,))
 

	
 
        updates = {
 
            # update function requires this.
 
            'repo_name': repo.repo_name
 
        }
 
        repo_group = group
 
        if not isinstance(repo_group, Optional):
 
            repo_group = get_repo_group_or_error(repo_group)
 
            repo_group = repo_group.group_id
 
        try:
 
            store_update(updates, name, 'repo_name')
 
            store_update(updates, repo_group, 'repo_group')
 
            store_update(updates, owner, 'user')
 
            store_update(updates, description, 'repo_description')
 
            store_update(updates, private, 'repo_private')
 
            store_update(updates, clone_uri, 'clone_uri')
 
            store_update(updates, landing_rev, 'repo_landing_rev')
 
            store_update(updates, enable_statistics, 'repo_enable_statistics')
 
            store_update(updates, enable_locking, 'repo_enable_locking')
 
            store_update(updates, enable_downloads, 'repo_enable_downloads')
 

	
 
            RepoModel().update(repo, **updates)
 
            Session().commit()
 
            return dict(
 
                msg='updated repo ID:%s %s' % (repo.repo_id, repo.repo_name),
 
                repository=repo.get_api_data()
 
            )
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to update repo `%s`' % repoid)
 

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
 
    def fork_repo(self, apiuser, repoid, fork_name,
 
                  owner=Optional(OAttr('apiuser')),
 
                  description=Optional(''), copy_permissions=Optional(False),
 
                  private=Optional(False), landing_rev=Optional('rev:tip')):
 
        """
 
        Creates a fork of given repo. In case of using celery this will
 
        immidiatelly return success message, while fork is going to be created
 
        asynchronous. This command can be executed only using api_key belonging to
 
        user with admin rights or regular user that have fork permission, and at least
 
        read access to forking repository. Regular users cannot specify owner parameter.
 

	
 
        :param apiuser: filled automatically from apikey
 
        :type apiuser: AuthUser
 
        :param repoid: repository name or repository id
 
        :type repoid: str or int
 
        :param fork_name:
 
        :param owner:
 
        :param description:
 
        :param copy_permissions:
 
        :param private:
 
        :param landing_rev:
 

	
 
        INPUT::
 

	
 
            id : <id_for_response>
 
            api_key : "<api_key>"
 
            args:     {
 
                        "repoid" :          "<reponame or repo_id>",
 
                        "fork_name":        "<forkname>",
 
                        "owner":            "<username or user_id = Optional(=apiuser)>",
 
                        "description":      "<description>",
 
                        "copy_permissions": "<bool>",
 
                        "private":          "<bool>",
 
                        "landing_rev":      "<landing_rev>"
 
                      }
 

	
 
        OUTPUT::
kallithea/controllers/files.py
Show inline comments
 
@@ -114,512 +114,512 @@ class FilesController(BaseRepoController
 
            if file_node.is_dir():
 
                raise RepositoryError('given path is a directory')
 
        except(ChangesetDoesNotExistError,), e:
 
            msg = _('Such revision does not exist for this repository')
 
            h.flash(msg, category='error')
 
            raise HTTPNotFound()
 
        except RepositoryError, e:
 
            h.flash(safe_str(e), category='error')
 
            raise HTTPNotFound()
 

	
 
        return file_node
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def index(self, repo_name, revision, f_path, annotate=False):
 
        # redirect to given revision from form if given
 
        post_revision = request.POST.get('at_rev', None)
 
        if post_revision:
 
            cs = self.__get_cs(post_revision) # FIXME - unused!
 

	
 
        c.revision = revision
 
        c.changeset = self.__get_cs(revision)
 
        c.branch = request.GET.get('branch', None)
 
        c.f_path = f_path
 
        c.annotate = annotate
 
        cur_rev = c.changeset.revision
 

	
 
        # prev link
 
        try:
 
            prev_rev = c.db_repo_scm_instance.get_changeset(cur_rev).prev(c.branch)
 
            c.url_prev = url('files_home', repo_name=c.repo_name,
 
                         revision=prev_rev.raw_id, f_path=f_path)
 
            if c.branch:
 
                c.url_prev += '?branch=%s' % c.branch
 
        except (ChangesetDoesNotExistError, VCSError):
 
            c.url_prev = '#'
 

	
 
        # next link
 
        try:
 
            next_rev = c.db_repo_scm_instance.get_changeset(cur_rev).next(c.branch)
 
            c.url_next = url('files_home', repo_name=c.repo_name,
 
                     revision=next_rev.raw_id, f_path=f_path)
 
            if c.branch:
 
                c.url_next += '?branch=%s' % c.branch
 
        except (ChangesetDoesNotExistError, VCSError):
 
            c.url_next = '#'
 

	
 
        # files or dirs
 
        try:
 
            c.file = c.changeset.get_node(f_path)
 

	
 
            if c.file.is_file():
 
                c.load_full_history = False
 
                file_last_cs = c.file.last_changeset
 
                c.file_changeset = (c.changeset
 
                                    if c.changeset.revision < file_last_cs.revision
 
                                    else file_last_cs)
 
                #determine if we're on branch head
 
                _branches = c.db_repo_scm_instance.branches
 
                c.on_branch_head = revision in _branches.keys() + _branches.values()
 
                _hist = []
 
                c.file_history = []
 
                if c.load_full_history:
 
                    c.file_history, _hist = self._get_node_history(c.changeset, f_path)
 

	
 
                c.authors = []
 
                for a in set([x.author for x in _hist]):
 
                    c.authors.append((h.email(a), h.person(a)))
 
            else:
 
                c.authors = c.file_history = []
 
        except RepositoryError, e:
 
            h.flash(safe_str(e), category='error')
 
            raise HTTPNotFound()
 

	
 
        if request.environ.get('HTTP_X_PARTIAL_XHR'):
 
            return render('files/files_ypjax.html')
 

	
 
        # TODO: tags and bookmarks?
 
        c.revision_options = [(c.changeset.raw_id,
 
                              _('%s at %s') % (c.changeset.branch, h.short_id(c.changeset.raw_id)))] + \
 
            [(n, b) for b, n in c.db_repo_scm_instance.branches.items()]
 
        if c.db_repo_scm_instance.closed_branches:
 
            prefix = _('(closed)') + ' '
 
            c.revision_options += [('-', '-')] + \
 
                [(n, prefix + b) for b, n in c.db_repo_scm_instance.closed_branches.items()]
 

	
 
        return render('files/files.html')
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    @jsonify
 
    def history(self, repo_name, revision, f_path):
 
        changeset = self.__get_cs(revision)
 
        f_path = f_path
 
        _file = changeset.get_node(f_path)
 
        if _file.is_file():
 
            file_history, _hist = self._get_node_history(changeset, f_path)
 

	
 
            res = []
 
            for obj in file_history:
 
                res.append({
 
                    'text': obj[1],
 
                    'children': [{'id': o[0], 'text': o[1]} for o in obj[0]]
 
                })
 

	
 
            data = {
 
                'more': False,
 
                'results': res
 
            }
 
            return data
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def authors(self, repo_name, revision, f_path):
 
        changeset = self.__get_cs(revision)
 
        f_path = f_path
 
        _file = changeset.get_node(f_path)
 
        if _file.is_file():
 
            file_history, _hist = self._get_node_history(changeset, f_path)
 
            c.authors = []
 
            for a in set([x.author for x in _hist]):
 
                c.authors.append((h.email(a), h.person(a)))
 
            return render('files/files_history_box.html')
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def rawfile(self, repo_name, revision, f_path):
 
        cs = self.__get_cs(revision)
 
        file_node = self.__get_filenode(cs, f_path)
 

	
 
        response.content_disposition = 'attachment; filename=%s' % \
 
            safe_str(f_path.split(Repository.url_sep())[-1])
 

	
 
        response.content_type = file_node.mimetype
 
        return file_node.content
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def raw(self, repo_name, revision, f_path):
 
        cs = self.__get_cs(revision)
 
        file_node = self.__get_filenode(cs, f_path)
 

	
 
        raw_mimetype_mapping = {
 
            # map original mimetype to a mimetype used for "show as raw"
 
            # you can also provide a content-disposition to override the
 
            # default "attachment" disposition.
 
            # orig_type: (new_type, new_dispo)
 

	
 
            # show images inline:
 
            'image/x-icon': ('image/x-icon', 'inline'),
 
            'image/png': ('image/png', 'inline'),
 
            'image/gif': ('image/gif', 'inline'),
 
            'image/jpeg': ('image/jpeg', 'inline'),
 
            'image/svg+xml': ('image/svg+xml', 'inline'),
 
        }
 

	
 
        mimetype = file_node.mimetype
 
        try:
 
            mimetype, dispo = raw_mimetype_mapping[mimetype]
 
        except KeyError:
 
            # we don't know anything special about this, handle it safely
 
            if file_node.is_binary:
 
                # do same as download raw for binary files
 
                mimetype, dispo = 'application/octet-stream', 'attachment'
 
            else:
 
                # do not just use the original mimetype, but force text/plain,
 
                # otherwise it would serve text/html and that might be unsafe.
 
                # Note: underlying vcs library fakes text/plain mimetype if the
 
                # mimetype can not be determined and it thinks it is not
 
                # binary.This might lead to erroneous text display in some
 
                # cases, but helps in other cases, like with text files
 
                # without extension.
 
                mimetype, dispo = 'text/plain', 'inline'
 

	
 
        if dispo == 'attachment':
 
            dispo = 'attachment; filename=%s' % \
 
                        safe_str(f_path.split(os.sep)[-1])
 

	
 
        response.content_disposition = dispo
 
        response.content_type = mimetype
 
        return file_node.content
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
 
    def delete(self, repo_name, revision, f_path):
 
        repo = c.db_repo
 
        if repo.enable_locking and repo.locked[0]:
 
            h.flash(_('This repository is has been locked by %s on %s')
 
            h.flash(_('This repository has been locked by %s on %s')
 
                % (h.person_by_id(repo.locked[0]),
 
                   h.fmt_date(h.time_to_datetime(repo.locked[1]))),
 
                'warning')
 
            return redirect(h.url('files_home',
 
                                  repo_name=repo_name, revision='tip'))
 

	
 
        # check if revision is a branch identifier- basically we cannot
 
        # create multiple heads via file editing
 
        _branches = repo.scm_instance.branches
 
        # check if revision is a branch name or branch hash
 
        if revision not in _branches.keys() + _branches.values():
 
            h.flash(_('You can only delete files with revision '
 
                      'being a valid branch '), category='warning')
 
            return redirect(h.url('files_home',
 
                                  repo_name=repo_name, revision='tip',
 
                                  f_path=f_path))
 

	
 
        r_post = request.POST
 

	
 
        c.cs = self.__get_cs(revision)
 
        c.file = self.__get_filenode(c.cs, f_path)
 

	
 
        c.default_message = _('Deleted file %s via Kallithea') % (f_path)
 
        c.f_path = f_path
 
        node_path = f_path
 
        author = self.authuser.full_contact
 

	
 
        if r_post:
 
            message = r_post.get('message') or c.default_message
 

	
 
            try:
 
                nodes = {
 
                    node_path: {
 
                        'content': ''
 
                    }
 
                }
 
                self.scm_model.delete_nodes(
 
                    user=c.authuser.user_id, repo=c.db_repo,
 
                    message=message,
 
                    nodes=nodes,
 
                    parent_cs=c.cs,
 
                    author=author,
 
                )
 

	
 
                h.flash(_('Successfully deleted file %s') % f_path,
 
                        category='success')
 
            except Exception:
 
                log.error(traceback.format_exc())
 
                h.flash(_('Error occurred during commit'), category='error')
 
            return redirect(url('changeset_home',
 
                                repo_name=c.repo_name, revision='tip'))
 

	
 
        return render('files/files_delete.html')
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
 
    def edit(self, repo_name, revision, f_path):
 
        repo = c.db_repo
 
        if repo.enable_locking and repo.locked[0]:
 
            h.flash(_('This repository is has been locked by %s on %s')
 
            h.flash(_('This repository has been locked by %s on %s')
 
                % (h.person_by_id(repo.locked[0]),
 
                   h.fmt_date(h.time_to_datetime(repo.locked[1]))),
 
                'warning')
 
            return redirect(h.url('files_home',
 
                                  repo_name=repo_name, revision='tip'))
 

	
 
        # check if revision is a branch identifier- basically we cannot
 
        # create multiple heads via file editing
 
        _branches = repo.scm_instance.branches
 
        # check if revision is a branch name or branch hash
 
        if revision not in _branches.keys() + _branches.values():
 
            h.flash(_('You can only edit files with revision '
 
                      'being a valid branch '), category='warning')
 
            return redirect(h.url('files_home',
 
                                  repo_name=repo_name, revision='tip',
 
                                  f_path=f_path))
 

	
 
        r_post = request.POST
 

	
 
        c.cs = self.__get_cs(revision)
 
        c.file = self.__get_filenode(c.cs, f_path)
 

	
 
        if c.file.is_binary:
 
            return redirect(url('files_home', repo_name=c.repo_name,
 
                            revision=c.cs.raw_id, f_path=f_path))
 
        c.default_message = _('Edited file %s via Kallithea') % (f_path)
 
        c.f_path = f_path
 

	
 
        if r_post:
 

	
 
            old_content = c.file.content
 
            sl = old_content.splitlines(1)
 
            first_line = sl[0] if sl else ''
 
            # modes:  0 - Unix, 1 - Mac, 2 - DOS
 
            mode = detect_mode(first_line, 0)
 
            content = convert_line_endings(r_post.get('content', ''), mode)
 

	
 
            message = r_post.get('message') or c.default_message
 
            author = self.authuser.full_contact
 

	
 
            if content == old_content:
 
                h.flash(_('No changes'), category='warning')
 
                return redirect(url('changeset_home', repo_name=c.repo_name,
 
                                    revision='tip'))
 
            try:
 
                self.scm_model.commit_change(repo=c.db_repo_scm_instance,
 
                                             repo_name=repo_name, cs=c.cs,
 
                                             user=self.authuser.user_id,
 
                                             author=author, message=message,
 
                                             content=content, f_path=f_path)
 
                h.flash(_('Successfully committed to %s') % f_path,
 
                        category='success')
 
            except Exception:
 
                log.error(traceback.format_exc())
 
                h.flash(_('Error occurred during commit'), category='error')
 
            return redirect(url('changeset_home',
 
                                repo_name=c.repo_name, revision='tip'))
 

	
 
        return render('files/files_edit.html')
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
 
    def add(self, repo_name, revision, f_path):
 

	
 
        repo = Repository.get_by_repo_name(repo_name)
 
        if repo.enable_locking and repo.locked[0]:
 
            h.flash(_('This repository is has been locked by %s on %s')
 
            h.flash(_('This repository has been locked by %s on %s')
 
                % (h.person_by_id(repo.locked[0]),
 
                   h.fmt_date(h.time_to_datetime(repo.locked[1]))),
 
                  'warning')
 
            return redirect(h.url('files_home',
 
                                  repo_name=repo_name, revision='tip'))
 

	
 
        r_post = request.POST
 
        c.cs = self.__get_cs(revision, silent_empty=True)
 
        if c.cs is None:
 
            c.cs = EmptyChangeset(alias=c.db_repo_scm_instance.alias)
 
        c.default_message = (_('Added file via Kallithea'))
 
        c.f_path = f_path
 

	
 
        if r_post:
 
            unix_mode = 0
 
            content = convert_line_endings(r_post.get('content', ''), unix_mode)
 

	
 
            message = r_post.get('message') or c.default_message
 
            filename = r_post.get('filename')
 
            location = r_post.get('location', '')
 
            file_obj = r_post.get('upload_file', None)
 

	
 
            if file_obj is not None and hasattr(file_obj, 'filename'):
 
                filename = file_obj.filename
 
                content = file_obj.file
 

	
 
                if hasattr(content, 'file'):
 
                    # non posix systems store real file under file attr
 
                    content = content.file
 

	
 
            if not content:
 
                h.flash(_('No content'), category='warning')
 
                return redirect(url('changeset_home', repo_name=c.repo_name,
 
                                    revision='tip'))
 
            if not filename:
 
                h.flash(_('No filename'), category='warning')
 
                return redirect(url('changeset_home', repo_name=c.repo_name,
 
                                    revision='tip'))
 
            #strip all crap out of file, just leave the basename
 
            filename = os.path.basename(filename)
 
            node_path = os.path.join(location, filename)
 
            author = self.authuser.full_contact
 

	
 
            try:
 
                nodes = {
 
                    node_path: {
 
                        'content': content
 
                    }
 
                }
 
                self.scm_model.create_nodes(
 
                    user=c.authuser.user_id, repo=c.db_repo,
 
                    message=message,
 
                    nodes=nodes,
 
                    parent_cs=c.cs,
 
                    author=author,
 
                )
 

	
 
                h.flash(_('Successfully committed to %s') % node_path,
 
                        category='success')
 
            except NonRelativePathError, e:
 
                h.flash(_('Location must be relative path and must not '
 
                          'contain .. in path'), category='warning')
 
                return redirect(url('changeset_home', repo_name=c.repo_name,
 
                                    revision='tip'))
 
            except (NodeError, NodeAlreadyExistsError), e:
 
                h.flash(_(e), category='error')
 
            except Exception:
 
                log.error(traceback.format_exc())
 
                h.flash(_('Error occurred during commit'), category='error')
 
            return redirect(url('changeset_home',
 
                                repo_name=c.repo_name, revision='tip'))
 

	
 
        return render('files/files_add.html')
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def archivefile(self, repo_name, fname):
 

	
 
        fileformat = None
 
        revision = None
 
        ext = None
 
        subrepos = request.GET.get('subrepos') == 'true'
 

	
 
        for a_type, ext_data in settings.ARCHIVE_SPECS.items():
 
            archive_spec = fname.split(ext_data[1])
 
            if len(archive_spec) == 2 and archive_spec[1] == '':
 
                fileformat = a_type or ext_data[1]
 
                revision = archive_spec[0]
 
                ext = ext_data[1]
 

	
 
        try:
 
            dbrepo = RepoModel().get_by_repo_name(repo_name)
 
            if not dbrepo.enable_downloads:
 
                return _('Downloads disabled')
 

	
 
            if c.db_repo_scm_instance.alias == 'hg':
 
                # patch and reset hooks section of UI config to not run any
 
                # hooks on fetching archives with subrepos
 
                for k, v in c.db_repo_scm_instance._repo.ui.configitems('hooks'):
 
                    c.db_repo_scm_instance._repo.ui.setconfig('hooks', k, None)
 

	
 
            cs = c.db_repo_scm_instance.get_changeset(revision)
 
            content_type = settings.ARCHIVE_SPECS[fileformat][0]
 
        except ChangesetDoesNotExistError:
 
            return _('Unknown revision %s') % revision
 
        except EmptyRepositoryError:
 
            return _('Empty repository')
 
        except (ImproperArchiveTypeError, KeyError):
 
            return _('Unknown archive type')
 
        # archive cache
 
        from kallithea import CONFIG
 
        rev_name = cs.raw_id[:12]
 
        archive_name = '%s-%s%s' % (safe_str(repo_name.replace('/', '_')),
 
                                    safe_str(rev_name), ext)
 

	
 
        use_cached_archive = False  # defines if we use cached version of archive
 
        archive_cache_enabled = CONFIG.get('archive_cache_dir')
 
        if not subrepos and archive_cache_enabled:
 
            #check if we it's ok to write
 
            if not os.path.isdir(CONFIG['archive_cache_dir']):
 
                os.makedirs(CONFIG['archive_cache_dir'])
 
            cached_archive_path = os.path.join(CONFIG['archive_cache_dir'], archive_name)
 
            if os.path.isfile(cached_archive_path):
 
                log.debug('Found cached archive in %s' % cached_archive_path)
 
                fd, archive = None, cached_archive_path
 
                use_cached_archive = True
 
            else:
 
                log.debug('Archive %s is not yet cached' % (archive_name))
 

	
 
        if not use_cached_archive:
 
            # generate new archive
 
            fd, archive = tempfile.mkstemp()
 
            temp_stream = open(archive, 'wb')
 
            log.debug('Creating new temp archive in %s' % archive)
 
            cs.fill_archive(stream=temp_stream, kind=fileformat, subrepos=subrepos)
 
            temp_stream.close()
 
            if not subrepos and archive_cache_enabled:
 
                #if we generated the archive and use cache rename that
 
                log.debug('Storing new archive in %s' % cached_archive_path)
 
                shutil.move(archive, cached_archive_path)
 
                archive = cached_archive_path
 

	
 
        def get_chunked_archive(archive):
 
            stream = open(archive, 'rb')
 
            while True:
 
                data = stream.read(16 * 1024)
 
                if not data:
 
                    stream.close()
 
                    if fd:  # fd means we used temporary file
 
                        os.close(fd)
 
                    if not archive_cache_enabled:
 
                        log.debug('Destroing temp archive %s' % archive)
 
                        os.remove(archive)
 
                    break
 
                yield data
 
        # store download action
 
        action_logger(user=c.authuser,
 
                      action='user_downloaded_archive:%s' % (archive_name),
 
                      repo=repo_name, ipaddr=self.ip_addr, commit=True)
 
        response.content_disposition = str('attachment; filename=%s' % (archive_name))
 
        response.content_type = str(content_type)
 
        return get_chunked_archive(archive)
 

	
 
    @LoginRequired()
 
    @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
 
                                   'repository.admin')
 
    def diff(self, repo_name, f_path):
 
        ignore_whitespace = request.GET.get('ignorews') == '1'
 
        line_context = request.GET.get('context', 3)
 
        diff2 = request.GET.get('diff2', '')
 
        diff1 = request.GET.get('diff1', '') or diff2
 
        c.action = request.GET.get('diff')
 
        c.no_changes = diff1 == diff2
 
        c.f_path = f_path
 
        c.big_diff = False
 
        c.anchor_url = anchor_url
 
        c.ignorews_url = _ignorews_url
 
        c.context_url = _context_url
 
        c.changes = OrderedDict()
 
        c.changes[diff2] = []
 

	
 
        #special case if we want a show rev only, it's impl here
 
        #to reduce JS and callbacks
 

	
 
        if request.GET.get('show_rev'):
 
            if str2bool(request.GET.get('annotate', 'False')):
 
                _url = url('files_annotate_home', repo_name=c.repo_name,
 
                           revision=diff1, f_path=c.f_path)
 
            else:
 
                _url = url('files_home', repo_name=c.repo_name,
 
                           revision=diff1, f_path=c.f_path)
kallithea/i18n/cs/LC_MESSAGES/kallithea.po
Show inline comments
 
# Translations template for Kallithea.
 
# Copyright (C) 2014 Various authors, licensing as GPLv3
 
# This file is distributed under the same license as the Kallithea project.
 
# Automatically generated, 2014.
 
# #, fuzzy
 
msgid ""
 
msgstr ""
 
"Project-Id-Version: Kallithea 2.2.5\n"
 
"Report-Msgid-Bugs-To: marcin@maq.io\n"
 
"POT-Creation-Date: 2014-07-02 19:08-0400\n"
 
"PO-Revision-Date: 2014-11-26 13:18+0200\n"
 
"Last-Translator: Michal Čihař <michal@cihar.com>\n"
 
"Language-Team: Czech "
 
"<https://hosted.weblate.org/projects/kallithea/kallithea/cs/>\n"
 
"Language: cs\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=UTF-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
"X-Generator: Weblate 2.1-dev\n"
 
"Generated-By: Babel 0.9.6\n"
 

	
 
#: kallithea/controllers/changelog.py:90 kallithea/controllers/compare.py:90
 
#: kallithea/controllers/pullrequests.py:265
 
msgid "There are no changesets yet"
 
msgstr ""
 

	
 
#: kallithea/controllers/changelog.py:186
 
msgid "All Branches"
 
msgstr "Všechny větve"
 

	
 
#: kallithea/controllers/changelog.py:189
 
msgid "(closed)"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:87
 
msgid "Show whitespace"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:94
 
#: kallithea/controllers/changeset.py:101
 
msgid "Ignore whitespace"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:167
 
#, python-format
 
msgid "increase diff context to %(num)s lines"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:209 kallithea/controllers/files.py:98
 
#: kallithea/controllers/files.py:121
 
msgid "Such revision does not exist for this repository"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:355
 
#: kallithea/controllers/pullrequests.py:482
 
#, python-format
 
msgid "Status change -> %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/changeset.py:386
 
msgid ""
 
"Changing status on a changeset associated with a closed pull request is not "
 
"allowed"
 
msgstr ""
 

	
 
#: kallithea/controllers/compare.py:194 kallithea/templates/base/root.html:65
 
msgid "Select changeset"
 
msgstr ""
 

	
 
#: kallithea/controllers/error.py:72
 
msgid "Home page"
 
msgstr "Hlavní stránka"
 

	
 
#: kallithea/controllers/error.py:101
 
msgid ""
 
"The request could not be understood by the server due to malformed syntax."
 
msgstr ""
 

	
 
#: kallithea/controllers/error.py:104
 
msgid "Unauthorized access to resource"
 
msgstr ""
 

	
 
#: kallithea/controllers/error.py:106
 
msgid "You don't have permission to view this page"
 
msgstr ""
 

	
 
#: kallithea/controllers/error.py:108
 
msgid "The resource could not be found"
 
msgstr ""
 

	
 
#: kallithea/controllers/error.py:110
 
msgid ""
 
"The server encountered an unexpected condition which prevented it from "
 
"fulfilling the request."
 
msgstr ""
 

	
 
#: kallithea/controllers/feed.py:55
 
#, python-format
 
msgid "Changes on %s repository"
 
msgstr "Změny na repozitáři %s"
 

	
 
#: kallithea/controllers/feed.py:56
 
#, python-format
 
msgid "%s %s feed"
 
msgstr ""
 

	
 
#: kallithea/controllers/feed.py:89
 
#: kallithea/templates/changeset/changeset.html:139
 
#: kallithea/templates/changeset/changeset.html:151
 
#: kallithea/templates/compare/compare_diff.html:75
 
#: kallithea/templates/compare/compare_diff.html:85
 
#: kallithea/templates/pullrequests/pullrequest_show.html:178
 
#: kallithea/templates/pullrequests/pullrequest_show.html:202
 
msgid "Changeset was too big and was cut off..."
 
msgstr ""
 

	
 
#: kallithea/controllers/feed.py:93
 
#, python-format
 
msgid "%s committed on %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:92
 
msgid "Click here to add new file"
 
msgstr "Klikněte pro přidání nového souboru"
 

	
 
#: kallithea/controllers/files.py:93
 
#, python-format
 
msgid "There are no files yet. %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:301 kallithea/controllers/files.py:361
 
#: kallithea/controllers/files.py:428
 
#, python-format
 
msgid "This repository is has been locked by %s on %s"
 
msgid "This repository has been locked by %s on %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:313
 
msgid "You can only delete files with revision being a valid branch "
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:324
 
#, python-format
 
msgid "Deleted file %s via Kallithea"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:346
 
#, python-format
 
msgid "Successfully deleted file %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:350 kallithea/controllers/files.py:416
 
#: kallithea/controllers/files.py:498
 
msgid "Error occurred during commit"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:373
 
msgid "You can only edit files with revision being a valid branch "
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:387
 
#, python-format
 
msgid "Edited file %s via Kallithea"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:403
 
msgid "No changes"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:412 kallithea/controllers/files.py:487
 
#, python-format
 
msgid "Successfully committed to %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:440
 
msgid "Added file via Kallithea"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:461
 
msgid "No content"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:465
 
msgid "No filename"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:490
 
msgid "Location must be relative path and must not contain .. in path"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:524
 
msgid "Downloads disabled"
 
msgstr "Stahování vypnuto"
 

	
 
#: kallithea/controllers/files.py:535
 
#, python-format
 
msgid "Unknown revision %s"
 
msgstr "Neznámá revize %s"
 

	
 
#: kallithea/controllers/files.py:537
 
msgid "Empty repository"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:539
 
msgid "Unknown archive type"
 
msgstr ""
 

	
 
#: kallithea/controllers/files.py:775
 
#: kallithea/templates/changeset/changeset_range.html:12
 
#: kallithea/templates/email_templates/pull_request.html:12
 
#: kallithea/templates/pullrequests/pullrequest.html:123
 
msgid "Changesets"
 
msgstr "Změny"
 

	
 
#: kallithea/controllers/files.py:776
 
#: kallithea/controllers/pullrequests.py:160
 
#: kallithea/controllers/summary.py:76 kallithea/model/scm.py:818
 
#: kallithea/templates/switch_to_list.html:3
 
#: kallithea/templates/branches/branches.html:13
 
msgid "Branches"
 
msgstr "Větve"
 

	
 
#: kallithea/controllers/files.py:777
 
#: kallithea/controllers/pullrequests.py:161
 
#: kallithea/controllers/summary.py:77 kallithea/model/scm.py:829
 
#: kallithea/templates/switch_to_list.html:25
 
#: kallithea/templates/tags/tags.html:13
 
msgid "Tags"
 
msgstr "Tagy"
 

	
 
#: kallithea/controllers/forks.py:191
 
#, python-format
 
msgid "An error occurred during repository forking %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/home.py:86
 
msgid "Groups"
 
msgstr ""
 

	
 
#: kallithea/controllers/home.py:91
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:106
 
#: kallithea/templates/admin/repos/repo_add.html:15
 
#: kallithea/templates/admin/repos/repo_add.html:19
 
#: kallithea/templates/admin/users/user_edit_advanced.html:6
 
#: kallithea/templates/base/base.html:73 kallithea/templates/base/base.html:90
 
#: kallithea/templates/base/base.html:139
 
#: kallithea/templates/base/base.html:394
 
#: kallithea/templates/base/base.html:565
 
msgid "Repositories"
 
msgstr ""
 

	
 
#: kallithea/controllers/home.py:132 kallithea/templates/files/files.html:33
 
#: kallithea/templates/files/files_add.html:37
 
#: kallithea/templates/files/files_delete.html:37
 
#: kallithea/templates/files/files_edit.html:37
 
msgid "Branch"
 
msgstr "Větev"
 

	
 
#: kallithea/controllers/home.py:138
 
msgid "Tag"
 
msgstr "Tag"
 

	
 
#: kallithea/controllers/home.py:144
 
msgid "Bookmark"
 
msgstr "Záložka"
 

	
 
#: kallithea/controllers/journal.py:114 kallithea/controllers/journal.py:157
 
msgid "public journal"
 
msgstr ""
 

	
 
#: kallithea/controllers/journal.py:118 kallithea/controllers/journal.py:161
 
#: kallithea/templates/journal/journal.html:15
 
msgid "journal"
 
msgstr ""
 

	
 
#: kallithea/controllers/login.py:187 kallithea/controllers/login.py:232
 
msgid "bad captcha"
 
msgstr ""
 

	
 
#: kallithea/controllers/login.py:193
 
msgid "You have successfully registered into Kallithea"
 
msgstr ""
 

	
 
#: kallithea/controllers/login.py:237
 
msgid "Your password reset link was sent"
 
msgstr ""
 

	
 
#: kallithea/controllers/login.py:257
 
msgid ""
 
"Your password reset was successful, new password has been sent to your email"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:140
 
#: kallithea/templates/changeset/changeset.html:13
 
#: kallithea/templates/email_templates/changeset_comment.html:15
 
msgid "Changeset"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:157
 
msgid "Special"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:158
 
msgid "Peer branches"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:159 kallithea/model/scm.py:824
 
#: kallithea/templates/switch_to_list.html:38
 
#: kallithea/templates/bookmarks/bookmarks.html:13
 
msgid "Bookmarks"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:330
 
msgid "Pull request requires a title with min. 3 chars"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:332
 
#, python-format
 
msgid "Error creating pull request: %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:354
 
msgid "Successfully opened new pull request"
 
msgstr ""
 

	
 
#: kallithea/controllers/pullrequests.py:357
 
msgid "Error occurred during sending pull request"
 
@@ -429,1052 +429,1052 @@ msgstr ""
 
#: kallithea/controllers/admin/gists.py:263
 
msgid "Successfully updated gist content"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/gists.py:268
 
msgid "Successfully updated gist data"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/gists.py:271
 
#, python-format
 
msgid "Error occurred during update of gist %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:70
 
msgid "You can't edit this user since it's crucial for entire application"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:127
 
msgid "Your account was updated successfully"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:141
 
#: kallithea/controllers/admin/users.py:207
 
#, python-format
 
msgid "Error occurred during update of user %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:161
 
msgid "Successfully updated password"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:171
 
msgid "Error occurred during update of user password"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:213
 
#: kallithea/controllers/admin/users.py:432
 
#, python-format
 
msgid "Added email %s to user"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:219
 
#: kallithea/controllers/admin/users.py:438
 
msgid "An error occurred during email saving"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:228
 
#: kallithea/controllers/admin/users.py:449
 
msgid "Removed email from user"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:274
 
#: kallithea/controllers/admin/users.py:315
 
msgid "Api key successfully created"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:286
 
#: kallithea/controllers/admin/users.py:331
 
msgid "Api key successfully reset"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/my_account.py:290
 
#: kallithea/controllers/admin/users.py:335
 
msgid "Api key successfully deleted"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:62
 
#: kallithea/controllers/admin/permissions.py:66
 
#: kallithea/controllers/admin/permissions.py:70
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:104
 
msgid "None"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:63
 
#: kallithea/controllers/admin/permissions.py:67
 
#: kallithea/controllers/admin/permissions.py:71
 
msgid "Read"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:64
 
#: kallithea/controllers/admin/permissions.py:68
 
#: kallithea/controllers/admin/permissions.py:72
 
msgid "Write"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:65
 
#: kallithea/controllers/admin/permissions.py:69
 
#: kallithea/controllers/admin/permissions.py:73
 
#: kallithea/templates/admin/auth/auth_settings.html:12
 
#: kallithea/templates/admin/defaults/defaults.html:12
 
#: kallithea/templates/admin/permissions/permissions.html:12
 
#: kallithea/templates/admin/repo_groups/repo_group_add.html:12
 
#: kallithea/templates/admin/repo_groups/repo_group_edit.html:12
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:13
 
#: kallithea/templates/admin/repos/repo_add.html:13
 
#: kallithea/templates/admin/repos/repo_add.html:17
 
#: kallithea/templates/admin/repos/repos.html:12
 
#: kallithea/templates/admin/settings/settings.html:12
 
#: kallithea/templates/admin/user_groups/user_group_add.html:11
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:12
 
#: kallithea/templates/admin/user_groups/user_groups.html:13
 
#: kallithea/templates/admin/users/user_add.html:11
 
#: kallithea/templates/admin/users/user_edit.html:12
 
#: kallithea/templates/admin/users/user_edit_profile.html:114
 
#: kallithea/templates/admin/users/users.html:13
 
#: kallithea/templates/admin/users/users.html:58
 
#: kallithea/templates/base/base.html:342
 
#: kallithea/templates/base/base.html:343
 
#: kallithea/templates/base/base.html:349
 
#: kallithea/templates/base/base.html:350
 
msgid "Admin"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:76
 
#: kallithea/controllers/admin/permissions.py:87
 
#: kallithea/controllers/admin/permissions.py:92
 
#: kallithea/controllers/admin/permissions.py:95
 
#: kallithea/controllers/admin/permissions.py:98
 
#: kallithea/controllers/admin/permissions.py:101
 
msgid "Disabled"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:78
 
msgid "Allowed with manual account activation"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:80
 
msgid "Allowed with automatic account activation"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:83
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1441
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1487
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1544
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1545
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1566
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1605
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1657
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1684 kallithea/model/db.py:1694
 
msgid "Manual activation of external account"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:84
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1442
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1488
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1545
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1546
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1567
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1606
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1658
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1685 kallithea/model/db.py:1695
 
msgid "Automatic activation of external account"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:88
 
#: kallithea/controllers/admin/permissions.py:91
 
#: kallithea/controllers/admin/permissions.py:96
 
#: kallithea/controllers/admin/permissions.py:99
 
#: kallithea/controllers/admin/permissions.py:102
 
msgid "Enabled"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:125
 
msgid "Global permissions updated successfully"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/permissions.py:139
 
msgid "Error occurred during update of permissions"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:186
 
#, python-format
 
msgid "Created repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:198
 
#, python-format
 
msgid "Error occurred during creation of repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:256
 
#, python-format
 
msgid "Updated repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:271
 
#, python-format
 
msgid "Error occurred during update of repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:289
 
#, python-format
 
msgid "This group contains %s repositores and cannot be deleted"
 
msgid "This group contains %s repositories and cannot be deleted"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:296
 
#, python-format
 
msgid "This group contains %s subgroups and cannot be deleted"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:302
 
#, python-format
 
msgid "Removed repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:307
 
#, python-format
 
msgid "Error occurred during deletion of repository group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:419
 
#: kallithea/controllers/admin/repo_groups.py:454
 
#: kallithea/controllers/admin/user_groups.py:337
 
msgid "Cannot revoke permission for yourself as admin"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:434
 
msgid "Repository Group permissions updated"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repo_groups.py:471
 
#: kallithea/controllers/admin/repos.py:426
 
#: kallithea/controllers/admin/user_groups.py:349
 
msgid "An error occurred during revoking of permission"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:162
 
#, python-format
 
msgid "Error creating repository %s"
 
msgstr "Chyba při vytváření repozitáře %s"
 

	
 
#: kallithea/controllers/admin/repos.py:237
 
#, python-format
 
msgid "Created repository %s from %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:246
 
#, python-format
 
msgid "Forked repository %s as %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:249
 
#, python-format
 
msgid "Created repository %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:289
 
#, python-format
 
msgid "Repository %s updated successfully"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:307
 
#, python-format
 
msgid "Error occurred during update of repository %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:334
 
#, python-format
 
msgid "Detached %s forks"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:337
 
#, python-format
 
msgid "Deleted %s forks"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:342
 
#, python-format
 
msgid "Deleted repository %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:345
 
#, python-format
 
msgid "Cannot delete %s it still contains attached forks"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:350
 
#, python-format
 
msgid "An error occurred during deletion of %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:402
 
msgid "Repository permissions updated"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:458
 
msgid "An error occurred during creation of field"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:472
 
msgid "An error occurred during removal of field"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:488
 
msgid "-- Not a fork --"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:522
 
msgid "Updated repository visibility in public journal"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:526
 
msgid "An error occurred during setting this repository in public journal"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:531 kallithea/model/validators.py:359
 
msgid "Token mismatch"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:546
 
msgid "Nothing"
 
msgstr "Nic"
 

	
 
#: kallithea/controllers/admin/repos.py:548
 
#, python-format
 
msgid "Marked repo %s as fork of %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:555
 
msgid "An error occurred during this operation"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:571
 
msgid "Locked repository"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:574
 
msgid "Unlocked repository"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:577
 
#: kallithea/controllers/admin/repos.py:604
 
msgid "An error occurred during unlocking"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:595
 
msgid "Unlocked"
 
msgstr "Odemčeno"
 

	
 
#: kallithea/controllers/admin/repos.py:598
 
msgid "Locked"
 
msgstr "Zamčeno"
 

	
 
#: kallithea/controllers/admin/repos.py:600
 
#, python-format
 
msgid "Repository has been %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:618
 
msgid "Cache invalidation successful"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:622
 
msgid "An error occurred during cache invalidation"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:637
 
msgid "Pulled from remote location"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:640
 
msgid "An error occurred during pull from remote location"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/repos.py:673
 
msgid "An error occurred during deletion of repository stats"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:172
 
msgid "Updated VCS settings"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:176
 
msgid ""
 
"Unable to activate hgsubversion support. The \"hgsubversion\" library is "
 
"missing"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:182
 
#: kallithea/controllers/admin/settings.py:274
 
msgid "Error occurred during updating application settings"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:215
 
#, python-format
 
msgid "Repositories successfully rescanned added: %s ; removed: %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:270
 
msgid "Updated application settings"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:327
 
msgid "Updated visualisation settings"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:332
 
msgid "Error occurred during updating visualisation settings"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:358
 
msgid "Please enter email address"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:370
 
msgid "Send email task created"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:400
 
msgid "Added new hook"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:414
 
msgid "Updated hooks"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:418
 
msgid "Error occurred during hook creation"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/settings.py:444
 
msgid "Whoosh reindex task scheduled"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:150
 
#, python-format
 
msgid "Created user group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:161
 
#, python-format
 
msgid "Error occurred during creation of user group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:199
 
#, python-format
 
msgid "Updated user group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:221
 
#, python-format
 
msgid "Error occurred during update of user group %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:239
 
msgid "Successfully deleted user group"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:244
 
msgid "An error occurred during deletion of user group"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:311
 
msgid "Target group cannot be the same"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:317
 
msgid "User Group permissions updated"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:437
 
#: kallithea/controllers/admin/users.py:397
 
msgid "Updated permissions"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/user_groups.py:441
 
#: kallithea/controllers/admin/users.py:401
 
msgid "An error occurred during permissions saving"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:135
 
#, python-format
 
msgid "Created user %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:149
 
#, python-format
 
msgid "Error occurred during creation of user %s"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:188
 
msgid "User updated successfully"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:223
 
msgid "Successfully deleted user"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:228
 
msgid "An error occurred during deletion of user"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:242
 
#: kallithea/controllers/admin/users.py:260
 
#: kallithea/controllers/admin/users.py:283
 
#: kallithea/controllers/admin/users.py:308
 
#: kallithea/controllers/admin/users.py:321
 
#: kallithea/controllers/admin/users.py:345
 
#: kallithea/controllers/admin/users.py:408
 
#: kallithea/controllers/admin/users.py:455
 
msgid "You can't edit this user"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:483
 
#, python-format
 
msgid "Added ip %s to user whitelist"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:489
 
msgid "An error occurred during ip saving"
 
msgstr ""
 

	
 
#: kallithea/controllers/admin/users.py:503
 
msgid "Removed ip address from user whitelist"
 
msgstr ""
 

	
 
#: kallithea/lib/auth.py:748
 
#, python-format
 
msgid "IP %s not allowed"
 
msgstr ""
 

	
 
#: kallithea/lib/auth.py:809
 
msgid "You need to be a registered user to perform this action"
 
msgstr ""
 

	
 
#: kallithea/lib/auth.py:846
 
msgid "You need to be a signed in to view this page"
 
msgid "You need to be signed in to view this page"
 
msgstr ""
 

	
 
#: kallithea/lib/diffs.py:66
 
msgid "Binary file"
 
msgstr ""
 

	
 
#: kallithea/lib/diffs.py:82
 
msgid ""
 
"Changeset was too big and was cut off, use diff menu to display this diff"
 
msgstr ""
 

	
 
#: kallithea/lib/diffs.py:92
 
msgid "No changes detected"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:598
 
#, python-format
 
msgid "Deleted branch: %s"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:601
 
#, python-format
 
msgid "Created tag: %s"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:614
 
msgid "Changeset not found"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:664
 
#, python-format
 
msgid "Show all combined changesets %s->%s"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:670
 
msgid "compare view"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:690
 
msgid "and"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:691
 
#, python-format
 
msgid "%s more"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:692
 
#: kallithea/templates/changelog/changelog.html:58
 
msgid "revisions"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:716
 
#, python-format
 
msgid "fork name %s"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:733
 
#: kallithea/templates/pullrequests/pullrequest_show.html:11
 
#, python-format
 
msgid "Pull request #%s"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:743
 
msgid "[deleted] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:745 kallithea/lib/helpers.py:757
 
msgid "[created] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:747
 
msgid "[created] repository as fork"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:749 kallithea/lib/helpers.py:759
 
msgid "[forked] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:751 kallithea/lib/helpers.py:761
 
msgid "[updated] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:753
 
msgid "[downloaded] archive from repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:755
 
msgid "[delete] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:763
 
msgid "[created] user"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:765
 
msgid "[updated] user"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:767
 
msgid "[created] user group"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:769
 
msgid "[updated] user group"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:771
 
msgid "[commented] on revision in repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:773
 
msgid "[commented] on pull request for"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:775
 
msgid "[closed] pull request for"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:777
 
msgid "[pushed] into"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:779
 
msgid "[committed via Kallithea] into repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:781
 
msgid "[pulled from remote] into repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:783
 
msgid "[pulled] from"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:785
 
msgid "[started following] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:787
 
msgid "[stopped following] repository"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1101
 
#, python-format
 
msgid " and %s more"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1105
 
msgid "No Files"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1171
 
msgid "new file"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1174
 
msgid "mod"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1177
 
msgid "del"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1180
 
msgid "rename"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1185
 
msgid "chmod"
 
msgstr ""
 

	
 
#: kallithea/lib/helpers.py:1417
 
#, python-format
 
msgid ""
 
"%s repository is not mapped to db perhaps it was created or renamed from the "
 
"filesystem please run the application again in order to rescan repositories"
 
msgstr ""
 

	
 
#: kallithea/lib/utils2.py:415
 
#, python-format
 
msgid "%d year"
 
msgid_plural "%d years"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:416
 
#, python-format
 
msgid "%d month"
 
msgid_plural "%d months"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:417
 
#, python-format
 
msgid "%d day"
 
msgid_plural "%d days"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:418
 
#, python-format
 
msgid "%d hour"
 
msgid_plural "%d hours"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:419
 
#, python-format
 
msgid "%d minute"
 
msgid_plural "%d minutes"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:420
 
#, python-format
 
msgid "%d second"
 
msgid_plural "%d seconds"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/lib/utils2.py:436
 
#, python-format
 
msgid "in %s"
 
msgstr ""
 

	
 
#: kallithea/lib/utils2.py:438
 
#, python-format
 
msgid "%s ago"
 
msgstr ""
 

	
 
#: kallithea/lib/utils2.py:440
 
#, python-format
 
msgid "in %s and %s"
 
msgstr ""
 

	
 
#: kallithea/lib/utils2.py:443
 
#, python-format
 
msgid "%s and %s ago"
 
msgstr ""
 

	
 
#: kallithea/lib/utils2.py:446
 
msgid "just now"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1166
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1185
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1305
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1390
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1410
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1456
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1513
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1514
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1535
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1574
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1624
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1651 kallithea/model/db.py:1661
 
msgid "Repository no access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1167
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1186
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1306
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1391
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1411
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1457
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1514
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1515
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1536
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1575
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1625
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1652 kallithea/model/db.py:1662
 
msgid "Repository read access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1168
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1187
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1307
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1392
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1412
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1458
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1515
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1516
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1537
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1576
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1626
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1653 kallithea/model/db.py:1663
 
msgid "Repository write access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1169
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1188
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1308
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1393
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1413
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1459
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1516
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1517
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1538
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1577
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1627
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1654 kallithea/model/db.py:1664
 
msgid "Repository admin access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1171
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1190
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1310
 
msgid "Repositories Group no access"
 
msgid "Repository Group no access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1172
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1191
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1311
 
msgid "Repositories Group read access"
 
msgid "Repository Group read access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1173
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1192
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1312
 
msgid "Repositories Group write access"
 
msgid "Repository Group write access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1174
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1193
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1313
 
msgid "Repositories Group admin access"
 
msgid "Repository Group admin access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1176
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1195
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1315
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1400
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1408
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1454
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1511
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1512
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1533
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1572
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1622
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1649 kallithea/model/db.py:1659
 
msgid "Kallithea Administrator"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1177
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1196
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1316
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1401
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1431
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1477
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1534
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1535
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1556
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1595
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1645
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1672 kallithea/model/db.py:1682
 
msgid "Repository creation disabled"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1178
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1197
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1317
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1402
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1432
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1478
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1535
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1536
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1557
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1596
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1646
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1673 kallithea/model/db.py:1683
 
msgid "Repository creation enabled"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1179
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1198
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1318
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1403
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1434
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1480
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1537
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1538
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1559
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1598
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1650
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1677 kallithea/model/db.py:1687
 
msgid "Repository forking disabled"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1180
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1199
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1319
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1404
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1435
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1481
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1538
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1539
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1560
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1599
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1651
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1678 kallithea/model/db.py:1688
 
msgid "Repository forking enabled"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1181
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1200
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1320
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1405
 
msgid "Register disabled"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1182
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1201
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1321
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1406
 
msgid "Register new user with Kallithea with manual activation"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1185
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1204
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1324
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1409
 
msgid "Register new user with Kallithea with auto activation"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1626
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1653
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1765
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1840
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1936
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1982
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:2042
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:2043
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:2064
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:2103
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:2156
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:2202 kallithea/model/db.py:2212
 
msgid "Not Reviewed"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1627
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1654
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1766
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1841
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1937
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1983
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:2043
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:2044
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:2065
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:2104
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:2157
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:2203 kallithea/model/db.py:2213
 
msgid "Approved"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1628
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1655
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1767
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1842
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1938
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1984
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:2044
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:2045
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:2066
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:2105
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:2158
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:2204 kallithea/model/db.py:2214
 
msgid "Rejected"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_4_0.py:1629
 
#: kallithea/lib/dbmigrate/schema/db_1_5_0.py:1656
 
#: kallithea/lib/dbmigrate/schema/db_1_5_2.py:1768
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1843
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1939
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1985
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:2045
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:2046
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:2067
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:2106
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:2159
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:2205 kallithea/model/db.py:2215
 
msgid "Under Review"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1254
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1272
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1302
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1359
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1360
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1381
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1420
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1473
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1500 kallithea/model/db.py:1510
 
msgid "top level"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1395
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1415
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1461
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1518
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1519
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1540
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1579
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1629
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1656 kallithea/model/db.py:1666
 
msgid "Repository group no access"
 
msgstr ""
 

	
 
#: kallithea/lib/dbmigrate/schema/db_1_6_0.py:1396
 
#: kallithea/lib/dbmigrate/schema/db_1_7_0.py:1416
 
#: kallithea/lib/dbmigrate/schema/db_1_8_0.py:1462
 
#: kallithea/lib/dbmigrate/schema/db_2_0_0.py:1519
 
#: kallithea/lib/dbmigrate/schema/db_2_0_1.py:1520
 
#: kallithea/lib/dbmigrate/schema/db_2_0_2.py:1541
 
#: kallithea/lib/dbmigrate/schema/db_2_1_0.py:1580
 
#: kallithea/lib/dbmigrate/schema/db_2_2_0.py:1630
 
#: kallithea/lib/dbmigrate/schema/db_2_2_3.py:1657 kallithea/model/db.py:1667
 
msgid "Repository group read access"
 
@@ -1660,695 +1660,695 @@ msgstr ""
 

	
 
#: kallithea/model/forms.py:67
 
#, python-format
 
msgid "Enter %(min)i characters or more"
 
msgstr ""
 

	
 
#: kallithea/model/forms.py:156
 
msgid "Name must not contain only digits"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:231
 
#, python-format
 
msgid "%(user)s commented on changeset at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:232
 
#, python-format
 
msgid "%(user)s sent message at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:233
 
#, python-format
 
msgid "%(user)s mentioned you at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:234
 
#, python-format
 
msgid "%(user)s registered in Kallithea at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:235
 
#, python-format
 
msgid "%(user)s opened new pull request at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/notification.py:236
 
#, python-format
 
msgid "%(user)s commented on pull request at %(when)s"
 
msgstr ""
 

	
 
#: kallithea/model/pull_request.py:107
 
#, python-format
 
msgid "%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s"
 
msgstr ""
 

	
 
#: kallithea/model/scm.py:810
 
msgid "latest tip"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:198
 
msgid "New user registration"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:222 kallithea/model/user.py:247
 
msgid "You can't Edit this user since it's crucial for entire application"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:270
 
msgid "You can't remove this user since it's crucial for entire application"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:276
 
#, python-format
 
msgid ""
 
"user \"%s\" still owns %s repositories and cannot be removed. Switch owners "
 
"or remove those repositories. %s"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:304
 
msgid "Password reset link"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:333
 
msgid "Your new password"
 
msgstr ""
 

	
 
#: kallithea/model/user.py:334
 
#, python-format
 
msgid "Your new Kallithea password:%s"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:82 kallithea/model/validators.py:83
 
msgid "Value cannot be an empty list"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:120
 
#, python-format
 
msgid "Username \"%(username)s\" already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:122
 
#, python-format
 
msgid "Username \"%(username)s\" is forbidden"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:124
 
msgid ""
 
"Username may only contain alphanumeric characters underscores, periods or "
 
"dashes and must begin with alphanumeric character or underscore"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:151
 
msgid "The input is not valid"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:158
 
#, python-format
 
msgid "Username %(username)s is not valid"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:177
 
msgid "Invalid user group name"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:178
 
#, python-format
 
msgid "User group \"%(usergroup)s\" already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:180
 
msgid ""
 
"user group name may only contain alphanumeric characters underscores, "
 
"periods or dashes and must begin with alphanumeric character"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:218
 
msgid "Cannot assign this group as parent"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:219
 
#, python-format
 
msgid "Group \"%(group_name)s\" already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:221
 
#, python-format
 
msgid "Repository with name \"%(group_name)s\" already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:279
 
msgid "Invalid characters (non-ascii) in password"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:294
 
msgid "Invalid old password"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:310
 
msgid "Passwords do not match"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:327
 
msgid "invalid password"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:328
 
msgid "invalid user name"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:329
 
msgid "Your account is disabled"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:373
 
#, python-format
 
msgid "Repository name %(repo)s is disallowed"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:375
 
#, python-format
 
msgid "Repository named %(repo)s already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:376
 
#, python-format
 
msgid "Repository \"%(repo)s\" already exists in group \"%(group)s\""
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:378
 
#, python-format
 
msgid "Repository group with name \"%(repo)s\" already exists"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:493
 
msgid "invalid clone url"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:494
 
msgid "Invalid clone url, provide a valid clone http(s)/svn+http(s) url"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:519
 
msgid "Fork have to be the same type as parent"
 
msgid "Fork has to be the same type as parent"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:534
 
msgid "You don't have permissions to create repository in this group"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:536
 
msgid "no permission to create repository in root location"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:585
 
msgid "You don't have permissions to create a group in this location"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:626
 
msgid "This username or user group name is not valid"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:719
 
msgid "This is not a valid path"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:734
 
msgid "This e-mail address is already taken"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:754
 
#, python-format
 
msgid "e-mail \"%(email)s\" does not exist."
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:791
 
msgid ""
 
"The LDAP Login attribute of the CN must be specified - this is the name of "
 
"the attribute that is equivalent to \"username\""
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:804
 
#, python-format
 
msgid "Revisions %(revs)s are already part of pull request or have set status"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:836
 
msgid "Please enter a valid IPv4 or IpV6 address"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:837
 
#, python-format
 
msgid "The network size (bits) must be within the range of 0-32 (not %(bits)r)"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:870
 
msgid "Key name can only consist of letters, underscore, dash or numbers"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:884
 
msgid "Filename cannot be inside a directory"
 
msgstr ""
 

	
 
#: kallithea/model/validators.py:900
 
#, python-format
 
msgid "Plugins %(loaded)s and %(next_to_load)s both export the same name"
 
msgstr ""
 

	
 
#: kallithea/templates/about.html:4 kallithea/templates/about.html:20
 
msgid "About"
 
msgstr ""
 

	
 
#: kallithea/templates/index.html:5
 
msgid "Dashboard"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:6
 
#: kallithea/templates/admin/my_account/my_account_repos.html:3
 
#: kallithea/templates/admin/my_account/my_account_watched.html:3
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:12
 
#: kallithea/templates/admin/repos/repos.html:12
 
#: kallithea/templates/admin/user_groups/user_groups.html:12
 
#: kallithea/templates/admin/users/users.html:12
 
#: kallithea/templates/bookmarks/bookmarks.html:12
 
#: kallithea/templates/branches/branches.html:12
 
#: kallithea/templates/journal/journal.html:12
 
#: kallithea/templates/journal/journal.html:49
 
#: kallithea/templates/journal/journal.html:50
 
#: kallithea/templates/tags/tags.html:12
 
msgid "quick filter..."
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:6
 
#: kallithea/templates/admin/repos/repos.html:12
 
msgid "repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:20
 
#: kallithea/templates/index_base.html:25
 
#: kallithea/templates/admin/repos/repo_add.html:22
 
#: kallithea/templates/admin/repos/repos.html:25
 
msgid "Add Repository"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:22
 
#: kallithea/templates/index_base.html:27
 
#: kallithea/templates/admin/repo_groups/repo_group_add.html:16
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:29
 
msgid "Add Repository Group"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:32
 
msgid "You have admin right to this group, and can edit it"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:32
 
msgid "Edit Repository Group"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:45
 
msgid "Group Name"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:46
 
#: kallithea/templates/index_base.html:128
 
#: kallithea/templates/admin/my_account/my_account_api_keys.html:64
 
#: kallithea/templates/admin/repo_groups/repo_group_add.html:45
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:17
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:51
 
#: kallithea/templates/admin/repos/repo_add_base.html:32
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:72
 
#: kallithea/templates/admin/repos/repos.html:51
 
#: kallithea/templates/admin/user_groups/user_group_add.html:43
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:15
 
#: kallithea/templates/admin/user_groups/user_groups.html:51
 
#: kallithea/templates/admin/users/user_edit_api_keys.html:64
 
#: kallithea/templates/email_templates/changeset_comment.html:16
 
#: kallithea/templates/email_templates/pull_request.html:9
 
#: kallithea/templates/forks/fork.html:41
 
#: kallithea/templates/pullrequests/pullrequest.html:40
 
#: kallithea/templates/pullrequests/pullrequest_show.html:86
 
#: kallithea/templates/summary/summary.html:88
 
msgid "Description"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:126
 
#: kallithea/templates/admin/my_account/my_account_repos.html:46
 
#: kallithea/templates/admin/my_account/my_account_watched.html:46
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:50
 
#: kallithea/templates/admin/repos/repo_add_base.html:9
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:7
 
#: kallithea/templates/admin/repos/repos.html:50
 
#: kallithea/templates/admin/user_groups/user_groups.html:50
 
#: kallithea/templates/base/perms_summary.html:53
 
#: kallithea/templates/bookmarks/bookmarks.html:51
 
#: kallithea/templates/bookmarks/bookmarks_data.html:7
 
#: kallithea/templates/branches/branches.html:50
 
#: kallithea/templates/branches/branches_data.html:7
 
#: kallithea/templates/files/files_browser.html:41
 
#: kallithea/templates/journal/journal.html:197
 
#: kallithea/templates/journal/journal.html:288
 
#: kallithea/templates/tags/tags.html:51
 
#: kallithea/templates/tags/tags_data.html:7
 
msgid "Name"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:129
 
msgid "Last Change"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:131
 
#: kallithea/templates/admin/my_account/my_account_repos.html:48
 
#: kallithea/templates/admin/my_account/my_account_watched.html:48
 
#: kallithea/templates/admin/repos/repos.html:52
 
#: kallithea/templates/journal/journal.html:199
 
#: kallithea/templates/journal/journal.html:290
 
msgid "Tip"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:133
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html:10
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:53
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:60
 
#: kallithea/templates/admin/repos/repos.html:53
 
#: kallithea/templates/admin/user_groups/user_group_edit_advanced.html:8
 
#: kallithea/templates/admin/user_groups/user_groups.html:54
 
#: kallithea/templates/summary/summary.html:141
 
msgid "Owner"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:141
 
#: kallithea/templates/admin/my_account/my_account_repos.html:57
 
#: kallithea/templates/admin/my_account/my_account_watched.html:57
 
#: kallithea/templates/base/root.html:67
 
#: kallithea/templates/bookmarks/bookmarks.html:81
 
#: kallithea/templates/branches/branches.html:80
 
#: kallithea/templates/journal/journal.html:208
 
#: kallithea/templates/journal/journal.html:299
 
#: kallithea/templates/tags/tags.html:81
 
msgid "Click to sort ascending"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:142
 
#: kallithea/templates/admin/my_account/my_account_repos.html:58
 
#: kallithea/templates/admin/my_account/my_account_watched.html:58
 
#: kallithea/templates/base/root.html:68
 
#: kallithea/templates/bookmarks/bookmarks.html:82
 
#: kallithea/templates/branches/branches.html:81
 
#: kallithea/templates/journal/journal.html:209
 
#: kallithea/templates/journal/journal.html:300
 
#: kallithea/templates/tags/tags.html:82
 
msgid "Click to sort descending"
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:143
 
msgid "No repositories found."
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:144
 
#: kallithea/templates/admin/my_account/my_account_repos.html:60
 
#: kallithea/templates/admin/my_account/my_account_watched.html:60
 
#: kallithea/templates/base/root.html:70
 
#: kallithea/templates/bookmarks/bookmarks.html:84
 
#: kallithea/templates/branches/branches.html:83
 
#: kallithea/templates/journal/journal.html:211
 
#: kallithea/templates/journal/journal.html:302
 
#: kallithea/templates/tags/tags.html:84
 
msgid "Data error."
 
msgstr ""
 

	
 
#: kallithea/templates/index_base.html:145
 
#: kallithea/templates/admin/my_account/my_account_repos.html:61
 
#: kallithea/templates/admin/my_account/my_account_watched.html:61
 
#: kallithea/templates/base/base.html:151
 
#: kallithea/templates/base/root.html:71
 
#: kallithea/templates/bookmarks/bookmarks.html:85
 
#: kallithea/templates/branches/branches.html:84
 
#: kallithea/templates/journal/journal.html:212
 
#: kallithea/templates/journal/journal.html:303
 
#: kallithea/templates/tags/tags.html:85
 
msgid "Loading..."
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:5 kallithea/templates/login.html:32
 
#: kallithea/templates/base/base.html:270
 
msgid "Log In"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:30
 
#, python-format
 
msgid "Log In to %s"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:43 kallithea/templates/register.html:40
 
#: kallithea/templates/admin/admin_log.html:5
 
#: kallithea/templates/admin/my_account/my_account_profile.html:30
 
#: kallithea/templates/admin/users/user_add.html:35
 
#: kallithea/templates/admin/users/user_edit_profile.html:33
 
#: kallithea/templates/admin/users/users.html:53
 
#: kallithea/templates/base/base.html:246
 
msgid "Username"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:52 kallithea/templates/register.html:49
 
#: kallithea/templates/admin/my_account/my_account.html:39
 
#: kallithea/templates/admin/users/user_add.html:44
 
#: kallithea/templates/base/base.html:255
 
msgid "Password"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:62
 
msgid "Remember me"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:66
 
msgid "Sign In"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:72
 
msgid "Forgot your password ?"
 
msgstr ""
 

	
 
#: kallithea/templates/login.html:75 kallithea/templates/base/base.html:266
 
msgid "Don't have an account ?"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:5
 
msgid "Password Reset"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:29
 
#, python-format
 
msgid "Reset your Password to %s"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:31
 
msgid "Reset your Password"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:42
 
msgid "Email Address"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:52
 
#: kallithea/templates/register.html:95
 
msgid "Captcha"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:63
 
msgid "Send password reset email"
 
msgstr ""
 

	
 
#: kallithea/templates/password_reset.html:64
 
msgid "Password reset link will be send to matching email address"
 
msgid "Password reset link will be sent to matching email address"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:5 kallithea/templates/register.html:30
 
#: kallithea/templates/register.html:106
 
msgid "Sign Up"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:28
 
#, python-format
 
msgid "Sign Up to %s"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:58
 
msgid "Re-enter password"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:67
 
#: kallithea/templates/admin/my_account/my_account_profile.html:41
 
#: kallithea/templates/admin/users/user_add.html:62
 
#: kallithea/templates/admin/users/user_edit_profile.html:87
 
msgid "First Name"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:76
 
#: kallithea/templates/admin/my_account/my_account_profile.html:50
 
#: kallithea/templates/admin/users/user_add.html:71
 
#: kallithea/templates/admin/users/user_edit_profile.html:96
 
msgid "Last Name"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:85
 
#: kallithea/templates/admin/my_account/my_account_profile.html:59
 
#: kallithea/templates/admin/settings/settings.html:44
 
#: kallithea/templates/admin/users/user_add.html:80
 
#: kallithea/templates/admin/users/user_edit_profile.html:42
 
msgid "Email"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:108
 
msgid "Your account will be activated right after registration"
 
msgstr ""
 

	
 
#: kallithea/templates/register.html:110
 
msgid "Your account must wait for activation by administrator"
 
msgstr ""
 

	
 
#: kallithea/templates/switch_to_list.html:10
 
#: kallithea/templates/branches/branches_data.html:67
 
msgid "There are no branches yet"
 
msgstr ""
 

	
 
#: kallithea/templates/switch_to_list.html:16
 
msgid "Closed Branches"
 
msgstr ""
 

	
 
#: kallithea/templates/switch_to_list.html:32
 
#: kallithea/templates/tags/tags_data.html:44
 
msgid "There are no tags yet"
 
msgstr ""
 

	
 
#: kallithea/templates/switch_to_list.html:45
 
#: kallithea/templates/bookmarks/bookmarks_data.html:43
 
msgid "There are no bookmarks yet"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin.html:5
 
#: kallithea/templates/admin/admin.html:16
 
#: kallithea/templates/base/base.html:72
 
msgid "Admin journal"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin.html:13
 
msgid "journal filter..."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin.html:15
 
#: kallithea/templates/journal/journal.html:14
 
msgid "filter"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin.html:16
 
#: kallithea/templates/journal/journal.html:15
 
#, python-format
 
msgid "%s entry"
 
msgid_plural "%s entries"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/templates/admin/admin_log.html:6
 
#: kallithea/templates/admin/my_account/my_account_repos.html:50
 
#: kallithea/templates/admin/my_account/my_account_watched.html:50
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:54
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:8
 
#: kallithea/templates/admin/repos/repos.html:55
 
#: kallithea/templates/admin/user_groups/user_groups.html:55
 
#: kallithea/templates/admin/users/users.html:60
 
#: kallithea/templates/journal/journal.html:201
 
#: kallithea/templates/journal/journal.html:292
 
msgid "Action"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin_log.html:7
 
#: kallithea/templates/admin/permissions/permissions_globals.html:18
 
msgid "Repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin_log.html:8
 
#: kallithea/templates/bookmarks/bookmarks.html:53
 
#: kallithea/templates/bookmarks/bookmarks_data.html:9
 
#: kallithea/templates/branches/branches.html:52
 
#: kallithea/templates/branches/branches_data.html:9
 
#: kallithea/templates/tags/tags.html:53
 
#: kallithea/templates/tags/tags_data.html:9
 
msgid "Date"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin_log.html:9
 
msgid "From IP"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/admin_log.html:63
 
msgid "No actions yet"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:5
 
msgid "Authentication Settings"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:14
 
#: kallithea/templates/base/base.html:78
 
msgid "Authentication"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:31
 
msgid "Authentication Plugins"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:34
 
msgid "Enabled Plugins"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:36
 
msgid ""
 
"Comma separated list of plugins. Order of plugins is also order in which "
 
"Kallithea will try to authenticate user"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:37
 
msgid "Available built-in plugins"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:43
 
#: kallithea/templates/base/root.html:63
 
msgid "enabled"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:43
 
#: kallithea/templates/base/root.html:64
 
msgid "disabled"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:51
 
#: kallithea/templates/admin/defaults/defaults.html:87
 
#: kallithea/templates/admin/my_account/my_account_password.html:33
 
#: kallithea/templates/admin/my_account/my_account_profile.html:68
 
#: kallithea/templates/admin/permissions/permissions_globals.html:108
 
#: kallithea/templates/admin/repo_groups/repo_group_add.html:72
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:114
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:42
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:101
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:134
 
#: kallithea/templates/admin/settings/settings_hooks.html:53
 
#: kallithea/templates/admin/user_groups/user_group_add.html:60
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:104
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:67
 
#: kallithea/templates/admin/users/user_add.html:99
 
#: kallithea/templates/admin/users/user_edit_profile.html:122
 
#: kallithea/templates/base/default_perms_box.html:64
 
msgid "Save"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/auth/auth_settings.html:57
 
msgid "Plugin"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/defaults/defaults.html:5
 
#: kallithea/templates/admin/defaults/defaults.html:28
 
msgid "Repositories defaults"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/defaults/defaults.html:14
 
@@ -3086,936 +3086,936 @@ msgstr ""
 
msgid "Total repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html:8
 
msgid "Children groups"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html:9
 
#: kallithea/templates/admin/user_groups/user_group_edit_advanced.html:7
 
#: kallithea/templates/admin/users/user_edit_advanced.html:8
 
#: kallithea/templates/pullrequests/pullrequest_show.html:94
 
msgid "Created on"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html:21
 
#: kallithea/templates/data_table/_dt_elements.html:192
 
#, python-format
 
msgid "Confirm to delete this group: %s with %s repository"
 
msgid_plural "Confirm to delete this group: %s with %s repositories"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html:25
 
msgid "Delete this repository group"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:7
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:8
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:7
 
#: kallithea/templates/base/perms_summary.html:14
 
msgid "none"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:8
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:9
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:8
 
#: kallithea/templates/base/perms_summary.html:15
 
msgid "read"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:9
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:10
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:9
 
#: kallithea/templates/base/perms_summary.html:16
 
msgid "write"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:10
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:11
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:10
 
#: kallithea/templates/base/perms_summary.html:17
 
msgid "admin"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:11
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:12
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:11
 
msgid "user/user group"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:28
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:45
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:24
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:37
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:28
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:45
 
msgid "default"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:34
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:71
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:43
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:68
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:34
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:71
 
msgid "revoke"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:47
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:47
 
msgid "delegated admin"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:97
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:94
 
#: kallithea/templates/admin/user_groups/user_group_edit_perms.html:97
 
msgid "Add new"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:103
 
msgid "apply to children"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:107
 
msgid "Both"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_perms.html:108
 
msgid ""
 
"Set or revoke permission to all children of that group, including non-"
 
"private repositories and other groups if selected."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_edit_settings.html:38
 
msgid ""
 
"Enable lock-by-pulling on group. This option will be applied to all other "
 
"groups and repositories inside"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_show.html:4
 
#, python-format
 
msgid "%s Repository group dashboard"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_show.html:12
 
msgid "Home"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_group_show.html:16
 
msgid "with"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:5
 
msgid "Repository groups administration"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:13
 
msgid "repository groups"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repo_groups/repo_groups.html:52
 
msgid "Number of toplevel repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add.html:5
 
msgid "Add repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:14
 
msgid "Import existing repository ?"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:23
 
#: kallithea/templates/summary/summary.html:32
 
msgid "Clone from"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:27
 
msgid "Optional http[s] url from which repository should be cloned."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:36
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:76
 
#: kallithea/templates/forks/fork.html:45
 
msgid ""
 
"Keep it short and to the point. Use a README file for longer descriptions."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:45
 
#: kallithea/templates/forks/fork.html:55
 
msgid "Optionaly select a group to put this repository into."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:63
 
msgid "Type of repository to create."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:68
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:51
 
#: kallithea/templates/forks/fork.html:61
 
msgid "Landing revision"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_add_base.html:72
 
msgid ""
 
"Default revision for files page, downloads, full text search index and "
 
"readme generation"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:9
 
#, python-format
 
msgid "%s Creating repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:16
 
msgid "Creating repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:30
 
#, python-format
 
msgid ""
 
"Repository \"%(repo_name)s\" is beeing created, you will be redirected when "
 
"Repository \"%(repo_name)s\" is being created, you will be redirected when "
 
"this process is finished.repo_name"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_creating.html:42
 
msgid ""
 
"We're sorry but error occured during this operation. Please check your "
 
"We're sorry but error occurred during this operation. Please check your "
 
"Kallithea server logs, or contact administrator."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:8
 
#, python-format
 
msgid "%s repository settings"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:52
 
msgid "Extra fields"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:55
 
msgid "Caches"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:58
 
msgid "Remote"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit.html:61
 
#: kallithea/templates/summary/statistics.html:11
 
#: kallithea/templates/summary/summary.html:178
 
#: kallithea/templates/summary/summary.html:179
 
msgid "Statistics"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:1
 
#: kallithea/templates/summary/summary.html:25
 
msgid "Fork of"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:6
 
#: kallithea/templates/admin/repos/repo_edit_fork.html:5
 
msgid "Set"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:10
 
#: kallithea/templates/admin/repos/repo_edit_fork.html:9
 
msgid "Manually set this repository as a fork of another from the list"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:24
 
msgid "Public journal visibility"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:32
 
msgid "Remove from public journal"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:37
 
msgid "Add to public journal"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:43
 
msgid ""
 
"All actions made on this repository will be accessible to everyone in public "
 
"journal"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:49
 
msgid "Change locking"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:56
 
msgid "Confirm to unlock repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:58
 
msgid "Unlock repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:64
 
msgid "Confirm to lock repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:66
 
msgid "Lock repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:68
 
msgid "Repository is not locked"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:73
 
msgid ""
 
"Force locking on repository. Works only when anonymous access is disabled. "
 
"Trigering a pull locks repository by user who pulled, only the same user can "
 
"Triggering a pull locks repository by user who pulled, only the same user can "
 
"unlock by doing a push"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:83
 
#: kallithea/templates/data_table/_dt_elements.html:132
 
#, python-format
 
msgid "Confirm to delete this repository: %s"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:85
 
msgid "Delete this repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:88
 
#, python-format
 
msgid "this repository has %s fork"
 
msgid_plural "this repository has %s forks"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:89
 
msgid "Detach forks"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:90
 
msgid "Delete forks"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_advanced.html:94
 
msgid ""
 
"This repository will be renamed in a special way in order to be unaccesible "
 
"This repository will be renamed in a special way in order to be inaccessible "
 
"for Kallithea and VCS systems. If you need to fully delete it from file "
 
"system please do it manually"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:4
 
msgid "Invalidate repository cache"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:4
 
msgid "Confirm to invalidate repository cache"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:7
 
msgid ""
 
"Manually invalidate cache for this repository. On first access repository "
 
"will be cached again"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:12
 
msgid "List of cached values"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:15
 
msgid "Prefix"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:16
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:6
 
msgid "Key"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_caches.html:17
 
#: kallithea/templates/admin/user_groups/user_group_add.html:52
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:24
 
#: kallithea/templates/admin/user_groups/user_groups.html:53
 
#: kallithea/templates/admin/users/user_add.html:91
 
#: kallithea/templates/admin/users/user_edit_profile.html:105
 
#: kallithea/templates/admin/users/users.html:57
 
msgid "Active"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:5
 
msgid "Label"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:19
 
#, python-format
 
msgid "Confirm to delete this field: %s"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:33
 
msgid "New field key"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:41
 
msgid "New field label"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:44
 
msgid "Enter short label"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:50
 
msgid "New field description"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:53
 
msgid "Enter description of a field"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_fields.html:66
 
msgid "Extra fields are disabled"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_permissions.html:21
 
msgid "private repository"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:3
 
msgid "Remote url"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:8
 
msgid "Pull changes from remote location"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:8
 
msgid "Confirm to pull changes from remote side"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_remote.html:14
 
msgid "This repository does not have any remote url set"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:11
 
msgid "Non-changeable id"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:11
 
msgid "what is that ?"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:13
 
msgid "URL by id"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:14
 
msgid ""
 
"In case this repository is renamed or moved into another group the "
 
"repository url changes.\n"
 
"                               Using above url guarantees that this "
 
"repository will allways be accessible under such url.\n"
 
"                               Usefull for CI systems, or any other cases "
 
"repository will always be accessible under such url.\n"
 
"                               Useful for CI systems, or any other cases "
 
"that you need to hardcode the url into 3rd party service."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:21
 
msgid "Clone uri"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:27
 
#: kallithea/templates/base/perms_summary.html:43
 
#: kallithea/templates/base/perms_summary.html:79
 
#: kallithea/templates/base/perms_summary.html:81
 
#: kallithea/templates/data_table/_dt_elements.html:124
 
#: kallithea/templates/data_table/_dt_elements.html:125
 
#: kallithea/templates/data_table/_dt_elements.html:152
 
#: kallithea/templates/data_table/_dt_elements.html:153
 
#: kallithea/templates/data_table/_dt_elements.html:169
 
#: kallithea/templates/data_table/_dt_elements.html:185
 
msgid "edit"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:30
 
msgid "new value"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:37
 
msgid "http[s] url used for doing remote pulls."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:46
 
msgid "Optional select a group to put this repository into."
 
msgid "Optionally select a group to put this repository into."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:55
 
#: kallithea/templates/forks/fork.html:65
 
msgid "Default revision for files page, downloads, whoosh and readme"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_settings.html:65
 
msgid "Change owner of this repository."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:6
 
msgid "Processed commits"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:7
 
msgid "Processed progress"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:10
 
msgid "Reset statistics"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repo_edit_statistics.html:10
 
msgid "Confirm to remove current statistics"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repos.html:5
 
msgid "Repositories administration"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/repos/repos.html:54
 
msgid "State"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:5
 
msgid "Settings administration"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:40
 
msgid "VCS"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:41
 
msgid "Remap and rescan"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:43
 
msgid "Visual"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:45
 
#: kallithea/templates/admin/settings/settings_vcs.html:19
 
msgid "Hooks"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:46
 
msgid "Full text search"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings.html:47
 
msgid "System Info"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:4
 
msgid "Email prefix"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:5
 
msgid "Kallithea email from"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:6
 
msgid "Error email from"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:7
 
msgid "Error email recipients"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:9
 
msgid "SMTP server"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:10
 
msgid "SMTP username"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:11
 
msgid "SMTP password"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:12
 
msgid "SMTP port"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:14
 
msgid "SMTP use TLS"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:15
 
msgid "SMTP use SSL"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:16
 
msgid "SMTP auth"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:31
 
msgid "Send test email to"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_email.html:39
 
msgid "Send"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:8
 
msgid "Site branding"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:12
 
msgid "Set a custom title for your Kallithea Service."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:18
 
msgid "HTTP authentication realm"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:27
 
msgid "Google Analytics code"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:36
 
msgid "ReCaptcha public key"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:40
 
msgid "Public key for reCaptcha system."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:46
 
msgid "ReCaptcha private key"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:50
 
msgid ""
 
"Private key for reCaptcha system. Setting this value will enable captcha on "
 
"registration"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_global.html:55
 
#: kallithea/templates/admin/settings/settings_vcs.html:80
 
#: kallithea/templates/admin/settings/settings_visual.html:115
 
msgid "Save settings"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:1
 
msgid "Built in Mercurial hooks - read only"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:15
 
msgid ""
 
"Hooks can be used to trigger actions on certain events such as push / pull. "
 
"They can trigger Python functions or external applications."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:19
 
msgid "Custom hooks"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_hooks.html:69
 
msgid "Failed to remove hook"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:6
 
msgid "Rescan option"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:11
 
msgid "Destroy old data"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:13
 
msgid ""
 
"In case a repository was deleted from filesystem and it still exists in the "
 
"database check this option to scan obsolete data in database and remove it."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:17
 
msgid "Invalidate cache for all repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:19
 
msgid ""
 
"Each cache data for repositories will be cleaned with this option selected. "
 
"Use this to reload data and clear cache keys."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:23
 
msgid "Install GIT hooks"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:25
 
msgid ""
 
"Verify if Kallitheas GIT hooks are installed for each repository. Current "
 
"hooks will be updated to latest version"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_mapping.html:32
 
msgid "Rescan Repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:7
 
msgid "Index build option"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:12
 
msgid "Build from scratch"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:15
 
msgid ""
 
"This option completely reindex all the files within Kallithea for proper "
 
"This option completely reindexes all the files within Kallithea for proper "
 
"fulltext search capabilities."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_search.html:21
 
msgid "Reindex"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:4
 
msgid "Kallithea version"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:4
 
msgid "check for updates"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:5
 
msgid "Python version"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:6
 
msgid "Platform"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:7
 
msgid "GIT version"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:8
 
msgid "GIT path"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:9
 
msgid "Upgrade info endpoint"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:9
 
msgid "Note: please make sure this server can access this url"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:14
 
msgid "Checking for updates..."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_system.html:22
 
msgid "Python packages"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:6
 
msgid "Web"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:11
 
msgid "Require SSL for vcs operations"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:13
 
msgid ""
 
"Activate to set Kallithea to require SSL for pushing or pulling. If SSL "
 
"certificate is missing it will return a HTTP Error 406: Not Acceptable."
 
"certificate is missing it will return an HTTP Error 406: Not Acceptable."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:24
 
msgid "Show repository size after push"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:28
 
msgid "Log user push commands"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:32
 
msgid "Log user pull commands"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:36
 
msgid "Update repository after push (hg update)"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:42
 
msgid "Mercurial Extensions"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:47
 
msgid "Enable largefiles extension"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:51
 
msgid "Enable hgsubversion extension"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:53
 
msgid ""
 
"Requires hgsubversion library to be installed. Allows cloning remote SVN "
 
"repositories and migrates them to Mercurial type."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:64
 
msgid "Repositories location"
 
msgstr "Umístění repozitářů"
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:69
 
msgid ""
 
"Click to unlock. You must restart Kallithea in order to make this setting "
 
"take effect."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_vcs.html:72
 
msgid ""
 
"Filesystem location where repositories should be stored. After changing this "
 
"value a restart and rescan of the repository folder are required."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:8
 
msgid "General"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:13
 
msgid "Use repository extra fields"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:15
 
msgid "Allows storing additional customized fields per repository."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:18
 
msgid "Show Kallithea version"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:20
 
msgid "Shows or hides a version number of Kallithea displayed in the footer."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:24
 
msgid "Use Gravatars in Kallithea"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:30
 
msgid ""
 
"Gravatar url allows you to use other avatar server application.\n"
 
"                                                        Following variables "
 
"of the URL will be replaced accordingly.\n"
 
"                                                        {scheme}    'http' "
 
"or 'https' sent from running Kallithea server,\n"
 
"                                                        {email}     user "
 
"email,\n"
 
"                                                        {md5email}  md5 hash "
 
"of the user email (like at gravatar.com),\n"
 
"                                                        {size}      size of "
 
"the image that is expected from the server application,\n"
 
"                                                        {netloc}    network "
 
"location/server host of running Kallithea server"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:42
 
msgid ""
 
"Schema of clone url construction eg. '{scheme}://{user}@{netloc}/{repo}', "
 
"available vars:\n"
 
"                                                        {scheme} 'http' or "
 
"'https' sent from running Kallithea server,\n"
 
"                                                        {user}   current "
 
"user username,\n"
 
"                                                        {netloc} network "
 
"location/server host of running Kallithea server,\n"
 
"                                                        {repo}   full "
 
"repository name,\n"
 
"                                                        {repoid} ID of "
 
"repository, can be used to contruct clone-by-id"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:54
 
msgid "Dashboard items"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:58
 
msgid ""
 
"Number of items displayed in the main page dashboard before pagination is "
 
"shown."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:64
 
msgid "Admin pages items"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:68
 
msgid ""
 
"Number of items displayed in the admin pages grids before pagination is "
 
"shown."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:74
 
msgid "Icons"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:79
 
msgid "Show public repo icon on repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:83
 
msgid "Show private repo icon on repositories"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:85
 
msgid "Show public/private icons next to repositories names."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:91
 
msgid "Meta-Tagging"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:96
 
msgid "Stylify recognised meta tags:"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/settings/settings_visual.html:110
 
msgid ""
 
"Parses meta tags from repository description field and turns them into "
 
"colored tags."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:5
 
msgid "Add user group"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:13
 
#: kallithea/templates/base/base.html:76 kallithea/templates/base/base.html:96
 
msgid "User groups"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:15
 
#: kallithea/templates/admin/user_groups/user_groups.html:28
 
msgid "Add User Group"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_add.html:47
 
#: kallithea/templates/admin/user_groups/user_group_edit_settings.html:19
 
msgid "Short, optional description for this user group."
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:5
 
#, python-format
 
msgid "%s user group settings"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:14
 
msgid "User Groups"
 
msgstr ""
 

	
 
#: kallithea/templates/admin/user_groups/user_group_edit.html:44
 
#: kallithea/templates/admin/users/user_edit.html:45
 
msgid "Default permissions"
 
msgstr ""
 

	
 
@@ -4741,385 +4741,385 @@ msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/templates/changeset/changeset.html:139
 
#: kallithea/templates/changeset/changeset.html:151
 
#: kallithea/templates/pullrequests/pullrequest_show.html:178
 
#: kallithea/templates/pullrequests/pullrequest_show.html:202
 
msgid "Showing a huge diff might take some time and resources"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset.html:139
 
#: kallithea/templates/changeset/changeset.html:151
 
#: kallithea/templates/compare/compare_diff.html:75
 
#: kallithea/templates/compare/compare_diff.html:85
 
#: kallithea/templates/pullrequests/pullrequest_show.html:178
 
#: kallithea/templates/pullrequests/pullrequest_show.html:202
 
msgid "Show full diff"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset.html:214
 
#: kallithea/templates/changeset/changeset.html:251
 
msgid "no revisions"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:23
 
#, python-format
 
msgid "Vote on pull request #%s"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:25
 
#, python-format
 
msgid "Comment on pull request #%s"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:30
 
msgid "Status change on changeset"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:32
 
msgid "Comment on changeset"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:63
 
msgid "Submitting..."
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:66
 
msgid "Commenting on line {1}."
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:67
 
#: kallithea/templates/changeset/changeset_file_comment.html:153
 
#, python-format
 
msgid "Comments parsed using %s syntax with %s support."
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:69
 
#: kallithea/templates/changeset/changeset_file_comment.html:155
 
msgid ""
 
"Use @username inside this text to send notification to this Kallithea user"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:73
 
#: kallithea/templates/changeset/changeset_file_comment.html:166
 
msgid "Preview"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:80
 
#: kallithea/templates/changeset/changeset_file_comment.html:189
 
msgid "Comment preview"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:88
 
#: kallithea/templates/changeset/changeset_file_comment.html:196
 
#: kallithea/templates/email_templates/changeset_comment.html:11
 
#: kallithea/templates/email_templates/pull_request_comment.html:16
 
msgid "Comment"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:96
 
msgid "You need to be logged in to comment."
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:96
 
msgid "Login now"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:100
 
msgid "Hide"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:159
 
msgid "Vote for pull request status"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:161
 
msgid "Change changeset status"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_file_comment.html:179
 
msgid "Close (when approved or rejected)"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_range.html:5
 
#, python-format
 
msgid "%s Changesets"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/changeset_range.html:59
 
msgid "Files affected"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/diff_block.html:21
 
#: kallithea/templates/files/diff_2way.html:46
 
msgid "Show full diff for this file"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/diff_block.html:24
 
#: kallithea/templates/changeset/diff_block.html:68
 
#: kallithea/templates/files/diff_2way.html:49
 
msgid "Show full side-by-side diff for this file"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/diff_block.html:38
 
msgid "Show inline comments"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/diff_block.html:62
 
msgid "Show file at latest version in this repo"
 
msgstr ""
 

	
 
#: kallithea/templates/changeset/diff_block.html:64
 
msgid "Show file at initial version in this repo"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_cs.html:4
 
msgid "No changesets"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_cs.html:8
 
msgid "Ancestor"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:6
 
#: kallithea/templates/compare/compare_diff.html:8
 
#, python-format
 
msgid "%s Compare"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:16
 
msgid "Compare revisions"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:36
 
msgid "Swap"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:38
 
msgid "Compare Revisions"
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:45
 
msgid "Compare revisions, branches, bookmarks or tags."
 
msgstr ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:50
 
#: kallithea/templates/pullrequests/pullrequest_show.html:153
 
#, python-format
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 

	
 
#: kallithea/templates/compare/compare_diff.html:65
 
#: kallithea/templates/pullrequests/pullrequest_show.html:168
 
msgid "No files"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:63
 
msgid "Mercurial repository"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:65
 
msgid "Git repository"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:72
 
msgid "Public repository"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:82
 
msgid "Repository creating in progress..."
 
msgid "Repository creation in progress..."
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:96
 
msgid "No changesets yet"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:103
 
#: kallithea/templates/data_table/_dt_elements.html:105
 
#, python-format
 
msgid "Subscribe to %s rss feed"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:111
 
#: kallithea/templates/data_table/_dt_elements.html:113
 
#, python-format
 
msgid "Subscribe to %s atom feed"
 
msgstr ""
 

	
 
#: kallithea/templates/data_table/_dt_elements.html:141
 
msgid "Creating"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/changeset_comment.html:6
 
#, python-format
 
msgid "%s commented on a %s changeset."
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/changeset_comment.html:9
 
msgid "The changeset status was changed to"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/main.html:8
 
msgid "This is a notification from Kallithea."
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/password_reset.html:4
 
#, python-format
 
msgid "Hello %s"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/password_reset.html:5
 
msgid "We received a request to create a new password for your account."
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/password_reset.html:6
 
msgid "You can generate it by clicking following URL"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/password_reset.html:10
 
msgid "Please ignore this email if you did not request a new password ."
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/pull_request.html:6
 
#, python-format
 
msgid ""
 
"%s opened a pull request for repository %s and wants you to review changes."
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/pull_request.html:8
 
#: kallithea/templates/pullrequests/pullrequest.html:31
 
#: kallithea/templates/pullrequests/pullrequest_data.html:14
 
#: kallithea/templates/pullrequests/pullrequest_show.html:28
 
msgid "Title"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:6
 
#, python-format
 
msgid "%s commented on pull request \"%s\""
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:10
 
msgid "Pull request was closed with status"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/pull_request_comment.html:12
 
msgid "Pull request changed status"
 
msgstr ""
 

	
 
#: kallithea/templates/email_templates/registration.html:6
 
msgid "View this user here"
 
msgstr ""
 

	
 
#: kallithea/templates/errors/error_document.html:47
 
#, python-format
 
msgid "You will be redirected to %s in %s seconds"
 
msgstr ""
 

	
 
#: kallithea/templates/files/diff_2way.html:15
 
#, python-format
 
msgid "%s File side-by-side diff"
 
msgstr ""
 

	
 
#: kallithea/templates/files/diff_2way.html:22
 
#: kallithea/templates/files/file_diff.html:11
 
msgid "File diff"
 
msgstr ""
 

	
 
#: kallithea/templates/files/diff_2way.html:58
 
msgid "ignore whitespace"
 
msgstr ""
 

	
 
#: kallithea/templates/files/diff_2way.html:59
 
msgid "turn on edit mode"
 
msgstr ""
 

	
 
#: kallithea/templates/files/file_diff.html:4
 
#, python-format
 
msgid "%s File Diff"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files.html:4
 
#: kallithea/templates/files/files.html:84
 
#, python-format
 
msgid "%s Files"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:4
 
#, python-format
 
msgid "%s Files Add"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:25
 
msgid "Add new file"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:45
 
#: kallithea/templates/files/files_edit.html:43
 
#: kallithea/templates/files/files_ypjax.html:3
 
msgid "Location"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:47
 
msgid "Enter filename..."
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:49
 
#: kallithea/templates/files/files_add.html:53
 
msgid "or"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:49
 
msgid "Upload File"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:53
 
msgid "Create New File"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:58
 
msgid "New file mode"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_add.html:69
 
#: kallithea/templates/files/files_delete.html:57
 
#: kallithea/templates/files/files_edit.html:72
 
msgid "Commit changes"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:13
 
msgid "revision"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:14
 
msgid "Previous revision"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:16
 
msgid "Next revision"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:22
 
msgid "Follow current branch"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:25
 
msgid "Search File List"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:29
 
msgid "Loading file list..."
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:42
 
msgid "Size"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:43
 
msgid "Mimetype"
 
msgstr ""
 

	
 
#: kallithea/templates/files/files_browser.html:44
 
msgid "Last Revision"

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)