Mercurial > kallithea
annotate rhodecode/lib/utils.py @ 3893:7e9776f38c55 beta
fixed duplicated test in diff tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 22 May 2013 22:35:39 +0200 |
parents | 7aa0ff5b4e09 |
children | 3208aaefc9ca |
rev | line source |
---|---|
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
1 # -*- coding: utf-8 -*- |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
2 """ |
833
9753e0907827
added dbmigrate package, added model changes
Marcin Kuzminski <marcin@python-works.com>
parents:
807
diff
changeset
|
3 rhodecode.lib.utils |
9753e0907827
added dbmigrate package, added model changes
Marcin Kuzminski <marcin@python-works.com>
parents:
807
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~~ |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
5 |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
6 Utilities library for RhodeCode |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
7 |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
8 :created_on: Apr 18, 2010 |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
9 :author: marcink |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1820
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
12 """ |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
13 # This program is free software: you can redistribute it and/or modify |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
14 # it under the terms of the GNU General Public License as published by |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
15 # the Free Software Foundation, either version 3 of the License, or |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
16 # (at your option) any later version. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
17 # |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
21 # GNU General Public License for more details. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
22 # |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
25 |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
26 import os |
2069
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
27 import re |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
28 import logging |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
29 import datetime |
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
30 import traceback |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
31 import paste |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
32 import beaker |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
33 import tarfile |
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
34 import shutil |
3061
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
35 import decorator |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
36 import warnings |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
37 from os.path import abspath |
1354
ed309b1fbaa4
fixes issue #197 Relative paths for pidlocks
Marcin Kuzminski <marcin@python-works.com>
parents:
1337
diff
changeset
|
38 from os.path import dirname as dn, join as jn |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
39 |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
40 from paste.script.command import Command, BadCommand |
633
fcf599cd3404
Move changes for git implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
631
diff
changeset
|
41 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
42 from mercurial import ui, config |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
43 |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
44 from webhelpers.text import collapse, remove_formatting, strip_tags |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
45 |
2007
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1991
diff
changeset
|
46 from rhodecode.lib.vcs import get_backend |
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1991
diff
changeset
|
47 from rhodecode.lib.vcs.backends.base import BaseChangeset |
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1991
diff
changeset
|
48 from rhodecode.lib.vcs.utils.lazy import LazyProperty |
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1991
diff
changeset
|
49 from rhodecode.lib.vcs.utils.helpers import get_scm |
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
1991
diff
changeset
|
50 from rhodecode.lib.vcs.exceptions import VCSError |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
51 |
1669
f522f4d3bf93
moved caching query to libs
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
52 from rhodecode.lib.caching_query import FromCache |
f522f4d3bf93
moved caching query to libs
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
53 |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
54 from rhodecode.model import meta |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
55 from rhodecode.model.db import Repository, User, RhodeCodeUi, \ |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
56 UserLog, RepoGroup, RhodeCodeSetting, CacheInvalidation, UserGroup |
1734
48d4fcf04a29
another major refactoring with session management
Marcin Kuzminski <marcin@python-works.com>
parents:
1723
diff
changeset
|
57 from rhodecode.model.meta import Session |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
58 from rhodecode.model.repos_group import ReposGroupModel |
2109 | 59 from rhodecode.lib.utils2 import safe_str, safe_unicode |
60 from rhodecode.lib.vcs.utils.fakemod import create_module | |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
61 from rhodecode.model.users_group import UserGroupModel |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
62 |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
63 log = logging.getLogger(__name__) |
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
64 |
2069
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
65 REMOVED_REPO_PAT = re.compile(r'rm__\d{8}_\d{6}_\d{6}__.*') |
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
66 |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
67 |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
68 def recursive_replace(str_, replace=' '): |
2109 | 69 """ |
70 Recursive replace of given sign to just one instance | |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
71 |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
72 :param str_: given string |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
73 :param replace: char to find and replace multiple instances |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
74 |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
75 Examples:: |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
76 >>> recursive_replace("Mighty---Mighty-Bo--sstones",'-') |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
77 'Mighty-Mighty-Bo-sstones' |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
78 """ |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
79 |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
80 if str_.find(replace * 2) == -1: |
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
81 return str_ |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
82 else: |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
83 str_ = str_.replace(replace * 2, replace) |
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
84 return recursive_replace(str_, replace) |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
85 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
86 |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
87 def repo_name_slug(value): |
2109 | 88 """ |
89 Return slug of name of repository | |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
90 This function is called on each creation/modification |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
91 of repository to prevent bad names in repo |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
92 """ |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
93 |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
94 slug = remove_formatting(value) |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
95 slug = strip_tags(slug) |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
96 |
2786
ffaaeb5a5a69
Filter more special chars in validation of repo name
Marcin Kuzminski <marcin@python-works.com>
parents:
2717
diff
changeset
|
97 for c in """`?=[]\;'"<>,/~!@#$%^&*()+{}|: """: |
1022
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
98 slug = slug.replace(c, '-') |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
99 slug = recursive_replace(slug, '-') |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
100 slug = collapse(slug, '-') |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
101 return slug |
4f834b0abcd3
Code refactor number 2
Marcin Kuzminski <marcin@python-works.com>
parents:
1007
diff
changeset
|
102 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
103 |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
104 #============================================================================== |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
105 # PERM DECORATOR HELPERS FOR EXTRACTING NAMES FOR PERM CHECKS |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
106 #============================================================================== |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
107 def get_repo_slug(request): |
2055
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
108 _repo = request.environ['pylons.routes_dict'].get('repo_name') |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
109 if _repo: |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
110 _repo = _repo.rstrip('/') |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
111 return _repo |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
112 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
113 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
114 def get_repos_group_slug(request): |
2055
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
115 _group = request.environ['pylons.routes_dict'].get('group_name') |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
116 if _group: |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
117 _group = _group.rstrip('/') |
c8a8684efc74
fixed issue #370
Marcin Kuzminski <marcin@python-works.com>
parents:
2019
diff
changeset
|
118 return _group |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
119 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
120 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
121 def get_user_group_slug(request): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
122 _group = request.environ['pylons.routes_dict'].get('id') |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
123 try: |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
124 _group = UserGroup.get(_group) |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
125 if _group: |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
126 _group = _group.users_group_name |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
127 except Exception: |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
128 log.debug(traceback.format_exc()) |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
129 #catch all failures here |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
130 pass |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3714
diff
changeset
|
131 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
132 return _group |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
133 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
134 |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1717
diff
changeset
|
135 def action_logger(user, action, repo, ipaddr='', sa=None, commit=False): |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
136 """ |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
137 Action logger for various actions made by users |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
138 |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
139 :param user: user that made this action, can be a unique username string or |
689
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
140 object containing user_id attribute |
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
141 :param action: action to log, should be on of predefined unique actions for |
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
142 easy translations |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
143 :param repo: string name of repository or object containing repo_id, |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
144 that action was made on |
689
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
145 :param ipaddr: optional ip address from what the action was made |
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
146 :param sa: optional sqlalchemy session |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
147 |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
148 """ |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
149 |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
150 if not sa: |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
151 sa = meta.Session() |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
152 |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
153 try: |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
536
diff
changeset
|
154 if hasattr(user, 'user_id'): |
3063
ca2b21819dfd
Implemented better support for Wildcard queries
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
155 user_obj = User.get(user.user_id) |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
536
diff
changeset
|
156 elif isinstance(user, basestring): |
1530
04027bdb876c
Refactoring of model get functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1528
diff
changeset
|
157 user_obj = User.get_by_username(user) |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
536
diff
changeset
|
158 else: |
2899 | 159 raise Exception('You have to provide a user object or a username') |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
160 |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
161 if hasattr(repo, 'repo_id'): |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
162 repo_obj = Repository.get(repo.repo_id) |
735
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
163 repo_name = repo_obj.repo_name |
dbec976d9975
added action loggers to following repositories,
Marcin Kuzminski <marcin@python-works.com>
parents:
724
diff
changeset
|
164 elif isinstance(repo, basestring): |
689
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
165 repo_name = repo.lstrip('/') |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
166 repo_obj = Repository.get_by_repo_name(repo_name) |
689
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
167 else: |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2249
diff
changeset
|
168 repo_obj = None |
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2249
diff
changeset
|
169 repo_name = '' |
689
ecc566f8b69f
fixes #59, notifications for user registrations + some changes to mailer
Marcin Kuzminski <marcin@python-works.com>
parents:
688
diff
changeset
|
170 |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
171 user_log = UserLog() |
654
7f5976da192c
#48 rewrite action loggers into hooks with all changesets that are inside a push
Marcin Kuzminski <marcin@python-works.com>
parents:
643
diff
changeset
|
172 user_log.user_id = user_obj.user_id |
3063
ca2b21819dfd
Implemented better support for Wildcard queries
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
173 user_log.username = user_obj.username |
2249
a3eb31cc4ab4
fixed UnicodeWarning on pushing from sqlalchemy
Marcin Kuzminski <marcin@python-works.com>
parents:
2147
diff
changeset
|
174 user_log.action = safe_unicode(action) |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
175 |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2249
diff
changeset
|
176 user_log.repository = repo_obj |
537
48be953851fc
extended user logs to create/delete/fork repositories for auditing
Marcin Kuzminski <marcin@python-works.com>
parents:
536
diff
changeset
|
177 user_log.repository_name = repo_name |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
178 |
536
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
179 user_log.action_date = datetime.datetime.now() |
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
180 user_log.user_ip = ipaddr |
39203995f2c4
made action logger more global, to be used in other places to log other actions.
Marcin Kuzminski <marcin@python-works.com>
parents:
524
diff
changeset
|
181 sa.add(user_log) |
621
9893c2fc846b
removed raise from log user action
Marcin Kuzminski <marcin@python-works.com>
parents:
604
diff
changeset
|
182 |
3545 | 183 log.info('Logging action:%s on %s by user:%s ip:%s' % |
184 (action, safe_unicode(repo), user_obj, ipaddr)) | |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1717
diff
changeset
|
185 if commit: |
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1717
diff
changeset
|
186 sa.commit() |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3607
diff
changeset
|
187 except Exception: |
654
7f5976da192c
#48 rewrite action loggers into hooks with all changesets that are inside a push
Marcin Kuzminski <marcin@python-works.com>
parents:
643
diff
changeset
|
188 log.error(traceback.format_exc()) |
1722
e7eef7a1db6a
#235 forking page repo group selection
Marcin Kuzminski <marcin@python-works.com>
parents:
1717
diff
changeset
|
189 raise |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
190 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
191 |
3649
24e24661c0eb
util: remove attempt of renaming get_filesystem_repos while remaining backward compatible
Mads Kiilerich <madski@unity3d.com>
parents:
3631
diff
changeset
|
192 def get_filesystem_repos(path, recursive=False, skip_removed_repos=True): |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
193 """ |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
194 Scans given path for repos and return (name,(type,path)) tuple |
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
195 |
1836
445861e156d1
normalize path using os.sep
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
196 :param path: path to scan for repositories |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
197 :param recursive: recursive search and return names with subdirs in front |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
198 """ |
633
fcf599cd3404
Move changes for git implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
631
diff
changeset
|
199 |
1820
9130fa3c6d61
fixes issue #331 RC mangles repository names if the a repository group contains the "full path" to the repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
200 # remove ending slash for better results |
1836
445861e156d1
normalize path using os.sep
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
201 path = path.rstrip(os.sep) |
3228
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
202 log.debug('now scanning in %s location recursive:%s...' % (path, recursive)) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
203 |
877
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
204 def _get_repos(p): |
1221
e4784e2b03f7
strip os.sep instead of '/' in repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
205 if not os.access(p, os.W_OK): |
3607
891be8b07407
warn when repo path is skipped because it is read-only
Mads Kiilerich <madski@unity3d.com>
parents:
3606
diff
changeset
|
206 log.warn('ignoring repo path without write access: %s', p) |
1221
e4784e2b03f7
strip os.sep instead of '/' in repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
207 return |
877
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
208 for dirpath in os.listdir(p): |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
209 if os.path.isfile(os.path.join(p, dirpath)): |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
210 continue |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
211 cur_path = os.path.join(p, dirpath) |
3228
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
212 |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
213 # skip removed repos |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
214 if skip_removed_repos and REMOVED_REPO_PAT.match(dirpath): |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
215 continue |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
216 |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
217 #skip .<somethin> dirs |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
218 if dirpath.startswith('.'): |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
219 continue |
ba2e2514a01a
reposcann should skip directories with starting with '.'
Marcin Kuzminski <marcin@python-works.com>
parents:
3149
diff
changeset
|
220 |
877
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
221 try: |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
222 scm_info = get_scm(cur_path) |
1820
9130fa3c6d61
fixes issue #331 RC mangles repository names if the a repository group contains the "full path" to the repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
223 yield scm_info[1].split(path, 1)[-1].lstrip(os.sep), scm_info |
877
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
224 except VCSError: |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
225 if not recursive: |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
226 continue |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
227 #check if this dir containts other repos for recursive scan |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
228 rec_path = os.path.join(p, dirpath) |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
229 if os.path.isdir(rec_path): |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
230 for inner_scm in _get_repos(rec_path): |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
231 yield inner_scm |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
232 |
bc9a73adc216
Added recursive scanning for repositories in directory
Marcin Kuzminski <marcin@python-works.com>
parents:
860
diff
changeset
|
233 return _get_repos(path) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
234 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
235 |
2716
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
236 def is_valid_repo(repo_name, base_path, scm=None): |
761
56c2850a5b5f
ldap auth rewrite, moved split authfunc into two functions,
Marcin Kuzminski <marcin@python-works.com>
parents:
756
diff
changeset
|
237 """ |
2716
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
238 Returns True if given path is a valid repository False otherwise. |
2815
acc05c33cc0c
White space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2809
diff
changeset
|
239 If scm param is given also compare if given scm is the same as expected |
2716
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
240 from scm parameter |
2100
f0649c7cf94a
fixed some unicode problems with waitress
Marcin Kuzminski <marcin@python-works.com>
parents:
2069
diff
changeset
|
241 |
761
56c2850a5b5f
ldap auth rewrite, moved split authfunc into two functions,
Marcin Kuzminski <marcin@python-works.com>
parents:
756
diff
changeset
|
242 :param repo_name: |
56c2850a5b5f
ldap auth rewrite, moved split authfunc into two functions,
Marcin Kuzminski <marcin@python-works.com>
parents:
756
diff
changeset
|
243 :param base_path: |
2716
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
244 :param scm: |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
245 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
246 :return True: if given path is a valid repository |
761
56c2850a5b5f
ldap auth rewrite, moved split authfunc into two functions,
Marcin Kuzminski <marcin@python-works.com>
parents:
756
diff
changeset
|
247 """ |
2100
f0649c7cf94a
fixed some unicode problems with waitress
Marcin Kuzminski <marcin@python-works.com>
parents:
2069
diff
changeset
|
248 full_path = os.path.join(safe_str(base_path), safe_str(repo_name)) |
1528
1d7a621d396f
fixed action logger
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
249 |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
250 try: |
2716
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
251 scm_ = get_scm(full_path) |
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
252 if scm: |
4c71667160e5
use os.environ as a fallback for getting special info from hooks, this will allow
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
253 return scm_[0] == scm |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
254 return True |
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
255 except VCSError: |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
256 return False |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
257 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
258 |
3458
0ad025ee005e
better detection of deleting groups with subgroups inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3397
diff
changeset
|
259 def is_valid_repos_group(repos_group_name, base_path, skip_path_check=False): |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
260 """ |
3653
4c78a0855a17
Fix 'repos group' - it is 'repository group'
Mads Kiilerich <madski@unity3d.com>
parents:
3649
diff
changeset
|
261 Returns True if given path is a repository group False otherwise |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
262 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
263 :param repo_name: |
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
264 :param base_path: |
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
265 """ |
2100
f0649c7cf94a
fixed some unicode problems with waitress
Marcin Kuzminski <marcin@python-works.com>
parents:
2069
diff
changeset
|
266 full_path = os.path.join(safe_str(base_path), safe_str(repos_group_name)) |
1528
1d7a621d396f
fixed action logger
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
267 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
268 # check if it's not a repo |
1507
7d687ed11929
changed check_... functions from their stupid names to something less retarded :)
Marcin Kuzminski <marcin@python-works.com>
parents:
1505
diff
changeset
|
269 if is_valid_repo(repos_group_name, base_path): |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
270 return False |
1528
1d7a621d396f
fixed action logger
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
271 |
2497
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
272 try: |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
273 # we need to check bare git repos at higher level |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
274 # since we might match branches/hooks/info/objects or possible |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
275 # other things inside bare git repo |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
276 get_scm(os.path.dirname(full_path)) |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
277 return False |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
278 except VCSError: |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
279 pass |
5a8c19c4dbe1
Fixed bug in repos group discovery, when inner folder of bare git repos were detected as a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2459
diff
changeset
|
280 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
281 # check if it's a valid path |
3458
0ad025ee005e
better detection of deleting groups with subgroups inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3397
diff
changeset
|
282 if skip_path_check or os.path.isdir(full_path): |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
283 return True |
1528
1d7a621d396f
fixed action logger
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
284 |
1505
bb6ba7442293
Fixed methods for checking if path in routes is a repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
285 return False |
1528
1d7a621d396f
fixed action logger
Marcin Kuzminski <marcin@python-works.com>
parents:
1507
diff
changeset
|
286 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
287 |
2899 | 288 def ask_ok(prompt, retries=4, complaint='Yes or no please!'): |
351
d09381593b12
updated db manage script, and remove broken test
Marcin Kuzminski <marcin@python-works.com>
parents:
350
diff
changeset
|
289 while True: |
d09381593b12
updated db manage script, and remove broken test
Marcin Kuzminski <marcin@python-works.com>
parents:
350
diff
changeset
|
290 ok = raw_input(prompt) |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
291 if ok in ('y', 'ye', 'yes'): |
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
292 return True |
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
293 if ok in ('n', 'no', 'nop', 'nope'): |
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
294 return False |
351
d09381593b12
updated db manage script, and remove broken test
Marcin Kuzminski <marcin@python-works.com>
parents:
350
diff
changeset
|
295 retries = retries - 1 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
296 if retries < 0: |
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
297 raise IOError |
351
d09381593b12
updated db manage script, and remove broken test
Marcin Kuzminski <marcin@python-works.com>
parents:
350
diff
changeset
|
298 print complaint |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
299 |
388
3bcf9529d221
Added new application settings,Push ssl and repositories path
Marcin Kuzminski <marcin@python-works.com>
parents:
386
diff
changeset
|
300 #propagated from mercurial documentation |
386
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
301 ui_sections = ['alias', 'auth', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
302 'decode/encode', 'defaults', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
303 'diff', 'email', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
304 'extensions', 'format', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
305 'merge-patterns', 'merge-tools', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
306 'hooks', 'http_proxy', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
307 'smtp', 'patch', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
308 'paths', 'profiling', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
309 'server', 'trusted', |
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
310 'ui', 'web', ] |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
311 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
312 |
2717
dd240b2b7a12
Added optional flag to make_ui to not clean sqlalchemy Session.
Marcin Kuzminski <marcin@python-works.com>
parents:
2716
diff
changeset
|
313 def make_ui(read_from='file', path=None, checkpaths=True, clear_session=True): |
2109 | 314 """ |
315 A function that will read python rc files or database | |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
316 and make an mercurial ui object from read options |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
317 |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
318 :param path: path to mercurial config file |
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
319 :param checkpaths: check the path |
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
320 :param read_from: read from 'file' or 'db' |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
321 """ |
386
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
322 |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
323 baseui = ui.ui() |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
324 |
1991
9e0db8d8d616
changed warning log message for reading hgrc files, it was confusing. It's just an indication of the fact
Marcin Kuzminski <marcin@python-works.com>
parents:
1985
diff
changeset
|
325 # clean the baseui object |
724
a9bc513a1fe3
fixed nasty bug with ui()
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
326 baseui._ocfg = config.config() |
a9bc513a1fe3
fixed nasty bug with ui()
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
327 baseui._ucfg = config.config() |
a9bc513a1fe3
fixed nasty bug with ui()
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
328 baseui._tcfg = config.config() |
a9bc513a1fe3
fixed nasty bug with ui()
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
329 |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
330 if read_from == 'file': |
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
331 if not os.path.isfile(path): |
2899 | 332 log.debug('hgrc file is not present at %s, skipping...' % path) |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
333 return False |
1976 | 334 log.debug('reading hgrc from %s' % path) |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
335 cfg = config.config() |
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
336 cfg.read(path) |
386
a9a607a58b1c
moved out ui_sections out of make ui function
Marcin Kuzminski <marcin@python-works.com>
parents:
381
diff
changeset
|
337 for section in ui_sections: |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
338 for k, v in cfg.items(section): |
3133
95b4242a275e
logging: make 'settings ui from db' look more like Mercurial ini file notation
Mads Kiilerich <madski@unity3d.com>
parents:
3115
diff
changeset
|
339 log.debug('settings ui from file: [%s] %s=%s' % (section, k, v)) |
2989
190e2ff4595d
fix for issue #602, enforce str when setting mercurial UI object. When this is used together with mercurial internal translation system
Marcin Kuzminski <marcin@python-works.com>
parents:
2911
diff
changeset
|
340 baseui.setconfig(safe_str(section), safe_str(k), safe_str(v)) |
724
a9bc513a1fe3
fixed nasty bug with ui()
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
341 |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
342 elif read_from == 'db': |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
343 sa = meta.Session() |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
344 ret = sa.query(RhodeCodeUi)\ |
1991
9e0db8d8d616
changed warning log message for reading hgrc files, it was confusing. It's just an indication of the fact
Marcin Kuzminski <marcin@python-works.com>
parents:
1985
diff
changeset
|
345 .options(FromCache("sql_cache_short", "get_hg_ui_settings"))\ |
9e0db8d8d616
changed warning log message for reading hgrc files, it was confusing. It's just an indication of the fact
Marcin Kuzminski <marcin@python-works.com>
parents:
1985
diff
changeset
|
346 .all() |
773
876776983c3c
disabled dotencode format for mercurial 1.7 usage and hg <=1.6 compatibility
Marcin Kuzminski <marcin@python-works.com>
parents:
761
diff
changeset
|
347 |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
348 hg_ui = ret |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
349 for ui_ in hg_ui: |
2689
73cfc54c87d5
fixed the push_ssl issues after mercurial 2.3 upgrade.
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
350 if ui_.ui_active: |
3133
95b4242a275e
logging: make 'settings ui from db' look more like Mercurial ini file notation
Mads Kiilerich <madski@unity3d.com>
parents:
3115
diff
changeset
|
351 log.debug('settings ui from db: [%s] %s=%s', ui_.ui_section, |
773
876776983c3c
disabled dotencode format for mercurial 1.7 usage and hg <=1.6 compatibility
Marcin Kuzminski <marcin@python-works.com>
parents:
761
diff
changeset
|
352 ui_.ui_key, ui_.ui_value) |
2989
190e2ff4595d
fix for issue #602, enforce str when setting mercurial UI object. When this is used together with mercurial internal translation system
Marcin Kuzminski <marcin@python-works.com>
parents:
2911
diff
changeset
|
353 baseui.setconfig(safe_str(ui_.ui_section), safe_str(ui_.ui_key), |
190e2ff4595d
fix for issue #602, enforce str when setting mercurial UI object. When this is used together with mercurial internal translation system
Marcin Kuzminski <marcin@python-works.com>
parents:
2911
diff
changeset
|
354 safe_str(ui_.ui_value)) |
2689
73cfc54c87d5
fixed the push_ssl issues after mercurial 2.3 upgrade.
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
355 if ui_.ui_key == 'push_ssl': |
73cfc54c87d5
fixed the push_ssl issues after mercurial 2.3 upgrade.
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
356 # force set push_ssl requirement to False, rhodecode |
73cfc54c87d5
fixed the push_ssl issues after mercurial 2.3 upgrade.
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
357 # handles that |
2989
190e2ff4595d
fix for issue #602, enforce str when setting mercurial UI object. When this is used together with mercurial internal translation system
Marcin Kuzminski <marcin@python-works.com>
parents:
2911
diff
changeset
|
358 baseui.setconfig(safe_str(ui_.ui_section), safe_str(ui_.ui_key), |
190e2ff4595d
fix for issue #602, enforce str when setting mercurial UI object. When this is used together with mercurial internal translation system
Marcin Kuzminski <marcin@python-works.com>
parents:
2911
diff
changeset
|
359 False) |
2717
dd240b2b7a12
Added optional flag to make_ui to not clean sqlalchemy Session.
Marcin Kuzminski <marcin@python-works.com>
parents:
2716
diff
changeset
|
360 if clear_session: |
dd240b2b7a12
Added optional flag to make_ui to not clean sqlalchemy Session.
Marcin Kuzminski <marcin@python-works.com>
parents:
2716
diff
changeset
|
361 meta.Session.remove() |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
362 return baseui |
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
363 |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
364 |
548
b75b77ef649d
renamed hg_app to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
365 def set_rhodecode_config(config): |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
366 """ |
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
367 Updates pylons config with new settings from database |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
368 |
756
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
369 :param config: |
01be209b9828
project refactoring, cleaned up lib.utils from rarly used functions, and place them
Marcin Kuzminski <marcin@python-works.com>
parents:
735
diff
changeset
|
370 """ |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1557
diff
changeset
|
371 hgsettings = RhodeCodeSetting.get_app_settings() |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
372 |
381
55377fdc1fc6
cleared global application settings.
Marcin Kuzminski <marcin@python-works.com>
parents:
367
diff
changeset
|
373 for k, v in hgsettings.items(): |
55377fdc1fc6
cleared global application settings.
Marcin Kuzminski <marcin@python-works.com>
parents:
367
diff
changeset
|
374 config[k] = v |
341
1ef52a70f3b7
Made config file free configuration based on database and capable of beeing manage via application settings + some code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
301
diff
changeset
|
375 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
376 |
3797
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
377 def set_vcs_config(config): |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
378 """ |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
379 Patch VCS config with some RhodeCode specific stuff |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
380 |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
381 :param config: rhodecode.CONFIG |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
382 """ |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
383 import rhodecode |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
384 from rhodecode.lib.vcs import conf |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
385 from rhodecode.lib.utils2 import aslist |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
386 conf.settings.BACKENDS = { |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
387 'hg': 'rhodecode.lib.vcs.backends.hg.MercurialRepository', |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
388 'git': 'rhodecode.lib.vcs.backends.git.GitRepository', |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
389 } |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
390 |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
391 conf.settings.GIT_EXECUTABLE_PATH = config.get('git_path', 'git') |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
392 conf.settings.GIT_REV_FILTER = config.get('git_rev_filter', '--all').strip() |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
393 conf.settings.DEFAULT_ENCODINGS = aslist(config.get('default_encoding', |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
394 'utf8'), sep=',') |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
395 |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
396 |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
397 def map_groups(path): |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
398 """ |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
399 Given a full path to a repository, create all nested groups that this |
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
400 repo is inside. This function creates parent-child relationships between |
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
401 groups and creates default perms for all new groups. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
402 |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
403 :param paths: full path to repository |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
404 """ |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
405 sa = meta.Session() |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
406 groups = path.split(Repository.url_sep()) |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
407 parent = None |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
408 group = None |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
409 |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
410 # last element is repo in nested groups structure |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
411 groups = groups[:-1] |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
412 rgm = ReposGroupModel(sa) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
413 owner = User.get_first_admin() |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
414 for lvl, group_name in enumerate(groups): |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
415 group_name = '/'.join(groups[:lvl] + [group_name]) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
416 group = RepoGroup.get_by_group_name(group_name) |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
417 desc = '%s group' % group_name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
418 |
2069
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
419 # skip folders that are now removed repos |
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
420 if REMOVED_REPO_PAT.match(group_name): |
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
421 break |
003c504da933
fixed issues with removed repos was accidentally added as groups, after
Marcin Kuzminski <marcin@python-works.com>
parents:
2055
diff
changeset
|
422 |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
423 if group is None: |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
424 log.debug('creating group level: %s group_name: %s' |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
425 % (lvl, group_name)) |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1557
diff
changeset
|
426 group = RepoGroup(group_name, parent) |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
427 group.group_description = desc |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
428 group.user = owner |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
429 sa.add(group) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
430 perm_obj = rgm._create_default_perms(group) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
431 sa.add(perm_obj) |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
432 sa.flush() |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
433 |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
434 parent = group |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
435 return group |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
436 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
437 |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
438 def repo2db_mapper(initial_repo_list, remove_obsolete=False, |
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
439 install_git_hook=False): |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
440 """ |
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
441 maps all repos given in initial_repo_list, non existing repositories |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
442 are created, if remove_obsolete is True it also check for db entries |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
443 that are not in initial_repo_list and removes them. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
444 |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
445 :param initial_repo_list: list of repositories found by scanning methods |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
877
diff
changeset
|
446 :param remove_obsolete: check for obsolete entries in database |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
447 :param install_git_hook: if this is True, also check and install githook |
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
448 for a repo if missing |
297
a074dec6ee40
restored utils, wrongly deleted
Marcin Kuzminski <marcin@python-works.com>
parents:
295
diff
changeset
|
449 """ |
1634
1d904d972c47
User usermodel instead of db model to manage accounts
Marcin Kuzminski <marcin@python-works.com>
parents:
1633
diff
changeset
|
450 from rhodecode.model.repo import RepoModel |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
451 from rhodecode.model.scm import ScmModel |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
452 sa = meta.Session() |
692
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
689
diff
changeset
|
453 rm = RepoModel() |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3705
diff
changeset
|
454 user = User.get_first_admin() |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1032
diff
changeset
|
455 added = [] |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
456 |
3115
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
457 ##creation defaults |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
458 defs = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True) |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
459 enable_statistics = defs.get('repo_enable_statistics') |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
460 enable_locking = defs.get('repo_enable_locking') |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
461 enable_downloads = defs.get('repo_enable_downloads') |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
462 private = defs.get('repo_private') |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
463 |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
464 for name, repo in initial_repo_list.items(): |
2120
d5527cebf76a
Resolve error occurring during recursive group creation in API create-repo function
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
465 group = map_groups(name) |
2620
cd207411cf22
fixed python2.5 compat and repo mapper issue
Marcin Kuzminski <marcin@python-works.com>
parents:
2619
diff
changeset
|
466 db_repo = rm.get_by_repo_name(name) |
2622
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
467 # found repo that is on filesystem not in RhodeCode database |
2620
cd207411cf22
fixed python2.5 compat and repo mapper issue
Marcin Kuzminski <marcin@python-works.com>
parents:
2619
diff
changeset
|
468 if not db_repo: |
2899 | 469 log.info('repository %s not found, creating now' % name) |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1032
diff
changeset
|
470 added.append(name) |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
471 desc = (repo.description |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
472 if repo.description != 'unknown' |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
473 else '%s repository' % name) |
3115
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
474 |
2622
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
475 new_repo = rm.create_repo( |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
476 repo_name=name, |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
477 repo_type=repo.alias, |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
478 description=desc, |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
479 repos_group=getattr(group, 'group_id', None), |
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
480 owner=user, |
3115
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
481 just_db=True, |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
482 enable_locking=enable_locking, |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
483 enable_downloads=enable_downloads, |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
484 enable_statistics=enable_statistics, |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
485 private=private |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
486 ) |
2622
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
487 # we added that repo just now, and make sure it has githook |
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
488 # installed |
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
489 if new_repo.repo_type == 'git': |
0ffcbeb76e4f
Do cleanup on repo2db mapper
Marcin Kuzminski <marcin@python-works.com>
parents:
2620
diff
changeset
|
490 ScmModel().install_git_hook(new_repo.scm_instance) |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3136
diff
changeset
|
491 new_repo.update_changeset_cache() |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
492 elif install_git_hook: |
2620
cd207411cf22
fixed python2.5 compat and repo mapper issue
Marcin Kuzminski <marcin@python-works.com>
parents:
2619
diff
changeset
|
493 if db_repo.repo_type == 'git': |
cd207411cf22
fixed python2.5 compat and repo mapper issue
Marcin Kuzminski <marcin@python-works.com>
parents:
2619
diff
changeset
|
494 ScmModel().install_git_hook(db_repo.scm_instance) |
3020
00498b3e4c88
Cleaned the way cache keys are invalidated
Marcin Kuzminski <marcin@python-works.com>
parents:
2997
diff
changeset
|
495 |
1723
64e91067b996
- refactoring to overcome poor usage of global pylons config
Marcin Kuzminski <marcin@python-works.com>
parents:
1722
diff
changeset
|
496 sa.commit() |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1032
diff
changeset
|
497 removed = [] |
348
e8fc875467bd
implemented manual repo rescann and remapping
Marcin Kuzminski <marcin@python-works.com>
parents:
345
diff
changeset
|
498 if remove_obsolete: |
2147
d25bd432bc3e
- #347 when running multiple RhodeCode instances, properly invalidates cache
Marcin Kuzminski <marcin@python-works.com>
parents:
2120
diff
changeset
|
499 # remove from database those repositories that are not in the filesystem |
348
e8fc875467bd
implemented manual repo rescann and remapping
Marcin Kuzminski <marcin@python-works.com>
parents:
345
diff
changeset
|
500 for repo in sa.query(Repository).all(): |
e8fc875467bd
implemented manual repo rescann and remapping
Marcin Kuzminski <marcin@python-works.com>
parents:
345
diff
changeset
|
501 if repo.repo_name not in initial_repo_list.keys(): |
2899 | 502 log.debug("Removing non-existing repository found in db `%s`" % |
2147
d25bd432bc3e
- #347 when running multiple RhodeCode instances, properly invalidates cache
Marcin Kuzminski <marcin@python-works.com>
parents:
2120
diff
changeset
|
503 repo.repo_name) |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
504 try: |
3694
34093903b505
repo rescann should detach forks of zombie repos,
Marcin Kuzminski <marcin@python-works.com>
parents:
3693
diff
changeset
|
505 removed.append(repo.repo_name) |
34093903b505
repo rescann should detach forks of zombie repos,
Marcin Kuzminski <marcin@python-works.com>
parents:
3693
diff
changeset
|
506 RepoModel(sa).delete(repo, forks='detach', fs_remove=False) |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
507 sa.commit() |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3607
diff
changeset
|
508 except Exception: |
2619
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
509 #don't hold further removals on error |
f1dfd3a2a193
Added option to re-install githooks to repo2db mapper, and catch exception on removal so it doesn't break
Marcin Kuzminski <marcin@python-works.com>
parents:
2529
diff
changeset
|
510 log.error(traceback.format_exc()) |
2635
d6fa7805e687
we must rollback if repo2db mapper cleanup fails ! Session blows up, and that code still throws an error without it
Marcin Kuzminski <marcin@python-works.com>
parents:
2622
diff
changeset
|
511 sa.rollback() |
1039
51b70569c330
extended admin rescan to show what repositories was added and what removed
Marcin Kuzminski <marcin@python-works.com>
parents:
1032
diff
changeset
|
512 return added, removed |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
513 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
514 |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
515 # set cache regions for beaker so celery can utilise it |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
516 def add_cache(settings): |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
517 cache_settings = {'regions': None} |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
518 for key in settings.keys(): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
519 for prefix in ['beaker.cache.', 'cache.']: |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
520 if key.startswith(prefix): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
521 name = key.split(prefix)[1].strip() |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
522 cache_settings[name] = settings[key].strip() |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
523 if cache_settings['regions']: |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
524 for region in cache_settings['regions'].split(','): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
525 region = region.strip() |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
526 region_settings = {} |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
527 for key, value in cache_settings.items(): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
528 if key.startswith(region): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
529 region_settings[key.split('.')[1]] = value |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
530 region_settings['expire'] = int(region_settings.get('expire', |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
531 60)) |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
532 region_settings.setdefault('lock_dir', |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
533 cache_settings.get('lock_dir')) |
1032
2e9f2bd28143
fixed add cache defaults missing data_dir
Marcin Kuzminski <marcin@python-works.com>
parents:
1022
diff
changeset
|
534 region_settings.setdefault('data_dir', |
2e9f2bd28143
fixed add cache defaults missing data_dir
Marcin Kuzminski <marcin@python-works.com>
parents:
1022
diff
changeset
|
535 cache_settings.get('data_dir')) |
2e9f2bd28143
fixed add cache defaults missing data_dir
Marcin Kuzminski <marcin@python-works.com>
parents:
1022
diff
changeset
|
536 |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
537 if 'type' not in region_settings: |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
538 region_settings['type'] = cache_settings.get('type', |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
539 'memory') |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
540 beaker.cache.cache_regions[region] = region_settings |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
541 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
542 |
2109 | 543 def load_rcextensions(root_path): |
544 import rhodecode | |
545 from rhodecode.config import conf | |
546 | |
547 path = os.path.join(root_path, 'rcextensions', '__init__.py') | |
548 if os.path.isfile(path): | |
549 rcext = create_module('rc', path) | |
550 EXT = rhodecode.EXTENSIONS = rcext | |
551 log.debug('Found rcextensions now loading %s...' % rcext) | |
552 | |
553 # Additional mappings that are not present in the pygments lexers | |
554 conf.LANGUAGES_EXTENSIONS_MAP.update(getattr(EXT, 'EXTRA_MAPPINGS', {})) | |
555 | |
556 #OVERRIDE OUR EXTENSIONS FROM RC-EXTENSIONS (if present) | |
557 | |
3888
7aa0ff5b4e09
simplified boolean expressions
Marcin Kuzminski <marcin@python-works.com>
parents:
3824
diff
changeset
|
558 if getattr(EXT, 'INDEX_EXTENSIONS', []): |
2109 | 559 log.debug('settings custom INDEX_EXTENSIONS') |
560 conf.INDEX_EXTENSIONS = getattr(EXT, 'INDEX_EXTENSIONS', []) | |
561 | |
562 #ADDITIONAL MAPPINGS | |
563 log.debug('adding extra into INDEX_EXTENSIONS') | |
564 conf.INDEX_EXTENSIONS.extend(getattr(EXT, 'EXTRA_INDEX_EXTENSIONS', [])) | |
565 | |
3375
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
566 # auto check if the module is not missing any data, set to default if is |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
567 # this will help autoupdate new feature of rcext module |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
568 from rhodecode.config import rcextensions |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
569 for k in dir(rcextensions): |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
570 if not k.startswith('_') and not hasattr(EXT, k): |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
571 setattr(EXT, k, getattr(rcextensions, k)) |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
572 |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
573 |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
574 def get_custom_lexer(extension): |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
575 """ |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
576 returns a custom lexer if it's defined in rcextensions module, or None |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
577 if there's no custom lexer defined |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
578 """ |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
579 import rhodecode |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
580 from pygments import lexers |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
581 #check if we didn't define this extension as other lexer |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
582 if rhodecode.EXTENSIONS and extension in rhodecode.EXTENSIONS.EXTRA_LEXERS: |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
583 _lexer_name = rhodecode.EXTENSIONS.EXTRA_LEXERS[extension] |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
584 return lexers.get_lexer_by_name(_lexer_name) |
7000fc4aa569
Add option to define custom lexers for custom extensions for code highlight in rcextension module
Marcin Kuzminski <marcin@python-works.com>
parents:
3340
diff
changeset
|
585 |
2109 | 586 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
587 #============================================================================== |
629
7e536d1af60d
Code refactoring,models renames
Marcin Kuzminski <marcin@python-works.com>
parents:
621
diff
changeset
|
588 # TEST FUNCTIONS AND CREATORS |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
589 #============================================================================== |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
590 def create_test_index(repo_location, config, full_index): |
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
591 """ |
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
592 Makes default test index |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
593 |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
594 :param config: test config |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
595 :param full_index: |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
596 """ |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
597 |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
544
diff
changeset
|
598 from rhodecode.lib.indexers.daemon import WhooshIndexingDaemon |
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
544
diff
changeset
|
599 from rhodecode.lib.pidlock import DaemonLock, LockHeld |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
600 |
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
601 repo_location = repo_location |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
602 |
1411
90eebc0f040c
Fixed whoosh index location bug
Marcin Kuzminski <marcin@python-works.com>
parents:
1406
diff
changeset
|
603 index_location = os.path.join(config['app_conf']['index_dir']) |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
604 if not os.path.exists(index_location): |
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1397
diff
changeset
|
605 os.makedirs(index_location) |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
606 |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
607 try: |
1540
191f3f08236d
fixes #258 RhodeCode 1.2 assumes egg folder is writable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
608 l = DaemonLock(file_=jn(dn(index_location), 'make_index.lock')) |
688
8acbfa837180
Tests rewrite for 1.2 added some globals configs to make tests easier.
Marcin Kuzminski <marcin@python-works.com>
parents:
684
diff
changeset
|
609 WhooshIndexingDaemon(index_location=index_location, |
8acbfa837180
Tests rewrite for 1.2 added some globals configs to make tests easier.
Marcin Kuzminski <marcin@python-works.com>
parents:
684
diff
changeset
|
610 repo_location=repo_location)\ |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
611 .run(full_index=full_index) |
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
612 l.release() |
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
613 except LockHeld: |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
614 pass |
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
615 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
616 |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
617 def create_test_env(repos_test_path, config): |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
618 """ |
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
619 Makes a fresh database and |
473
6b934c9607e7
Improved testing scenarios. Made test env creator
Marcin Kuzminski <marcin@python-works.com>
parents:
395
diff
changeset
|
620 install test repository into tmp dir |
6b934c9607e7
Improved testing scenarios. Made test env creator
Marcin Kuzminski <marcin@python-works.com>
parents:
395
diff
changeset
|
621 """ |
547
1e757ac98988
renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
544
diff
changeset
|
622 from rhodecode.lib.db_manage import DbManage |
2459
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
623 from rhodecode.tests import HG_REPO, GIT_REPO, TESTS_TMP_PATH |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
624 |
1416
df04752daa64
test env update
Marcin Kuzminski <marcin@python-works.com>
parents:
1411
diff
changeset
|
625 # PART ONE create db |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
626 dbconf = config['sqlalchemy.db1.url'] |
1976 | 627 log.debug('making test db %s' % dbconf) |
604
5cc96df705b9
fixed @repo into :repo for docs
Marcin Kuzminski <marcin@python-works.com>
parents:
569
diff
changeset
|
628 |
1397
dc960653f8d2
Added new random directory for each test to be better sandboxed
Marcin Kuzminski <marcin@python-works.com>
parents:
1396
diff
changeset
|
629 # create test dir if it doesn't exist |
dc960653f8d2
Added new random directory for each test to be better sandboxed
Marcin Kuzminski <marcin@python-works.com>
parents:
1396
diff
changeset
|
630 if not os.path.isdir(repos_test_path): |
dc960653f8d2
Added new random directory for each test to be better sandboxed
Marcin Kuzminski <marcin@python-works.com>
parents:
1396
diff
changeset
|
631 log.debug('Creating testdir %s' % repos_test_path) |
dc960653f8d2
Added new random directory for each test to be better sandboxed
Marcin Kuzminski <marcin@python-works.com>
parents:
1396
diff
changeset
|
632 os.makedirs(repos_test_path) |
dc960653f8d2
Added new random directory for each test to be better sandboxed
Marcin Kuzminski <marcin@python-works.com>
parents:
1396
diff
changeset
|
633 |
783
71113f64b2d8
fidex corrent variables passed to dnconfig,
Marcin Kuzminski <marcin@python-works.com>
parents:
773
diff
changeset
|
634 dbmanage = DbManage(log_sql=True, dbconf=dbconf, root=config['here'], |
552
2642f128ad46
removed egg info, update files for distutils build
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
635 tests=True) |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
636 dbmanage.create_tables(override=True) |
1099
bc3dafd0e24c
fixed test env creator
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
637 dbmanage.create_settings(dbmanage.config_prompt(repos_test_path)) |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
638 dbmanage.create_default_user() |
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
639 dbmanage.admin_prompt() |
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
640 dbmanage.create_permissions() |
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
641 dbmanage.populate_default_permissions() |
2529
40b3a54391f9
Added functional test create repo with a group
Marcin Kuzminski <marcin@python-works.com>
parents:
2511
diff
changeset
|
642 Session().commit() |
1416
df04752daa64
test env update
Marcin Kuzminski <marcin@python-works.com>
parents:
1411
diff
changeset
|
643 # PART TWO make test repo |
688
8acbfa837180
Tests rewrite for 1.2 added some globals configs to make tests easier.
Marcin Kuzminski <marcin@python-works.com>
parents:
684
diff
changeset
|
644 log.debug('making test vcs repositories') |
8acbfa837180
Tests rewrite for 1.2 added some globals configs to make tests easier.
Marcin Kuzminski <marcin@python-works.com>
parents:
684
diff
changeset
|
645 |
1396
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
646 idx_path = config['app_conf']['index_dir'] |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
647 data_path = config['app_conf']['cache_dir'] |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
648 |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
649 #clean index and data |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
650 if idx_path and os.path.exists(idx_path): |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
651 log.debug('remove %s' % idx_path) |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
652 shutil.rmtree(idx_path) |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
653 |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
654 if data_path and os.path.exists(data_path): |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
655 log.debug('remove %s' % data_path) |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
656 shutil.rmtree(data_path) |
069ee86e85ad
cleanup before start testing suite of index and data cache dirs
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
657 |
2459
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
658 #CREATE DEFAULT TEST REPOS |
491
fefffd6fd5f4
Added some more tests, rewrite testing schema, to autogenerate fresh db, new index.
Marcin Kuzminski <marcin@python-works.com>
parents:
489
diff
changeset
|
659 cur_dir = dn(dn(abspath(__file__))) |
3824
a5746b83123f
moved top-level tests to rhodecode/tests/other.
Marcin Kuzminski <marcin@python-works.com>
parents:
3797
diff
changeset
|
660 tar = tarfile.open(jn(cur_dir, 'tests', 'fixtures', "vcs_test_hg.tar.gz")) |
688
8acbfa837180
Tests rewrite for 1.2 added some globals configs to make tests easier.
Marcin Kuzminski <marcin@python-works.com>
parents:
684
diff
changeset
|
661 tar.extractall(jn(TESTS_TMP_PATH, HG_REPO)) |
473
6b934c9607e7
Improved testing scenarios. Made test env creator
Marcin Kuzminski <marcin@python-works.com>
parents:
395
diff
changeset
|
662 tar.close() |
684
2abb398cd9a7
upgrade-db command dummy
Marcin Kuzminski <marcin@python-works.com>
parents:
665
diff
changeset
|
663 |
2459
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
664 cur_dir = dn(dn(abspath(__file__))) |
3824
a5746b83123f
moved top-level tests to rhodecode/tests/other.
Marcin Kuzminski <marcin@python-works.com>
parents:
3797
diff
changeset
|
665 tar = tarfile.open(jn(cur_dir, 'tests', 'fixtures', "vcs_test_git.tar.gz")) |
2459
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
666 tar.extractall(jn(TESTS_TMP_PATH, GIT_REPO)) |
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
667 tar.close() |
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2451
diff
changeset
|
668 |
2451
402a96fcfa22
Added vcs testsuite for better integration tests + added fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
2375
diff
changeset
|
669 #LOAD VCS test stuff |
402a96fcfa22
Added vcs testsuite for better integration tests + added fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
2375
diff
changeset
|
670 from rhodecode.tests.vcs import setup_package |
402a96fcfa22
Added vcs testsuite for better integration tests + added fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
2375
diff
changeset
|
671 setup_package() |
402a96fcfa22
Added vcs testsuite for better integration tests + added fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
2375
diff
changeset
|
672 |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1221
diff
changeset
|
673 |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
674 #============================================================================== |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
675 # PASTER COMMANDS |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
676 #============================================================================== |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
677 class BasePasterCommand(Command): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
678 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
679 Abstract Base Class for paster commands. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
680 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
681 The celery commands are somewhat aggressive about loading |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
682 celery.conf, and since our module sets the `CELERY_LOADER` |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
683 environment variable to our loader, we have to bootstrap a bit and |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
684 make sure we've had a chance to load the pylons config off of the |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
685 command line, otherwise everything fails. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
686 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
687 min_args = 1 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
688 min_args_error = "Please provide a paster config file as an argument." |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
689 takes_config_file = 1 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
690 requires_config_file = True |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
691 |
837
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
692 def notify_msg(self, msg, log=False): |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
693 """Make a notification to user, additionally if logger is passed |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
694 it logs this action using given logger |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
695 |
837
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
696 :param msg: message that will be printed to user |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
697 :param log: logging instance, to use to additionally log this message |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
698 |
837
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
699 """ |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
700 if log and isinstance(log, logging): |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
701 log(msg) |
60cbde084047
fixed wrong migration schema
Marcin Kuzminski <marcin@python-works.com>
parents:
833
diff
changeset
|
702 |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
703 def run(self, args): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
704 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
705 Overrides Command.run |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1196
diff
changeset
|
706 |
785
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
707 Checks for a config file argument and loads it. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
708 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
709 if len(args) < self.min_args: |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
710 raise BadCommand( |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
711 self.min_args_error % {'min_args': self.min_args, |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
712 'actual_args': len(args)}) |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
713 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
714 # Decrement because we're going to lob off the first argument. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
715 # @@ This is hacky |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
716 self.min_args -= 1 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
717 self.bootstrap_config(args[0]) |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
718 self.update_parser() |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
719 return super(BasePasterCommand, self).run(args[1:]) |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
720 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
721 def update_parser(self): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
722 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
723 Abstract method. Allows for the class's parser to be updated |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
724 before the superclass's `run` method is called. Necessary to |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
725 allow options/arguments to be passed through to the underlying |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
726 celery command. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
727 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
728 raise NotImplementedError("Abstract Method.") |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
729 |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
730 def bootstrap_config(self, conf): |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
731 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
732 Loads the pylons configuration. |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
733 """ |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
734 from pylons import config as pylonsconfig |
277427ac29a9
complete rewrite of paster commands,
Marcin Kuzminski <marcin@python-works.com>
parents:
783
diff
changeset
|
735 |
2102
04d26165c3d9
Whoosh logging is now controlled by the .ini files logging setup
Marcin Kuzminski <marcin@python-works.com>
parents:
2100
diff
changeset
|
736 self.path_to_ini_file = os.path.realpath(conf) |
04d26165c3d9
Whoosh logging is now controlled by the .ini files logging setup
Marcin Kuzminski <marcin@python-works.com>
parents:
2100
diff
changeset
|
737 conf = paste.deploy.appconfig('config:' + self.path_to_ini_file) |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
738 pylonsconfig.init_app(conf.global_conf, conf.local_conf) |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
739 |
3340
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
740 def _init_session(self): |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
741 """ |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
742 Inits SqlAlchemy Session |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
743 """ |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
744 logging.config.fileConfig(self.path_to_ini_file) |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
745 from pylons import config |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
746 from rhodecode.model import init_model |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
747 from rhodecode.lib.utils2 import engine_from_config |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
748 |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
749 #get to remove repos !! |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
750 add_cache(config) |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
751 engine = engine_from_config(config, 'sqlalchemy.db1.') |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
752 init_model(engine) |
f1491bad8339
unified RhodeCode paster commands
Marcin Kuzminski <marcin@python-works.com>
parents:
3228
diff
changeset
|
753 |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
754 |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
755 def check_git_version(): |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
756 """ |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
757 Checks what version of git is installed in system, and issues a warning |
2899 | 758 if it's too old for RhodeCode to properly work. |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
759 """ |
3376
e67b2ef07a8e
git executable is now configurable via .ini files
Marcin Kuzminski <marcin@python-works.com>
parents:
3375
diff
changeset
|
760 from rhodecode import BACKENDS |
e67b2ef07a8e
git executable is now configurable via .ini files
Marcin Kuzminski <marcin@python-works.com>
parents:
3375
diff
changeset
|
761 from rhodecode.lib.vcs.backends.git.repository import GitRepository |
3797
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
762 from rhodecode.lib.vcs.conf import settings |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
763 from distutils.version import StrictVersion |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
764 |
3397
64c194492aad
--version command should be safe, and bare no modifications
Marcin Kuzminski <marcin@python-works.com>
parents:
3376
diff
changeset
|
765 stdout, stderr = GitRepository._run_git_command('--version', _bare=True, |
64c194492aad
--version command should be safe, and bare no modifications
Marcin Kuzminski <marcin@python-works.com>
parents:
3376
diff
changeset
|
766 _safe=True) |
3376
e67b2ef07a8e
git executable is now configurable via .ini files
Marcin Kuzminski <marcin@python-works.com>
parents:
3375
diff
changeset
|
767 |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
768 ver = (stdout.split(' ')[-1] or '').strip() or '0.0.0' |
2911
b14850a72bc2
fixed check git version function, git sometimes uses 4 element version numbering which breaks the system that function
Marcin Kuzminski <marcin@python-works.com>
parents:
2900
diff
changeset
|
769 if len(ver.split('.')) > 3: |
b14850a72bc2
fixed check git version function, git sometimes uses 4 element version numbering which breaks the system that function
Marcin Kuzminski <marcin@python-works.com>
parents:
2900
diff
changeset
|
770 #StrictVersion needs to be only 3 element type |
b14850a72bc2
fixed check git version function, git sometimes uses 4 element version numbering which breaks the system that function
Marcin Kuzminski <marcin@python-works.com>
parents:
2900
diff
changeset
|
771 ver = '.'.join(ver.split('.')[:3]) |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
772 try: |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
773 _ver = StrictVersion(ver) |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3607
diff
changeset
|
774 except Exception: |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
775 _ver = StrictVersion('0.0.0') |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
776 stderr = traceback.format_exc() |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
777 |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
778 req_ver = '1.7.4' |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
779 to_old_git = False |
2997
da3926d9e56e
fix strict version of git check if we have 1.7.4 it's ok !
Marcin Kuzminski <marcin@python-works.com>
parents:
2989
diff
changeset
|
780 if _ver < StrictVersion(req_ver): |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
781 to_old_git = True |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
782 |
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
783 if 'git' in BACKENDS: |
3797
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
784 log.debug('GIT executable: "%s" version detected: %s' |
d7488551578e
synced vcs with upstream
Marcin Kuzminski <marcin@python-works.com>
parents:
3774
diff
changeset
|
785 % (settings.GIT_EXECUTABLE_PATH, stdout)) |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
786 if stderr: |
3575
ca7785fae354
avoid %r markup of unicode strings in user facing messages
Mads Kiilerich <madski@unity3d.com>
parents:
3545
diff
changeset
|
787 log.warning('Unable to detect git version, org error was: %r' % stderr) |
2890
84414d73c233
Add git version detection to warn users that Git used in system is to old. ref #588
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
788 elif to_old_git: |
2899 | 789 log.warning('RhodeCode detected git version %s, which is too old ' |
790 'for the system to function properly. Make sure ' | |
2900 | 791 'its version is at least %s' % (ver, req_ver)) |
2899 | 792 return _ver |
3061
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
793 |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
794 |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
795 @decorator.decorator |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
796 def jsonify(func, *args, **kwargs): |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
797 """Action decorator that formats output for JSON |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
798 |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
799 Given a function that will return content, this decorator will turn |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
800 the result into JSON, with a content-type of 'application/json' and |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
801 output it. |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
802 |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
803 """ |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
804 from pylons.decorators.util import get_pylons |
3705
f37d7514e7ab
always use json from compat module
Marcin Kuzminski <marcin@python-works.com>
parents:
3694
diff
changeset
|
805 from rhodecode.lib.compat import json |
3061
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
806 pylons = get_pylons(args) |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
807 pylons.response.headers['Content-Type'] = 'application/json; charset=utf-8' |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
808 data = func(*args, **kwargs) |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
809 if isinstance(data, (list, tuple)): |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
810 msg = "JSON responses with Array envelopes are susceptible to " \ |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
811 "cross-site data leak attacks, see " \ |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
812 "http://wiki.pylonshq.com/display/pylonsfaq/Warnings" |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
813 warnings.warn(msg, Warning, 2) |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
814 log.warning(msg) |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3020
diff
changeset
|
815 log.debug("Returning JSON wrapped action output") |
3149
68f9c216377d
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
816 return json.dumps(data, encoding='utf-8') |