Changeset - cd50d1b5f35b
CONTRIBUTORS
Show inline comments
 
@@ -29,6 +29,7 @@ List of contributors to RhodeCode projec
 
    Zachary Auclair <zach101@gmail.com>
 
    Stefan Engel <mail@engel-stefan.de>
 
    Andrew Shadura <bugzilla@tut.by>
 
    Raoul Thill <raoul.thill@gmail.com>
 
    Philip Jameson <philip.j@hostdime.com>
 
    Mads Kiilerich <madski@unity3d.com>
 
    Dan Sheridan <djs@adelard.com>
docs/api/api.rst
Show inline comments
 
@@ -152,67 +152,103 @@ OUTPUT::
 
    error :  null
 

	
 

	
 
lock
 
----
 

	
 
Set locking state on given repository by given user.
 
Set locking state on given repository by given user. If userid param is skipped
 
, then it is set to id of user whos calling this method.
 
This command can be executed only using api_key belonging to user with admin 
 
rights.
 
rights or regular user that have admin or write access to repository.
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "lock"
 
    args :    {
 
                "repoid" : "<reponame or repo_id>"
 
                "userid" : "<user_id or username>",
 
                "userid" : "<user_id or username = Optional(=apiuser)>",
 
                "locked" : "<bool true|false>"
 
                
 
              }
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result : "User `<username>` set lock state for repo `<reponame>` to `true|false`"
 
    error :  null
 

	
 

	
 
show_ip
 
-------
 

	
 
Shows IP address as seen from RhodeCode server, together with all
 
defined IP addresses for given user.
 
This command can be executed only using api_key belonging to user with admin 
 
rights.
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "show_ip"
 
    args :    {
 
                "userid" : "<user_id or username>",
 
              }
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result : {
 
                 "ip_addr_server": <ip_from_clien>",
 
                 "user_ips": [
 
                                {
 
                                   "ip_addr": "<ip_with_mask>",
 
                                   "ip_range": ["<start_ip>", "<end_ip>"],
 
                                },
 
                                ...
 
                             ]
 
             }
 
    
 
    error :  null
 

	
 

	
 
get_user
 
--------
 

	
 
Get's an user by username or user_id, Returns empty result if user is not found.
 
If userid param is skipped it is set to id of user who is calling this method.
 
This command can be executed only using api_key belonging to user with admin 
 
rights.
 
rights, or regular users that cannot specify different userid than theirs
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "get_user"
 
    args :    { 
 
                "userid" : "<username or user_id>"
 
                "userid" : "<username or user_id Optional(=apiuser)>"
 
              }
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result: None if user does not exist or 
 
            {
 
                "user_id" :  "<user_id>",
 
                "username" : "<username>",
 
                "firstname": "<firstname>",
 
                "lastname" : "<lastname>",
 
                "email" :    "<email>",
 
                "emails":    "<list_of_all_additional_emails>",
 
                "active" :   "<bool>",
 
                "admin" :    "<bool>",
 
                "ldap_dn" :  "<ldap_dn>",
 
                "last_login": "<last_login>",
 
                "user_id" :     "<user_id>",
 
                "username" :    "<username>",
 
                "firstname":    "<firstname>",
 
                "lastname" :    "<lastname>",
 
                "email" :       "<email>",
 
                "emails":       "<list_of_all_additional_emails>",
 
                "ip_addresses": "<list_of_ip_addresses_for_user>",
 
                "active" :      "<bool>",
 
                "admin" :       "<bool>",
 
                "ldap_dn" :     "<ldap_dn>",
 
                "last_login":   "<last_login>",
 
                "permissions": {
 
                    "global": ["hg.create.repository",
 
                               "repository.read",
 
                               "hg.register.manual_activate"],
 
                    "repositories": {"repo1": "repository.none"},
 
                    "repositories_groups": {"Group1": "group.read"}
 
@@ -238,22 +274,23 @@ INPUT::
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result: [
 
              {
 
                "user_id" :  "<user_id>",
 
                "username" : "<username>",
 
                "firstname": "<firstname>",
 
                "lastname" : "<lastname>",
 
                "email" :    "<email>",
 
                "emails":    "<list_of_all_additional_emails>",
 
                "active" :   "<bool>",
 
                "admin" :    "<bool>",
 
                "ldap_dn" :  "<ldap_dn>",
 
                "last_login": "<last_login>",
 
                "user_id" :     "<user_id>",
 
                "username" :    "<username>",
 
                "firstname":    "<firstname>",
 
                "lastname" :    "<lastname>",
 
                "email" :       "<email>",
 
                "emails":       "<list_of_all_additional_emails>",
 
                "ip_addresses": "<list_of_ip_addresses_for_user>",
 
                "active" :      "<bool>",
 
                "admin" :       "<bool>",
 
                "ldap_dn" :     "<ldap_dn>",
 
                "last_login":   "<last_login>",
 
              },
 
    	
 
            ]
 
    error:  null
 

	
 

	
 
@@ -312,20 +349,20 @@ INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "update_user"
 
    args :    {
 
                "userid" : "<user_id or username>",
 
                "username" :  "<username> = Optional",
 
                "email" :     "<useremail> = Optional",
 
                "password" :  "<password> = Optional",
 
                "firstname" : "<firstname> = Optional",
 
                "lastname" :  "<lastname> = Optional",
 
                "active" :    "<bool> = Optional",
 
                "admin" :     "<bool> = Optional",
 
                "ldap_dn" :   "<ldap_dn> = Optional"
 
                "username" :  "<username> = Optional(None)",
 
                "email" :     "<useremail> = Optional(None)",
 
                "password" :  "<password> = Optional(None)",
 
                "firstname" : "<firstname> = Optional(None)",
 
                "lastname" :  "<lastname> = Optional(None)",
 
                "active" :    "<bool> = Optional(None)",
 
                "admin" :     "<bool> = Optional(None)",
 
                "ldap_dn" :   "<ldap_dn> = Optional(None)"
 
              }
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result: {
 
@@ -534,14 +571,15 @@ OUTPUT::
 

	
 

	
 
get_repo
 
--------
 

	
 
Gets an existing repository by it's name or repository_id. Members will return
 
either users_group or user associated to that repository. This command can 
 
be executed only using api_key belonging to user with admin rights.
 
either users_group or user associated to that repository. 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.
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
@@ -552,35 +590,46 @@ INPUT::
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result: None if repository does not exist or
 
            {
 
                "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>",
 
                "repo_id" :          "<repo_id>",
 
                "repo_name" :        "<reponame>"
 
                "repo_type" :        "<repo_type>",
 
                "clone_uri" :        "<clone_uri>",
 
                "enable_downloads":  "<bool>",
 
                "enable_locking":    "<bool>",
 
                "enable_statistics": "<bool>",                
 
                "private":           "<bool>",
 
                "created_on" :       "<date_time_created>",                
 
                "description" :      "<description>",
 
                "landing_rev":       "<landing_rev>",
 
                "last_changeset":    {
 
                                       "author":   "<full_author>",
 
                                       "date":     "<date_time_of_commit>",
 
                                       "message":  "<commit_message>",
 
                                       "raw_id":   "<raw_id>",
 
                                       "revision": "<numeric_revision>",
 
                                       "short_id": "<short_id>"
 
                                     }
 
                "owner":             "<repo_owner>",
 
                "fork_of":           "<name_of_fork_parent>",
 
                "members" :     [
 
                                  { 
 
                                    "type": "user",
 
                                    "user_id" :  "<user_id>",
 
                                    "username" : "<username>",
 
                                    "firstname": "<firstname>",
 
                                    "lastname" : "<lastname>",
 
                                    "email" :    "<email>",
 
                                    "emails":    "<list_of_all_additional_emails>",
 
                                    "active" :   "<bool>",
 
                                    "admin" :    "<bool>",
 
                                    "ldap_dn" :  "<ldap_dn>",
 
                                    "last_login": "<last_login>",
 
                                    "user_id" :    "<user_id>",
 
                                    "username" :   "<username>",
 
                                    "firstname":   "<firstname>",
 
                                    "lastname" :   "<lastname>",
 
                                    "email" :      "<email>",
 
                                    "emails":      "<list_of_all_additional_emails>",
 
                                    "active" :     "<bool>",
 
                                    "admin" :      "<bool>",
 
                                    "ldap_dn" :    "<ldap_dn>",
 
                                    "last_login":  "<last_login>",
 
                                    "permission" : "repository.(read|write|admin)"
 
                                  },
 
 
                                  { 
 
                                    "type": "users_group",
 
                                    "id" :       "<usersgroupid>",
 
@@ -594,14 +643,15 @@ OUTPUT::
 
    error:  null
 

	
 

	
 
get_repos
 
---------
 

	
 
Lists all existing repositories. This command can be executed only using api_key
 
belonging to user with admin rights
 
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.
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
@@ -610,22 +660,25 @@ INPUT::
 

	
 
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>",
 
                "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
 

	
 

	
 
@@ -663,60 +716,103 @@ OUTPUT::
 
    error:  null
 

	
 

	
 
create_repo
 
-----------
 

	
 
Creates a repository. This command can be executed only using api_key
 
belonging to user with admin rights.
 
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.
 
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
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "create_repo"
 
    args:     {
 
                "repo_name" :   "<reponame>",
 
                "owner" :       "<onwer_name_or_id>",
 
                "repo_type" :   "<repo_type>",
 
                "description" : "<description> = Optional('')",
 
                "private" :     "<bool> = Optional(False)",
 
                "clone_uri" :   "<clone_uri> = Optional(None)",
 
                "landing_rev" : "<landing_rev> = Optional('tip')",
 
                "repo_name" :        "<reponame>",
 
                "owner" :            "<onwer_name_or_id = Optional(=apiuser)>",
 
                "repo_type" :        "<repo_type> = Optional('hg')",
 
                "description" :      "<description> = Optional('')",
 
                "private" :          "<bool> = Optional(False)",
 
                "clone_uri" :        "<clone_uri> = Optional(None)",
 
                "landing_rev" :      "<landing_rev> = Optional('tip')",
 
                "enable_downloads":  "<bool> = Optional(False)",
 
                "enable_locking":    "<bool> = Optional(False)",
 
                "enable_statistics": "<bool> = Optional(False)",
 
              }
 

	
 
OUTPUT::
 

	
 
    id : <id_given_in_input>
 
    result: {
 
              "msg": "Created new repository `<reponame>`",
 
              "repo": {
 
                "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>",
 
                "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":             "<username or user_id>",
 
                "fork_of":           "<name_of_fork_parent>",
 
                "enable_downloads":  "<bool>",
 
                "enable_locking":    "<bool>",
 
                "enable_statistics": "<bool>",                     
 
              },
 
            }
 
    error:  null
 

	
 

	
 
fork_repo
 
---------
 

	
 
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.
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
 
    method :  "fork_repo"
 
    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::
 

	
 
    id : <id_given_in_input>
 
    result: {
 
              "msg": "Created fork of `<reponame>` as `<forkname>`",
 
              "success": true
 
            }
 
    error:  null
 

	
 

	
 
delete_repo
 
-----------
 

	
 
Deletes a repository. This command can be executed only using api_key
 
belonging to user with admin rights.
 
Deletes a repository. This command can be executed only using api_key belonging to user with admin 
 
rights or regular user that have admin access to repository.
 

	
 

	
 
INPUT::
 

	
 
    id : <id_for_response>
 
    api_key : "<api_key>"
docs/changelog.rst
Show inline comments
 
.. _changelog:
 

	
 
=========
 
Changelog
 
=========
 

	
 
1.5.2 (**2013-01-14**)
 
----------------------
 

	
 
news
 
++++
 

	
 
- IP restrictions for users. Each user can get a set of whitelist IP+mask for
 
  extra protection. Useful for buildbots etc.
 
- added full last changeset info to lightweight dashboard. lightweight dashboard
 
  is now fully functional replacement of original dashboard.
 
- implemented certain API calls for non-admin users.
 
- enabled all Markdown Extra plugins
 
- implemented #725 Pull Request View - Show origin repo URL
 
- show comments from pull requests into associated changesets
 

	
 
fixes
 
+++++
 

	
 
- update repoinfo script is more failsafe
 
- fixed #687  Lazy loaded tooltip bug with simultaneous ajax requests
 
- fixed #691: Notifications for pull requests: move link to top for better
 
  readability
 
- fixed #699: fix missing fork docs for API
 
- fixed #693 Opening changeset from pull request fails
 
- fixed #710 File view stripping empty lines from beginning and end of file
 
- fixed issues with getting repos by path on windows, caused GIT hooks to fail
 
- fixed issues with groups paginator on main dashboard
 
- improved fetch/pull command for git repos, now pulling all refs
 
- fixed issue #719 Journal revision ID tooltip AJAX query path is incorrect
 
  when running in a subdir
 
- fixed issue #702 API methods without arguments fail when "args":null
 
- set the status of changesets initially on pull request. Fixes issues #690 and #587
 

	
 
1.5.1 (**2012-12-13**)
 
----------------------
 

	
 
news
 
++++
docs/installation.rst
Show inline comments
 
@@ -40,12 +40,16 @@ Step by step installation example for Li
 

	
 

	
 
For installing RhodeCode i highly recommend using separate virtualenv_. This
 
way many required by RhodeCode libraries will remain sandboxed from your main
 
python and making things less problematic when doing system python updates. 
 

	
 
Alternative very detailed installation instructions for Ubuntu Server with
 
celery, indexer and daemon scripts: https://gist.github.com/4546398
 

	
 

	
 
- Assuming you have installed virtualenv_ create a new virtual environment 
 
  using virtualenv command:: 
 

	
 
    virtualenv --no-site-packages /opt/rhodecode-venv
 

	
 

	
rhodecode/__init__.py
Show inline comments
 
@@ -23,25 +23,25 @@
 
#
 
# You should have received a copy of the GNU General Public License
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
import sys
 
import platform
 

	
 
VERSION = (1, 5, 1)
 
VERSION = (1, 5, 2)
 

	
 
try:
 
    from rhodecode.lib import get_current_revision
 
    _rev = get_current_revision(quiet=True)
 
    if _rev and len(VERSION) > 3:
 
        VERSION += ('dev%s' % _rev[0],)
 
except ImportError:
 
    pass
 

	
 
__version__ = ('.'.join((str(each) for each in VERSION[:3])) +
 
               '.'.join(VERSION[3:]))
 
__dbversion__ = 9  # defines current db version for migrations
 
__dbversion__ = 10  # defines current db version for migrations
 
__platform__ = platform.system()
 
__license__ = 'GPLv3'
 
__py_version__ = sys.version_info
 
__author__ = 'Marcin Kuzminski'
 
__url__ = 'http://rhodecode.org'
 

	
rhodecode/config/routing.py
Show inline comments
 
@@ -219,12 +219,16 @@ def make_map(config):
 
        m.connect("user_perm", "/users_perm/{id}",
 
                  action="update_perm", conditions=dict(method=["PUT"]))
 
        m.connect("user_emails", "/users_emails/{id}",
 
                  action="add_email", conditions=dict(method=["PUT"]))
 
        m.connect("user_emails_delete", "/users_emails/{id}",
 
                  action="delete_email", conditions=dict(method=["DELETE"]))
 
        m.connect("user_ips", "/users_ips/{id}",
 
                  action="add_ip", conditions=dict(method=["PUT"]))
 
        m.connect("user_ips_delete", "/users_ips/{id}",
 
                  action="delete_ip", conditions=dict(method=["DELETE"]))
 

	
 
    #ADMIN USERS GROUPS REST ROUTES
 
    with rmap.submapper(path_prefix=ADMIN_PREFIX,
 
                        controller='admin/users_groups') as m:
 
        m.connect("users_groups", "/users_groups",
 
                  action="create", conditions=dict(method=["POST"]))
 
@@ -352,14 +356,12 @@ def make_map(config):
 
    #==========================================================================
 
    with rmap.submapper(path_prefix=ADMIN_PREFIX,
 
                        controller='api/api') as m:
 
        m.connect('api', '/api')
 

	
 
    #USER JOURNAL
 
    rmap.connect('journal_my_repos', '%s/journal_my_repos' % ADMIN_PREFIX,
 
                 controller='journal', action='index_my_repos')
 
    rmap.connect('journal', '%s/journal' % ADMIN_PREFIX,
 
                 controller='journal', action='index')
 
    rmap.connect('journal_rss', '%s/journal/rss' % ADMIN_PREFIX,
 
                 controller='journal', action='journal_rss')
 
    rmap.connect('journal_atom', '%s/journal/atom' % ADMIN_PREFIX,
 
                 controller='journal', action='journal_atom')
rhodecode/controllers/admin/notifications.py
Show inline comments
 
@@ -107,14 +107,14 @@ class NotificationsController(BaseContro
 
        # Or using helpers:
 
        #    h.form(url('notification', notification_id=ID),
 
        #           method='put')
 
        # url('notification', notification_id=ID)
 
        try:
 
            no = Notification.get(notification_id)
 
            owner = lambda: (no.notifications_to_users.user.user_id
 
                             == c.rhodecode_user.user_id)
 
            owner = all(un.user.user_id == c.rhodecode_user.user_id
 
                        for un in no.notifications_to_users)
 
            if h.HasPermissionAny('hg.admin')() or owner:
 
                    NotificationModel().mark_read(c.rhodecode_user.user_id, no)
 
                    Session().commit()
 
                    return 'ok'
 
        except Exception:
 
            Session.rollback()
 
@@ -129,14 +129,14 @@ class NotificationsController(BaseContro
 
        #    h.form(url('notification', notification_id=ID),
 
        #           method='delete')
 
        # url('notification', notification_id=ID)
 

	
 
        try:
 
            no = Notification.get(notification_id)
 
            owner = lambda: (no.notifications_to_users.user.user_id
 
                             == c.rhodecode_user.user_id)
 
            owner = all(un.user.user_id == c.rhodecode_user.user_id
 
                        for un in no.notifications_to_users)
 
            if h.HasPermissionAny('hg.admin')() or owner:
 
                    NotificationModel().delete(c.rhodecode_user.user_id, no)
 
                    Session().commit()
 
                    return 'ok'
 
        except Exception:
 
            Session.rollback()
 
@@ -146,14 +146,14 @@ class NotificationsController(BaseContro
 
    def show(self, notification_id, format='html'):
 
        """GET /_admin/notifications/id: Show a specific item"""
 
        # url('notification', notification_id=ID)
 
        c.user = self.rhodecode_user
 
        no = Notification.get(notification_id)
 

	
 
        owner = lambda: (no.notifications_to_users.user.user_id
 
                         == c.user.user_id)
 
        owner = all(un.user.user_id == c.rhodecode_user.user_id
 
                    for un in no.notifications_to_users)
 
        if no and (h.HasPermissionAny('hg.admin', 'repository.admin')() or owner):
 
            unotification = NotificationModel()\
 
                            .get_user_notification(c.user.user_id, no)
 

	
 
            # if this association to user is not valid, we don't want to show
 
            # this message
rhodecode/controllers/admin/permissions.py
Show inline comments
 
@@ -30,17 +30,18 @@ from formencode import htmlfill
 

	
 
from pylons import request, session, tmpl_context as c, url
 
from pylons.controllers.util import abort, redirect
 
from pylons.i18n.translation import _
 

	
 
from rhodecode.lib import helpers as h
 
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
 
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator,\
 
    AuthUser
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.forms import DefaultPermissionsForm
 
from rhodecode.model.permission import PermissionModel
 
from rhodecode.model.db import User
 
from rhodecode.model.db import User, UserIpMap
 
from rhodecode.model.meta import Session
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class PermissionsController(BaseController):
 
@@ -102,42 +103,47 @@ class PermissionsController(BaseControll
 
        # Forms posted to this method should contain a hidden field:
 
        #    <input type="hidden" name="_method" value="PUT" />
 
        # Or using helpers:
 
        #    h.form(url('permission', id=ID),
 
        #           method='put')
 
        # url('permission', id=ID)
 

	
 
        permission_model = PermissionModel()
 
        if id == 'default':
 
            c.user = default_user = User.get_by_username('default')
 
            c.perm_user = AuthUser(user_id=default_user.user_id)
 
            c.user_ip_map = UserIpMap.query()\
 
                            .filter(UserIpMap.user == default_user).all()
 
            permission_model = PermissionModel()
 

	
 
        _form = DefaultPermissionsForm([x[0] for x in self.repo_perms_choices],
 
                                       [x[0] for x in self.group_perms_choices],
 
                                       [x[0] for x in self.register_choices],
 
                                       [x[0] for x in self.create_choices],
 
                                       [x[0] for x in self.fork_choices])()
 
            _form = DefaultPermissionsForm(
 
                    [x[0] for x in self.repo_perms_choices],
 
                    [x[0] for x in self.group_perms_choices],
 
                    [x[0] for x in self.register_choices],
 
                    [x[0] for x in self.create_choices],
 
                    [x[0] for x in self.fork_choices])()
 

	
 
        try:
 
            form_result = _form.to_python(dict(request.POST))
 
            form_result.update({'perm_user_name': id})
 
            permission_model.update(form_result)
 
            Session().commit()
 
            h.flash(_('Default permissions updated successfully'),
 
                    category='success')
 
            try:
 
                form_result = _form.to_python(dict(request.POST))
 
                form_result.update({'perm_user_name': id})
 
                permission_model.update(form_result)
 
                Session().commit()
 
                h.flash(_('Default permissions updated successfully'),
 
                        category='success')
 

	
 
        except formencode.Invalid, errors:
 
            defaults = errors.value
 
            except formencode.Invalid, errors:
 
                defaults = errors.value
 

	
 
            return htmlfill.render(
 
                render('admin/permissions/permissions.html'),
 
                defaults=defaults,
 
                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 permissions'),
 
                    category='error')
 
                return htmlfill.render(
 
                    render('admin/permissions/permissions.html'),
 
                    defaults=defaults,
 
                    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 permissions'),
 
                        category='error')
 

	
 
        return redirect(url('edit_permission', id=id))
 

	
 
    def delete(self, id):
 
        """DELETE /permissions/id: Delete an existing item"""
 
        # Forms posted to this method should contain a hidden field:
 
@@ -154,16 +160,17 @@ class PermissionsController(BaseControll
 
    def edit(self, id, format='html'):
 
        """GET /permissions/id/edit: Form to edit an existing item"""
 
        #url('edit_permission', id=ID)
 

	
 
        #this form can only edit default user permissions
 
        if id == 'default':
 
            default_user = User.get_by_username('default')
 
            defaults = {'_method': 'put',
 
                        'anonymous': default_user.active}
 

	
 
            c.user = default_user = User.get_by_username('default')
 
            defaults = {'anonymous': default_user.active}
 
            c.perm_user = AuthUser(user_id=default_user.user_id)
 
            c.user_ip_map = UserIpMap.query()\
 
                            .filter(UserIpMap.user == default_user).all()
 
            for p in default_user.user_perms:
 
                if p.permission.permission_name.startswith('repository.'):
 
                    defaults['default_repo_perm'] = p.permission.permission_name
 

	
 
                if p.permission.permission_name.startswith('group.'):
 
                    defaults['default_group_perm'] = p.permission.permission_name
 
@@ -178,10 +185,10 @@ class PermissionsController(BaseControll
 
                    defaults['default_fork'] = p.permission.permission_name
 

	
 
            return htmlfill.render(
 
                render('admin/permissions/permissions.html'),
 
                defaults=defaults,
 
                encoding="UTF-8",
 
                force_defaults=True,
 
                force_defaults=False
 
            )
 
        else:
 
            return redirect(url('admin_home'))
rhodecode/controllers/admin/repos.py
Show inline comments
 
@@ -132,46 +132,16 @@ class ReposController(BaseController):
 
        # url('repos')
 

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

	
 
        repos_data = []
 
        total_records = len(c.repos_list)
 

	
 
        _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
 
        template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
 

	
 
        quick_menu = lambda repo_name: (template.get_def("quick_menu")
 
                                        .render(repo_name, _=_, h=h, c=c))
 
        repo_lnk = lambda name, rtype, private, fork_of: (
 
            template.get_def("repo_name")
 
            .render(name, rtype, private, fork_of, short_name=False,
 
                    admin=True, _=_, h=h, c=c))
 

	
 
        repo_actions = lambda repo_name: (template.get_def("repo_actions")
 
                                       .render(repo_name, _=_, h=h, c=c))
 

	
 
        for repo in c.repos_list:
 
            repos_data.append({
 
                "menu": quick_menu(repo.repo_name),
 
                "raw_name": repo.repo_name.lower(),
 
                "name": repo_lnk(repo.repo_name, repo.repo_type,
 
                                 repo.private, repo.fork),
 
                "desc": repo.description,
 
                "owner": repo.user.username,
 
                "action": repo_actions(repo.repo_name),
 
            })
 

	
 
        c.data = json.dumps({
 
            "totalRecords": total_records,
 
            "startIndex": 0,
 
            "sort": "name",
 
            "dir": "asc",
 
            "records": repos_data
 
        })
 
        repos_data = RepoModel().get_repos_as_dict(repos_list=c.repos_list,
 
                                                   admin=True)
 
        #json used to render the grid
 
        c.data = json.dumps(repos_data)
 

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

	
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
 
    def create(self):
 
        """
rhodecode/controllers/admin/repos_groups.py
Show inline comments
 
@@ -292,60 +292,24 @@ class ReposGroupsController(BaseControll
 

	
 
        groups = RepoGroup.query().order_by(RepoGroup.group_name)\
 
            .filter(RepoGroup.group_parent_id == id).all()
 
        c.groups = self.scm_model.get_repos_groups(groups)
 

	
 
        if c.visual.lightweight_dashboard is False:
 
            c.cached_repo_list = self.scm_model.get_repos(all_repos=gr_filter)
 

	
 
            c.repos_list = c.cached_repo_list
 
            c.repos_list = self.scm_model.get_repos(all_repos=gr_filter)
 
        ## lightweight version of dashboard
 
        else:
 
            c.repos_list = Repository.query()\
 
                            .filter(Repository.group_id == id)\
 
                            .order_by(func.lower(Repository.repo_name))\
 
                            .all()
 
            repos_data = []
 
            total_records = len(c.repos_list)
 

	
 
            _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
 
            template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
 

	
 
            quick_menu = lambda repo_name: (template.get_def("quick_menu")
 
                                            .render(repo_name, _=_, h=h, c=c))
 
            repo_lnk = lambda name, rtype, private, fork_of: (
 
                template.get_def("repo_name")
 
                .render(name, rtype, private, fork_of, short_name=False,
 
                        admin=False, _=_, h=h, c=c))
 
            last_change = lambda last_change:  (template.get_def("last_change")
 
                                           .render(last_change, _=_, h=h, c=c))
 
            rss_lnk = lambda repo_name: (template.get_def("rss")
 
                                           .render(repo_name, _=_, h=h, c=c))
 
            atom_lnk = lambda repo_name: (template.get_def("atom")
 
                                           .render(repo_name, _=_, h=h, c=c))
 

	
 
            for repo in c.repos_list:
 
                repos_data.append({
 
                    "menu": quick_menu(repo.repo_name),
 
                    "raw_name": repo.repo_name.lower(),
 
                    "name": repo_lnk(repo.repo_name, repo.repo_type,
 
                                     repo.private, repo.fork),
 
                    "last_change": last_change(repo.last_db_change),
 
                    "desc": repo.description,
 
                    "owner": h.person(repo.user.username),
 
                    "rss": rss_lnk(repo.repo_name),
 
                    "atom": atom_lnk(repo.repo_name),
 
                })
 

	
 
            c.data = json.dumps({
 
                "totalRecords": total_records,
 
                "startIndex": 0,
 
                "sort": "name",
 
                "dir": "asc",
 
                "records": repos_data
 
            })
 
            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/repos_groups/repos_groups.html')
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def edit(self, id, format='html'):
 
        """GET /repos_groups/id/edit: Form to edit an existing item"""
rhodecode/controllers/admin/settings.py
Show inline comments
 
@@ -45,17 +45,18 @@ from rhodecode.lib.utils import repo2db_
 
from rhodecode.model.db import RhodeCodeUi, Repository, RepoGroup, \
 
    RhodeCodeSetting, PullRequest, PullRequestReviewers
 
from rhodecode.model.forms import UserForm, ApplicationSettingsForm, \
 
    ApplicationUiSettingsForm, ApplicationVisualisationForm
 
from rhodecode.model.scm import ScmModel
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.repo import RepoModel
 
from rhodecode.model.db import User
 
from rhodecode.model.notification import EmailNotificationModel
 
from rhodecode.model.meta import Session
 
from rhodecode.lib.utils2 import str2bool
 

	
 
from rhodecode.lib.utils2 import str2bool, safe_unicode
 
from rhodecode.lib.compat import json
 
log = logging.getLogger(__name__)
 

	
 

	
 
class SettingsController(BaseController):
 
    """REST Controller styled on the Atom Publishing Protocol"""
 
    # To properly map this controller, ensure your config/routing.py
 
@@ -116,16 +117,17 @@ class SettingsController(BaseController)
 
            initial = ScmModel().repo_scan()
 
            log.debug('invalidating all repositories')
 
            for repo_name in initial.keys():
 
                invalidate_cache('get_repo_cached_%s' % repo_name)
 

	
 
            added, removed = repo2db_mapper(initial, rm_obsolete)
 

	
 
            h.flash(_('Repositories successfully'
 
                      ' rescanned added: %s,removed: %s') % (added, removed),
 
                      category='success')
 
            _repr = lambda l: ', '.join(map(safe_unicode, l)) or '-'
 
            h.flash(_('Repositories successfully '
 
                      'rescanned added: %s ; removed: %s') %
 
                    (_repr(added), _repr(removed)),
 
                    category='success')
 

	
 
        if setting_id == 'whoosh':
 
            repo_location = self._get_hg_ui_settings()['paths_root_path']
 
            full_index = request.POST.get('full_index', False)
 
            run_task(tasks.whoosh_index, repo_location, full_index)
 
            h.flash(_('Whoosh reindex task scheduled'), category='success')
 
@@ -333,13 +335,13 @@ class SettingsController(BaseController)
 
            test_email_body = 'RhodeCode Email test'
 

	
 
            test_email_html_body = EmailNotificationModel()\
 
                .get_email_tmpl(EmailNotificationModel.TYPE_DEFAULT,
 
                                body=test_email_body)
 

	
 
            recipients = [test_email] if [test_email] else None
 
            recipients = [test_email] if test_email else None
 

	
 
            run_task(tasks.send_email, recipients, test_email_subj,
 
                     test_email_body, test_email_html_body)
 

	
 
            h.flash(_('Email task created'), category='success')
 
        return redirect(url('admin_settings'))
 
@@ -378,31 +380,41 @@ class SettingsController(BaseController)
 
            render('admin/settings/hooks.html'),
 
            defaults={},
 
            encoding="UTF-8",
 
            force_defaults=False
 
        )
 

	
 
    def _load_my_repos_data(self):
 
        repos_list = Session().query(Repository)\
 
                     .filter(Repository.user_id ==
 
                             self.rhodecode_user.user_id)\
 
                     .order_by(func.lower(Repository.repo_name)).all()
 

	
 
        repos_data = RepoModel().get_repos_as_dict(repos_list=repos_list,
 
                                                   admin=True)
 
        #json used to render the grid
 
        return json.dumps(repos_data)
 

	
 
    @NotAnonymous()
 
    def my_account(self):
 
        """
 
        GET /_admin/my_account Displays info about my account
 
        """
 
        # url('admin_settings_my_account')
 

	
 
        c.user = User.get(self.rhodecode_user.user_id)
 
        all_repos = Session().query(Repository)\
 
                     .filter(Repository.user_id == c.user.user_id)\
 
                     .order_by(func.lower(Repository.repo_name)).all()
 

	
 
        c.user_repos = ScmModel().get_repos(all_repos)
 
        c.ldap_dn = c.user.ldap_dn
 

	
 
        if c.user.username == 'default':
 
            h.flash(_("You can't edit this user since it's"
 
              " crucial for entire application"), category='warning')
 
            return redirect(url('users'))
 

	
 
        #json used to render the grid
 
        c.data = self._load_my_repos_data()
 

	
 
        defaults = c.user.get_dict()
 

	
 
        c.form = htmlfill.render(
 
            render('admin/users/user_edit_my_account_form.html'),
 
            defaults=defaults,
 
            encoding="UTF-8",
 
@@ -417,25 +429,31 @@ class SettingsController(BaseController)
 
        #    <input type="hidden" name="_method" value="PUT" />
 
        # Or using helpers:
 
        #    h.form(url('admin_settings_my_account_update'),
 
        #           method='put')
 
        # url('admin_settings_my_account_update', id=ID)
 
        uid = self.rhodecode_user.user_id
 
        c.user = User.get(self.rhodecode_user.user_id)
 
        c.ldap_dn = c.user.ldap_dn
 
        email = self.rhodecode_user.email
 
        _form = UserForm(edit=True,
 
                         old_data={'user_id': uid, 'email': email})()
 
        form_result = {}
 
        try:
 
            form_result = _form.to_python(dict(request.POST))
 
            UserModel().update_my_account(uid, form_result)
 
            skip_attrs = ['admin', 'active']  # skip attr for my account
 
            if c.ldap_dn:
 
                #forbid updating username for ldap accounts
 
                skip_attrs.append('username')
 
            UserModel().update(uid, form_result, skip_attrs=skip_attrs)
 
            h.flash(_('Your account was updated successfully'),
 
                    category='success')
 
            Session().commit()
 
        except formencode.Invalid, errors:
 
            c.user = User.get(self.rhodecode_user.user_id)
 

	
 
            #json used to render the grid
 
            c.data = self._load_my_repos_data()
 
            c.form = htmlfill.render(
 
                render('admin/users/user_edit_my_account_form.html'),
 
                defaults=errors.value,
 
                errors=errors.error_dict or {},
 
                prefix_error=False,
 
                encoding="UTF-8")
 
@@ -445,29 +463,20 @@ class SettingsController(BaseController)
 
            h.flash(_('error occurred during update of user %s') \
 
                    % form_result.get('username'), category='error')
 

	
 
        return redirect(url('my_account'))
 

	
 
    @NotAnonymous()
 
    def my_account_my_repos(self):
 
        all_repos = Session().query(Repository)\
 
            .filter(Repository.user_id == self.rhodecode_user.user_id)\
 
            .order_by(func.lower(Repository.repo_name))\
 
            .all()
 
        c.user_repos = ScmModel().get_repos(all_repos)
 
        return render('admin/users/user_edit_my_account_repos.html')
 

	
 
    @NotAnonymous()
 
    def my_account_my_pullrequests(self):
 
        c.my_pull_requests = PullRequest.query()\
 
                                .filter(PullRequest.user_id==
 
                                .filter(PullRequest.user_id ==
 
                                        self.rhodecode_user.user_id)\
 
                                .all()
 
        c.participate_in_pull_requests = \
 
            [x.pull_request for x in PullRequestReviewers.query()\
 
                                    .filter(PullRequestReviewers.user_id==
 
                                    .filter(PullRequestReviewers.user_id ==
 
                                            self.rhodecode_user.user_id)\
 
                                    .all()]
 
        return render('admin/users/user_edit_my_account_pullrequests.html')
 

	
 
    @NotAnonymous()
 
    @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')
rhodecode/controllers/admin/users.py
Show inline comments
 
@@ -38,13 +38,13 @@ from rhodecode.lib.exceptions import Def
 
    UserOwnsReposException
 
from rhodecode.lib import helpers as h
 
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
 
    AuthUser
 
from rhodecode.lib.base import BaseController, render
 

	
 
from rhodecode.model.db import User, UserEmailMap
 
from rhodecode.model.db import User, UserEmailMap, UserIpMap
 
from rhodecode.model.forms import UserForm
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.meta import Session
 
from rhodecode.lib.utils import action_logger
 
from rhodecode.lib.compat import json
 
from rhodecode.lib.utils2 import datetime_to_time, str2bool
 
@@ -156,13 +156,13 @@ class UsersController(BaseController):
 
        #    h.form(url('update_user', id=ID),
 
        #           method='put')
 
        # url('user', id=ID)
 
        user_model = UserModel()
 
        c.user = user_model.get(id)
 
        c.ldap_dn = c.user.ldap_dn
 
        c.perm_user = AuthUser(user_id=id)
 
        c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
 
        _form = UserForm(edit=True, old_data={'user_id': id,
 
                                              'email': c.user.email})()
 
        form_result = {}
 
        try:
 
            form_result = _form.to_python(dict(request.POST))
 
            skip_attrs = []
 
@@ -175,12 +175,14 @@ class UsersController(BaseController):
 
                          None, self.ip_addr, self.sa)
 
            h.flash(_('User updated successfully'), category='success')
 
            Session().commit()
 
        except formencode.Invalid, errors:
 
            c.user_email_map = UserEmailMap.query()\
 
                            .filter(UserEmailMap.user == c.user).all()
 
            c.user_ip_map = UserIpMap.query()\
 
                            .filter(UserIpMap.user == c.user).all()
 
            defaults = errors.value
 
            e = errors.error_dict or {}
 
            defaults.update({
 
                'create_repo_perm': user_model.has_perm(id, 'hg.create.repository'),
 
                'fork_repo_perm': user_model.has_perm(id, 'hg.fork.repository'),
 
                '_method': 'put'
 
@@ -228,18 +230,20 @@ class UsersController(BaseController):
 
        c.user = User.get_or_404(id)
 

	
 
        if c.user.username == 'default':
 
            h.flash(_("You can't edit this user"), category='warning')
 
            return redirect(url('users'))
 

	
 
        c.perm_user = AuthUser(user_id=id)
 
        c.perm_user = AuthUser(user_id=id, ip_addr=self.ip_addr)
 
        c.user.permissions = {}
 
        c.granted_permissions = UserModel().fill_perms(c.user)\
 
            .permissions['global']
 
        c.user_email_map = UserEmailMap.query()\
 
                        .filter(UserEmailMap.user == c.user).all()
 
        c.user_ip_map = UserIpMap.query()\
 
                        .filter(UserIpMap.user == c.user).all()
 
        user_model = UserModel()
 
        c.ldap_dn = c.user.ldap_dn
 
        defaults = c.user.get_dict()
 
        defaults.update({
 
            'create_repo_perm': user_model.has_perm(id, 'hg.create.repository'),
 
            'fork_repo_perm': user_model.has_perm(id, 'hg.fork.repository'),
 
@@ -296,13 +300,12 @@ class UsersController(BaseController):
 
        return redirect(url('edit_user', id=id))
 

	
 
    def add_email(self, id):
 
        """POST /user_emails:Add an existing item"""
 
        # url('user_emails', id=ID, method='put')
 

	
 
        #TODO: validation and form !!!
 
        email = request.POST.get('new_email')
 
        user_model = UserModel()
 

	
 
        try:
 
            user_model.add_extra_email(id, email)
 
            Session().commit()
 
@@ -321,6 +324,39 @@ class UsersController(BaseController):
 
        # url('user_emails_delete', id=ID, method='delete')
 
        user_model = UserModel()
 
        user_model.delete_extra_email(id, request.POST.get('del_email'))
 
        Session().commit()
 
        h.flash(_("Removed email from user"), category='success')
 
        return redirect(url('edit_user', id=id))
 

	
 
    def add_ip(self, id):
 
        """POST /user_ips:Add an existing item"""
 
        # url('user_ips', id=ID, method='put')
 

	
 
        ip = request.POST.get('new_ip')
 
        user_model = UserModel()
 

	
 
        try:
 
            user_model.add_extra_ip(id, ip)
 
            Session().commit()
 
            h.flash(_("Added ip %s to user") % ip, category='success')
 
        except formencode.Invalid, error:
 
            msg = error.error_dict['ip']
 
            h.flash(msg, category='error')
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('An error occurred during ip saving'),
 
                    category='error')
 
        if 'default_user' in request.POST:
 
            return redirect(url('edit_permission', id='default'))
 
        return redirect(url('edit_user', id=id))
 

	
 
    def delete_ip(self, id):
 
        """DELETE /user_ips_delete/id: Delete an existing item"""
 
        # url('user_ips_delete', id=ID, method='delete')
 
        user_model = UserModel()
 
        user_model.delete_extra_ip(id, request.POST.get('del_ip'))
 
        Session().commit()
 
        h.flash(_("Removed ip from user"), category='success')
 
        if 'default_user' in request.POST:
 
            return redirect(url('edit_permission', id='default'))
 
        return redirect(url('edit_user', id=id))
rhodecode/controllers/api/__init__.py
Show inline comments
 
@@ -29,23 +29,21 @@ import inspect
 
import logging
 
import types
 
import urllib
 
import traceback
 
import time
 

	
 
from rhodecode.lib.compat import izip_longest, json
 

	
 
from paste.response import replace_header
 

	
 
from pylons.controllers import WSGIController
 

	
 

	
 
from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError, \
 
HTTPBadRequest, HTTPError
 

	
 
from rhodecode.model.db import User
 
from rhodecode.model import meta
 
from rhodecode.lib.compat import izip_longest, json
 
from rhodecode.lib.auth import AuthUser
 
from rhodecode.lib.base import _get_ip_addr, _get_access_path
 
from rhodecode.lib.utils2 import safe_unicode
 

	
 
log = logging.getLogger('JSONRPC')
 

	
 
@@ -83,12 +81,15 @@ class JSONRPCController(WSGIController):
 

	
 
     Sub-classes should catch their exceptions and raise JSONRPCError
 
     if they want to pass meaningful errors to the client.
 

	
 
     """
 

	
 
    def _get_ip_addr(self, environ):
 
        return _get_ip_addr(environ)
 

	
 
    def _get_method_args(self):
 
        """
 
        Return `self._rpc_args` to dispatched controller method
 
        chosen by __call__
 
        """
 
        return self._rpc_args
 
@@ -96,12 +97,13 @@ class JSONRPCController(WSGIController):
 
    def __call__(self, environ, start_response):
 
        """
 
        Parse the request body as JSON, look up the method on the
 
        controller and if it exists, dispatch to it.
 
        """
 
        start = time.time()
 
        ip_addr = self.ip_addr = self._get_ip_addr(environ)
 
        self._req_id = None
 
        if 'CONTENT_LENGTH' not in environ:
 
            log.debug("No Content-Length")
 
            return jsonrpc_error(retid=self._req_id,
 
                                 message="No Content-Length in request")
 
        else:
 
@@ -127,12 +129,15 @@ class JSONRPCController(WSGIController):
 
        # check AUTH based on API KEY
 
        try:
 
            self._req_api_key = json_body['api_key']
 
            self._req_id = json_body['id']
 
            self._req_method = json_body['method']
 
            self._request_params = json_body['args']
 
            if not isinstance(self._request_params, dict):
 
                self._request_params = {}
 

	
 
            log.debug(
 
                'method: %s, params: %s' % (self._req_method,
 
                                            self._request_params)
 
            )
 
        except KeyError, e:
 
            return jsonrpc_error(retid=self._req_id,
 
@@ -141,13 +146,21 @@ class JSONRPCController(WSGIController):
 
        # check if we can find this session using api_key
 
        try:
 
            u = User.get_by_api_key(self._req_api_key)
 
            if u is None:
 
                return jsonrpc_error(retid=self._req_id,
 
                                     message='Invalid API KEY')
 
            auth_u = AuthUser(u.user_id, self._req_api_key)
 

	
 
            #check if we are allowed to use this IP
 
            auth_u = AuthUser(u.user_id, self._req_api_key, ip_addr=ip_addr)
 
            if not auth_u.ip_allowed:
 
                return jsonrpc_error(retid=self._req_id,
 
                        message='request from IP:%s not allowed' % (ip_addr))
 
            else:
 
                log.info('Access for IP:%s allowed' % (ip_addr))
 

	
 
        except Exception, e:
 
            return jsonrpc_error(retid=self._req_id,
 
                                 message='Invalid API KEY')
 

	
 
        self._error = None
 
        try:
 
@@ -199,12 +212,13 @@ class JSONRPCController(WSGIController):
 
                    message=(
 
                        'Missing non optional `%s` arg in JSON DATA' % arg
 
                    )
 
                )
 

	
 
        self._rpc_args = {USER_SESSION_ATTR: u}
 

	
 
        self._rpc_args.update(self._request_params)
 

	
 
        self._rpc_args['action'] = self._req_method
 
        self._rpc_args['environ'] = environ
 
        self._rpc_args['start_response'] = start_response
 

	
rhodecode/controllers/api/api.py
Show inline comments
 
@@ -24,28 +24,46 @@
 
# along with this program; if not, write to the Free Software
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
# MA  02110-1301, USA.
 

	
 
import traceback
 
import logging
 
from pylons.controllers.util import abort
 

	
 
from rhodecode.controllers.api import JSONRPCController, JSONRPCError
 
from rhodecode.lib.auth import HasPermissionAllDecorator, \
 
    HasPermissionAnyDecorator, PasswordGenerator, AuthUser
 
from rhodecode.lib.auth import PasswordGenerator, AuthUser, \
 
    HasPermissionAllDecorator, HasPermissionAnyDecorator, \
 
    HasPermissionAnyApi, HasRepoPermissionAnyApi
 
from rhodecode.lib.utils import map_groups, repo2db_mapper
 
from rhodecode.model.meta import Session
 
from rhodecode.model.scm import ScmModel
 
from rhodecode.model.repo import RepoModel
 
from rhodecode.model.user import UserModel
 
from rhodecode.model.users_group import UsersGroupModel
 
from rhodecode.model.permission import PermissionModel
 
from rhodecode.model.db import Repository
 
from rhodecode.model.db import Repository, RhodeCodeSetting, UserIpMap
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class OptionalAttr(object):
 
    """
 
    Special Optional Option that defines other attribute
 
    """
 
    def __init__(self, attr_name):
 
        self.attr_name = attr_name
 

	
 
    def __repr__(self):
 
        return '<OptionalAttr:%s>' % self.attr_name
 

	
 
    def __call__(self):
 
        return self
 
#alias
 
OAttr = OptionalAttr
 

	
 

	
 
class Optional(object):
 
    """
 
    Defines an optional parameter::
 

	
 
        param = param.getval() if isinstance(param, Optional) else param
 
        param = param() if isinstance(param, Optional) else param
 
@@ -181,23 +199,40 @@ class ApiController(JSONRPCController):
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'Error occurred during rescan repositories action'
 
            )
 

	
 
    @HasPermissionAllDecorator('hg.admin')
 
    def lock(self, apiuser, repoid, userid, locked):
 
    def lock(self, apiuser, repoid, locked, userid=Optional(OAttr('apiuser'))):
 
        """
 
        Set locking state on particular repository by given user
 
        Set locking state on particular repository by given user, if
 
        this command is runned by non-admin account userid is set to user
 
        who is calling this method
 

	
 
        :param apiuser:
 
        :param repoid:
 
        :param userid:
 
        :param locked:
 
        """
 
        repo = get_repo_or_error(repoid)
 
        if HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            pass
 
        elif HasRepoPermissionAnyApi('repository.admin',
 
                                     'repository.write')(user=apiuser,
 
                                                         repo_name=repo.repo_name):
 
            #make sure normal user does not pass someone else userid,
 
            #he is not allowed to do that
 
            if not isinstance(userid, Optional) and userid != apiuser.user_id:
 
                raise JSONRPCError(
 
                    'userid is not the same as your user'
 
                )
 
        else:
 
            raise JSONRPCError('repository `%s` does not exist' % (repoid))
 

	
 
        if isinstance(userid, Optional):
 
            userid = apiuser.user_id
 
        user = get_user_or_error(userid)
 
        locked = bool(locked)
 
        try:
 
            if locked:
 
                Repository.lock(repo, user.user_id)
 
            else:
 
@@ -209,19 +244,44 @@ class ApiController(JSONRPCController):
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'Error occurred locking repository `%s`' % repo.repo_name
 
            )
 

	
 
    @HasPermissionAllDecorator('hg.admin')
 
    def get_user(self, apiuser, userid):
 
        """"
 
        Get a user by username
 
    def show_ip(self, apiuser, userid):
 
        """
 
        Shows IP address as seen from RhodeCode server, together with all
 
        defined IP addresses for given user
 

	
 
        :param apiuser:
 
        :param userid:
 
        """
 
        user = get_user_or_error(userid)
 
        ips = UserIpMap.query().filter(UserIpMap.user == user).all()
 
        return dict(
 
            ip_addr_server=self.ip_addr,
 
            user_ips=ips
 
        )
 

	
 
    def get_user(self, apiuser, userid=Optional(OAttr('apiuser'))):
 
        """"
 
        Get a user by username, or userid, if userid is given
 

	
 
        :param apiuser:
 
        :param userid:
 
        """
 
        if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
 
            #make sure normal user does not pass someone else userid,
 
            #he is not allowed to do that
 
            if not isinstance(userid, Optional) and userid != apiuser.user_id:
 
                raise JSONRPCError(
 
                    'userid is not the same as your user'
 
                )
 

	
 
        if isinstance(userid, Optional):
 
            userid = apiuser.user_id
 

	
 
        user = get_user_or_error(userid)
 
        data = user.get_api_data()
 
        data['permissions'] = AuthUser(user_id=user.user_id).permissions
 
        return data
 

	
 
@@ -476,22 +536,27 @@ class ApiController(JSONRPCController):
 
            raise JSONRPCError(
 
                'failed to remove member from users group `%s`' % (
 
                        users_group.users_group_name
 
                    )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def get_repo(self, apiuser, repoid):
 
        """"
 
        Get repository by name
 

	
 
        :param apiuser:
 
        :param repoid:
 
        """
 
        repo = get_repo_or_error(repoid)
 

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

	
 
        members = []
 
        for user in repo.repo_to_perm:
 
            perm = user.permission.permission_name
 
            user = user.user
 
            user_data = user.get_api_data()
 
            user_data['type'] = "user"
 
@@ -507,26 +572,29 @@ class ApiController(JSONRPCController):
 
            members.append(users_group_data)
 

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

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def get_repos(self, apiuser):
 
        """"
 
        Get all repositories
 

	
 
        :param apiuser:
 
        """
 
        result = []
 
        if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
 
            repos = RepoModel().get_all_user_repos(user=apiuser)
 
        else:
 
            repos = RepoModel().get_all()
 

	
 
        result = []
 
        for repo in RepoModel().get_all():
 
        for repo in repos:
 
            result.append(repo.get_api_data())
 
        return result
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    @HasPermissionAllDecorator('hg.admin')
 
    def get_repo_nodes(self, apiuser, repoid, revision, root_path,
 
                       ret_type='all'):
 
        """
 
        returns a list of nodes and it's children
 
        for a given path at given revision. It's possible to specify ret_type
 
        to show only files or dirs
 
@@ -553,35 +621,59 @@ class ApiController(JSONRPCController):
 
            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, repo_type,
 
    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('tip')):
 
                    clone_uri=Optional(None), landing_rev=Optional('tip'),
 
                    enable_statistics=Optional(False),
 
                    enable_locking=Optional(False),
 
                    enable_downloads=Optional(False)):
 
        """
 
        Create repository, if clone_url is given it makes a remote clone
 
        if repo_name is withina  group name the groups will be created
 
        if repo_name is within a group name the groups will be created
 
        automatically if they aren't present
 

	
 
        :param apiuser:
 
        :param repo_name:
 
        :param onwer:
 
        :param repo_type:
 
        :param description:
 
        :param private:
 
        :param clone_uri:
 
        :param landing_rev:
 
        """
 
        if HasPermissionAnyApi('hg.admin')(user=apiuser) is False:
 
            if not isinstance(owner, Optional):
 
                #forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only RhodeCode 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)
 

	
 
        private = Optional.extract(private)
 
        defs = RhodeCodeSetting.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)
 

	
 
        try:
 
            # create structure of groups and return the last group
 
@@ -593,38 +685,57 @@ class ApiController(JSONRPCController):
 
                description=description,
 
                owner=owner,
 
                private=private,
 
                clone_uri=clone_uri,
 
                repos_group=group,
 
                landing_rev=landing_rev,
 
                enable_statistics=enable_statistics,
 
                enable_downloads=enable_downloads,
 
                enable_locking=enable_locking
 
            )
 

	
 
            Session().commit()
 

	
 
            return dict(
 
                msg="Created new repository `%s`" % (repo.repo_name),
 
                repo=repo.get_api_data()
 
            )
 

	
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError('failed to create repository `%s`' % repo_name)
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def fork_repo(self, apiuser, repoid, fork_name, owner,
 
    @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('tip')):
 
        repo = get_repo_or_error(repoid)
 
        repo_name = repo.repo_name
 
        owner = get_user_or_error(owner)
 

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

	
 
        if HasPermissionAnyApi('hg.admin')(user=apiuser):
 
            pass
 
        elif HasRepoPermissionAnyApi('repository.admin',
 
                                     'repository.write',
 
                                     'repository.read')(user=apiuser,
 
                                                        repo_name=repo.repo_name):
 
            if not isinstance(owner, Optional):
 
                #forbid setting owner for non-admins
 
                raise JSONRPCError(
 
                    'Only RhodeCode admin can specify `owner` param'
 
                )
 
        else:
 
            raise JSONRPCError('repository `%s` does not exist' % (repoid))
 

	
 
        if isinstance(owner, Optional):
 
            owner = apiuser.user_id
 

	
 
        owner = get_user_or_error(owner)
 

	
 
        try:
 
            # create structure of groups and return the last group
 
            group = map_groups(fork_name)
 

	
 
            form_data = dict(
 
                repo_name=fork_name,
 
@@ -649,22 +760,27 @@ class ApiController(JSONRPCController):
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to fork repository `%s` as `%s`' % (repo_name,
 
                                                            fork_name)
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def delete_repo(self, apiuser, repoid):
 
        """
 
        Deletes a given repository
 

	
 
        :param apiuser:
 
        :param repoid:
 
        """
 
        repo = get_repo_or_error(repoid)
 

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

	
 
        try:
 
            RepoModel().delete(repo)
 
            Session().commit()
 
            return dict(
 
                msg='Deleted repository `%s`' % repo.repo_name,
 
                success=True
 
@@ -672,13 +788,13 @@ class ApiController(JSONRPCController):
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            raise JSONRPCError(
 
                'failed to delete repository `%s`' % repo.repo_name
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    @HasPermissionAllDecorator('hg.admin')
 
    def grant_user_permission(self, apiuser, repoid, userid, perm):
 
        """
 
        Grant permission for user on given repository, or update existing one
 
        if found
 

	
 
        :param repoid:
 
@@ -705,13 +821,13 @@ class ApiController(JSONRPCController):
 
            raise JSONRPCError(
 
                'failed to edit permission for user: `%s` in repo: `%s`' % (
 
                    userid, repoid
 
                )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    @HasPermissionAllDecorator('hg.admin')
 
    def revoke_user_permission(self, apiuser, repoid, userid):
 
        """
 
        Revoke permission for user on given repository
 

	
 
        :param apiuser:
 
        :param repoid:
 
@@ -736,13 +852,13 @@ class ApiController(JSONRPCController):
 
            raise JSONRPCError(
 
                'failed to edit permission for user: `%s` in repo: `%s`' % (
 
                    userid, repoid
 
                )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    @HasPermissionAllDecorator('hg.admin')
 
    def grant_users_group_permission(self, apiuser, repoid, usersgroupid,
 
                                     perm):
 
        """
 
        Grant permission for users group on given repository, or update
 
        existing one if found
 

	
 
@@ -775,13 +891,13 @@ class ApiController(JSONRPCController):
 
                'failed to edit permission for users group: `%s` in '
 
                'repo: `%s`' % (
 
                    usersgroupid, repo.repo_name
 
                )
 
            )
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    @HasPermissionAllDecorator('hg.admin')
 
    def revoke_users_group_permission(self, apiuser, repoid, usersgroupid):
 
        """
 
        Revoke permission for users group on given repository
 

	
 
        :param apiuser:
 
        :param repoid:
rhodecode/controllers/changeset.py
Show inline comments
 
@@ -218,19 +218,31 @@ class ChangesetController(BaseRepoContro
 
        c.inline_cnt = 0
 

	
 
        # Iterate over ranges (default changeset view is always one changeset)
 
        for changeset in c.cs_ranges:
 
            inlines = []
 
            if method == 'show':
 
                c.statuses.extend([ChangesetStatusModel()\
 
                                  .get_status(c.rhodecode_db_repo.repo_id,
 
                                              changeset.raw_id)])
 
                c.statuses.extend([ChangesetStatusModel().get_status(
 
                            c.rhodecode_db_repo.repo_id, changeset.raw_id)])
 

	
 
                c.comments.extend(ChangesetCommentsModel()\
 
                                  .get_comments(c.rhodecode_db_repo.repo_id,
 
                                                revision=changeset.raw_id))
 

	
 
                #comments from PR
 
                st = ChangesetStatusModel().get_statuses(
 
                            c.rhodecode_db_repo.repo_id, changeset.raw_id,
 
                            with_revisions=True)
 
                # from associated statuses, check the pull requests, and
 
                # show comments from them
 

	
 
                prs = set([x.pull_request for x in
 
                           filter(lambda x: x.pull_request != None, st)])
 

	
 
                for pr in prs:
 
                    c.comments.extend(pr.comments)
 
                inlines = ChangesetCommentsModel()\
 
                            .get_inline_comments(c.rhodecode_db_repo.repo_id,
 
                                                 revision=changeset.raw_id)
 
                c.inline_comments.extend(inlines)
 

	
 
            c.changes[changeset.raw_id] = []
 
@@ -266,12 +278,15 @@ class ChangesetController(BaseRepoContro
 
            else:
 
                # downloads/raw we only need RAW diff nothing else
 
                diff = diff_processor.as_raw()
 
                cs_changes[''] = [None, None, None, None, diff, None]
 
            c.changes[changeset.raw_id] = cs_changes
 

	
 
        #sort comments by how they were generated
 
        c.comments = sorted(c.comments, key=lambda x: x.comment_id)
 

	
 
        # count inline comments
 
        for __, lines in c.inline_comments:
 
            for comments in lines.values():
 
                c.inline_cnt += len(comments)
 

	
 
        if len(c.cs_ranges) == 1:
 
@@ -339,13 +354,13 @@ class ChangesetController(BaseRepoContro
 
                    comm,
 
                    revision=revision,
 
                    dont_allow_on_closed_pull_request=True
 
                )
 
            except StatusChangeOnClosedPullRequestError:
 
                log.error(traceback.format_exc())
 
                msg = _('Changing status on a changeset associated with'
 
                msg = _('Changing status on a changeset associated with '
 
                        'a closed pull request is not allowed')
 
                h.flash(msg, category='warning')
 
                return redirect(h.url('changeset_home', repo_name=repo_name,
 
                                      revision=revision))
 
        action_logger(self.rhodecode_user,
 
                      'user_commented_revision:%s' % revision,
 
@@ -368,13 +383,13 @@ class ChangesetController(BaseRepoContro
 

	
 
        return data
 

	
 
    @jsonify
 
    def delete_comment(self, repo_name, comment_id):
 
        co = ChangesetComment.get(comment_id)
 
        owner = lambda: co.author.user_id == c.rhodecode_user.user_id
 
        owner = co.author.user_id == c.rhodecode_user.user_id
 
        if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner:
 
            ChangesetCommentsModel().delete(comment=co)
 
            Session().commit()
 
            return True
 
        else:
 
            raise HTTPForbidden()
rhodecode/controllers/compare.py
Show inline comments
 
@@ -100,14 +100,17 @@ class CompareController(BaseRepoControll
 
              repo=org_repo, as_form=request.GET.get('as_form'),
 
              bundle=incoming_changesets)
 

	
 
        c.org_repo = org_repo = Repository.get_by_repo_name(org_repo)
 
        c.other_repo = other_repo = Repository.get_by_repo_name(other_repo)
 

	
 
        if c.org_repo is None or c.other_repo is None:
 
            log.error('Could not found repo %s or %s' % (org_repo, other_repo))
 
        if c.org_repo is None:
 
            log.error('Could not find org repo %s' % org_repo)
 
            raise HTTPNotFound
 
        if c.other_repo is None:
 
            log.error('Could not find other repo %s' % other_repo)
 
            raise HTTPNotFound
 

	
 
        if c.org_repo != c.other_repo and h.is_git(c.rhodecode_repo):
 
            log.error('compare of two remote repos not available for GIT REPOS')
 
            raise HTTPNotFound
 

	
rhodecode/controllers/home.py
Show inline comments
 
@@ -25,20 +25,22 @@
 

	
 
import logging
 

	
 
from pylons import tmpl_context as c, request
 
from pylons.i18n.translation import _
 
from webob.exc import HTTPBadRequest
 
from sqlalchemy.sql.expression import func
 

	
 
import rhodecode
 
from rhodecode.lib import helpers as h
 
from rhodecode.lib.ext_json import json
 
from rhodecode.lib.auth import LoginRequired
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.db import Repository
 
from sqlalchemy.sql.expression import func
 
from rhodecode.model.repo import RepoModel
 

	
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class HomeController(BaseController):
 

	
 
@@ -55,57 +57,17 @@ class HomeController(BaseController):
 
        ## lightweight version of dashboard
 
        else:
 
            c.repos_list = Repository.query()\
 
                            .filter(Repository.group_id == None)\
 
                            .order_by(func.lower(Repository.repo_name))\
 
                            .all()
 
            repos_data = []
 
            total_records = len(c.repos_list)
 

	
 
            _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup
 
            template = _tmpl_lookup.get_template('data_table/_dt_elements.html')
 

	
 
            quick_menu = lambda repo_name: (template.get_def("quick_menu")
 
                                            .render(repo_name, _=_, h=h, c=c))
 
            repo_lnk = lambda name, rtype, private, fork_of: (
 
                template.get_def("repo_name")
 
                .render(name, rtype, private, fork_of, short_name=False,
 
                        admin=False, _=_, h=h, c=c))
 
            last_change = lambda last_change:  (template.get_def("last_change")
 
                                           .render(last_change, _=_, h=h, c=c))
 
            rss_lnk = lambda repo_name: (template.get_def("rss")
 
                                           .render(repo_name, _=_, h=h, c=c))
 
            atom_lnk = lambda repo_name: (template.get_def("atom")
 
                                           .render(repo_name, _=_, h=h, c=c))
 

	
 
            def desc(desc):
 
                if c.visual.stylify_metatags:
 
                    return h.urlify_text(h.desc_stylize(h.truncate(desc, 60)))
 
                else:
 
                    return h.urlify_text(h.truncate(desc, 60))
 

	
 
            for repo in c.repos_list:
 
                repos_data.append({
 
                    "menu": quick_menu(repo.repo_name),
 
                    "raw_name": repo.repo_name.lower(),
 
                    "name": repo_lnk(repo.repo_name, repo.repo_type,
 
                                     repo.private, repo.fork),
 
                    "last_change": last_change(repo.last_db_change),
 
                    "desc": desc(repo.description),
 
                    "owner": h.person(repo.user.username),
 
                    "rss": rss_lnk(repo.repo_name),
 
                    "atom": atom_lnk(repo.repo_name),
 
                })
 

	
 
            c.data = json.dumps({
 
                "totalRecords": total_records,
 
                "startIndex": 0,
 
                "sort": "name",
 
                "dir": "asc",
 
                "records": repos_data
 
            })
 
            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('/index.html')
 

	
 
    def repo_switcher(self):
 
        if request.is_xhr:
 
            all_repos = Repository.query().order_by(Repository.repo_name).all()
rhodecode/controllers/journal.py
Show inline comments
 
@@ -24,28 +24,30 @@
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
import logging
 
from itertools import groupby
 

	
 
from sqlalchemy import or_
 
from sqlalchemy.orm import joinedload
 
from sqlalchemy.sql.expression import func
 

	
 
from webhelpers.paginate import Page
 
from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
 

	
 
from webob.exc import HTTPBadRequest
 
from pylons import request, tmpl_context as c, response, url
 
from pylons.i18n.translation import _
 

	
 
import rhodecode.lib.helpers as h
 
from rhodecode.lib.auth import LoginRequired, NotAnonymous
 
from rhodecode.lib.base import BaseController, render
 
from rhodecode.model.db import UserLog, UserFollowing, Repository, User
 
from rhodecode.model.meta import Session
 
from sqlalchemy.sql.expression import func
 
from rhodecode.model.scm import ScmModel
 
from rhodecode.lib.utils2 import safe_int, AttributeDict
 
from rhodecode.controllers.admin.admin import _journal_filter
 
from rhodecode.model.repo import RepoModel
 
from rhodecode.lib.compat import json
 

	
 
log = logging.getLogger(__name__)
 

	
 

	
 
class JournalController(BaseController):
 

	
 
@@ -75,24 +77,79 @@ class JournalController(BaseController):
 
        c.journal_pager = Page(journal, page=p, items_per_page=20, url=url_generator)
 
        c.journal_day_aggreagate = self._get_daily_aggregate(c.journal_pager)
 

	
 
        c.journal_data = render('journal/journal_data.html')
 
        if request.environ.get('HTTP_X_PARTIAL_XHR'):
 
            return c.journal_data
 
        return render('journal/journal.html')
 

	
 
        repos_list = Session().query(Repository)\
 
                     .filter(Repository.user_id ==
 
                             self.rhodecode_user.user_id)\
 
                     .order_by(func.lower(Repository.repo_name)).all()
 

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

	
 
        watched_repos_data = []
 

	
 
        ## watched repos
 
        _render = RepoModel._render_datatable
 

	
 
        def quick_menu(repo_name):
 
            return _render('quick_menu', repo_name)
 

	
 
        def repo_lnk(name, rtype, private, fork_of):
 
            return _render('repo_name', name, rtype, private, fork_of,
 
                           short_name=False, admin=False)
 

	
 
        def last_rev(repo_name, cs_cache):
 
            return _render('revision', repo_name, cs_cache.get('revision'),
 
                           cs_cache.get('raw_id'), cs_cache.get('author'),
 
                           cs_cache.get('message'))
 

	
 
    @LoginRequired()
 
    @NotAnonymous()
 
    def index_my_repos(self):
 
        c.user = User.get(self.rhodecode_user.user_id)
 
        if request.environ.get('HTTP_X_PARTIAL_XHR'):
 
            all_repos = self.sa.query(Repository)\
 
                     .filter(Repository.user_id == c.user.user_id)\
 
                     .order_by(func.lower(Repository.repo_name)).all()
 
            c.user_repos = ScmModel().get_repos(all_repos)
 
            return render('journal/journal_page_repos.html')
 
        def desc(desc):
 
            from pylons import tmpl_context as c
 
            if c.visual.stylify_metatags:
 
                return h.urlify_text(h.desc_stylize(h.truncate(desc, 60)))
 
            else:
 
                return h.urlify_text(h.truncate(desc, 60))
 

	
 
        def repo_actions(repo_name):
 
            return _render('repo_actions', repo_name)
 

	
 
        def owner_actions(user_id, username):
 
            return _render('user_name', user_id, username)
 

	
 
        def toogle_follow(repo_id):
 
            return  _render('toggle_follow', repo_id)
 

	
 
        for entry in c.following:
 
            repo = entry.follows_repository
 
            cs_cache = repo.changeset_cache
 
            row = {
 
                "menu": quick_menu(repo.repo_name),
 
                "raw_name": repo.repo_name.lower(),
 
                "name": repo_lnk(repo.repo_name, repo.repo_type,
 
                                 repo.private, repo.fork),
 
                "last_changeset": last_rev(repo.repo_name, cs_cache),
 
                "raw_tip": cs_cache.get('revision'),
 
                "action": toogle_follow(repo.repo_id)
 
            }
 

	
 
            watched_repos_data.append(row)
 

	
 
        c.watched_data = json.dumps({
 
            "totalRecords": len(c.following),
 
            "startIndex": 0,
 
            "sort": "name",
 
            "dir": "asc",
 
            "records": watched_repos_data
 
        })
 
        return render('journal/journal.html')
 

	
 
    @LoginRequired(api_access=True)
 
    @NotAnonymous()
 
    def journal_atom(self):
 
        """
 
        Produce an atom-1.0 feed via feedgenerator module
rhodecode/controllers/login.py
Show inline comments
 
@@ -51,16 +51,15 @@ class LoginController(BaseController):
 
    def __before__(self):
 
        super(LoginController, self).__before__()
 

	
 
    def index(self):
 
        # redirect if already logged in
 
        c.came_from = request.GET.get('came_from')
 

	
 
        if self.rhodecode_user.is_authenticated \
 
                            and self.rhodecode_user.username != 'default':
 

	
 
        not_default = self.rhodecode_user.username != 'default'
 
        ip_allowed = self.rhodecode_user.ip_allowed
 
        if self.rhodecode_user.is_authenticated and not_default and ip_allowed:
 
            return redirect(url('home'))
 

	
 
        if request.POST:
 
            # import Login Form validator class
 
            login_form = LoginForm()
 
            try:
rhodecode/controllers/pullrequests.py
Show inline comments
 
@@ -94,13 +94,13 @@ class PullrequestsController(BaseRepoCon
 
            return 'default'
 
        else:
 
            #if repo doesn't have default branch return first found
 
            return repo.branches.keys()[0]
 

	
 
    def _get_is_allowed_change_status(self, pull_request):
 
        owner = self.rhodecode_user.user_id == pull_request.user_id 
 
        owner = self.rhodecode_user.user_id == pull_request.user_id
 
        reviewer = self.rhodecode_user.user_id in [x.user_id for x in
 
                                                   pull_request.reviewers]
 
        return (self.rhodecode_user.admin or owner or reviewer)
 

	
 
    def show_all(self, repo_name):
 
        c.pull_requests = PullRequestModel().get_all(repo_name)
 
@@ -296,13 +296,13 @@ class PullrequestsController(BaseRepoCon
 

	
 
        other_ref = ('rev', getattr(c.cs_ranges[0].parents[0]
 
                                  if c.cs_ranges[0].parents
 
                                  else EmptyChangeset(), 'raw_id'))
 

	
 
        c.statuses = org_repo.statuses([x.raw_id for x in c.cs_ranges])
 
        c.target_repo = c.repo_name
 
        c.target_repo = other_repo.repo_name
 
        # defines that we need hidden inputs with changesets
 
        c.as_form = request.GET.get('as_form', False)
 

	
 
        c.org_ref = org_ref[1]
 
        c.other_ref = other_ref[1]
 

	
 
@@ -336,13 +336,12 @@ class PullrequestsController(BaseRepoCon
 

	
 
    def show(self, repo_name, pull_request_id):
 
        repo_model = RepoModel()
 
        c.users_array = repo_model.get_users_js()
 
        c.users_groups_array = repo_model.get_users_groups_js()
 
        c.pull_request = PullRequest.get_or_404(pull_request_id)
 
        c.target_repo = c.pull_request.org_repo.repo_name
 
        c.allowed_to_change_status = self._get_is_allowed_change_status(c.pull_request)
 
        cc_model = ChangesetCommentsModel()
 
        cs_model = ChangesetStatusModel()
 
        _cs_statuses = cs_model.get_statuses(c.pull_request.org_repo,
 
                                            pull_request=c.pull_request,
 
                                            with_revisions=True)
 
@@ -475,13 +474,13 @@ class PullrequestsController(BaseRepoCon
 
    def delete_comment(self, repo_name, comment_id):
 
        co = ChangesetComment.get(comment_id)
 
        if co.pull_request.is_closed():
 
            #don't allow deleting comments on closed pull request
 
            raise HTTPForbidden()
 

	
 
        owner = lambda: co.author.user_id == c.rhodecode_user.user_id
 
        owner = co.author.user_id == c.rhodecode_user.user_id
 
        if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner:
 
            ChangesetCommentsModel().delete(comment=co)
 
            Session().commit()
 
            return True
 
        else:
 
            raise HTTPForbidden()
rhodecode/i18n/ja/LC_MESSAGES/rhodecode.mo
Show inline comments
 
binary diff not shown
rhodecode/i18n/ja/LC_MESSAGES/rhodecode.po
Show inline comments
 
@@ -10,13 +10,13 @@
 
# ========================================
 
msgid ""
 
msgstr ""
 
"Project-Id-Version: RhodeCode 1.2.0\n"
 
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 
"POT-Creation-Date: 2012-12-14 04:19+0100\n"
 
"PO-Revision-Date: 2012-10-27 15:06+0900\n"
 
"PO-Revision-Date: 2013-01-02 01:39+0900\n"
 
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 
"Language-Team: ja <LL@li.org>\n"
 
"Plural-Forms: nplurals=1; plural=0\n"
 
"MIME-Version: 1.0\n"
 
"Content-Type: text/plain; charset=utf-8\n"
 
"Content-Transfer-Encoding: 8bit\n"
 
@@ -38,15 +38,15 @@ msgstr "空白を無視"
 
#, python-format
 
msgid "%s line context"
 
msgstr ""
 

	
 
#: rhodecode/controllers/changeset.py:314
 
#: rhodecode/controllers/pullrequests.py:417
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Status change -> %s"
 
msgstr ""
 
msgstr "ステータス変更 -> %s"
 

	
 
#: rhodecode/controllers/changeset.py:345
 
msgid ""
 
"Changing status on a changeset associated witha closed pull request is "
 
"not allowed"
 
msgstr ""
 
@@ -68,13 +68,13 @@ msgstr "形式が間違っているため、サーバーはリクエストを処理出来ませんでした"
 
#: rhodecode/controllers/error.py:101
 
msgid "Unauthorized access to resource"
 
msgstr "リソースにアクセスする権限がありません"
 

	
 
#: rhodecode/controllers/error.py:103
 
msgid "You don't have permission to view this page"
 
msgstr "このページを見る権限がありません"
 
msgstr "このページを閲覧する権限がありません"
 

	
 
#: rhodecode/controllers/error.py:105
 
msgid "The resource could not be found"
 
msgstr "リソースが見つかりません"
 

	
 
#: rhodecode/controllers/error.py:107
 
@@ -282,25 +282,23 @@ msgstr "リポジトリ %s を削除しました"
 
#: rhodecode/controllers/admin/repos.py:331
 
#, python-format
 
msgid "An error occurred during deletion of %s"
 
msgstr "リポジトリ %s の削除中にエラーが発生しました"
 

	
 
#: rhodecode/controllers/settings.py:185
 
#, fuzzy
 
msgid "unlocked"
 
msgstr "変更可能にする"
 
msgstr "アンロック"
 

	
 
#: rhodecode/controllers/settings.py:188
 
#, fuzzy
 
msgid "locked"
 
msgstr "変更可能にする"
 
msgstr "ロック"
 

	
 
#: rhodecode/controllers/settings.py:190
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Repository has been %s"
 
msgstr ""
 
msgstr "リポジトリは %s されています"
 

	
 
#: rhodecode/controllers/settings.py:194
 
#: rhodecode/controllers/admin/repos.py:423
 
msgid "An error occurred during unlocking"
 
msgstr "アンロック時にエラーが発生しました"
 

	
 
@@ -311,20 +309,18 @@ msgstr "まだデータが読み込まれていません"
 
#: rhodecode/controllers/summary.py:144
 
#: rhodecode/templates/summary/summary.html:157
 
msgid "Statistics are disabled for this repository"
 
msgstr "このリポジトリの統計は無効化されています"
 

	
 
#: rhodecode/controllers/admin/defaults.py:96
 
#, fuzzy
 
msgid "Default settings updated successfully"
 
msgstr "LDAP設定を更新しました"
 
msgstr "デフォルト設定を更新しました"
 

	
 
#: rhodecode/controllers/admin/defaults.py:110
 
#, fuzzy
 
msgid "error occurred during update of defaults"
 
msgstr "ユーザー %s の更新中にエラーが発生しました"
 
msgstr "デフォルト設定の更新中にエラーが発生しました"
 

	
 
#: rhodecode/controllers/admin/ldap_settings.py:50
 
msgid "BASE"
 
msgstr "BASE"
 

	
 
#: rhodecode/controllers/admin/ldap_settings.py:51
 
@@ -470,13 +466,13 @@ msgstr "リポジトリ %s を作成しました"
 
msgid "error occurred during creation of repository %s"
 
msgstr "リポジトリ %s を作成中にエラーが発生しました"
 

	
 
#: rhodecode/controllers/admin/repos.py:320
 
#, python-format
 
msgid "Cannot delete %s it still contains attached forks"
 
msgstr ""
 
msgstr "フォークしたリポジトリが存在するため、 %s は削除できません"
 

	
 
#: rhodecode/controllers/admin/repos.py:349
 
msgid "An error occurred during deletion of repository user"
 
msgstr "リポジトリユーザーの削除中にエラーが発生しました"
 

	
 
#: rhodecode/controllers/admin/repos.py:368
 
@@ -490,17 +486,17 @@ msgstr "リポジトリステートの削除中にエラーが発生しました"
 
#: rhodecode/controllers/admin/repos.py:403
 
msgid "An error occurred during cache invalidation"
 
msgstr "キャッシュの無効化時にエラーが発生しました"
 

	
 
#: rhodecode/controllers/admin/repos.py:443
 
msgid "Updated repository visibility in public journal"
 
msgstr ""
 
msgstr "公開ジャーナルでのリポジトリの可視性を更新しました"
 

	
 
#: rhodecode/controllers/admin/repos.py:447
 
msgid "An error occurred during setting this repository in public journal"
 
msgstr ""
 
msgstr "このリポジトリの公開ジャーナルの設定中にエラーが発生しました"
 

	
 
#: rhodecode/controllers/admin/repos.py:452 rhodecode/model/validators.py:300
 
msgid "Token mismatch"
 
msgstr "トークンが合いません"
 

	
 
#: rhodecode/controllers/admin/repos.py:465
 
@@ -747,13 +743,13 @@ msgstr "このページを閲覧するためにはサインインが必要です"
 
#: rhodecode/lib/diffs.py:74
 
msgid "binary file"
 
msgstr "バイナリファイル"
 

	
 
#: rhodecode/lib/diffs.py:90
 
msgid "Changeset was too big and was cut off, use diff menu to display this diff"
 
msgstr ""
 
msgstr "チェンジセットが大きすぎるため省略しました。差分を表示する場合は差分メニューを使用してください"
 

	
 
#: rhodecode/lib/diffs.py:100
 
msgid "No changes detected"
 
msgstr "検出された変更はありません"
 

	
 
#: rhodecode/lib/helpers.py:374
 
@@ -767,20 +763,20 @@ msgstr "True"
 

	
 
#: rhodecode/lib/helpers.py:490
 
msgid "False"
 
msgstr "False"
 

	
 
#: rhodecode/lib/helpers.py:530
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Deleted branch: %s"
 
msgstr "リポジトリ %s を削除しました"
 
msgstr "削除されたブランチ: %s"
 

	
 
#: rhodecode/lib/helpers.py:533
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Created tag: %s"
 
msgstr "ユーザー %s を作成しました"
 
msgstr "作成したタグ: %s"
 

	
 
#: rhodecode/lib/helpers.py:546
 
msgid "Changeset not found"
 
msgstr "リビジョンが見つかりません"
 

	
 
#: rhodecode/lib/helpers.py:589
 
@@ -791,27 +787,27 @@ msgstr "%s から %s までのすべてのチェンジセットを表示"
 
#: rhodecode/lib/helpers.py:595
 
msgid "compare view"
 
msgstr "比較の表示"
 

	
 
#: rhodecode/lib/helpers.py:615
 
msgid "and"
 
msgstr ""
 
msgstr ""
 

	
 
#: rhodecode/lib/helpers.py:616
 
#, python-format
 
msgid "%s more"
 
msgstr ""
 
msgstr "%s 以上"
 

	
 
#: rhodecode/lib/helpers.py:617 rhodecode/templates/changelog/changelog.html:51
 
msgid "revisions"
 
msgstr "リビジョン"
 

	
 
#: rhodecode/lib/helpers.py:641
 
#, fuzzy, python-format
 
#, python-format
 
msgid "fork name %s"
 
msgstr ""
 
msgstr "フォーク名 %s"
 

	
 
#: rhodecode/lib/helpers.py:658
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:4
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:12
 
#, python-format
 
msgid "Pull request #%s"
 
@@ -956,15 +952,15 @@ msgstr ""
 
#: rhodecode/lib/utils2.py:426
 
#, python-format
 
msgid "%s ago"
 
msgstr "%s 前"
 

	
 
#: rhodecode/lib/utils2.py:428
 
#, fuzzy, python-format
 
#, python-format
 
msgid "in %s and %s"
 
msgstr "%s と %s 前"
 
msgstr ""
 

	
 
#: rhodecode/lib/utils2.py:431
 
#, python-format
 
msgid "%s and %s ago"
 
msgstr "%s と %s 前"
 

	
 
@@ -1081,73 +1077,73 @@ msgstr "パスワードを入力してください"
 
#: rhodecode/model/forms.py:53
 
#, python-format
 
msgid "Enter %(min)i characters or more"
 
msgstr "%(min)i 文字以上必要です"
 

	
 
#: rhodecode/model/notification.py:220
 
#, fuzzy, python-format
 
#, python-format
 
msgid "commented on commit at %(when)s"
 
msgstr ""
 
msgstr "コミットにコメント %(when)s"
 

	
 
#: rhodecode/model/notification.py:221
 
#, python-format
 
msgid "sent message at %(when)s"
 
msgstr ""
 
msgstr "メッセージを送信 %(when)s"
 

	
 
#: rhodecode/model/notification.py:222
 
#, python-format
 
msgid "mentioned you at %(when)s"
 
msgstr ""
 
msgstr "Mention %(when)s"
 

	
 
#: rhodecode/model/notification.py:223
 
#, python-format
 
msgid "registered in RhodeCode at %(when)s"
 
msgstr ""
 
msgstr "RhodeCodeに登録 %(when)s"
 

	
 
#: rhodecode/model/notification.py:224
 
#, fuzzy, python-format
 
#, python-format
 
msgid "opened new pull request at %(when)s"
 
msgstr ""
 
msgstr "新しいプルリクエストを作成 %(when)s"
 

	
 
#: rhodecode/model/notification.py:225
 
#, fuzzy, python-format
 
#, python-format
 
msgid "commented on pull request at %(when)s"
 
msgstr ""
 
msgstr "プルリクエストにコメント %(when)s"
 

	
 
#: rhodecode/model/pull_request.py:90
 
#, python-format
 
msgid "%(user)s wants you to review pull request #%(pr_id)s"
 
msgstr ""
 
msgstr "%(user)s がプリリクエスト #%(pr_id)s のレビューを求めています"
 

	
 
#: rhodecode/model/scm.py:542
 
msgid "latest tip"
 
msgstr "最新のtip"
 

	
 
#: rhodecode/model/user.py:232
 
msgid "new user registration"
 
msgstr "新規ユーザー登録"
 

	
 
#: rhodecode/model/user.py:257 rhodecode/model/user.py:281
 
#: rhodecode/model/user.py:303
 
msgid "You can't Edit this user since it's crucial for entire application"
 
msgstr ""
 
msgstr "アプリケーション全体にとって重要なユーザなため、編集出来ません"
 

	
 
#: rhodecode/model/user.py:327
 
msgid "You can't remove this user since it's crucial for entire application"
 
msgstr ""
 
msgstr "アプリケーション全体にとって重要なユーザなため、削除できません"
 

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

	
 
#: rhodecode/model/validators.py:36 rhodecode/model/validators.py:37
 
msgid "Value cannot be an empty list"
 
msgstr ""
 
msgstr "空のリストには出来ません"
 

	
 
#: rhodecode/model/validators.py:83
 
#, python-format
 
msgid "Username \"%(username)s\" already exists"
 
msgstr "ユーザー名 \"%(username)s\" はすでに使われています"
 

	
 
@@ -1241,22 +1237,21 @@ msgstr "リポジトリグループ名 \"%(repo)s\" はすでに存在します"
 
#: rhodecode/model/validators.py:432
 
msgid "invalid clone url"
 
msgstr "無効なクローンURIです"
 

	
 
#: rhodecode/model/validators.py:433
 
msgid "Invalid clone url, provide a valid clone http(s)/svn+http(s) url"
 
msgstr ""
 
msgstr "無効なクローンURIです。有効な http(s)/svn+http(s) のURIを指定してください"
 

	
 
#: rhodecode/model/validators.py:458
 
msgid "Fork have to be the same type as parent"
 
msgstr "フォークは親と同じタイプの必要があります"
 

	
 
#: rhodecode/model/validators.py:473
 
#, fuzzy
 
msgid "You don't have permissions to create repository in this group"
 
msgstr "このページを見る権限がありません"
 
msgstr "このグループでリポジトリを作成する権限がありません"
 

	
 
#: rhodecode/model/validators.py:498
 
msgid "This username or users group name is not valid"
 
msgstr "ユーザー名かユーザーグループが不正です"
 

	
 
#: rhodecode/model/validators.py:591
 
@@ -1614,28 +1609,26 @@ msgstr "まだブックマークがありません"
 
#: rhodecode/templates/admin/admin.html:5
 
#: rhodecode/templates/admin/admin.html:13
 
msgid "Admin journal"
 
msgstr "管理者ジャーナル"
 

	
 
#: rhodecode/templates/admin/admin.html:10
 
#, fuzzy
 
msgid "journal filter..."
 
msgstr "クイックフィルタ..."
 
msgstr "ジャーナルフィルタ..."
 

	
 
#: rhodecode/templates/admin/admin.html:12
 
#: rhodecode/templates/journal/journal.html:11
 
#, fuzzy
 
msgid "filter"
 
msgstr "ファイル"
 
msgstr "フィルタ"
 

	
 
#: rhodecode/templates/admin/admin.html:13
 
#: rhodecode/templates/journal/journal.html:12
 
#, python-format
 
msgid "%s entry"
 
msgid_plural "%s entries"
 
msgstr[0] ""
 
msgstr[0] "%s エントリ"
 

	
 
#: rhodecode/templates/admin/admin_log.html:6
 
#: rhodecode/templates/admin/repos/repos.html:74
 
#: rhodecode/templates/admin/users/user_edit_my_account_repos.html:8
 
#: rhodecode/templates/admin/users/user_edit_my_account_repos.html:9
 
#: rhodecode/templates/journal/journal_page_repos.html:9
 
@@ -1665,20 +1658,18 @@ msgstr "アクセス元IPアドレス"
 
#: rhodecode/templates/admin/admin_log.html:63
 
msgid "No actions yet"
 
msgstr "まだアクションがありません"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:5
 
#: rhodecode/templates/admin/defaults/defaults.html:25
 
#, fuzzy
 
msgid "Repositories defaults"
 
msgstr "リポジトリグループ"
 
msgstr "リポジトリのデフォルト設定"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:11
 
#, fuzzy
 
msgid "Defaults"
 
msgstr "default"
 
msgstr "デフォルト設定"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:35
 
#: rhodecode/templates/admin/repos/repo_add_base.html:38
 
#: rhodecode/templates/admin/repos/repo_edit.html:58
 
msgid "Type"
 
msgstr "リポジトリのタイプ"
 
@@ -1719,13 +1710,13 @@ msgstr "概要ページのダウンロードメニューを有効にします"
 
msgid "Enable locking"
 
msgstr "ロックを有効にする"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:79
 
#: rhodecode/templates/admin/repos/repo_edit.html:116
 
msgid "Enable lock-by-pulling on repository."
 
msgstr ""
 
msgstr "リポジトリのpullのロックを有効にします"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:84
 
#: rhodecode/templates/admin/ldap/ldap.html:89
 
#: rhodecode/templates/admin/repos/repo_edit.html:141
 
#: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:74
 
#: rhodecode/templates/admin/settings/hooks.html:73
 
@@ -2073,26 +2064,25 @@ msgid "Confirm to invalidate repository 
 
msgstr "リポジトリのキャッシュを無効化してもよろしいですか?"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:193
 
msgid ""
 
"Manually invalidate cache for this repository. On first access repository"
 
" will be cached again"
 
msgstr ""
 
msgstr "このリポジトリのキャッシュを手動で無効化します。リポジトリへの初回アクセス時に再びキャッシュされます。"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:198
 
msgid "List of cached values"
 
msgstr ""
 
msgstr "キャッシュしている値の一覧"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:201
 
msgid "Prefix"
 
msgstr ""
 
msgstr "プレフィックス"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:202
 
#, fuzzy
 
msgid "Key"
 
msgstr "APIキー"
 
msgstr "キー"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:203
 
#: rhodecode/templates/admin/users/user_add.html:86
 
#: rhodecode/templates/admin/users/user_edit.html:117
 
#: rhodecode/templates/admin/users_groups/users_group_add.html:41
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:42
 
@@ -2143,13 +2133,13 @@ msgstr "このリポジトリをロックしますか?"
 
#: rhodecode/templates/admin/repos/repo_edit.html:247
 
msgid "Repository is not locked"
 
msgstr "リポジトリはロックされていません"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:252
 
msgid "Force locking on repository. Works only when anonymous access is disabled"
 
msgstr ""
 
msgstr "リポジトリを強制ロックします。匿名アクセスが無効になっている場合のみ動作します。"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:259
 
msgid "Set as fork of"
 
msgstr "フォーク元の設定"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:268
 
@@ -2170,20 +2160,19 @@ msgstr "このリポジトリを削除"
 
#: rhodecode/templates/settings/repo_settings.html:115
 
msgid "Confirm to delete this repository"
 
msgstr "このリポジトリを削除しますか?"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:282
 
#: rhodecode/templates/settings/repo_settings.html:119
 
#, fuzzy
 
msgid ""
 
"This repository will be renamed in a special way in order to be "
 
"unaccesible for RhodeCode and VCS systems. If you need fully delete it "
 
"from file system please do it manually"
 
msgstr ""
 
"このリポジトリはRhodeCodeとVCSシステムからアクセスされないような名前に、特別な方法で変更されます。\n"
 
"もし、ファイルシステムから完全に削除したい場合、手動で行ってください"
 
"このリポジトリはRhodeCodeとVCSシステムからアクセス出来ないようにするために特別な方法でリネームされます。\n"
 
"完全な削除が必要な場合はファイルシステムから手動で削除してください"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit_perms.html:3
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
 
msgid "none"
 
msgstr "なし"
 

	
 
@@ -2247,13 +2236,13 @@ msgstr "ユーザーグループの削除に失敗しました"
 
#: rhodecode/templates/admin/repos/repos.html:5
 
msgid "Repositories administration"
 
msgstr "リポジトリ管理"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:73
 
msgid "apply to children"
 
msgstr ""
 
msgstr "子リポジトリにも適用"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:74
 
msgid ""
 
"Set or revoke permission to all children of that group, including "
 
"repositories and other groups"
 
msgstr ""
 
@@ -2353,16 +2342,16 @@ msgstr "アクション"
 
#: rhodecode/templates/data_table/_dt_elements.html:7
 
#: rhodecode/templates/data_table/_dt_elements.html:121
 
msgid "delete"
 
msgstr "削除"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:55
 
#, fuzzy, python-format
 
#, 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[0] "このグループを削除してもよろしいですか?: %s %s リポジトリ"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:63
 
msgid "There are no repositories groups yet"
 
msgstr "まだリポジトリグループがありません"
 

	
 
#: rhodecode/templates/admin/settings/hooks.html:5
 
@@ -2391,17 +2380,17 @@ msgstr "削除"
 
#: rhodecode/templates/admin/settings/hooks.html:88
 
msgid "Failed to remove hook"
 
msgstr "フックの削除に失敗しました"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:24
 
msgid "Remap and rescan repositories"
 
msgstr ""
 
msgstr "リポジトリの再マッピングと再スキャン"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:32
 
msgid "rescan option"
 
msgstr ""
 
msgstr "再スキャンオプション"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:38
 
msgid ""
 
"In case a repository was deleted from filesystem and there are leftovers "
 
"in the database check this option to scan obsolete data in database and "
 
"remove it."
 
@@ -2461,19 +2450,18 @@ msgstr "設定を保存"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:119
 
msgid "Visualisation settings"
 
msgstr "表示の設定"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:127
 
#, fuzzy
 
msgid "General"
 
msgstr "有効にする"
 
msgstr "一般"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:132
 
msgid "Use lightweight dashboard"
 
msgstr ""
 
msgstr "軽量ダッシュボードを使用"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:139
 
msgid "Icons"
 
msgstr "アイコン"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:144
 
@@ -2505,13 +2493,13 @@ msgid "require ssl for vcs operations"
 
msgstr "VCSの操作にSSLを必須とする"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:203
 
msgid ""
 
"RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
 
"will return HTTP Error 406: Not Acceptable"
 
msgstr ""
 
msgstr "RhodeCodeはPushとPullにSSLを要求します。もしSSLでない場合、HTTP Error 406: Not Acceptalbeを返します"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:209
 
msgid "Hooks"
 
msgstr "フック"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:214
 
@@ -2558,18 +2546,21 @@ msgstr "リポジトリロケーション"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:261
 
msgid ""
 
"This a crucial application setting. If you are really sure you need to "
 
"change this, you must restart application in order to make this setting "
 
"take effect. Click this label to unlock."
 
msgstr "これはアプリケーションの重要な設定です。本当に変更が必要でしょうか。もし、変更した場合、変更を反映さ競るためにアプリケーションを再起動する必要があります。変更可能にするにはこのラベルをクリックして下さい"
 
msgstr ""
 
"これはアプリケーションの重要な設定です。本当に変更が必要でしょうか。"
 
"もし、変更した場合、変更を反映さ競るためにアプリケーションを再起動する必要があります。"
 
"アンロックにするにはこのラベルをクリックして下さい"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:262
 
#: rhodecode/templates/base/base.html:221
 
msgid "unlock"
 
msgstr "変更可能にする"
 
msgstr "アンロック"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:263
 
msgid ""
 
"Location where repositories are stored. After changing this value a "
 
"restart, and rescan is required"
 
msgstr ""
 
@@ -2866,25 +2857,22 @@ msgstr "全ての要素を追加"
 

	
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:146
 
msgid "Group members"
 
msgstr "グループメンバー"
 

	
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:163
 
#, fuzzy
 
msgid "No members yet"
 
msgstr "メンバー"
 
msgstr "まだメンバーがいません"
 

	
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:171
 
#, fuzzy
 
msgid "Permissions defined for this group"
 
msgstr "権限管理"
 
msgstr "このリポジトリの権限設定"
 

	
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:178
 
#, fuzzy
 
msgid "No permissions set yet"
 
msgstr "権限のコピー"
 
msgstr "まだ権限設定がありません"
 

	
 
#: rhodecode/templates/admin/users_groups/users_groups.html:5
 
msgid "Users groups administration"
 
msgstr "ユーザーグループ管理"
 

	
 
#: rhodecode/templates/admin/users_groups/users_groups.html:23
 
@@ -2989,15 +2977,14 @@ msgstr "ファイル"
 
#: rhodecode/templates/base/base.html:199
 
msgid "Options"
 
msgstr "オプション"
 

	
 
#: rhodecode/templates/base/base.html:204
 
#: rhodecode/templates/base/base.html:206
 
#, fuzzy
 
msgid "repository settings"
 
msgstr "リポジトリ作成"
 
msgstr "リポジトリ設定"
 

	
 
#: rhodecode/templates/base/base.html:210
 
#: rhodecode/templates/data_table/_dt_elements.html:80
 
#: rhodecode/templates/forks/fork.html:13
 
msgid "fork"
 
msgstr "フォーク"
 
@@ -3014,15 +3001,14 @@ msgstr "フォークを比較"
 

	
 
#: rhodecode/templates/base/base.html:217
 
msgid "search"
 
msgstr "検索"
 

	
 
#: rhodecode/templates/base/base.html:223
 
#, fuzzy
 
msgid "lock"
 
msgstr "変更可能にする"
 
msgstr "ロック"
 

	
 
#: rhodecode/templates/base/base.html:234
 
msgid "repositories groups"
 
msgstr "リポジトリグループ"
 

	
 
#: rhodecode/templates/base/base.html:236
 
@@ -3031,15 +3017,14 @@ msgstr "ユーザーグループ"
 

	
 
#: rhodecode/templates/base/base.html:237
 
msgid "permissions"
 
msgstr "権限"
 

	
 
#: rhodecode/templates/base/base.html:239
 
#, fuzzy
 
msgid "defaults"
 
msgstr "default"
 
msgstr "デフォルト設定"
 

	
 
#: rhodecode/templates/base/base.html:240
 
msgid "settings"
 
msgstr "設定"
 

	
 
#: rhodecode/templates/base/base.html:251
 
@@ -3084,19 +3069,18 @@ msgstr "検索結果は省略されています"
 

	
 
#: rhodecode/templates/base/root.html:49
 
msgid "no matching files"
 
msgstr "マッチするファイルはありません"
 

	
 
#: rhodecode/templates/base/root.html:51
 
#, fuzzy
 
msgid "Open new pull request for selected changesets"
 
msgstr "新しいプルリクエストを作成"
 
msgstr "選択したチェンジセットから新しいプルリクエストを作成"
 

	
 
#: rhodecode/templates/base/root.html:52
 
msgid "Show selected changes __S -> __E"
 
msgstr ""
 
msgstr "選択した変更 __S -> __E を表示"
 

	
 
#: rhodecode/templates/base/root.html:53
 
msgid "Selection link"
 
msgstr ""
 

	
 
#: rhodecode/templates/bookmarks/bookmarks.html:5
 
@@ -3140,26 +3124,24 @@ msgstr "%s チェンジログ"
 
#, python-format
 
msgid "showing %d out of %d revision"
 
msgid_plural "showing %d out of %d revisions"
 
msgstr[0] ""
 

	
 
#: rhodecode/templates/changelog/changelog.html:37
 
#, fuzzy
 
msgid "Clear selection"
 
msgstr "検索設定"
 
msgstr "選択を解除"
 

	
 
#: rhodecode/templates/changelog/changelog.html:40
 
#: rhodecode/templates/forks/forks_data.html:19
 
#, python-format
 
msgid "compare fork with %s"
 
msgstr "%s とフォークを比較"
 

	
 
#: rhodecode/templates/changelog/changelog.html:40
 
#, fuzzy
 
msgid "Compare fork with parent"
 
msgstr "%s とフォークを比較"
 
msgstr "フォークを比較"
 

	
 
#: rhodecode/templates/changelog/changelog.html:49
 
msgid "Show"
 
msgstr "表示"
 

	
 
#: rhodecode/templates/changelog/changelog.html:74
 
@@ -3256,23 +3238,22 @@ msgstr "%s チェンジセット"
 
#: rhodecode/templates/changeset/changeset.html:14
 
msgid "Changeset"
 
msgstr "チェンジセット"
 

	
 
#: rhodecode/templates/changeset/changeset.html:52
 
msgid "No children"
 
msgstr ""
 
msgstr "子リビジョンはありません"
 

	
 
#: rhodecode/templates/changeset/changeset.html:70
 
#: rhodecode/templates/changeset/diff_block.html:20
 
msgid "raw diff"
 
msgstr "差分を表示"
 

	
 
#: rhodecode/templates/changeset/changeset.html:71
 
#, fuzzy
 
msgid "patch diff"
 
msgstr "差分を表示"
 
msgstr "パッチとして差分を表示"
 

	
 
#: rhodecode/templates/changeset/changeset.html:72
 
#: rhodecode/templates/changeset/diff_block.html:21
 
msgid "download diff"
 
msgstr "差分をダウンロード"
 

	
 
@@ -3290,24 +3271,24 @@ msgid "(%d inline)"
 
msgid_plural "(%d inline)"
 
msgstr[0] "(%d インライン)"
 

	
 
#: rhodecode/templates/changeset/changeset.html:122
 
#: rhodecode/templates/compare/compare_diff.html:44
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:76
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] ""
 
msgstr[0] "%s ファイルに影響"
 

	
 
#: rhodecode/templates/changeset/changeset.html:124
 
#: rhodecode/templates/compare/compare_diff.html:46
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:78
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] "%s ファイルに影響。 %s 個の追加と %s 個の削除:"
 
msgstr[0] "%s ファイルに影響。 %s 個の追加と %s 個の削除"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:42
 
msgid "Submitting..."
 
msgstr "サブミット中..."
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:45
 
@@ -3346,13 +3327,13 @@ msgstr "今すぐログインする"
 
#: rhodecode/templates/changeset/changeset_file_comment.html:118
 
msgid "Leave a comment"
 
msgstr "コメントを残す"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:125
 
msgid "Check this to change current status of code-review for this changeset"
 
msgstr ""
 
msgstr "チェックするとチェンジセットの現在のコードレビューステータスを変更出来ます"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:125
 
msgid "change status"
 
msgstr "ステータスを変更する"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:145
 
@@ -3367,44 +3348,42 @@ msgstr "%s チェンジセット"
 
#: rhodecode/templates/changeset/changeset_range.html:29
 
#: rhodecode/templates/compare/compare_diff.html:29
 
msgid "Compare View"
 
msgstr "比較ビュー"
 

	
 
#: rhodecode/templates/changeset/changeset_range.html:29
 
#, fuzzy
 
msgid "Show combined compare"
 
msgstr "インラインコメントを表示"
 
msgstr "結合した比較ビューを表示"
 

	
 
#: rhodecode/templates/changeset/changeset_range.html:54
 
msgid "Files affected"
 
msgstr "影響のあるファイル"
 

	
 
#: rhodecode/templates/changeset/diff_block.html:19
 
msgid "show full diff for this file"
 
msgstr ""
 
msgstr "このファイルの全差分を表示"
 

	
 
#: rhodecode/templates/changeset/diff_block.html:27
 
msgid "show inline comments"
 
msgstr "インラインコメントを表示"
 

	
 
#: rhodecode/templates/compare/compare_cs.html:5
 
msgid "No changesets"
 
msgstr "チェンジセットはありません"
 

	
 
#: rhodecode/templates/compare/compare_diff.html:37
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:69
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] ""
 
msgstr[0] "%s コミットを表示"
 

	
 
#: rhodecode/templates/compare/compare_diff.html:52
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:84
 
#, fuzzy
 
msgid "No files"
 
msgstr "ファイル"
 
msgstr "ファイルはありません"
 

	
 
#: rhodecode/templates/data_table/_dt_elements.html:39
 
#: rhodecode/templates/data_table/_dt_elements.html:41
 
#: rhodecode/templates/data_table/_dt_elements.html:43
 
msgid "Fork"
 
msgstr "フォーク"
 
@@ -3452,85 +3431,79 @@ msgstr "%s の ATOM フィードを購読"
 
#: rhodecode/templates/data_table/_dt_elements.html:122
 
#, python-format
 
msgid "Confirm to delete this user: %s"
 
msgstr "このユーザーを本当に削除してよろしいですか?: %s"
 

	
 
#: rhodecode/templates/email_templates/changeset_comment.html:10
 
#, fuzzy
 
msgid "New status$"
 
msgstr "ステータスを変更する"
 
msgstr "新しいステータス$"
 

	
 
#: rhodecode/templates/email_templates/main.html:8
 
#, fuzzy
 
msgid "This is a notification from RhodeCode."
 
msgstr "RhodeCodeからの通知があります"
 
msgstr "RhodeCodeからの通知です"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:4
 
msgid "Hello"
 
msgstr ""
 
msgstr "こんにちは"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:6
 
msgid "We received a request to create a new password for your account."
 
msgstr ""
 
msgstr "あなたのアカウントの新しいパスワードの生成リクエストを受け取りました。"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:8
 
msgid "You can generate it by clicking following URL"
 
msgstr ""
 
msgstr "下のURLをクリックすることで再生成が行えます。"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:12
 
msgid "If you didn't request new password please ignore this email."
 
msgstr ""
 
msgstr "新しいパスワードのリクエストをしていない場合は、このメールを無視して下さい。"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:4
 
#, python-format
 
msgid ""
 
"User %s opened pull request for repository %s and wants you to review "
 
"changes."
 
msgstr ""
 
msgstr "ユーザ %s がリポジトリ %s で新しいプルリクエストを作成しました。変更をレビューしてください。"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:5
 
#, fuzzy
 
msgid "title"
 
msgstr "タイトル"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:6
 
#: rhodecode/templates/pullrequests/pullrequest.html:115
 
msgid "description"
 
msgstr "説明"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:11
 
msgid "revisions for reviewing"
 
msgstr ""
 
msgstr "レビュー対象のリビジョン"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:18
 
#, fuzzy
 
msgid "View this pull request here"
 
msgstr "このプルリクエストにレビュアーを追加"
 
msgstr "このプルリクエストを閲覧する"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:4
 
#, fuzzy, python-format
 
#, python-format
 
msgid "User %s commented on pull request #%s for repository %s"
 
msgstr ""
 
msgstr "ユーザ %s がプルリクエスト #%s (リポジトリ %s) にコメントしました。"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:10
 
#, fuzzy
 
msgid "New status"
 
msgstr "ステータスを変更する"
 
msgstr "新しいステータス"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:14
 
msgid "View this comment here"
 
msgstr ""
 
msgstr "このコメントを閲覧する"
 

	
 
#: rhodecode/templates/email_templates/registration.html:4
 
#, fuzzy
 
msgid "A new user have registered in RhodeCode"
 
msgstr "rhodecodeへの登録を受け付けました"
 
msgstr "新しいユーザがRhodeCodeへ登録しました"
 

	
 
#: rhodecode/templates/email_templates/registration.html:9
 
msgid "View this user here"
 
msgstr ""
 
msgstr "このユーザを閲覧する"
 

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

	
 
@@ -3606,13 +3579,13 @@ msgstr "コミットメッセージ"
 
#: rhodecode/templates/files/files_edit.html:67
 
msgid "Commit changes"
 
msgstr "変更をコミット"
 

	
 
#: rhodecode/templates/files/files_browser.html:13
 
msgid "view"
 
msgstr "表示"
 
msgstr "閲覧"
 

	
 
#: rhodecode/templates/files/files_browser.html:14
 
msgid "previous revision"
 
msgstr "前のリビジョン"
 

	
 
#: rhodecode/templates/files/files_browser.html:16
 
@@ -3694,26 +3667,24 @@ msgstr "このリビジョンの差分を見る"
 

	
 
#: rhodecode/templates/files/files_history_box.html:10
 
msgid "show at revision"
 
msgstr "このリビジョンを見る"
 

	
 
#: rhodecode/templates/files/files_history_box.html:11
 
#, fuzzy
 
msgid "show full history"
 
msgstr "ファイル一覧を読み込み中..."
 
msgstr "すべての履歴を表示"
 

	
 
#: rhodecode/templates/files/files_history_box.html:16
 
#, python-format
 
msgid "%s author"
 
msgid_plural "%s authors"
 
msgstr[0] "%s 作成者"
 

	
 
#: rhodecode/templates/files/files_source.html:6
 
#, fuzzy
 
msgid "Load file history"
 
msgstr "ファイル一覧を読み込み中..."
 
msgstr "ファイルの履歴を読み込む"
 

	
 
#: rhodecode/templates/files/files_source.html:21
 
msgid "show source"
 
msgstr "ソースを表示"
 

	
 
#: rhodecode/templates/files/files_source.html:44
 
@@ -3906,13 +3877,13 @@ msgstr "プルリクエストを送る"
 
msgid "Closed %s"
 
msgstr "%s にクローズ"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:23
 
#, python-format
 
msgid "with status %s"
 
msgstr ""
 
msgstr "ステータス: %s"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:31
 
msgid "Status"
 
msgstr "ステータス"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:36
 
@@ -3927,28 +3898,26 @@ msgstr "未レビュー"
 
#, python-format
 
msgid "%d reviewer"
 
msgid_plural "%d reviewers"
 
msgstr[0] "%d レビュアー"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:50
 
#, fuzzy
 
msgid "pull request was reviewed by all reviewers"
 
msgstr "プルリクエストレビュアー"
 
msgstr "プルリクエストはすべてのレビュアーにレビューされました"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:58
 
msgid "Created on"
 
msgstr "作成日"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:65
 
msgid "Compare view"
 
msgstr "比較ビュー"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:112
 
#, fuzzy
 
msgid "reviewer"
 
msgstr "%d レビュアー"
 
msgstr "レビュアー"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show_all.html:4
 
msgid "all pull requests"
 
msgstr "すべてのプルリクエスト"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show_all.html:12
 
@@ -4009,18 +3978,16 @@ msgstr "権限がありません"
 
#: rhodecode/templates/settings/repo_settings.html:5
 
#, python-format
 
msgid "%s Settings"
 
msgstr "%s 設定"
 

	
 
#: rhodecode/templates/settings/repo_settings.html:102
 
#, fuzzy
 
msgid "Delete repository"
 
msgstr "リポジトリを[削除]"
 
msgstr "リポジトリを削除"
 

	
 
#: rhodecode/templates/settings/repo_settings.html:109
 
#, fuzzy
 
msgid "Remove repo"
 
msgstr "削除"
 

	
 
#: rhodecode/templates/shortlog/shortlog.html:5
 
#, python-format
 
msgid "%s Shortlog"
 
@@ -4077,33 +4044,32 @@ msgstr "リポジトリ %s RSS フィード"
 
#: rhodecode/templates/summary/summary.html:49
 
#: rhodecode/templates/summary/summary.html:52
 
msgid "ATOM"
 
msgstr "ATOM"
 

	
 
#: rhodecode/templates/summary/summary.html:70
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Repository locked by %s"
 
msgstr ""
 
msgstr "リポジトリは %s によってロックされました"
 

	
 
#: rhodecode/templates/summary/summary.html:72
 
#, fuzzy
 
msgid "Repository unlocked"
 
msgstr "リポジトリはロックされていません"
 

	
 
#: rhodecode/templates/summary/summary.html:91
 
#, python-format
 
msgid "Non changable ID %s"
 
msgstr ""
 
msgstr "変更不能ID %s"
 

	
 
#: rhodecode/templates/summary/summary.html:96
 
msgid "public"
 
msgstr "公開"
 

	
 
#: rhodecode/templates/summary/summary.html:104
 
msgid "remote clone"
 
msgstr ""
 
msgstr "リモートクローン"
 

	
 
#: rhodecode/templates/summary/summary.html:125
 
msgid "Contact"
 
msgstr "コンタクト"
 

	
 
#: rhodecode/templates/summary/summary.html:139
 
@@ -4168,13 +4134,13 @@ msgstr "ログ"
 
msgid "Quick start"
 
msgstr "クイックスタート"
 

	
 
#: rhodecode/templates/summary/summary.html:243
 
#, python-format
 
msgid "Readme file at revision '%s'"
 
msgstr ""
 
msgstr "リビジョン '%s' のReadmeファイル"
 

	
 
#: rhodecode/templates/summary/summary.html:246
 
msgid "Permalink to this readme"
 
msgstr "パーマリンク"
 

	
 
#: rhodecode/templates/summary/summary.html:304
 
@@ -4217,15 +4183,14 @@ msgstr "削除されたファイル"
 
#: rhodecode/templates/tags/tags.html:5
 
#, python-format
 
msgid "%s Tags"
 
msgstr "%s タグ"
 

	
 
#: rhodecode/templates/tags/tags.html:29
 
#, fuzzy
 
msgid "Compare tags"
 
msgstr "比較"
 
msgstr "タグの比較"
 

	
 
#~ msgid ""
 
#~ "%s repository is not mapped to db"
 
#~ " perhaps it was created or renamed"
 
#~ " from the file system please run "
 
#~ "the application again in order to "
rhodecode/i18n/pl/LC_MESSAGES/rhodecode.po
Show inline comments
 
# English translations for rhodecode.
 
# Copyright (C) 2010 ORGANIZATION
 
# This file is distributed under the same license as the rhodecode project.
 
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
 
# Nemcio <bogdan114@g.pl>, 2012.
 
# Nemo <areczek01@gmail.com>, 2012.
 
# Nemo <areczek01@gmail.com>, 2012, 2013.
 
msgid ""
 
msgstr ""
 
"Project-Id-Version: rhodecode 0.1\n"
 
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 
"POT-Creation-Date: 2012-12-14 04:19+0100\n"
 
"PO-Revision-Date: 2012-11-25 03:42+0200\n"
 
"Last-Translator: Nemo <areczek01@gmail.com>\n"
 
"PO-Revision-Date: 2013-01-18 18:12+0100\n"
 
"Last-Translator: Nemcio <bogdan114@g.pl>\n"
 
"Language-Team: Test\n"
 
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && "
 
"(n%100<10 || n%100>=20) ? 1 : 2)\n"
 
"Language: pl\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%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
"X-Generator: Virtaal 0.7.1\n"
 
"Generated-By: Babel 0.9.6\n"
 

	
 
#: rhodecode/controllers/changelog.py:95
 
msgid "All Branches"
 
msgstr "Wszystkie gałęzie"
 

	
 
#: rhodecode/controllers/changeset.py:83
 
msgid "show white space"
 
msgstr "pokazuj spacje"
 

	
 
#: rhodecode/controllers/changeset.py:90 rhodecode/controllers/changeset.py:97
 
#: rhodecode/controllers/changeset.py:90
 
#: rhodecode/controllers/changeset.py:97
 
msgid "ignore white space"
 
msgstr "ignoruj pokazywanie spacji"
 

	
 
#: rhodecode/controllers/changeset.py:163
 
#, python-format
 
msgid "%s line context"
 
@@ -40,18 +42,14 @@ msgstr "%s linia w kontekście"
 
#: rhodecode/controllers/pullrequests.py:417
 
#, python-format
 
msgid "Status change -> %s"
 
msgstr "Zmiana statusu -> %s"
 

	
 
#: rhodecode/controllers/changeset.py:345
 
msgid ""
 
"Changing status on a changeset associated witha closed pull request is "
 
"not allowed"
 
msgstr ""
 
"Zmiana statusu na grupy zmian powiązania łączy zamkniętego wniosku jest "
 
"niedozwolona"
 
msgid "Changing status on a changeset associated witha closed pull request is not allowed"
 
msgstr "Zmiana statusu na grupy zmian powiązania łączy zamkniętego wniosku jest niedozwolona"
 

	
 
#: rhodecode/controllers/compare.py:75
 
#: rhodecode/controllers/pullrequests.py:121
 
#: rhodecode/controllers/shortlog.py:100
 
msgid "There are no changesets yet"
 
msgstr "Brak zestawienia zmian"
 
@@ -59,15 +57,13 @@ msgstr "Brak zestawienia zmian"
 
#: rhodecode/controllers/error.py:69
 
msgid "Home page"
 
msgstr "Strona główna"
 

	
 
#: rhodecode/controllers/error.py:98
 
msgid "The request could not be understood by the server due to malformed syntax."
 
msgstr ""
 
"Wniosek nie może być rozumiany przez serwer z powodu zniekształconej "
 
"składni."
 
msgstr "Wniosek nie może być rozumiany przez serwer z powodu zniekształconej składni."
 

	
 
#: rhodecode/controllers/error.py:101
 
msgid "Unauthorized access to resource"
 
msgstr "Nieautoryzowany dostęp do zasobów"
 

	
 
#: rhodecode/controllers/error.py:103
 
@@ -76,18 +72,14 @@ msgstr "Nie masz uprawnień do przeglądania tej strony"
 

	
 
#: rhodecode/controllers/error.py:105
 
msgid "The resource could not be found"
 
msgstr "Zasób nie został znaleziony"
 

	
 
#: rhodecode/controllers/error.py:107
 
msgid ""
 
"The server encountered an unexpected condition which prevented it from "
 
"fulfilling the request."
 
msgstr ""
 
"Serwer napotkał niespodziewany warunek, który uniemożliwia jej spełnienie"
 
" żądania."
 
msgid "The server encountered an unexpected condition which prevented it from fulfilling the request."
 
msgstr "Serwer napotkał niespodziewany warunek, który uniemożliwia jej spełnienie żądania."
 

	
 
#: rhodecode/controllers/feed.py:52
 
#, python-format
 
msgid "Changes on %s repository"
 
msgstr "Zmiany w %s repozytorium"
 

	
 
@@ -116,13 +108,14 @@ msgstr "Kliknij tutaj, by dodać nowy plik"
 

	
 
#: rhodecode/controllers/files.py:87
 
#, python-format
 
msgid "There are no files yet %s"
 
msgstr "Brak plików %s"
 

	
 
#: rhodecode/controllers/files.py:265 rhodecode/controllers/files.py:325
 
#: rhodecode/controllers/files.py:265
 
#: rhodecode/controllers/files.py:325
 
#, python-format
 
msgid "This repository is has been locked by %s on %s"
 
msgstr "Repozytorium zostało zablokowane przez %s na %s"
 

	
 
#: rhodecode/controllers/files.py:292
 
#, python-format
 
@@ -130,18 +123,20 @@ msgid "Edited %s via RhodeCode"
 
msgstr "Edytowanie %s w RhodeCode"
 

	
 
#: rhodecode/controllers/files.py:297
 
msgid "No changes"
 
msgstr "Bez zmian"
 

	
 
#: rhodecode/controllers/files.py:308 rhodecode/controllers/files.py:372
 
#: rhodecode/controllers/files.py:308
 
#: rhodecode/controllers/files.py:372
 
#, python-format
 
msgid "Successfully committed to %s"
 
msgstr "Committ wykonany do %s"
 

	
 
#: rhodecode/controllers/files.py:313 rhodecode/controllers/files.py:378
 
#: rhodecode/controllers/files.py:313
 
#: rhodecode/controllers/files.py:378
 
msgid "Error occurred during commit"
 
msgstr "Wystąpił błąd w trakcie zatwierdzania"
 

	
 
#: rhodecode/controllers/files.py:344
 
#, python-format
 
msgid "Added %s via RhodeCode"
 
@@ -175,19 +170,23 @@ msgstr "Nieznany typ archiwum"
 
#: rhodecode/controllers/files.py:564
 
#: rhodecode/templates/changeset/changeset_range.html:13
 
#: rhodecode/templates/changeset/changeset_range.html:31
 
msgid "Changesets"
 
msgstr "Różnice"
 

	
 
#: rhodecode/controllers/files.py:565 rhodecode/controllers/pullrequests.py:74
 
#: rhodecode/controllers/summary.py:236 rhodecode/model/scm.py:550
 
#: rhodecode/controllers/files.py:565
 
#: rhodecode/controllers/pullrequests.py:74
 
#: rhodecode/controllers/summary.py:236
 
#: rhodecode/model/scm.py:550
 
msgid "Branches"
 
msgstr "Gałęzie"
 

	
 
#: rhodecode/controllers/files.py:566 rhodecode/controllers/pullrequests.py:78
 
#: rhodecode/controllers/summary.py:237 rhodecode/model/scm.py:561
 
#: rhodecode/controllers/files.py:566
 
#: rhodecode/controllers/pullrequests.py:78
 
#: rhodecode/controllers/summary.py:237
 
#: rhodecode/model/scm.py:561
 
msgid "Tags"
 
msgstr "Etykiety"
 

	
 
#: rhodecode/controllers/forks.py:158
 
#, python-format
 
msgid "forked %s repository as %s"
 
@@ -195,17 +194,19 @@ msgstr "gałęzi %s w repozytorium %s"
 

	
 
#: rhodecode/controllers/forks.py:172
 
#, python-format
 
msgid "An error occurred during repository forking %s"
 
msgstr "Wystąpił błąd podczas rozgałęzienia %s repozytorium"
 

	
 
#: rhodecode/controllers/journal.py:218 rhodecode/controllers/journal.py:261
 
#: rhodecode/controllers/journal.py:218
 
#: rhodecode/controllers/journal.py:261
 
msgid "public journal"
 
msgstr "Dziennik publiczny"
 

	
 
#: rhodecode/controllers/journal.py:222 rhodecode/controllers/journal.py:265
 
#: rhodecode/controllers/journal.py:222
 
#: rhodecode/controllers/journal.py:265
 
#: rhodecode/templates/base/base.html:232
 
#: rhodecode/templates/journal/journal.html:12
 
msgid "journal"
 
msgstr "dziennik"
 

	
 
#: rhodecode/controllers/login.py:143
 
@@ -214,18 +215,17 @@ msgstr "Udało Ci się zarejestrować na stronie"
 

	
 
#: rhodecode/controllers/login.py:164
 
msgid "Your password reset link was sent"
 
msgstr "Twój link zresetowania hasła został wysłany"
 

	
 
#: rhodecode/controllers/login.py:184
 
msgid ""
 
"Your password reset was successful, new password has been sent to your "
 
"email"
 
msgid "Your password reset was successful, new password has been sent to your email"
 
msgstr "Twoje hasło zostało zresetowane, nowe hasło zostanie wysłane na e-mail"
 

	
 
#: rhodecode/controllers/pullrequests.py:76 rhodecode/model/scm.py:556
 
#: rhodecode/controllers/pullrequests.py:76
 
#: rhodecode/model/scm.py:556
 
msgid "Bookmarks"
 
msgstr "Zakładki"
 

	
 
#: rhodecode/controllers/pullrequests.py:190
 
msgid "Pull request requires a title with min. 3 chars"
 
msgstr "Wniosek połączenia gałęzi wymaga tytułu z min. 3 znakami"
 
@@ -244,14 +244,15 @@ msgstr "Wystąpił błąd podczas prośby o połączenie gałęzi"
 

	
 
#: rhodecode/controllers/pullrequests.py:260
 
msgid "Successfully deleted pull request"
 
msgstr "Prośba o skasowanie połączenia gałęzi została wykonana prawidłowo"
 

	
 
#: rhodecode/controllers/pullrequests.py:452
 
#, fuzzy
 
msgid "Closing pull request on other statuses than rejected or approved forbidden"
 
msgstr ""
 
msgstr "Zamknij wszystkie wnioski połączenia gałęzi innych stanów niż odrzucony, zatwierdzony lub zabroniony"
 

	
 
#: rhodecode/controllers/search.py:134
 
msgid "Invalid search query. Try quoting it."
 
msgstr "Nieprawidłowe zapytania. Spróbuj zacytować go."
 

	
 
#: rhodecode/controllers/search.py:139
 
@@ -312,20 +313,18 @@ msgstr "Żadne dane nie zostały załadowane"
 
#: rhodecode/controllers/summary.py:144
 
#: rhodecode/templates/summary/summary.html:157
 
msgid "Statistics are disabled for this repository"
 
msgstr "Statystyki są wyłączone dla tego repozytorium"
 

	
 
#: rhodecode/controllers/admin/defaults.py:96
 
#, fuzzy
 
msgid "Default settings updated successfully"
 
msgstr "Ustawienia LDAP zostały zaktualizowane"
 
msgstr "Domyślne ustawienia zostały pomyślnie zaktualizowane"
 

	
 
#: rhodecode/controllers/admin/defaults.py:110
 
#, fuzzy
 
msgid "error occurred during update of defaults"
 
msgstr "wystąpił błąd podczas aktualizacji użytkownika %s"
 
msgstr "wystąpił błąd podczas aktualizacji wartości domyślnych"
 

	
 
#: rhodecode/controllers/admin/ldap_settings.py:50
 
msgid "BASE"
 
msgstr "PODSTAWA"
 

	
 
#: rhodecode/controllers/admin/ldap_settings.py:51
 
@@ -497,13 +496,14 @@ msgid "Updated repository visibility in 
 
msgstr "Zaktualizowano widoczność stron w publicznym dzienniku"
 

	
 
#: rhodecode/controllers/admin/repos.py:447
 
msgid "An error occurred during setting this repository in public journal"
 
msgstr "Wystąpił błąd podczas ustawiania tego repozytorium w dzienniku publicznym"
 

	
 
#: rhodecode/controllers/admin/repos.py:452 rhodecode/model/validators.py:300
 
#: rhodecode/controllers/admin/repos.py:452
 
#: rhodecode/model/validators.py:300
 
msgid "Token mismatch"
 
msgstr "Niezgodność tokenu"
 

	
 
#: rhodecode/controllers/admin/repos.py:465
 
msgid "Pulled from remote location"
 
msgstr "Pobieranie z lokalizacji zdalnej"
 
@@ -573,15 +573,13 @@ msgstr "Wystąpił błąd podczas usunięcia grupy użytkowników"
 
msgid "An error occurred during deletion of group users groups"
 
msgstr "Wystąpił błąd podczas usuwania grup i grup użytkowników"
 

	
 
#: rhodecode/controllers/admin/settings.py:123
 
#, python-format
 
msgid "Repositories successfully rescanned added: %s,removed: %s"
 
msgstr ""
 
"Repozytoria z powodzeniem zostały ponownie zeskanowane dodano: %s, "
 
"usunięto: %s"
 
msgstr "Repozytoria z powodzeniem zostały ponownie zeskanowane dodano: %s, usunięto: %s"
 

	
 
#: rhodecode/controllers/admin/settings.py:131
 
msgid "Whoosh reindex task scheduled"
 
msgstr "Zadanie ponownej indeksacji whoosh zostało zaplanowane"
 

	
 
#: rhodecode/controllers/admin/settings.py:162
 
@@ -620,15 +618,13 @@ msgstr "Wystąpił błąd podczas tworzenia hooku"
 
#: rhodecode/controllers/admin/settings.py:344
 
msgid "Email task created"
 
msgstr "E-mail został wysłany"
 

	
 
#: rhodecode/controllers/admin/settings.py:399
 
msgid "You can't edit this user since it's crucial for entire application"
 
msgstr ""
 
"Nie możesz edytować tego użytkownika ponieważ jest kluczowy dla całej "
 
"aplikacji"
 
msgstr "Nie możesz edytować tego użytkownika ponieważ jest kluczowy dla całej aplikacji"
 

	
 
#: rhodecode/controllers/admin/settings.py:430
 
msgid "Your account was updated successfully"
 
msgstr "Twoje konto zostało pomyślnie zaktualizowane"
 

	
 
#: rhodecode/controllers/admin/settings.py:445
 
@@ -752,15 +748,13 @@ msgstr "Musisz być zalogowany, żeby oglądać stronę"
 
#: rhodecode/lib/diffs.py:74
 
msgid "binary file"
 
msgstr "plik binarny"
 

	
 
#: rhodecode/lib/diffs.py:90
 
msgid "Changeset was too big and was cut off, use diff menu to display this diff"
 
msgstr ""
 
"Lista zmian była zbyt duża i została obcięta, użyj menu porównań żeby "
 
"wyświetlić różnice"
 
msgstr "Lista zmian była zbyt duża i została obcięta, użyj menu porównań żeby wyświetlić różnice"
 

	
 
#: rhodecode/lib/diffs.py:100
 
msgid "No changes detected"
 
msgstr "Nie wykryto zmian"
 

	
 
#: rhodecode/lib/helpers.py:374
 
@@ -805,13 +799,14 @@ msgstr "i"
 

	
 
#: rhodecode/lib/helpers.py:616
 
#, python-format
 
msgid "%s more"
 
msgstr "%s więcej"
 

	
 
#: rhodecode/lib/helpers.py:617 rhodecode/templates/changelog/changelog.html:51
 
#: rhodecode/lib/helpers.py:617
 
#: rhodecode/templates/changelog/changelog.html:51
 
msgid "revisions"
 
msgstr "rewizja"
 

	
 
#: rhodecode/lib/helpers.py:641
 
#, python-format
 
msgid "fork name %s"
 
@@ -825,25 +820,28 @@ msgid "Pull request #%s"
 
msgstr "Połączonych gałęzi #%s"
 

	
 
#: rhodecode/lib/helpers.py:664
 
msgid "[deleted] repository"
 
msgstr "[usunięte] repozytorium"
 

	
 
#: rhodecode/lib/helpers.py:666 rhodecode/lib/helpers.py:676
 
#: rhodecode/lib/helpers.py:666
 
#: rhodecode/lib/helpers.py:676
 
msgid "[created] repository"
 
msgstr "[utworzone] repozytorium"
 

	
 
#: rhodecode/lib/helpers.py:668
 
msgid "[created] repository as fork"
 
msgstr "[utworzone] repozytorium jako rozgałęzienie"
 

	
 
#: rhodecode/lib/helpers.py:670 rhodecode/lib/helpers.py:678
 
#: rhodecode/lib/helpers.py:670
 
#: rhodecode/lib/helpers.py:678
 
msgid "[forked] repository"
 
msgstr "[rozgałęzione] repozytorium"
 

	
 
#: rhodecode/lib/helpers.py:672 rhodecode/lib/helpers.py:680
 
#: rhodecode/lib/helpers.py:672
 
#: rhodecode/lib/helpers.py:680
 
msgid "[updated] repository"
 
msgstr "[zaktualizowane] repozytorium"
 

	
 
#: rhodecode/lib/helpers.py:674
 
msgid "[delete] repository"
 
msgstr "[skasowane] repozytorium"
 
@@ -908,20 +906,14 @@ msgstr "i %s więcej"
 
#: rhodecode/lib/helpers.py:887
 
msgid "No Files"
 
msgstr "Brak Plików"
 

	
 
#: rhodecode/lib/helpers.py:1163
 
#, 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 ""
 
"%s repozytorium nie jest mapowane do db może zostało utworzone lub "
 
"zmienione z systemie plików proszę uruchomić aplikację ponownie, aby "
 
"ponownie przeskanować repozytoria"
 
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 "%s repozytorium nie jest mapowane do db może zostało utworzone lub zmienione z systemie plików proszę uruchomić aplikację ponownie, aby ponownie przeskanować repozytoria"
 

	
 
#: rhodecode/lib/utils2.py:403
 
#, python-format
 
msgid "%d year"
 
msgid_plural "%d years"
 
msgstr[0] "%d rok"
 
@@ -993,89 +985,109 @@ msgid "just now"
 
msgstr "przed chwilą"
 

	
 
#: rhodecode/lib/celerylib/tasks.py:270
 
msgid "password reset link"
 
msgstr "łącze resetowania hasła"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163 rhodecode/model/db.py:1183
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1163
 
#: rhodecode/model/db.py:1183
 
msgid "Repository no access"
 
msgstr "Brak dostępu do repozytorium"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164 rhodecode/model/db.py:1184
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1164
 
#: rhodecode/model/db.py:1184
 
msgid "Repository read access"
 
msgstr "Repozytorium do odczytu"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165 rhodecode/model/db.py:1185
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1165
 
#: rhodecode/model/db.py:1185
 
msgid "Repository write access"
 
msgstr "Repozytorium do zapisu"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166 rhodecode/model/db.py:1186
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1166
 
#: rhodecode/model/db.py:1186
 
msgid "Repository admin access"
 
msgstr "Administracja dostępu do repozytorium"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168 rhodecode/model/db.py:1188
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1168
 
#: rhodecode/model/db.py:1188
 
msgid "Repositories Group no access"
 
msgstr "Grupy repozytoriów brak dostępu"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169 rhodecode/model/db.py:1189
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1169
 
#: rhodecode/model/db.py:1189
 
msgid "Repositories Group read access"
 
msgstr "Grupy repozytoriów dostęp do odczytu"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170 rhodecode/model/db.py:1190
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1170
 
#: rhodecode/model/db.py:1190
 
msgid "Repositories Group write access"
 
msgstr "Grupy repozytoriów dostęp do zapisu"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171 rhodecode/model/db.py:1191
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1171
 
#: rhodecode/model/db.py:1191
 
msgid "Repositories Group admin access"
 
msgstr "Repozytoria Grupy dostęp administratora"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173 rhodecode/model/db.py:1193
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1173
 
#: rhodecode/model/db.py:1193
 
msgid "RhodeCode Administrator"
 
msgstr "Administrator Repo"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174 rhodecode/model/db.py:1194
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1174
 
#: rhodecode/model/db.py:1194
 
msgid "Repository creation disabled"
 
msgstr "Repozytorium wyłączone"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175 rhodecode/model/db.py:1195
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1175
 
#: rhodecode/model/db.py:1195
 
msgid "Repository creation enabled"
 
msgstr "Repozytorium włączone"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176 rhodecode/model/db.py:1196
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1176
 
#: rhodecode/model/db.py:1196
 
msgid "Repository forking disabled"
 
msgstr "Rozwidlenie repozytorium wyłączone"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177 rhodecode/model/db.py:1197
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1177
 
#: rhodecode/model/db.py:1197
 
msgid "Repository forking enabled"
 
msgstr "Rozwidlenie repozytorium włączone"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178 rhodecode/model/db.py:1198
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1178
 
#: rhodecode/model/db.py:1198
 
msgid "Register disabled"
 
msgstr "Rejestracja wyłączona"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179 rhodecode/model/db.py:1199
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1179
 
#: rhodecode/model/db.py:1199
 
msgid "Register new user with RhodeCode with manual activation"
 
msgstr "Rejestracja nowego użytkownika na stronie z ręczną aktywacją"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182 rhodecode/model/db.py:1202
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1182
 
#: rhodecode/model/db.py:1202
 
msgid "Register new user with RhodeCode with auto activation"
 
msgstr "Rejestracja nowego użytkownika na stronie z automatyczną aktywacją"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623 rhodecode/model/db.py:1643
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1623
 
#: rhodecode/model/db.py:1643
 
msgid "Not Reviewed"
 
msgstr "Brak Korekty"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624 rhodecode/model/db.py:1644
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1624
 
#: rhodecode/model/db.py:1644
 
msgid "Approved"
 
msgstr "Zaakceptowano"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625 rhodecode/model/db.py:1645
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1625
 
#: rhodecode/model/db.py:1645
 
msgid "Rejected"
 
msgstr "Odrzucono"
 

	
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626 rhodecode/model/db.py:1646
 
#: rhodecode/lib/dbmigrate/schema/db_1_4_0.py:1626
 
#: rhodecode/model/db.py:1646
 
msgid "Under Review"
 
msgstr "Objęty Przeglądem"
 

	
 
#: rhodecode/model/comment.py:110
 
#, python-format
 
msgid "on line %s"
 
@@ -1143,35 +1155,29 @@ msgid "latest tip"
 
msgstr "ostatni tip"
 

	
 
#: rhodecode/model/user.py:232
 
msgid "new user registration"
 
msgstr "nowy użytkownik się zarejestrował"
 

	
 
#: rhodecode/model/user.py:257 rhodecode/model/user.py:281
 
#: rhodecode/model/user.py:257
 
#: rhodecode/model/user.py:281
 
#: rhodecode/model/user.py:303
 
msgid "You can't Edit this user since it's crucial for entire application"
 
msgstr ""
 
"Nie możesz edytować tego użytkownika ponieważ jest kluczowy dla całej "
 
"aplikacji"
 
msgstr "Nie możesz edytować tego użytkownika ponieważ jest kluczowy dla całej aplikacji"
 

	
 
#: rhodecode/model/user.py:327
 
msgid "You can't remove this user since it's crucial for entire application"
 
msgstr ""
 
"Nie możesz usunąć tego użytkownika ponieważ jest kluczowy dla całej "
 
"aplikacji"
 
msgstr "Nie możesz usunąć tego użytkownika ponieważ jest kluczowy dla całej aplikacji"
 

	
 
#: rhodecode/model/user.py:333
 
#, python-format
 
msgid ""
 
"user \"%s\" still owns %s repositories and cannot be removed. Switch "
 
"owners or remove those repositories. %s"
 
msgstr ""
 
"użytkownik \"%s\" wciąż posiada repozytoria następujące %s i nie może "
 
"zostać usunięty. Zmień właściciela lub usuń te repozytoria. %s"
 

	
 
#: rhodecode/model/validators.py:36 rhodecode/model/validators.py:37
 
msgid "user \"%s\" still owns %s repositories and cannot be removed. Switch owners or remove those repositories. %s"
 
msgstr "użytkownik \"%s\" wciąż posiada repozytoria następujące %s i nie może zostać usunięty. Zmień właściciela lub usuń te repozytoria. %s"
 

	
 
#: rhodecode/model/validators.py:36
 
#: rhodecode/model/validators.py:37
 
msgid "Value cannot be an empty list"
 
msgstr "Wartość listy nie może być pusta"
 

	
 
#: rhodecode/model/validators.py:83
 
#, python-format
 
msgid "Username \"%(username)s\" already exists"
 
@@ -1180,18 +1186,14 @@ msgstr "Użytkownik \"%(username)s\" już istnieje"
 
#: rhodecode/model/validators.py:85
 
#, python-format
 
msgid "Username \"%(username)s\" is forbidden"
 
msgstr "Nazwa użytkownika \"%(username)s\" jest zabroniona"
 

	
 
#: rhodecode/model/validators.py:87
 
msgid ""
 
"Username may only contain alphanumeric characters underscores, periods or"
 
" dashes and must begin with alphanumeric character"
 
msgstr ""
 
"Nazwa użytkownika może zawierać tylko znaki alfanumeryczne, podkreślenia,"
 
" kropki lub myślniki i musi zaczynać się znakiem alfanumerycznym"
 
msgid "Username may only contain alphanumeric characters underscores, periods or dashes and must begin with alphanumeric character"
 
msgstr "Nazwa użytkownika może zawierać tylko znaki alfanumeryczne, podkreślenia, kropki lub myślniki i musi zaczynać się znakiem alfanumerycznym"
 

	
 
#: rhodecode/model/validators.py:115
 
#, python-format
 
msgid "Username %(username)s is not valid"
 
msgstr "Nazwa użytkownika %(username)s jest nieprawidłowa"
 

	
 
@@ -1202,18 +1204,14 @@ msgstr "Niewłaściwa nazwa grupy"
 
#: rhodecode/model/validators.py:135
 
#, python-format
 
msgid "Users group \"%(usersgroup)s\" already exists"
 
msgstr "Nazwa grupy \"%(usersgroup)s\" już istnieje"
 

	
 
#: rhodecode/model/validators.py:137
 
msgid ""
 
"users group name may only contain  alphanumeric characters underscores, "
 
"periods or dashes and must begin with alphanumeric character"
 
msgstr ""
 
"Nazwa grupy może zawierać tylko znaki alfanumeryczne, podkreślenia, "
 
"kropki lub myślniki i musi zaczynać się znakiem alfanumerycznym"
 
msgid "users group name may only contain  alphanumeric characters underscores, periods or dashes and must begin with alphanumeric character"
 
msgstr "Nazwa grupy może zawierać tylko znaki alfanumeryczne, podkreślenia, kropki lub myślniki i musi zaczynać się znakiem alfanumerycznym"
 

	
 
#: rhodecode/model/validators.py:175
 
msgid "Cannot assign this group as parent"
 
msgstr "Nie można przypisać do tej grupy jako rodzic"
 

	
 
#: rhodecode/model/validators.py:176
 
@@ -1297,18 +1295,14 @@ msgstr "Ten adres e-mail jest już zajęty"
 
#: rhodecode/model/validators.py:626
 
#, python-format
 
msgid "e-mail \"%(email)s\" does not exist."
 
msgstr "e-mail \"%(email)s\" nie istnieje."
 

	
 
#: rhodecode/model/validators.py:663
 
msgid ""
 
"The LDAP Login attribute of the CN must be specified - this is the name "
 
"of the attribute that is equivalent to \"username\""
 
msgstr ""
 
"Atrybut logowania CN do LDAP należy określić, jest to nazwa atrybutu, "
 
"który jest odpowiednikiem  \"username\""
 
msgid "The LDAP Login attribute of the CN must be specified - this is the name of the attribute that is equivalent to \"username\""
 
msgstr "Atrybut logowania CN do LDAP należy określić, jest to nazwa atrybutu, który jest odpowiednikiem  \"username\""
 

	
 
#: rhodecode/model/validators.py:682
 
#, python-format
 
msgid "Revisions %(revs)s are already part of pull request or have set status"
 
msgstr "Rewizja  %(revs)s jest już częścią  nowej gałęzi więc określ jego status"
 

	
 
@@ -1495,31 +1489,34 @@ msgstr "Błąd danych."
 
#: rhodecode/templates/journal/journal.html:62
 
#: rhodecode/templates/journal/journal.html:225
 
#: rhodecode/templates/tags/tags.html:81
 
msgid "Loading..."
 
msgstr "Wczytywanie..."
 

	
 
#: rhodecode/templates/login.html:5 rhodecode/templates/login.html:54
 
#: rhodecode/templates/login.html:5
 
#: rhodecode/templates/login.html:54
 
msgid "Sign In"
 
msgstr "Zaloguj się"
 

	
 
#: rhodecode/templates/login.html:21
 
msgid "Sign In to"
 
msgstr "Zarejestruj się"
 

	
 
#: rhodecode/templates/login.html:31 rhodecode/templates/register.html:20
 
#: rhodecode/templates/login.html:31
 
#: rhodecode/templates/register.html:20
 
#: rhodecode/templates/admin/admin_log.html:5
 
#: rhodecode/templates/admin/users/user_add.html:32
 
#: rhodecode/templates/admin/users/user_edit.html:50
 
#: rhodecode/templates/admin/users/user_edit_my_account_form.html:26
 
#: rhodecode/templates/base/base.html:83
 
#: rhodecode/templates/summary/summary.html:131
 
msgid "Username"
 
msgstr "Nazwa użytkownika"
 

	
 
#: rhodecode/templates/login.html:40 rhodecode/templates/register.html:29
 
#: rhodecode/templates/login.html:40
 
#: rhodecode/templates/register.html:29
 
#: rhodecode/templates/admin/ldap/ldap.html:46
 
#: rhodecode/templates/admin/users/user_add.html:41
 
#: rhodecode/templates/base/base.html:92
 
msgid "Password"
 
msgstr "Hasło"
 

	
 
@@ -1528,13 +1525,14 @@ msgid "Remember me"
 
msgstr "Zapamiętaj mnie"
 

	
 
#: rhodecode/templates/login.html:60
 
msgid "Forgot your password ?"
 
msgstr "Zapomniałeś hasła?"
 

	
 
#: rhodecode/templates/login.html:63 rhodecode/templates/base/base.html:103
 
#: rhodecode/templates/login.html:63
 
#: rhodecode/templates/base/base.html:103
 
msgid "Don't have an account ?"
 
msgstr "Nie masz konta?"
 

	
 
#: rhodecode/templates/password_reset.html:5
 
msgid "Reset your password"
 
msgstr "Zresetuj swoje hasło"
 
@@ -1552,13 +1550,14 @@ msgid "Reset my password"
 
msgstr "Zresetuj swoje hasło"
 

	
 
#: rhodecode/templates/password_reset.html:31
 
msgid "Password reset link will be send to matching email address"
 
msgstr "Link do zresetowania hasła zostanie wysłany na adres e-mail"
 

	
 
#: rhodecode/templates/register.html:5 rhodecode/templates/register.html:74
 
#: rhodecode/templates/register.html:5
 
#: rhodecode/templates/register.html:74
 
msgid "Sign Up"
 
msgstr "Zarejestruj się"
 

	
 
#: rhodecode/templates/register.html:11
 
msgid "Sign Up to"
 
msgstr "Zarejestruj się do"
 
@@ -1643,30 +1642,28 @@ msgstr "Nie ma jeszcze zakładek"
 
#: rhodecode/templates/admin/admin.html:5
 
#: rhodecode/templates/admin/admin.html:13
 
msgid "Admin journal"
 
msgstr "Dziennik administratora"
 

	
 
#: rhodecode/templates/admin/admin.html:10
 
#, fuzzy
 
msgid "journal filter..."
 
msgstr "szybki filtr..."
 
msgstr "szybkie wyszukiwanie..."
 

	
 
#: rhodecode/templates/admin/admin.html:12
 
#: rhodecode/templates/journal/journal.html:11
 
#, fuzzy
 
msgid "filter"
 
msgstr "pliki"
 
msgstr "filtr"
 

	
 
#: rhodecode/templates/admin/admin.html:13
 
#: rhodecode/templates/journal/journal.html:12
 
#, python-format
 
msgid "%s entry"
 
msgid_plural "%s entries"
 
msgstr[0] ""
 
msgstr[1] ""
 
msgstr[2] ""
 
msgstr[0] "%s wejście"
 
msgstr[1] "%s wejść"
 
msgstr[2] "%s wejść"
 

	
 
#: rhodecode/templates/admin/admin_log.html:6
 
#: rhodecode/templates/admin/repos/repos.html:74
 
#: rhodecode/templates/admin/users/user_edit_my_account_repos.html:8
 
#: rhodecode/templates/admin/users/user_edit_my_account_repos.html:9
 
#: rhodecode/templates/journal/journal_page_repos.html:9
 
@@ -1696,38 +1693,32 @@ msgstr "z IP"
 
#: rhodecode/templates/admin/admin_log.html:63
 
msgid "No actions yet"
 
msgstr "Brak akcji"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:5
 
#: rhodecode/templates/admin/defaults/defaults.html:25
 
#, fuzzy
 
msgid "Repositories defaults"
 
msgstr "grupy w repozytorium"
 
msgstr "Repozytoria domyślne"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:11
 
#, fuzzy
 
msgid "Defaults"
 
msgstr "domyślne"
 
msgstr "Domyślne"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:35
 
#: rhodecode/templates/admin/repos/repo_add_base.html:38
 
#: rhodecode/templates/admin/repos/repo_edit.html:58
 
msgid "Type"
 
msgstr "Typ"
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:48
 
#: rhodecode/templates/admin/repos/repo_add_base.html:69
 
#: rhodecode/templates/admin/repos/repo_edit.html:89
 
#: rhodecode/templates/forks/fork.html:72
 
#: rhodecode/templates/settings/repo_settings.html:80
 
msgid ""
 
"Private repositories are only visible to people explicitly added as "
 
"collaborators."
 
msgstr ""
 
"Prywatne repozytoria są widoczne tylko dla osób bezpośrednio dodanych "
 
"jako współpracownicy."
 
msgid "Private repositories are only visible to people explicitly added as collaborators."
 
msgstr "Prywatne repozytoria są widoczne tylko dla osób bezpośrednio dodanych jako współpracownicy."
 

	
 
#: rhodecode/templates/admin/defaults/defaults.html:55
 
#: rhodecode/templates/admin/repos/repo_edit.html:94
 
msgid "Enable statistics"
 
msgstr "Włącz statystyki"
 

	
 
@@ -1897,20 +1888,14 @@ msgstr "Domyślne uprawnienia"
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:31
 
msgid "Anonymous access"
 
msgstr "Dostęp anonimowy"
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:49
 
msgid ""
 
"All default permissions on each repository will be reset to choosen "
 
"permission, note that all custom default permission on repositories will "
 
"be lost"
 
msgstr ""
 
"Wszystkie uprawnienia domyślne każdego repozytorium zostaną przywrócone. "
 
"Wybrane uprawnienie zostaną skasowane. Pamiętaj, że wszystkie "
 
"niestandardowe uprawnienia w repozytoriach zostaną utracone."
 
msgid "All default permissions on each repository will be reset to choosen permission, note that all custom default permission on repositories will be lost"
 
msgstr "Wszystkie uprawnienia domyślne każdego repozytorium zostaną przywrócone. Wybrane uprawnienie zostaną skasowane. Pamiętaj, że wszystkie niestandardowe uprawnienia w repozytoriach zostaną utracone."
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:50
 
#: rhodecode/templates/admin/permissions/permissions.html:63
 
msgid "overwrite existing settings"
 
msgstr "Nadpisz ustawienia"
 

	
 
@@ -1921,20 +1906,14 @@ msgstr "Nadpisz ustawienia"
 
#: rhodecode/templates/forks/fork.html:50
 
#: rhodecode/templates/settings/repo_settings.html:48
 
msgid "Repository group"
 
msgstr "Repozytorium grupy"
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:62
 
msgid ""
 
"All default permissions on each repository group will be reset to choosen"
 
" permission, note that all custom default permission on repositories "
 
"group will be lost"
 
msgstr ""
 
"Wszystkie uprawnienia domyślne każdego repozytorium zostaną przywrócone. "
 
"Wybrane uprawnienie zostaną skasowane. Pamiętaj, że wszystkie "
 
"niestandardowe uprawnienia w repozytoriach zostaną utracone."
 
msgid "All default permissions on each repository group will be reset to choosen permission, note that all custom default permission on repositories group will be lost"
 
msgstr "Wszystkie uprawnienia domyślne każdego repozytorium zostaną przywrócone. Wybrane uprawnienie zostaną skasowane. Pamiętaj, że wszystkie niestandardowe uprawnienia w repozytoriach zostaną utracone."
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:69
 
msgid "Registration"
 
msgstr "Rejestracja"
 

	
 
#: rhodecode/templates/admin/permissions/permissions.html:77
 
@@ -2109,31 +2088,26 @@ msgstr "Unieważnij pamięć podręczną repozytorium"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:190
 
msgid "Confirm to invalidate repository cache"
 
msgstr "Potwierdź unieważnienie pamięci podręcznej repozytorium"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:193
 
msgid ""
 
"Manually invalidate cache for this repository. On first access repository"
 
" will be cached again"
 
msgstr ""
 
"Ręcznie unieważnienie cache dla tego repozytorium. Przy pierwszym "
 
"dostępie do repozytorium zostanie dodany do bufora ponownie"
 
msgid "Manually invalidate cache for this repository. On first access repository will be cached again"
 
msgstr "Ręcznie unieważnienie cache dla tego repozytorium. Przy pierwszym dostępie do repozytorium zostanie dodany do bufora ponownie"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:198
 
msgid "List of cached values"
 
msgstr "Lista buforowanych wartości"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:201
 
msgid "Prefix"
 
msgstr ""
 
msgstr "Prefiks"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:202
 
#, fuzzy
 
msgid "Key"
 
msgstr "Klucz API"
 
msgstr "Klucz"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:203
 
#: rhodecode/templates/admin/users/user_add.html:86
 
#: rhodecode/templates/admin/users/user_edit.html:117
 
#: rhodecode/templates/admin/users_groups/users_group_add.html:41
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:42
 
@@ -2153,18 +2127,14 @@ msgstr "Usuń z dziennika publicznego"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:226
 
msgid "Add to public journal"
 
msgstr "Dodaj do dziennika publicznego"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:231
 
msgid ""
 
"All actions made on this repository will be accessible to everyone in "
 
"public journal"
 
msgstr ""
 
"Wszystkie działania wykonywane na tym repozytorium będą dostępne dla "
 
"wszystkich w dzienniku publicznym"
 
msgid "All actions made on this repository will be accessible to everyone in public journal"
 
msgstr "Wszystkie działania wykonywane na tym repozytorium będą dostępne dla wszystkich w dzienniku publicznym"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:238
 
msgid "Locking"
 
msgstr "Blokuj"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:243
 
@@ -2186,15 +2156,13 @@ msgstr "Potwierdź blokowanie repozytorium"
 
#: rhodecode/templates/admin/repos/repo_edit.html:247
 
msgid "Repository is not locked"
 
msgstr "Repozytorium nie jest zablokowane"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:252
 
msgid "Force locking on repository. Works only when anonymous access is disabled"
 
msgstr ""
 
"Wymuś blokowanie na repozytorium. Działa tylko wtedy, gdy dostęp "
 
"anonimowy jest wyłączony"
 
msgstr "Wymuś blokowanie na repozytorium. Działa tylko wtedy, gdy dostęp anonimowy jest wyłączony"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:259
 
msgid "Set as fork of"
 
msgstr "Ustaw jako rozwidlenie"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:268
 
@@ -2215,21 +2183,14 @@ msgstr "Usuń to repozytorium"
 
#: rhodecode/templates/settings/repo_settings.html:115
 
msgid "Confirm to delete this repository"
 
msgstr "Potwierdź, aby usunąć repozytorium"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit.html:282
 
#: rhodecode/templates/settings/repo_settings.html:119
 
#, fuzzy
 
msgid ""
 
"This repository will be renamed in a special way in order to be "
 
"unaccesible for RhodeCode and VCS systems. If you need fully delete it "
 
"from file system please do it manually"
 
msgstr ""
 
"To repozytorium zostanie zmienione w sposób szczególny, żeby było "
 
"niedostępne dla strony i systemów VCS. Jeśli chcesz całkowicie usunąć go "
 
"z systemu plików prosimy zrobić to ręcznie"
 
msgid "This repository will be renamed in a special way in order to be unaccesible for RhodeCode and VCS systems. If you need fully delete it from file system please do it manually"
 
msgstr "To repozytorium zostanie zmienione w sposób szczególny, żeby było niedostępne dla strony i systemów VCS. Jeśli chcesz całkowicie usunąć go z systemu plików prosimy zrobić to ręcznie"
 

	
 
#: rhodecode/templates/admin/repos/repo_edit_perms.html:3
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:3
 
msgid "none"
 
msgstr "brak"
 

	
 
@@ -2292,20 +2253,20 @@ msgstr "Nie udało się usunąć grupy użytkowników"
 

	
 
#: rhodecode/templates/admin/repos/repos.html:5
 
msgid "Repositories administration"
 
msgstr "Administracja repozytoriami"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:73
 
#, fuzzy
 
msgid "apply to children"
 
msgstr ""
 
msgstr "dotyczy dzieci"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html:74
 
msgid ""
 
"Set or revoke permission to all children of that group, including "
 
"repositories and other groups"
 
msgstr ""
 
#, fuzzy
 
msgid "Set or revoke permission to all children of that group, including repositories and other groups"
 
msgstr "Ustawia lub cofa uprawnienia do wszystkich dzieci z tej grupy, w tym repozytoria oraz innych grup"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups.html:9
 
#: rhodecode/templates/base/base.html:122
 
#: rhodecode/templates/base/base.html:313
 
#: rhodecode/templates/base/base.html:315
 
#: rhodecode/templates/base/base.html:317
 
@@ -2317,13 +2278,14 @@ msgstr ""
 
#: rhodecode/templates/compare/compare_diff.html:9
 
#: rhodecode/templates/files/file_diff.html:8
 
#: rhodecode/templates/files/files.html:8
 
#: rhodecode/templates/files/files_add.html:15
 
#: rhodecode/templates/files/files_edit.html:15
 
#: rhodecode/templates/followers/followers.html:9
 
#: rhodecode/templates/forks/fork.html:9 rhodecode/templates/forks/forks.html:9
 
#: rhodecode/templates/forks/fork.html:9
 
#: rhodecode/templates/forks/forks.html:9
 
#: rhodecode/templates/pullrequests/pullrequest.html:8
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:8
 
#: rhodecode/templates/pullrequests/pullrequest_show_all.html:8
 
#: rhodecode/templates/settings/repo_settings.html:9
 
#: rhodecode/templates/shortlog/shortlog.html:10
 
#: rhodecode/templates/summary/summary.html:8
 
@@ -2367,18 +2329,14 @@ msgstr "Edytuj grupy repo"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:12
 
msgid "edit repos group"
 
msgstr "edytuj grupy repo"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_edit.html:70
 
msgid ""
 
"Enable lock-by-pulling on group. This option will be applied to all other"
 
" groups and repositories inside"
 
msgstr ""
 
"Włącz blokowanie pulling przez grupy. Opcja ta będzie stosowana do "
 
"wszystkich innych grup i repozytoriów wewnątrz"
 
msgid "Enable lock-by-pulling on group. This option will be applied to all other groups and repositories inside"
 
msgstr "Włącz blokowanie pulling przez grupy. Opcja ta będzie stosowana do wszystkich innych grup i repozytoriów wewnątrz"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:5
 
msgid "Repositories groups administration"
 
msgstr "Repozytoria grup administracyjnych"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:22
 
@@ -2401,18 +2359,18 @@ msgstr "działanie"
 
#: rhodecode/templates/data_table/_dt_elements.html:7
 
#: rhodecode/templates/data_table/_dt_elements.html:121
 
msgid "delete"
 
msgstr "usuń"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:55
 
#, fuzzy, python-format
 
#, 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] "Potwierdz aby usunąć grupę %s wraz z %s repozytorium"
 
msgstr[1] "Potwierdz aby usunąć grupę %s wraz z %s repozytoriami"
 
msgstr[2] "Potwierdz aby usunąć grupę %s wraz z %s repozytoriami"
 
msgstr[0] "Potwierdź żeby usunąć grupę %s wraz z %s repozytorium"
 
msgstr[1] "Potwierdź żeby usunąć grupę %s wraz z %s repozytoriami"
 
msgstr[2] "Potwierdź żeby usunąć grupę %s wraz z %s repozytoriami"
 

	
 
#: rhodecode/templates/admin/repos_groups/repos_groups_show.html:63
 
msgid "There are no repositories groups yet"
 
msgstr "Nie ma jeszcze grup repozytoriów"
 

	
 
#: rhodecode/templates/admin/settings/hooks.html:5
 
@@ -2448,32 +2406,22 @@ msgstr "Mapowanie i skanowanie repozytorów"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:32
 
msgid "rescan option"
 
msgstr "ponowne skanowanie opcji"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:38
 
msgid ""
 
"In case a repository was deleted from filesystem and there are leftovers "
 
"in the database check this option to scan obsolete data in database and "
 
"remove it."
 
msgstr ""
 
"W przypadku repozytoriów zostaną usunięte systemy plików i jeśli są "
 
"pozostałości w bazie danych to ta opcja sprawdzi ją oraz przeskanuje, a "
 
"następnie usunie je z bazy danych."
 
msgid "In case a repository was deleted from filesystem and there are leftovers in the database check this option to scan obsolete data in database and remove it."
 
msgstr "W przypadku repozytoriów zostaną usunięte systemy plików i jeśli są pozostałości w bazie danych to ta opcja sprawdzi ją oraz przeskanuje, a następnie usunie je z bazy danych."
 

	
 
#: rhodecode/templates/admin/settings/settings.html:39
 
msgid "destroy old data"
 
msgstr "zniszcz stare dane"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:41
 
msgid ""
 
"Rescan repositories location for new repositories. Also deletes obsolete "
 
"if `destroy` flag is checked "
 
msgstr ""
 
"Skanowanie ponowne lokalizacji dla nowych repozytoriów. Usuwa również "
 
"nieaktualne jeśli została zaznaczona flaga `zniszcz` do sprawdzana"
 
msgid "Rescan repositories location for new repositories. Also deletes obsolete if `destroy` flag is checked "
 
msgstr "Skanowanie ponowne lokalizacji dla nowych repozytoriów. Usuwa również nieaktualne jeśli została zaznaczona flaga `zniszcz` do sprawdzana"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:46
 
msgid "Rescan repositories"
 
msgstr "Skanuj ponownie repozytoria"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:52
 
@@ -2516,15 +2464,14 @@ msgstr "Zapisz ustawienia"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:119
 
msgid "Visualisation settings"
 
msgstr "Ustawienia wizualizacji"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:127
 
#, fuzzy
 
msgid "General"
 
msgstr "włącz"
 
msgstr "Główne"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:132
 
msgid "Use lightweight dashboard"
 
msgstr "Użyj lekkiego pulpitu"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:139
 
@@ -2557,18 +2504,14 @@ msgstr "www"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:201
 
msgid "require ssl for vcs operations"
 
msgstr "wymagaj ssl dla operacji vcs"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:203
 
msgid ""
 
"RhodeCode will require SSL for pushing or pulling. If SSL is missing it "
 
"will return HTTP Error 406: Not Acceptable"
 
msgstr ""
 
"RhodeCode wymaga SSL do wysłania zmian lub pobierania. Jeśli brakuje SSL "
 
"zwróci błąd HTTP 406: Not Acceptable"
 
msgid "RhodeCode will require SSL for pushing or pulling. If SSL is missing it will return HTTP Error 406: Not Acceptable"
 
msgstr "RhodeCode wymaga SSL do wysłania zmian lub pobierania. Jeśli brakuje SSL zwróci błąd HTTP 406: Not Acceptable"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:209
 
msgid "Hooks"
 
msgstr "Aktualizacja"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:214
 
@@ -2601,45 +2544,31 @@ msgstr "rozszerzenia dużych pliów"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:244
 
msgid "hgsubversion extensions"
 
msgstr "rozszerzenia hgsubversion"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:246
 
msgid ""
 
"Requires hgsubversion library installed. Allows clonning from svn remote "
 
"locations"
 
msgstr ""
 
"Wymaga biblioteki hgsubversion zainstalowanej. Umożliwia klonowanie z "
 
"zdalnych lokalizacji svn"
 
msgid "Requires hgsubversion library installed. Allows clonning from svn remote locations"
 
msgstr "Wymaga biblioteki hgsubversion zainstalowanej. Umożliwia klonowanie z zdalnych lokalizacji svn"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:256
 
msgid "Repositories location"
 
msgstr "Położenie repozytorium"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:261
 
msgid ""
 
"This a crucial application setting. If you are really sure you need to "
 
"change this, you must restart application in order to make this setting "
 
"take effect. Click this label to unlock."
 
msgstr ""
 
"To kluczowe ustawienia aplikacji. Jeśli jesteś pewny, że chcesz to "
 
"zmienić, należy ponownie uruchomić aplikację w celu zaktualizowania "
 
"lokalizacji. Kliknij tą etykietę, żeby odblokować."
 
msgid "This a crucial application setting. If you are really sure you need to change this, you must restart application in order to make this setting take effect. Click this label to unlock."
 
msgstr "To kluczowe ustawienia aplikacji. Jeśli jesteś pewny, że chcesz to zmienić, należy ponownie uruchomić aplikację w celu zaktualizowania lokalizacji. Kliknij tą etykietę, żeby odblokować."
 

	
 
#: rhodecode/templates/admin/settings/settings.html:262
 
#: rhodecode/templates/base/base.html:221
 
msgid "unlock"
 
msgstr "odblokowany"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:263
 
msgid ""
 
"Location where repositories are stored. After changing this value a "
 
"restart, and rescan is required"
 
msgstr ""
 
"Miejsce, w którym przechowywane są repozytoria. Po zmianie tej wartości "
 
"jest wymagany restart i ponowne skanowanie"
 
msgid "Location where repositories are stored. After changing this value a restart, and rescan is required"
 
msgstr "Miejsce, w którym przechowywane są repozytoria. Po zmianie tej wartości jest wymagany restart i ponowne skanowanie"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:283
 
msgid "Test Email"
 
msgstr "Test e-maila"
 

	
 
#: rhodecode/templates/admin/settings/settings.html:291
 
@@ -2713,18 +2642,14 @@ msgstr "Potwierdzenie nowego hasła"
 
msgid "Inherit default permissions"
 
msgstr "Dziedziczą uprawnienia domyślne"
 

	
 
#: rhodecode/templates/admin/users/user_edit.html:156
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:113
 
#, python-format
 
msgid ""
 
"Select to inherit permissions from %s settings. With this selected below "
 
"options does not have any action"
 
msgstr ""
 
"Zaznacz, żeby dziedziczyć uprawnienia z %s ustawień. Po wybraniu tej "
 
"opcji, poniżej nie ma żadnych działań"
 
msgid "Select to inherit permissions from %s settings. With this selected below options does not have any action"
 
msgstr "Zaznacz, żeby dziedziczyć uprawnienia z %s ustawień. Po wybraniu tej opcji, poniżej nie ma żadnych działań"
 

	
 
#: rhodecode/templates/admin/users/user_edit.html:162
 
#: rhodecode/templates/admin/users_groups/users_group_edit.html:119
 
msgid "Create repositories"
 
msgstr "Utwórz repozytorium"
 

	
 
@@ -3007,13 +2932,14 @@ msgstr "Przełącz repozytorium"
 

	
 
#: rhodecode/templates/base/base.html:146
 
msgid "Products"
 
msgstr "Produkty"
 

	
 
#: rhodecode/templates/base/base.html:152
 
#: rhodecode/templates/base/base.html:182 rhodecode/templates/base/root.html:47
 
#: rhodecode/templates/base/base.html:182
 
#: rhodecode/templates/base/root.html:47
 
msgid "loading..."
 
msgstr "wczytywanie..."
 

	
 
#: rhodecode/templates/base/base.html:158
 
#: rhodecode/templates/base/base.html:160
 
#: rhodecode/templates/base/base.html:162
 
@@ -3061,13 +2987,14 @@ msgstr "ustawienia repozytorium"
 
#: rhodecode/templates/base/base.html:210
 
#: rhodecode/templates/data_table/_dt_elements.html:80
 
#: rhodecode/templates/forks/fork.html:13
 
msgid "fork"
 
msgstr "gałąż"
 

	
 
#: rhodecode/templates/base/base.html:212 rhodecode/templates/base/root.html:50
 
#: rhodecode/templates/base/base.html:212
 
#: rhodecode/templates/base/root.html:50
 
#: rhodecode/templates/changelog/changelog.html:43
 
msgid "Open new pull request"
 
msgstr "Otwórz nową prośbę o połączenie gałęzi"
 

	
 
#: rhodecode/templates/base/base.html:215
 
#: rhodecode/templates/forks/forks_data.html:21
 
@@ -3092,13 +3019,12 @@ msgstr "grupy użytkowników"
 

	
 
#: rhodecode/templates/base/base.html:237
 
msgid "permissions"
 
msgstr "uprawnienia"
 

	
 
#: rhodecode/templates/base/base.html:239
 
#, fuzzy
 
msgid "defaults"
 
msgstr "domyślne"
 

	
 
#: rhodecode/templates/base/base.html:240
 
msgid "settings"
 
msgstr "ustawienia"
 
@@ -3212,15 +3138,14 @@ msgstr "Wyczyść zaznaczenie"
 
#: rhodecode/templates/forks/forks_data.html:19
 
#, python-format
 
msgid "compare fork with %s"
 
msgstr "porównaj gałęzie %s"
 

	
 
#: rhodecode/templates/changelog/changelog.html:40
 
#, fuzzy
 
msgid "Compare fork with parent"
 
msgstr "porównaj fork w rodzicem"
 
msgstr "porównaj gałąź w rodzicem"
 

	
 
#: rhodecode/templates/changelog/changelog.html:49
 
msgid "Show"
 
msgstr "Wyświetl"
 

	
 
#: rhodecode/templates/changelog/changelog.html:74
 
@@ -3316,14 +3241,15 @@ msgstr "%s Grupy zmian"
 

	
 
#: rhodecode/templates/changeset/changeset.html:14
 
msgid "Changeset"
 
msgstr "Grupy zmian"
 

	
 
#: rhodecode/templates/changeset/changeset.html:52
 
#, fuzzy
 
msgid "No children"
 
msgstr ""
 
msgstr "Brak dzieci"
 

	
 
#: rhodecode/templates/changeset/changeset.html:70
 
#: rhodecode/templates/changeset/diff_block.html:20
 
msgid "raw diff"
 
msgstr "raw różnic"
 

	
 
@@ -3354,28 +3280,28 @@ msgstr[0] "(%d linii)"
 
msgstr[1] "(%d linii)"
 
msgstr[2] "(%d linii)"
 

	
 
#: rhodecode/templates/changeset/changeset.html:122
 
#: rhodecode/templates/compare/compare_diff.html:44
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:76
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s file changed"
 
msgid_plural "%s files changed"
 
msgstr[0] "%s plik zmieniony"
 
msgstr[1] "%s plików zmienionych"
 
msgstr[2] "%s plików zmienionych"
 
msgstr[0] "%s plik został zmieniony"
 
msgstr[1] "%s pliki zostały zmienione"
 
msgstr[2] "%s plików zostało zmienionych"
 

	
 
#: rhodecode/templates/changeset/changeset.html:124
 
#: rhodecode/templates/compare/compare_diff.html:46
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:78
 
#, fuzzy, python-format
 
#, python-format
 
msgid "%s file changed with %s insertions and %s deletions"
 
msgid_plural "%s files changed with %s insertions and %s deletions"
 
msgstr[0] "%s plik zmieniony z %s inserjcami i %s usunieciami"
 
msgstr[1] "%s plików zmienionych z %s inserjcami i %s usunieciami"
 
msgstr[2] "%s plików zmienionych z %s inserjcami i %s usunieciami"
 
msgstr[0] "%s plik został zmieniony z %s inercjami i %s usunięciami"
 
msgstr[1] "%s plików zostało zmienionych z %s inercjami i %s usunięciami"
 
msgstr[2] "%s plików zostało zmienionych z %s inercjami i %s usunięciami"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:42
 
msgid "Submitting..."
 
msgstr "Przesyłanie..."
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:45
 
@@ -3388,15 +3314,13 @@ msgstr "Komentując linię {1}."
 
msgid "Comments parsed using %s syntax with %s support."
 
msgstr "Komentarze analizowane za pomocą %s składni od %s wsparcia."
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:48
 
#: rhodecode/templates/changeset/changeset_file_comment.html:123
 
msgid "Use @username inside this text to send notification to this RhodeCode user"
 
msgstr ""
 
"Użyj @username wewnątrz tego tekstu, aby wysłać powiadomienie do "
 
"użytkownika strony"
 
msgstr "Użyj @username wewnątrz tego tekstu, aby wysłać powiadomienie do użytkownika strony"
 

	
 
#: rhodecode/templates/changeset/changeset_file_comment.html:59
 
#: rhodecode/templates/changeset/changeset_file_comment.html:143
 
msgid "Comment"
 
msgstr "Komentarz"
 

	
 
@@ -3437,15 +3361,14 @@ msgstr "%s Zestawienie zmian"
 
#: rhodecode/templates/changeset/changeset_range.html:29
 
#: rhodecode/templates/compare/compare_diff.html:29
 
msgid "Compare View"
 
msgstr "Wyświetl Porównanie"
 

	
 
#: rhodecode/templates/changeset/changeset_range.html:29
 
#, fuzzy
 
msgid "Show combined compare"
 
msgstr "pokaż online komentarz"
 
msgstr "Pokaż połączone porównaj"
 

	
 
#: rhodecode/templates/changeset/changeset_range.html:54
 
msgid "Files affected"
 
msgstr "pliki naruszone"
 

	
 
#: rhodecode/templates/changeset/diff_block.html:19
 
@@ -3459,24 +3382,23 @@ msgstr "pokaż online komentarz"
 
#: rhodecode/templates/compare/compare_cs.html:5
 
msgid "No changesets"
 
msgstr "Brak zestawienia zmian"
 

	
 
#: rhodecode/templates/compare/compare_diff.html:37
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:69
 
#, fuzzy, python-format
 
#, python-format
 
msgid "Showing %s commit"
 
msgid_plural "Showing %s commits"
 
msgstr[0] "Wyswietlane %s commit"
 
msgstr[1] "Wyswietlane %s commits"
 
msgstr[2] "Wyswietlane %s commits"
 
msgstr[0] "Pokaż %s komentarz"
 
msgstr[1] "Pokaż %s komentarze"
 
msgstr[2] "Pokaż %s komentarze"
 

	
 
#: rhodecode/templates/compare/compare_diff.html:52
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:84
 
#, fuzzy
 
msgid "No files"
 
msgstr "pliki"
 
msgstr "Brak plików"
 

	
 
#: rhodecode/templates/data_table/_dt_elements.html:39
 
#: rhodecode/templates/data_table/_dt_elements.html:41
 
#: rhodecode/templates/data_table/_dt_elements.html:43
 
msgid "Fork"
 
msgstr "Gałąź"
 
@@ -3524,87 +3446,77 @@ msgstr "Subskrybuj %s kanał atom"
 
#: rhodecode/templates/data_table/_dt_elements.html:122
 
#, python-format
 
msgid "Confirm to delete this user: %s"
 
msgstr "Potwierdź usunięcie tego użytkownika: %s"
 

	
 
#: rhodecode/templates/email_templates/changeset_comment.html:10
 
#, fuzzy
 
msgid "New status$"
 
msgstr "zmień status"
 
msgstr "Nowy status$"
 

	
 
#: rhodecode/templates/email_templates/main.html:8
 
#, fuzzy
 
msgid "This is a notification from RhodeCode."
 
msgstr "To jest powiadomienie z strony"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:4
 
msgid "Hello"
 
msgstr ""
 
msgstr "Witaj"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:6
 
msgid "We received a request to create a new password for your account."
 
msgstr ""
 
msgstr "Otrzymaliśmy prośbę o utworzenie nowego hasła do twojego konta."
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:8
 
msgid "You can generate it by clicking following URL"
 
msgstr ""
 
msgstr "Możesz wygenerować nowe hasło klikając w link URL poniżej:"
 

	
 
#: rhodecode/templates/email_templates/password_reset.html:12
 
msgid "If you didn't request new password please ignore this email."
 
msgstr ""
 
msgstr "Jeśli nie chcesz wygenerować nowego hasła to zignoruj tą wiadomość."
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:4
 
#, python-format
 
msgid ""
 
"User %s opened pull request for repository %s and wants you to review "
 
"changes."
 
msgstr ""
 
msgid "User %s opened pull request for repository %s and wants you to review changes."
 
msgstr "Użytkownik %s zgłosił wniosek połączenia w repozytorium %s i chce żeby sprawdzić zmiany."
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:5
 
#, fuzzy
 
msgid "title"
 
msgstr "Tytuł"
 
msgstr "tytuł"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:6
 
#: rhodecode/templates/pullrequests/pullrequest.html:115
 
msgid "description"
 
msgstr "opis"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:11
 
msgid "revisions for reviewing"
 
msgstr ""
 
msgstr "korekty dotyczące rewizji"
 

	
 
#: rhodecode/templates/email_templates/pull_request.html:18
 
#, fuzzy
 
msgid "View this pull request here"
 
msgstr "Pokarz wszystkie zmiany"
 
msgstr "Wyświetl prośby pobrania tutaj"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:4
 
#, fuzzy, python-format
 
#, python-format
 
msgid "User %s commented on pull request #%s for repository %s"
 
msgstr ""
 
"Użytkownik %s skomentował wniosek o połączenie gałęzi #%s dla "
 
"repozytorium %s"
 
msgstr "Użytkownik %s skomentował wniosek o połączenie gałęzi #%s dla repozytorium %s"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:10
 
#, fuzzy
 
msgid "New status"
 
msgstr "zmień status"
 
msgstr "Nowy status"
 

	
 
#: rhodecode/templates/email_templates/pull_request_comment.html:14
 
msgid "View this comment here"
 
msgstr ""
 
msgstr "Zobacz ten komentarz tutaj"
 

	
 
#: rhodecode/templates/email_templates/registration.html:4
 
#, fuzzy
 
msgid "A new user have registered in RhodeCode"
 
msgstr "Udało Ci się zarejestrować na stronie"
 
msgstr "Nowy użytkownik został zarejestrowany na stronie"
 

	
 
#: rhodecode/templates/email_templates/registration.html:9
 
msgid "View this user here"
 
msgstr ""
 
msgstr "Zobacz tego użytkownika tutaj"
 

	
 
#: rhodecode/templates/errors/error_document.html:46
 
#, python-format
 
msgid "You will be redirected to %s in %s seconds"
 
msgstr "Zostaniesz przekierowany do %s za %s sekund"
 

	
 
@@ -3768,28 +3680,26 @@ msgstr "różnice do rewizji"
 

	
 
#: rhodecode/templates/files/files_history_box.html:10
 
msgid "show at revision"
 
msgstr "wskaż zmiany"
 

	
 
#: rhodecode/templates/files/files_history_box.html:11
 
#, fuzzy
 
msgid "show full history"
 
msgstr "Wczytywanie listy plików..."
 
msgstr "pokaż pełną historię"
 

	
 
#: rhodecode/templates/files/files_history_box.html:16
 
#, python-format
 
msgid "%s author"
 
msgid_plural "%s authors"
 
msgstr[0] "%s autor"
 
msgstr[1] "%s autorzy"
 
msgstr[2] "%s autorzy"
 

	
 
#: rhodecode/templates/files/files_source.html:6
 
#, fuzzy
 
msgid "Load file history"
 
msgstr "Wczytywanie listy plików..."
 
msgstr "Załaduj historię pliku"
 

	
 
#: rhodecode/templates/files/files_source.html:21
 
msgid "show source"
 
msgstr "pokaż źródło"
 

	
 
#: rhodecode/templates/files/files_source.html:44
 
@@ -4017,15 +3927,14 @@ msgstr "Utworzono"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:65
 
msgid "Compare view"
 
msgstr "Wyświetl porównanie"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show.html:112
 
#, fuzzy
 
msgid "reviewer"
 
msgstr "%d recenzent"
 
msgstr "recenzent"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show_all.html:4
 
msgid "all pull requests"
 
msgstr "wszystkie prośby połączenia gałęzi"
 

	
 
#: rhodecode/templates/pullrequests/pullrequest_show_all.html:12
 
@@ -4086,20 +3995,18 @@ msgstr "Brak uprawnień"
 
#: rhodecode/templates/settings/repo_settings.html:5
 
#, python-format
 
msgid "%s Settings"
 
msgstr "Ustawienia %s"
 

	
 
#: rhodecode/templates/settings/repo_settings.html:102
 
#, fuzzy
 
msgid "Delete repository"
 
msgstr "[skasowane] repozytorium"
 
msgstr "Usuń repozytorium"
 

	
 
#: rhodecode/templates/settings/repo_settings.html:109
 
#, fuzzy
 
msgid "Remove repo"
 
msgstr "usuń"
 
msgstr "Usuń repo"
 

	
 
#: rhodecode/templates/shortlog/shortlog.html:5
 
#, python-format
 
msgid "%s Shortlog"
 
msgstr "%s Lista zmian"
 

	
 
@@ -4293,15 +4200,14 @@ msgstr "plik usunięty"
 
#: rhodecode/templates/tags/tags.html:5
 
#, python-format
 
msgid "%s Tags"
 
msgstr "Etykiety pliku %s"
 

	
 
#: rhodecode/templates/tags/tags.html:29
 
#, fuzzy
 
msgid "Compare tags"
 
msgstr "porównanie"
 
msgstr "Porównaj tagi"
 

	
 
#~ msgid ""
 
#~ "%s repository is not mapped to db"
 
#~ " perhaps it was created or renamed"
 
#~ " from the file system please run "
 
#~ "the application again in order to "
 
@@ -4322,7 +4228,6 @@ msgstr "porównanie"
 
#~ msgstr ""
 
#~ "%s repozytorium nie jest mapowane do "
 
#~ "db może zostało przeniesione lub "
 
#~ "zmienione w systemie plików proszę "
 
#~ "uruchomić aplikację ponownie, aby ponownie "
 
#~ "przeskanować repozytoria"
 

	
rhodecode/i18n/zh_CN/LC_MESSAGES/rhodecode.mo
Show inline comments
 
binary diff not shown

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

0 comments (0 inline, 0 general)