Mercurial > kallithea
annotate rhodecode/model/db.py @ 4961:8cd34bc2a485
tags: rename old non-Kallithea tags and prefix them with 0.0 to show that Kallithea is superior
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Wed, 11 Mar 2015 18:57:11 +0100 |
parents | 3b5f32aeed36 |
children | ffd45b185016 |
rev | line source |
---|---|
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
1 # -*- coding: utf-8 -*- |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
2 """ |
832
634596f81cfd
new improved models with helper functions for easier data fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
810
diff
changeset
|
3 rhodecode.model.db |
634596f81cfd
new improved models with helper functions for easier data fetching
Marcin Kuzminski <marcin@python-works.com>
parents:
810
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~ |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1199
diff
changeset
|
5 |
834
8924ed0e4f36
added current db version into rhodecode,
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
6 Database Models for RhodeCode |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1199
diff
changeset
|
7 |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
8 :created_on: Apr 08, 2010 |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
9 :author: marcink |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1819
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
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:
1199
diff
changeset
|
17 # |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
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:
1199
diff
changeset
|
22 # |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
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/>. |
1199
268fa0b6b2ef
Added os.sep in models for better win support
Marcin Kuzminski <marcin@python-works.com>
parents:
1193
diff
changeset
|
25 |
268fa0b6b2ef
Added os.sep in models for better win support
Marcin Kuzminski <marcin@python-works.com>
parents:
1193
diff
changeset
|
26 import os |
3850
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
27 import time |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
28 import logging |
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
29 import datetime |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
30 import traceback |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
31 import hashlib |
3850
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
32 import collections |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
33 |
658 | 34 from sqlalchemy import * |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
35 from sqlalchemy.ext.hybrid import hybrid_property |
1594 | 36 from sqlalchemy.orm import relationship, joinedload, class_mapper, validates |
2357 | 37 from sqlalchemy.exc import DatabaseError |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
38 from beaker.cache import cache_region, region_invalidate |
2496
fddd8e3fc157
use get_or_404 where possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2481
diff
changeset
|
39 from webob.exc import HTTPNotFound |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
40 |
2218
6e5d686084f1
fixed translation function for models
Marcin Kuzminski <marcin@python-works.com>
parents:
2217
diff
changeset
|
41 from pylons.i18n.translation import lazy_ugettext as _ |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
42 |
2007
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
2000
diff
changeset
|
43 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:
2000
diff
changeset
|
44 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:
2000
diff
changeset
|
45 from rhodecode.lib.vcs.exceptions import VCSError |
324ac367a4da
Added VCS into rhodecode core for faster and easier deployments of new versions
Marcin Kuzminski <marcin@python-works.com>
parents:
2000
diff
changeset
|
46 from rhodecode.lib.vcs.utils.lazy import LazyProperty |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
47 from rhodecode.lib.vcs.backends.base import EmptyChangeset |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
48 |
2109 | 49 from rhodecode.lib.utils2 import str2bool, safe_str, get_changeset_safe, \ |
3577
238486bb71ab
Switched handling of RhodeCode extra params in consistent way
Marcin Kuzminski <marcin@python-works.com>
parents:
3567
diff
changeset
|
50 safe_unicode, remove_suffix, remove_prefix, time_to_datetime, _set_extras |
1514
87ec80c280bb
fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
1508
diff
changeset
|
51 from rhodecode.lib.compat import json |
1669
f522f4d3bf93
moved caching query to libs
Marcin Kuzminski <marcin@python-works.com>
parents:
1665
diff
changeset
|
52 from rhodecode.lib.caching_query import FromCache |
1500 | 53 |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
54 from rhodecode.model.meta import Base, Session |
1500 | 55 |
2339
79b3c9c66c54
Added optional repo_name into issue tracker url to get just the name of repo without group prefix
Marcin Kuzminski <marcin@python-works.com>
parents:
2251
diff
changeset
|
56 URL_SEP = '/' |
1593 | 57 log = logging.getLogger(__name__) |
49
3ada2f409c1c
Added sqlalchemy support
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
58 |
1081
70bf0be59653
fixed Session problems in model class functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1065
diff
changeset
|
59 #============================================================================== |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
60 # BASE CLASSES |
1081
70bf0be59653
fixed Session problems in model class functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1065
diff
changeset
|
61 #============================================================================== |
70bf0be59653
fixed Session problems in model class functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1065
diff
changeset
|
62 |
2062
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
63 _hash_key = lambda k: hashlib.md5(safe_str(k)).hexdigest() |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
64 |
1800 | 65 |
1593 | 66 class BaseModel(object): |
1758
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
67 """ |
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
68 Base Model for all classess |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
69 """ |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
70 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
71 @classmethod |
1593 | 72 def _get_keys(cls): |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
73 """return column names for this model """ |
1593 | 74 return class_mapper(cls).c.keys() |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
75 |
1948
4582e6b9e2f6
get_dict function garden
Marcin Kuzminski <marcin@python-works.com>
parents:
1886
diff
changeset
|
76 def get_dict(self): |
1758
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
77 """ |
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
78 return dict with keys and values corresponding |
1948
4582e6b9e2f6
get_dict function garden
Marcin Kuzminski <marcin@python-works.com>
parents:
1886
diff
changeset
|
79 to this model data """ |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
80 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
81 d = {} |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
82 for k in self._get_keys(): |
1593 | 83 d[k] = getattr(self, k) |
1800 | 84 |
1758
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
85 # also use __json__() if present to get additional fields |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
86 _json_attr = getattr(self, '__json__', None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
87 if _json_attr: |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
88 # update with attributes from __json__ |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
89 if callable(_json_attr): |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
90 _json_attr = _json_attr() |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
91 for k, val in _json_attr.iteritems(): |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
92 d[k] = val |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
93 return d |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
94 |
1593 | 95 def get_appstruct(self): |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
96 """return list with keys and values tupples corresponding |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
97 to this model data """ |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
98 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
99 l = [] |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
100 for k in self._get_keys(): |
1593 | 101 l.append((k, getattr(self, k),)) |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
102 return l |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
103 |
1593 | 104 def populate_obj(self, populate_dict): |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
105 """populate model with data from given populate_dict""" |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
106 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
107 for k in self._get_keys(): |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
108 if k in populate_dict: |
1593 | 109 setattr(self, k, populate_dict[k]) |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
110 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
111 @classmethod |
1593 | 112 def query(cls): |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
113 return Session().query(cls) |
1388
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
114 |
2029c17cc6c6
Added basic JsonSerialization into models.
Marcin Kuzminski <marcin@python-works.com>
parents:
1385
diff
changeset
|
115 @classmethod |
1593 | 116 def get(cls, id_): |
1594 | 117 if id_: |
118 return cls.query().get(id_) | |
1466 | 119 |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
120 @classmethod |
2496
fddd8e3fc157
use get_or_404 where possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2481
diff
changeset
|
121 def get_or_404(cls, id_): |
2942
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
122 try: |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
123 id_ = int(id_) |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
124 except (TypeError, ValueError): |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
125 raise HTTPNotFound |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
126 |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
127 res = cls.query().get(id_) |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
128 if not res: |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
129 raise HTTPNotFound |
f53faff4487e
get_or_404 method does validation for ID beeing an INT
Marcin Kuzminski <marcin@python-works.com>
parents:
2937
diff
changeset
|
130 return res |
2496
fddd8e3fc157
use get_or_404 where possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2481
diff
changeset
|
131 |
fddd8e3fc157
use get_or_404 where possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2481
diff
changeset
|
132 @classmethod |
1593 | 133 def getAll(cls): |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
134 # deprecated and left for backward compatibility |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
135 return cls.get_all() |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
136 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
137 @classmethod |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
138 def get_all(cls): |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
139 return cls.query().all() |
1466 | 140 |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
141 @classmethod |
1593 | 142 def delete(cls, id_): |
143 obj = cls.query().get(id_) | |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
144 Session().delete(obj) |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2157
diff
changeset
|
145 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
146 def __repr__(self): |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
147 if hasattr(self, '__unicode__'): |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
148 # python repr needs to return str |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
149 return safe_str(self.__unicode__()) |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
150 return '<DB:%s>' % (self.__class__.__name__) |
1081
70bf0be59653
fixed Session problems in model class functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1065
diff
changeset
|
151 |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
152 |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
153 class RhodeCodeSetting(Base, BaseModel): |
548
b75b77ef649d
renamed hg_app to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
154 __tablename__ = 'rhodecode_settings' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
155 __table_args__ = ( |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
156 UniqueConstraint('app_settings_name'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
157 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 158 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
159 ) |
1594 | 160 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
161 app_settings_name = Column("app_settings_name", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
162 _app_settings_value = Column("app_settings_value", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
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:
328
diff
changeset
|
163 |
1594 | 164 def __init__(self, k='', v=''): |
704
26237de9b613
Added settings model, and Exceptions lib.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
165 self.app_settings_name = k |
26237de9b613
Added settings model, and Exceptions lib.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
166 self.app_settings_value = v |
26237de9b613
Added settings model, and Exceptions lib.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
167 |
1593 | 168 @validates('_app_settings_value') |
169 def validate_settings_value(self, key, val): | |
170 assert type(val) == unicode | |
1561
4d841e565237
added validation of params on settings table
Marcin Kuzminski <marcin@python-works.com>
parents:
1556
diff
changeset
|
171 return val |
4d841e565237
added validation of params on settings table
Marcin Kuzminski <marcin@python-works.com>
parents:
1556
diff
changeset
|
172 |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
173 @hybrid_property |
1593 | 174 def app_settings_value(self): |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
175 v = self._app_settings_value |
3056
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
176 if self.app_settings_name in ["ldap_active", |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
177 "default_repo_enable_statistics", |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
178 "default_repo_enable_locking", |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
179 "default_repo_private", |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
180 "default_repo_enable_downloads"]: |
1593 | 181 v = str2bool(v) |
1591 | 182 return v |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
183 |
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
184 @app_settings_value.setter |
1593 | 185 def app_settings_value(self, val): |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
186 """ |
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
187 Setter that will always make sure we use unicode in app_settings_value |
1591 | 188 |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
189 :param val: |
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
190 """ |
1593 | 191 self._app_settings_value = safe_unicode(val) |
1546
c363267bbec7
fixes #265 ldap save fails sometimes on converting attributes to booleans, added getter and setter
Marcin Kuzminski <marcin@python-works.com>
parents:
1539
diff
changeset
|
192 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
193 def __unicode__(self): |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
194 return u"<%s('%s:%s')>" % ( |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
195 self.__class__.__name__, |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
196 self.app_settings_name, self.app_settings_value |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
197 ) |
704
26237de9b613
Added settings model, and Exceptions lib.
Marcin Kuzminski <marcin@python-works.com>
parents:
692
diff
changeset
|
198 |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
199 @classmethod |
2674
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
200 def get_by_name(cls, key): |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
201 return cls.query()\ |
2674
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
202 .filter(cls.app_settings_name == key).scalar() |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
203 |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
204 @classmethod |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
205 def get_by_name_or_create(cls, key): |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
206 res = cls.get_by_name(key) |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
207 if not res: |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
208 res = cls(key) |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
209 return res |
1292
c0335c1dee36
added some fixes to LDAP form re-submition, new simples ldap-settings getter.
Marcin Kuzminski <marcin@python-works.com>
parents:
1279
diff
changeset
|
210 |
c0335c1dee36
added some fixes to LDAP form re-submition, new simples ldap-settings getter.
Marcin Kuzminski <marcin@python-works.com>
parents:
1279
diff
changeset
|
211 @classmethod |
1594 | 212 def get_app_settings(cls, cache=False): |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
213 |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
214 ret = cls.query() |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
215 |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
216 if cache: |
1593 | 217 ret = ret.options(FromCache("sql_cache_short", "get_hg_settings")) |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
218 |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
219 if not ret: |
1593 | 220 raise Exception('Could not get application settings !') |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
221 settings = {} |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
222 for each in ret: |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
223 settings['rhodecode_' + each.app_settings_name] = \ |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
224 each.app_settings_value |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
225 |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
226 return settings |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
227 |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
228 @classmethod |
1594 | 229 def get_ldap_settings(cls, cache=False): |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
230 ret = cls.query()\ |
1593 | 231 .filter(cls.app_settings_name.startswith('ldap_')).all() |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
232 fd = {} |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
233 for row in ret: |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
234 fd.update({row.app_settings_name: row.app_settings_value}) |
1381
a1ab3e9c7e82
fixes #204, ldap active checkbox, credits goes to Matt Little.
Marcin Kuzminski <marcin@python-works.com>
parents:
1376
diff
changeset
|
235 |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
236 return fd |
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
237 |
3056
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
238 @classmethod |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
239 def get_default_repo_settings(cls, cache=False, strip_prefix=False): |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
240 ret = cls.query()\ |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
241 .filter(cls.app_settings_name.startswith('default_')).all() |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
242 fd = {} |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
243 for row in ret: |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
244 key = row.app_settings_name |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
245 if strip_prefix: |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
246 key = remove_prefix(key, prefix='default_') |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
247 fd.update({key: row.app_settings_value}) |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
248 |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
249 return fd |
6104dfd35b16
Implemented #379 defaults settings page for creation of repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
3052
diff
changeset
|
250 |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
251 |
1593 | 252 class RhodeCodeUi(Base, BaseModel): |
548
b75b77ef649d
renamed hg_app to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
547
diff
changeset
|
253 __tablename__ = 'rhodecode_ui' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
254 __table_args__ = ( |
1963
9bbde54232dc
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1960
diff
changeset
|
255 UniqueConstraint('ui_key'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
256 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 257 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
258 ) |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
259 |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
260 HOOK_UPDATE = 'changegroup.update' |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
261 HOOK_REPO_SIZE = 'changegroup.repo_size' |
2407
8a68e0292232
Change git & hg hooks to post. They shouldn't block as they are used just for logging actions. Futhermore post hooks have access to changesets, so it's much better flexible
Marcin Kuzminski <marcin@python-works.com>
parents:
2401
diff
changeset
|
262 HOOK_PUSH = 'changegroup.push_logger' |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
263 HOOK_PRE_PUSH = 'prechangegroup.pre_push' |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
264 HOOK_PULL = 'outgoing.pull_logger' |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
265 HOOK_PRE_PULL = 'preoutgoing.pre_pull' |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
266 |
1594 | 267 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
268 ui_section = Column("ui_section", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
269 ui_key = Column("ui_key", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
270 ui_value = Column("ui_value", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
1594 | 271 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
272 |
3909
e87298ccdfdb
Add default for dashbord items and create default
Marcin Kuzminski <marcin@python-works.com>
parents:
3870
diff
changeset
|
273 # def __init__(self, section='', key='', value=''): |
e87298ccdfdb
Add default for dashbord items and create default
Marcin Kuzminski <marcin@python-works.com>
parents:
3870
diff
changeset
|
274 # self.ui_section = section |
e87298ccdfdb
Add default for dashbord items and create default
Marcin Kuzminski <marcin@python-works.com>
parents:
3870
diff
changeset
|
275 # self.ui_key = key |
e87298ccdfdb
Add default for dashbord items and create default
Marcin Kuzminski <marcin@python-works.com>
parents:
3870
diff
changeset
|
276 # self.ui_value = value |
e87298ccdfdb
Add default for dashbord items and create default
Marcin Kuzminski <marcin@python-works.com>
parents:
3870
diff
changeset
|
277 |
1345
3bce31f026b8
#47 implemented Adding of new repo_groups+forms+validators. Fixed sorting of repo groups by main names in multiple locations. Removed some unneeded calls to self.sa for exchange to .query() methods.
Marcin Kuzminski <marcin@python-works.com>
parents:
1343
diff
changeset
|
278 @classmethod |
1593 | 279 def get_by_key(cls, key): |
2708
9bce679a3f49
Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
280 return cls.query().filter(cls.ui_key == key).scalar() |
1345
3bce31f026b8
#47 implemented Adding of new repo_groups+forms+validators. Fixed sorting of repo groups by main names in multiple locations. Removed some unneeded calls to self.sa for exchange to .query() methods.
Marcin Kuzminski <marcin@python-works.com>
parents:
1343
diff
changeset
|
281 |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
282 @classmethod |
1593 | 283 def get_builtin_hooks(cls): |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
284 q = cls.query() |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
285 q = q.filter(cls.ui_key.in_([cls.HOOK_UPDATE, cls.HOOK_REPO_SIZE, |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
286 cls.HOOK_PUSH, cls.HOOK_PRE_PUSH, |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
287 cls.HOOK_PULL, cls.HOOK_PRE_PULL])) |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
288 return q.all() |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
289 |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
290 @classmethod |
1593 | 291 def get_custom_hooks(cls): |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
292 q = cls.query() |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
293 q = q.filter(~cls.ui_key.in_([cls.HOOK_UPDATE, cls.HOOK_REPO_SIZE, |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
294 cls.HOOK_PUSH, cls.HOOK_PRE_PUSH, |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
295 cls.HOOK_PULL, cls.HOOK_PRE_PULL])) |
1593 | 296 q = q.filter(cls.ui_section == 'hooks') |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
297 return q.all() |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
298 |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
299 @classmethod |
2401
e2af60e480ce
Removed hardcoded hooks names from settings.
Marcin Kuzminski <marcin@python-works.com>
parents:
2400
diff
changeset
|
300 def get_repos_location(cls): |
2708
9bce679a3f49
Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
301 return cls.get_by_key('/').ui_value |
2401
e2af60e480ce
Removed hardcoded hooks names from settings.
Marcin Kuzminski <marcin@python-works.com>
parents:
2400
diff
changeset
|
302 |
e2af60e480ce
Removed hardcoded hooks names from settings.
Marcin Kuzminski <marcin@python-works.com>
parents:
2400
diff
changeset
|
303 @classmethod |
1593 | 304 def create_or_update_hook(cls, key, val): |
2708
9bce679a3f49
Added form for controlling mercurial extensions
Marcin Kuzminski <marcin@python-works.com>
parents:
2689
diff
changeset
|
305 new_ui = cls.get_by_key(key) or cls() |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
306 new_ui.ui_section = 'hooks' |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
307 new_ui.ui_active = True |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
308 new_ui.ui_key = key |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
309 new_ui.ui_value = val |
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
310 |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
311 Session().add(new_ui) |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
312 |
2821
9c90be87ae05
fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents:
2809
diff
changeset
|
313 def __repr__(self): |
9c90be87ae05
fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents:
2809
diff
changeset
|
314 return '<DB:%s[%s:%s]>' % (self.__class__.__name__, self.ui_key, |
9c90be87ae05
fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents:
2809
diff
changeset
|
315 self.ui_value) |
9c90be87ae05
fixed issue #560 require push ssl checkbox wasn't shown when option was enabled
Marcin Kuzminski <marcin@python-works.com>
parents:
2809
diff
changeset
|
316 |
1460
b50348816a80
Added more advanced hook management into rhodecode admin settings
Marcin Kuzminski <marcin@python-works.com>
parents:
1436
diff
changeset
|
317 |
1593 | 318 class User(Base, BaseModel): |
49
3ada2f409c1c
Added sqlalchemy support
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
319 __tablename__ = 'users' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
320 __table_args__ = ( |
1963
9bbde54232dc
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1960
diff
changeset
|
321 UniqueConstraint('username'), UniqueConstraint('email'), |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
322 Index('u_username_idx', 'username'), |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
323 Index('u_email_idx', 'email'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
324 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 325 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
326 ) |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
327 DEFAULT_USER = 'default' |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
328 |
1594 | 329 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
330 username = Column("username", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
331 password = Column("password", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
2480
cb9e73b29a87
User active flag should be default to True
Marcin Kuzminski <marcin@python-works.com>
parents:
2463
diff
changeset
|
332 active = Column("active", Boolean(), nullable=True, unique=None, default=True) |
1594 | 333 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
334 name = Column("firstname", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
335 lastname = Column("lastname", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
336 _email = Column("email", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
1594 | 337 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
338 ldap_dn = Column("ldap_dn", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
339 api_key = Column("api_key", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
340 inherit_default_permissions = Column("inherit_default_permissions", Boolean(), nullable=False, unique=None, default=True) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
341 |
3065
09e8623362ef
remove not null from user_id column for users log archiving
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
342 user_log = relationship('UserLog') |
1594 | 343 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all') |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
344 |
1593 | 345 repositories = relationship('Repository') |
1594 | 346 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all') |
3067
9b0636e9b16b
fixed issue with cascade deleting of following entries
Marcin Kuzminski <marcin@python-works.com>
parents:
3065
diff
changeset
|
347 followings = relationship('UserFollowing', primaryjoin='UserFollowing.user_id==User.user_id', cascade='all') |
9b0636e9b16b
fixed issue with cascade deleting of following entries
Marcin Kuzminski <marcin@python-works.com>
parents:
3065
diff
changeset
|
348 |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
349 repo_to_perm = relationship('UserRepoToPerm', primaryjoin='UserRepoToPerm.user_id==User.user_id', cascade='all') |
2149 | 350 repo_group_to_perm = relationship('UserRepoGroupToPerm', primaryjoin='UserRepoGroupToPerm.user_id==User.user_id', cascade='all') |
2150
a8c9c0094ddf
White space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2149
diff
changeset
|
351 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
352 group_member = relationship('UserGroupMember', cascade='all') |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
353 |
2157
6a2c0cfb018d
Cascade delete comments and notifications when removing user.
Marcin Kuzminski <marcin@python-works.com>
parents:
2156
diff
changeset
|
354 notifications = relationship('UserNotification', cascade='all') |
6a2c0cfb018d
Cascade delete comments and notifications when removing user.
Marcin Kuzminski <marcin@python-works.com>
parents:
2156
diff
changeset
|
355 # notifications assigned to this user |
6a2c0cfb018d
Cascade delete comments and notifications when removing user.
Marcin Kuzminski <marcin@python-works.com>
parents:
2156
diff
changeset
|
356 user_created_notifications = relationship('Notification', cascade='all') |
6a2c0cfb018d
Cascade delete comments and notifications when removing user.
Marcin Kuzminski <marcin@python-works.com>
parents:
2156
diff
changeset
|
357 # comments created by this user |
6a2c0cfb018d
Cascade delete comments and notifications when removing user.
Marcin Kuzminski <marcin@python-works.com>
parents:
2156
diff
changeset
|
358 user_comments = relationship('ChangesetComment', cascade='all') |
2562
78f96d7bb23b
cascade delete extra emails on user delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2544
diff
changeset
|
359 #extra emails for this user |
78f96d7bb23b
cascade delete extra emails on user delete
Marcin Kuzminski <marcin@python-works.com>
parents:
2544
diff
changeset
|
360 user_emails = relationship('UserEmailMap', cascade='all') |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
361 |
1757
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
362 @hybrid_property |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
363 def email(self): |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
364 return self._email |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
365 |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
366 @email.setter |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
367 def email(self, val): |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
368 self._email = val.lower() if val else None |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
369 |
759
a7f50911a945
Models code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
734
diff
changeset
|
370 @property |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
371 def firstname(self): |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
372 # alias for future |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
373 return self.name |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
374 |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
375 @property |
2506
7e3e9d0c5575
Add list of all emails that user may have into get_user call
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
376 def emails(self): |
7e3e9d0c5575
Add list of all emails that user may have into get_user call
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
377 other = UserEmailMap.query().filter(UserEmailMap.user==self).all() |
7e3e9d0c5575
Add list of all emails that user may have into get_user call
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
378 return [self.email] + [x.email for x in other] |
7e3e9d0c5575
Add list of all emails that user may have into get_user call
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
379 |
7e3e9d0c5575
Add list of all emails that user may have into get_user call
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
380 @property |
3127
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
381 def ip_addresses(self): |
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
382 ret = UserIpMap.query().filter(UserIpMap.user == self).all() |
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
383 return [x.ip_addr for x in ret] |
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
384 |
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
385 @property |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
386 def username_and_name(self): |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
387 return '%s (%s %s)' % (self.username, self.firstname, self.lastname) |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
388 |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
389 @property |
1731
31e6eb2fb4b2
implements #222 registration feedback
Marcin Kuzminski <marcin@python-works.com>
parents:
1729
diff
changeset
|
390 def full_name(self): |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
391 return '%s %s' % (self.firstname, self.lastname) |
1731
31e6eb2fb4b2
implements #222 registration feedback
Marcin Kuzminski <marcin@python-works.com>
parents:
1729
diff
changeset
|
392 |
31e6eb2fb4b2
implements #222 registration feedback
Marcin Kuzminski <marcin@python-works.com>
parents:
1729
diff
changeset
|
393 @property |
1950
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
394 def full_name_or_username(self): |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
395 return ('%s %s' % (self.firstname, self.lastname) |
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
396 if (self.firstname and self.lastname) else self.username) |
1950
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
397 |
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
398 @property |
1593 | 399 def full_contact(self): |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
400 return '%s %s <%s>' % (self.firstname, self.lastname, self.email) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
401 |
895
62c04c5cc971
Added some more details into user edit permissions view
Marcin Kuzminski <marcin@python-works.com>
parents:
880
diff
changeset
|
402 @property |
1593 | 403 def short_contact(self): |
2731
09d8fec02954
Implemented #532.
Marcin Kuzminski <marcin@python-works.com>
parents:
2726
diff
changeset
|
404 return '%s %s' % (self.firstname, self.lastname) |
1088
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1081
diff
changeset
|
405 |
fee472613dfa
made simple global rss and atom feed
Marcin Kuzminski <marcin@python-works.com>
parents:
1081
diff
changeset
|
406 @property |
1593 | 407 def is_admin(self): |
895
62c04c5cc971
Added some more details into user edit permissions view
Marcin Kuzminski <marcin@python-works.com>
parents:
880
diff
changeset
|
408 return self.admin |
62c04c5cc971
Added some more details into user edit permissions view
Marcin Kuzminski <marcin@python-works.com>
parents:
880
diff
changeset
|
409 |
3370
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
410 @property |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
411 def AuthUser(self): |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
412 """ |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
413 Returns instance of AuthUser for this user |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
414 """ |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
415 from rhodecode.lib.auth import AuthUser |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
416 return AuthUser(user_id=self.user_id, api_key=self.api_key, |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
417 username=self.username) |
fdb0f59b2189
fixes #762, LDAP and container created users are now activated based on
Marcin Kuzminski <marcin@python-works.com>
parents:
3361
diff
changeset
|
418 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
419 def __unicode__(self): |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
420 return u"<%s('id:%s:%s')>" % (self.__class__.__name__, |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
421 self.user_id, self.username) |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
422 |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
423 @classmethod |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
424 def get_by_username(cls, username, case_insensitive=False, cache=False): |
1400
0d7b56b97953
Simplified last_login call on user, and changed login to use User model directly
Marcin Kuzminski <marcin@python-works.com>
parents:
1388
diff
changeset
|
425 if case_insensitive: |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
426 q = cls.query().filter(cls.username.ilike(username)) |
1400
0d7b56b97953
Simplified last_login call on user, and changed login to use User model directly
Marcin Kuzminski <marcin@python-works.com>
parents:
1388
diff
changeset
|
427 else: |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
428 q = cls.query().filter(cls.username == username) |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
429 |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
430 if cache: |
2062
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
431 q = q.options(FromCache( |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
432 "sql_cache_short", |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
433 "get_user_%s" % _hash_key(username) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
434 ) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
435 ) |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
436 return q.scalar() |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
437 |
1417
5875955def39
fixes #223 improve password reset form
Marcin Kuzminski <marcin@python-works.com>
parents:
1401
diff
changeset
|
438 @classmethod |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
439 def get_by_api_key(cls, api_key, cache=False): |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
440 q = cls.query().filter(cls.api_key == api_key) |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
441 |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
442 if cache: |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
443 q = q.options(FromCache("sql_cache_short", |
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
444 "get_api_key_%s" % api_key)) |
1693
60249224be04
fix for api key lookup, reuse same function in user model
Marcin Kuzminski <marcin@python-works.com>
parents:
1677
diff
changeset
|
445 return q.scalar() |
1417
5875955def39
fixes #223 improve password reset form
Marcin Kuzminski <marcin@python-works.com>
parents:
1401
diff
changeset
|
446 |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
447 @classmethod |
1757
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
448 def get_by_email(cls, email, case_insensitive=False, cache=False): |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
449 if case_insensitive: |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
450 q = cls.query().filter(cls.email.ilike(email)) |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
451 else: |
2aa7f454204e
fixes #298, ldap email addresses created by rhodecode automatically during first login didn't get converted to lower case, which lead to lookup failures and than wrong checks for uniqueness. Fixed that by putting a setter on db model column that will enforce converting to lowercase.
Marcin Kuzminski <marcin@python-works.com>
parents:
1749
diff
changeset
|
452 q = cls.query().filter(cls.email == email) |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
453 |
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
454 if cache: |
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
455 q = q.options(FromCache("sql_cache_short", |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
456 "get_email_key_%s" % email)) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
457 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
458 ret = q.scalar() |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
459 if ret is None: |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
460 q = UserEmailMap.query() |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
461 # try fetching in alternate email map |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
462 if case_insensitive: |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
463 q = q.filter(UserEmailMap.email.ilike(email)) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
464 else: |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
465 q = q.filter(UserEmailMap.email == email) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
466 q = q.options(joinedload(UserEmailMap.user)) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
467 if cache: |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
468 q = q.options(FromCache("sql_cache_short", |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
469 "get_email_map_key_%s" % email)) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
470 ret = getattr(q.scalar(), 'user', None) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
471 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
472 return ret |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
473 |
3185
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
474 @classmethod |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
475 def get_from_cs_author(cls, author): |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
476 """ |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
477 Tries to get User objects out of commit author string |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
478 |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
479 :param author: |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
480 """ |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
481 from rhodecode.lib.helpers import email, author_name |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
482 # Valid email in the attribute passed, see if they're in the system |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
483 _email = email(author) |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
484 if _email: |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
485 user = cls.get_by_email(_email, case_insensitive=True) |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
486 if user: |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
487 return user |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
488 # Maybe we can match by username? |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
489 _author = author_name(author) |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
490 user = cls.get_by_username(_author, case_insensitive=True) |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
491 if user: |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
492 return user |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
3174
diff
changeset
|
493 |
1593 | 494 def update_lastlogin(self): |
442
d66a7fa7689b
moved loged in user propagation out of forms,
Marcin Kuzminski <marcin@python-works.com>
parents:
417
diff
changeset
|
495 """Update user lastlogin""" |
1400
0d7b56b97953
Simplified last_login call on user, and changed login to use User model directly
Marcin Kuzminski <marcin@python-works.com>
parents:
1388
diff
changeset
|
496 self.last_login = datetime.datetime.now() |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
497 Session().add(self) |
1976 | 498 log.debug('updated user %s lastlogin' % self.username) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
499 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
500 @classmethod |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
501 def get_first_admin(cls): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
502 user = User.query().filter(User.admin == True).first() |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
503 if user is None: |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
504 raise Exception('Missing administrative account!') |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
505 return user |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
506 |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
507 @classmethod |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
508 def get_default_user(cls, cache=False): |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
509 user = User.get_by_username(User.DEFAULT_USER, cache=cache) |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
510 if user is None: |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
511 raise Exception('Missing default account!') |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
512 return user |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
513 |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
514 def get_api_data(self): |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
515 """ |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
516 Common function for generating user related data for API |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
517 """ |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
518 user = self |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
519 data = dict( |
2510
9059b2d91303
Change return paremeters for get_api_data in user and repo
Marcin Kuzminski <marcin@python-works.com>
parents:
2508
diff
changeset
|
520 user_id=user.user_id, |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
521 username=user.username, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
522 firstname=user.name, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
523 lastname=user.lastname, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
524 email=user.email, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
525 emails=user.emails, |
2510
9059b2d91303
Change return paremeters for get_api_data in user and repo
Marcin Kuzminski <marcin@python-works.com>
parents:
2508
diff
changeset
|
526 api_key=user.api_key, |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
527 active=user.active, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
528 admin=user.admin, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
529 ldap_dn=user.ldap_dn, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
530 last_login=user.last_login, |
3127
71ce052f8b6b
add ipaddresses to repo data on API calls
Marcin Kuzminski <marcin@python-works.com>
parents:
3125
diff
changeset
|
531 ip_addresses=user.ip_addresses |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
532 ) |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
533 return data |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
534 |
1758
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
535 def __json__(self): |
2544
6ce3387bf0ce
Renamed name to firstname in forms
Marcin Kuzminski <marcin@python-works.com>
parents:
2542
diff
changeset
|
536 data = dict( |
1950
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
537 full_name=self.full_name, |
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
538 full_name_or_username=self.full_name_or_username, |
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
539 short_contact=self.short_contact, |
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
540 full_contact=self.full_contact |
4ae17f819ee8
#344 optional firstname lastname on user creation
Marcin Kuzminski <marcin@python-works.com>
parents:
1948
diff
changeset
|
541 ) |
2544
6ce3387bf0ce
Renamed name to firstname in forms
Marcin Kuzminski <marcin@python-works.com>
parents:
2542
diff
changeset
|
542 data.update(self.get_api_data()) |
6ce3387bf0ce
Renamed name to firstname in forms
Marcin Kuzminski <marcin@python-works.com>
parents:
2542
diff
changeset
|
543 return data |
1758
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
544 |
a87aa385f21c
fixed repo_create permission by adding missing commit statements
Marcin Kuzminski <marcin@python-works.com>
parents:
1757
diff
changeset
|
545 |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
546 class UserEmailMap(Base, BaseModel): |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
547 __tablename__ = 'user_email_map' |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
548 __table_args__ = ( |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
549 Index('uem_email_idx', 'email'), |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
550 UniqueConstraint('email'), |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
551 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
552 'mysql_charset': 'utf8'} |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
553 ) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
554 __mapper_args__ = {} |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
555 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
556 email_id = Column("email_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
557 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
558 _email = Column("email", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=False, default=None) |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
559 user = relationship('User', lazy='joined') |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
560 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
561 @validates('_email') |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
562 def validate_email(self, key, email): |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
563 # check if this email is not main one |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
564 main_email = Session().query(User).filter(User.email == email).scalar() |
2329
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
565 if main_email is not None: |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
566 raise AttributeError('email %s is present is user table' % email) |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
567 return email |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
568 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
569 @hybrid_property |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
570 def email(self): |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
571 return self._email |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
572 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
573 @email.setter |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
574 def email(self, val): |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
575 self._email = val.lower() if val else None |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
576 |
20e307d5250f
Added email-map for alternative email addresses for users
Marcin Kuzminski <marcin@python-works.com>
parents:
2296
diff
changeset
|
577 |
3125
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
578 class UserIpMap(Base, BaseModel): |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
579 __tablename__ = 'user_ip_map' |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
580 __table_args__ = ( |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
581 UniqueConstraint('user_id', 'ip_addr'), |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
582 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
583 'mysql_charset': 'utf8'} |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
584 ) |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
585 __mapper_args__ = {} |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
586 |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
587 ip_id = Column("ip_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
588 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None) |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
589 ip_addr = Column("ip_addr", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=False, default=None) |
3146
c5169e445fb8
Full IP restrictions enabled
Marcin Kuzminski <marcin@python-works.com>
parents:
3127
diff
changeset
|
590 active = Column("active", Boolean(), nullable=True, unique=None, default=True) |
3125
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
591 user = relationship('User', lazy='joined') |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
592 |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
593 @classmethod |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
594 def _get_ip_range(cls, ip_addr): |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
595 from rhodecode.lib import ipaddr |
3212
6c28533d122c
IP restrictions now also enabled for IPv6
Marcin Kuzminski <marcin@python-works.com>
parents:
3185
diff
changeset
|
596 net = ipaddr.IPNetwork(address=ip_addr) |
3125
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
597 return [str(net.network), str(net.broadcast)] |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
598 |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
599 def __json__(self): |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
600 return dict( |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
601 ip_addr=self.ip_addr, |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
602 ip_range=self._get_ip_range(self.ip_addr) |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
603 ) |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
604 |
9b92cf5a0cca
Added UserIpMap interface for allowed IP addresses and IP restriction access
Marcin Kuzminski <marcin@python-works.com>
parents:
3115
diff
changeset
|
605 |
1593 | 606 class UserLog(Base, BaseModel): |
49
3ada2f409c1c
Added sqlalchemy support
Marcin Kuzminski <marcin@python-blog.com>
parents:
diff
changeset
|
607 __tablename__ = 'user_logs' |
2149 | 608 __table_args__ = ( |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
609 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 610 'mysql_charset': 'utf8'}, |
611 ) | |
1594 | 612 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
3065
09e8623362ef
remove not null from user_id column for users log archiving
Marcin Kuzminski <marcin@python-works.com>
parents:
3063
diff
changeset
|
613 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None) |
3063
ca2b21819dfd
Implemented better support for Wildcard queries
Marcin Kuzminski <marcin@python-works.com>
parents:
3056
diff
changeset
|
614 username = Column("username", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
1747
8804715404c9
implements #193 journal stores information about deleting of repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1744
diff
changeset
|
615 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
616 repository_name = Column("repository_name", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
617 user_ip = Column("user_ip", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
618 action = Column("action", UnicodeText(1200000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
1594 | 619 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
620 |
3868
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3866
diff
changeset
|
621 def __unicode__(self): |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3866
diff
changeset
|
622 return u"<%s('id:%s:%s')>" % (self.__class__.__name__, |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3866
diff
changeset
|
623 self.repository_name, |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3866
diff
changeset
|
624 self.action) |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3866
diff
changeset
|
625 |
994
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
991
diff
changeset
|
626 @property |
1593 | 627 def action_as_day(self): |
1723
64e91067b996
- refactoring to overcome poor usage of global pylons config
Marcin Kuzminski <marcin@python-works.com>
parents:
1717
diff
changeset
|
628 return datetime.date(*self.action_date.timetuple()[:3]) |
994
7f9d23f6a526
Added grouping by days in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
991
diff
changeset
|
629 |
1593 | 630 user = relationship('User') |
2063
d9ba58526712
fixed #373 missing cascade drop on user_group_to_perm table
Marcin Kuzminski <marcin@python-works.com>
parents:
2062
diff
changeset
|
631 repository = relationship('Repository', cascade='') |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
632 |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
633 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
634 class UserGroup(Base, BaseModel): |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
635 __tablename__ = 'users_groups' |
2149 | 636 __table_args__ = ( |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
637 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 638 'mysql_charset': 'utf8'}, |
639 ) | |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
640 |
1594 | 641 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
642 users_group_name = Column("users_group_name", String(255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) |
1594 | 643 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None) |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
644 inherit_default_permissions = Column("users_group_inherit_default_permissions", Boolean(), nullable=False, unique=None, default=True) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
645 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None) |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
646 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
647 members = relationship('UserGroupMember', cascade="all, delete, delete-orphan", lazy="joined") |
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
648 users_group_to_perm = relationship('UserGroupToPerm', cascade='all') |
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
649 users_group_repo_to_perm = relationship('UserGroupRepoToPerm', cascade='all') |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
650 users_group_repo_group_to_perm = relationship('UserGroupRepoGroupToPerm', cascade='all') |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
651 user_user_group_to_perm = relationship('UserUserGroupToPerm ', cascade='all') |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
652 user_group_user_group_to_perm = relationship('UserGroupUserGroupToPerm ', primaryjoin="UserGroupUserGroupToPerm.target_user_group_id==UserGroup.users_group_id", cascade='all') |
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
653 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
654 user = relationship('User') |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
655 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
656 def __unicode__(self): |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
657 return u"<%s('id:%s:%s')>" % (self.__class__.__name__, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
658 self.users_group_id, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
659 self.users_group_name) |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
660 |
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
661 @classmethod |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
662 def get_by_group_name(cls, group_name, cache=False, |
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
663 case_insensitive=False): |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
664 if case_insensitive: |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
665 q = cls.query().filter(cls.users_group_name.ilike(group_name)) |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
666 else: |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
667 q = cls.query().filter(cls.users_group_name == group_name) |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
668 if cache: |
2062
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
669 q = q.options(FromCache( |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
670 "sql_cache_short", |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
671 "get_user_%s" % _hash_key(group_name) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
672 ) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
673 ) |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
674 return q.scalar() |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
675 |
1436
88d13c1c6a55
removed users_group controller in replace for model methods,
Marcin Kuzminski <marcin@python-works.com>
parents:
1435
diff
changeset
|
676 @classmethod |
1594 | 677 def get(cls, users_group_id, cache=False): |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
678 users_group = cls.query() |
1436
88d13c1c6a55
removed users_group controller in replace for model methods,
Marcin Kuzminski <marcin@python-works.com>
parents:
1435
diff
changeset
|
679 if cache: |
1593 | 680 users_group = users_group.options(FromCache("sql_cache_short", |
681 "get_users_group_%s" % users_group_id)) | |
682 return users_group.get(users_group_id) | |
1436
88d13c1c6a55
removed users_group controller in replace for model methods,
Marcin Kuzminski <marcin@python-works.com>
parents:
1435
diff
changeset
|
683 |
2523
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
684 def get_api_data(self): |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
685 users_group = self |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
686 |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
687 data = dict( |
2531
d80a68e2ebcc
return proper id from users_group
Marcin Kuzminski <marcin@python-works.com>
parents:
2523
diff
changeset
|
688 users_group_id=users_group.users_group_id, |
2523
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
689 group_name=users_group.users_group_name, |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
690 active=users_group.users_group_active, |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
691 ) |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
692 |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
693 return data |
788ae4f7d8df
added get_api_data into UsersGroup
Marcin Kuzminski <marcin@python-works.com>
parents:
2520
diff
changeset
|
694 |
1800 | 695 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
696 class UserGroupMember(Base, BaseModel): |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
697 __tablename__ = 'users_groups_members' |
2149 | 698 __table_args__ = ( |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
699 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 700 'mysql_charset': 'utf8'}, |
701 ) | |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
702 |
1594 | 703 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
704 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) | |
705 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
706 |
1594 | 707 user = relationship('User', lazy='joined') |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
708 users_group = relationship('UserGroup') |
972
2c8fd84935a4
#56 implemented users groups editing,
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
709 |
1594 | 710 def __init__(self, gr_id='', u_id=''): |
972
2c8fd84935a4
#56 implemented users groups editing,
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
711 self.users_group_id = gr_id |
2c8fd84935a4
#56 implemented users groups editing,
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
712 self.user_id = u_id |
956
83d35d716a02
started working on issue #56
Marcin Kuzminski <marcin@python-works.com>
parents:
907
diff
changeset
|
713 |
2013
8530c3cd9d04
fixed issue with hybrid property for ldap_active
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
714 |
3308
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
715 class RepositoryField(Base, BaseModel): |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
716 __tablename__ = 'repositories_fields' |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
717 __table_args__ = ( |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
718 UniqueConstraint('repository_id', 'field_key'), # no-multi field |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
719 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
720 'mysql_charset': 'utf8'}, |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
721 ) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
722 PREFIX = 'ex_' # prefix used in form to not conflict with already existing fields |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
723 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
724 repo_field_id = Column("repo_field_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
725 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None) |
3361
14556b463177
mysql indexed keys cannot be larger thatn 256 chars, but 250 is enough for this purpose
Marcin Kuzminski <marcin@python-works.com>
parents:
3308
diff
changeset
|
726 field_key = Column("field_key", String(250, convert_unicode=False, assert_unicode=None)) |
3308
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
727 field_label = Column("field_label", String(1024, convert_unicode=False, assert_unicode=None), nullable=False) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
728 field_value = Column("field_value", String(10000, convert_unicode=False, assert_unicode=None), nullable=False) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
729 field_desc = Column("field_desc", String(1024, convert_unicode=False, assert_unicode=None), nullable=False) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
730 field_type = Column("field_type", String(256), nullable=False, unique=None) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
731 created_on = Column('created_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
732 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
733 repository = relationship('Repository') |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
734 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
735 @property |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
736 def field_key_prefixed(self): |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
737 return 'ex_%s' % self.field_key |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
738 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
739 @classmethod |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
740 def un_prefix_key(cls, key): |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
741 if key.startswith(cls.PREFIX): |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
742 return key[len(cls.PREFIX):] |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
743 return key |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
744 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
745 @classmethod |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
746 def get_by_key_name(cls, key, repo): |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
747 row = cls.query()\ |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
748 .filter(cls.repository == repo)\ |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
749 .filter(cls.field_key == key).scalar() |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
750 return row |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
751 |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
752 |
1593 | 753 class Repository(Base, BaseModel): |
234
a0116e944da1
changed naming convention for db modules.
Marcin Kuzminski <marcin@python-works.com>
parents:
232
diff
changeset
|
754 __tablename__ = 'repositories' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
755 __table_args__ = ( |
1963
9bbde54232dc
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1960
diff
changeset
|
756 UniqueConstraint('repo_name'), |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
757 Index('r_repo_name_idx', 'repo_name'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
758 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 759 'mysql_charset': 'utf8'}, |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
760 ) |
1081
70bf0be59653
fixed Session problems in model class functions
Marcin Kuzminski <marcin@python-works.com>
parents:
1065
diff
changeset
|
761 |
1594 | 762 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
763 repo_name = Column("repo_name", String(255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
764 clone_uri = Column("clone_uri", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=False, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
765 repo_type = Column("repo_type", String(255, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default=None) |
1594 | 766 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None) |
767 private = Column("private", Boolean(), nullable=True, unique=None, default=None) | |
768 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True) | |
769 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True) | |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
770 description = Column("description", String(10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
1594 | 771 created_on = Column('created_on', DateTime(timezone=False), nullable=True, unique=None, default=datetime.datetime.now) |
2797
c9baaacb670a
Remove null from revision column as for comments inside pull requests to work properly
Marcin Kuzminski <marcin@python-works.com>
parents:
2791
diff
changeset
|
772 updated_on = Column('updated_on', DateTime(timezone=False), nullable=True, unique=None, default=datetime.datetime.now) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
773 landing_rev = Column("landing_revision", String(255, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default=None) |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
774 enable_locking = Column("enable_locking", Boolean(), nullable=False, unique=None, default=False) |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
775 _locked = Column("locked", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=False, default=None) |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
776 _changeset_cache = Column("changeset_cache", LargeBinary(), nullable=True) #JSON data |
1301
7e75af301842
Added simple forks page, resolves issue #179
Marcin Kuzminski <marcin@python-works.com>
parents:
1292
diff
changeset
|
777 |
1594 | 778 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None) |
779 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None) | |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
780 |
1593 | 781 user = relationship('User') |
1594 | 782 fork = relationship('Repository', remote_side=repo_id) |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
783 group = relationship('RepoGroup') |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
784 repo_to_perm = relationship('UserRepoToPerm', cascade='all', order_by='UserRepoToPerm.repo_to_perm_id') |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
785 users_group_to_perm = relationship('UserGroupRepoToPerm', cascade='all') |
1594 | 786 stats = relationship('Statistics', cascade='all', uselist=False) |
667
56a8434a88cc
fixes #51 deleting a repo didn't delete it's dependent db entries.
Marcin Kuzminski <marcin@python-works.com>
parents:
658
diff
changeset
|
787 |
2674
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
788 followers = relationship('UserFollowing', |
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
789 primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', |
2666
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
790 cascade='all') |
3308
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
791 extra_fields = relationship('RepositoryField', |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
792 cascade="all, delete, delete-orphan") |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
793 |
1747
8804715404c9
implements #193 journal stores information about deleting of repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1744
diff
changeset
|
794 logs = relationship('UserLog') |
2665
81a17ef4afc0
cascade delete comments when deleting repo, else it's a error preventing deletion
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
795 comments = relationship('ChangesetComment', cascade="all, delete, delete-orphan") |
970
1a5c41e4bb02
fixees for #106 relation issues on databases different than sqlite
Marcin Kuzminski <marcin@python-works.com>
parents:
962
diff
changeset
|
796 |
2666
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
797 pull_requests_org = relationship('PullRequest', |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
798 primaryjoin='PullRequest.org_repo_id==Repository.repo_id', |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
799 cascade="all, delete, delete-orphan") |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
800 |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
801 pull_requests_other = relationship('PullRequest', |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
802 primaryjoin='PullRequest.other_repo_id==Repository.repo_id', |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
803 cascade="all, delete, delete-orphan") |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
804 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
805 def __unicode__(self): |
2459
9492ab68331f
Initial version of landing revisions ref #483
Marcin Kuzminski <marcin@python-works.com>
parents:
2407
diff
changeset
|
806 return u"<%s('%s:%s')>" % (self.__class__.__name__, self.repo_id, |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
807 self.repo_name) |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
808 |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
809 @hybrid_property |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
810 def locked(self): |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
811 # always should return [user_id, timelocked] |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
812 if self._locked: |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
813 _lock_info = self._locked.split(':') |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
814 return int(_lock_info[0]), _lock_info[1] |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
815 return [None, None] |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
816 |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
817 @locked.setter |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
818 def locked(self, val): |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
819 if val and isinstance(val, (list, tuple)): |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
820 self._locked = ':'.join(map(str, val)) |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
821 else: |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
822 self._locked = None |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
823 |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
824 @hybrid_property |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
825 def changeset_cache(self): |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
826 from rhodecode.lib.vcs.backends.base import EmptyChangeset |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
827 dummy = EmptyChangeset().__json__() |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
828 if not self._changeset_cache: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
829 return dummy |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
830 try: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
831 return json.loads(self._changeset_cache) |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
832 except TypeError: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
833 return dummy |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
834 |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
835 @changeset_cache.setter |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
836 def changeset_cache(self, val): |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
837 try: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
838 self._changeset_cache = json.dumps(val) |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3625
diff
changeset
|
839 except Exception: |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
840 log.error(traceback.format_exc()) |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
841 |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
842 @classmethod |
1593 | 843 def url_sep(cls): |
2339
79b3c9c66c54
Added optional repo_name into issue tracker url to get just the name of repo without group prefix
Marcin Kuzminski <marcin@python-works.com>
parents:
2251
diff
changeset
|
844 return URL_SEP |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
845 |
1554
e7c6341ad3cb
fixes #245 Rescan of the repositories on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
1547
diff
changeset
|
846 @classmethod |
3152
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
847 def normalize_repo_name(cls, repo_name): |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
848 """ |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
849 Normalizes os specific repo_name to the format internally stored inside |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
850 dabatabase using URL_SEP |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
851 |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
852 :param cls: |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
853 :param repo_name: |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
854 """ |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
855 return cls.url_sep().join(repo_name.split(os.sep)) |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
856 |
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
857 @classmethod |
1593 | 858 def get_by_repo_name(cls, repo_name): |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
859 q = Session().query(cls).filter(cls.repo_name == repo_name) |
1593 | 860 q = q.options(joinedload(Repository.fork))\ |
861 .options(joinedload(Repository.user))\ | |
862 .options(joinedload(Repository.group)) | |
1749
8ecc6b8229a5
commit less models
Marcin Kuzminski <marcin@python-works.com>
parents:
1747
diff
changeset
|
863 return q.scalar() |
1301
7e75af301842
Added simple forks page, resolves issue #179
Marcin Kuzminski <marcin@python-works.com>
parents:
1292
diff
changeset
|
864 |
7e75af301842
Added simple forks page, resolves issue #179
Marcin Kuzminski <marcin@python-works.com>
parents:
1292
diff
changeset
|
865 @classmethod |
2400
e87c6aa9c5e7
Add method for fetching repos by full path
Marcin Kuzminski <marcin@python-works.com>
parents:
2356
diff
changeset
|
866 def get_by_full_path(cls, repo_full_path): |
e87c6aa9c5e7
Add method for fetching repos by full path
Marcin Kuzminski <marcin@python-works.com>
parents:
2356
diff
changeset
|
867 repo_name = repo_full_path.split(cls.base_path(), 1)[-1] |
3152
46234d2d388f
fixed issues with getting repos by path on windows
Marcin Kuzminski <marcin@python-works.com>
parents:
3147
diff
changeset
|
868 repo_name = cls.normalize_repo_name(repo_name) |
2400
e87c6aa9c5e7
Add method for fetching repos by full path
Marcin Kuzminski <marcin@python-works.com>
parents:
2356
diff
changeset
|
869 return cls.get_by_repo_name(repo_name.strip(URL_SEP)) |
e87c6aa9c5e7
Add method for fetching repos by full path
Marcin Kuzminski <marcin@python-works.com>
parents:
2356
diff
changeset
|
870 |
e87c6aa9c5e7
Add method for fetching repos by full path
Marcin Kuzminski <marcin@python-works.com>
parents:
2356
diff
changeset
|
871 @classmethod |
1593 | 872 def get_repo_forks(cls, repo_id): |
873 return cls.query().filter(Repository.fork_id == repo_id) | |
1301
7e75af301842
Added simple forks page, resolves issue #179
Marcin Kuzminski <marcin@python-works.com>
parents:
1292
diff
changeset
|
874 |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
875 @classmethod |
1593 | 876 def base_path(cls): |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
877 """ |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
878 Returns base path when all repos are stored |
1587
8898a79ac628
Implement all CRUD API operation for repo
Nicolas VINOT <aeris@imirhil.fr>
parents:
1586
diff
changeset
|
879 |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
880 :param cls: |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
881 """ |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
882 q = Session().query(RhodeCodeUi)\ |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
883 .filter(RhodeCodeUi.ui_key == cls.url_sep()) |
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
884 q = q.options(FromCache("sql_cache_short", "repository_repo_path")) |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
885 return q.one().ui_value |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
886 |
1113
c1eda8ec4a46
added clone_uri,api_key into models. Fixed models for mysql compatibilty
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
887 @property |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
888 def forks(self): |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
889 """ |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
890 Return forks of this repo |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
891 """ |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
892 return Repository.get_repo_forks(self.repo_id) |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
893 |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
894 @property |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
895 def parent(self): |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
896 """ |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
897 Returns fork parent |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
898 """ |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
899 return self.fork |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
900 |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2392
diff
changeset
|
901 @property |
1593 | 902 def just_name(self): |
903 return self.repo_name.split(Repository.url_sep())[-1] | |
1155
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
904 |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
905 @property |
1593 | 906 def groups_with_parents(self): |
1155
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
907 groups = [] |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
908 if self.group is None: |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
909 return groups |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
910 |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
911 cur_gr = self.group |
1593 | 912 groups.insert(0, cur_gr) |
1155
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
913 while 1: |
1593 | 914 gr = getattr(cur_gr, 'parent_group', None) |
1155
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
915 cur_gr = cur_gr.parent_group |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
916 if gr is None: |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
917 break |
1593 | 918 groups.insert(0, gr) |
1155
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
919 |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
920 return groups |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
921 |
37a9421f32a0
Added handy methods to Repository model for fetching groups with parents
Marcin Kuzminski <marcin@python-works.com>
parents:
1113
diff
changeset
|
922 @property |
1593 | 923 def groups_and_repo(self): |
3599
8087731920d8
breadcrumbs: make repo names link to summary pages
Mads Kiilerich <madski@unity3d.com>
parents:
3577
diff
changeset
|
924 return self.groups_with_parents, self.just_name, self.repo_name |
1113
c1eda8ec4a46
added clone_uri,api_key into models. Fixed models for mysql compatibilty
Marcin Kuzminski <marcin@python-works.com>
parents:
1088
diff
changeset
|
925 |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
926 @LazyProperty |
1593 | 927 def repo_path(self): |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
928 """ |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
929 Returns base full path for that repository means where it actually |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
930 exists on a filesystem |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
931 """ |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
932 q = Session().query(RhodeCodeUi).filter(RhodeCodeUi.ui_key == |
1593 | 933 Repository.url_sep()) |
1727
8e9f51091229
fixed caching query on repos path
Marcin Kuzminski <marcin@python-works.com>
parents:
1723
diff
changeset
|
934 q = q.options(FromCache("sql_cache_short", "repository_repo_path")) |
1368
04b43168742d
adde short cache for repo_path
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
935 return q.one().ui_value |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
936 |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
937 @property |
1593 | 938 def repo_full_path(self): |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
939 p = [self.repo_path] |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
940 # we need to split the name by / since this is how we store the |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
941 # names in the database, but that eventually needs to be converted |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
942 # into a valid system path |
1593 | 943 p += self.repo_name.split(Repository.url_sep()) |
3636
ddc4c12f00fb
fixed issues with importing non-ascii repo names
Marcin Kuzminski <marcin@python-works.com>
parents:
3631
diff
changeset
|
944 return os.path.join(*map(safe_unicode, p)) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
945 |
2809
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
946 @property |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
947 def cache_keys(self): |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
948 """ |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
949 Returns associated cache keys for that repo |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
950 """ |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
951 return CacheInvalidation.query()\ |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
952 .filter(CacheInvalidation.cache_args == self.repo_name)\ |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
953 .order_by(CacheInvalidation.cache_key)\ |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
954 .all() |
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
955 |
1593 | 956 def get_new_name(self, repo_name): |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
957 """ |
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
958 returns new full repository name based on assigned group and new new |
1591 | 959 |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
960 :param group_name: |
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
961 """ |
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
962 path_prefix = self.group.full_path_splitted if self.group else [] |
1593 | 963 return Repository.url_sep().join(path_prefix + [repo_name]) |
1539
bd604cf75c5a
fixes #260 Put repo in group, then move group to another group -> repo becomes unavailable
Marcin Kuzminski <marcin@python-works.com>
parents:
1538
diff
changeset
|
964 |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
965 @property |
1593 | 966 def _ui(self): |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
967 """ |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
968 Creates an db based ui object for this repository |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
969 """ |
2982
78227b65a358
remove duplicated code for generating UI objects
Marcin Kuzminski <marcin@python-works.com>
parents:
2942
diff
changeset
|
970 from rhodecode.lib.utils import make_ui |
78227b65a358
remove duplicated code for generating UI objects
Marcin Kuzminski <marcin@python-works.com>
parents:
2942
diff
changeset
|
971 return make_ui('db', clear_session=False) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
972 |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
973 @classmethod |
1593 | 974 def is_valid(cls, repo_name): |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
975 """ |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
976 returns True if given repo name is a valid filesystem repository |
1587
8898a79ac628
Implement all CRUD API operation for repo
Nicolas VINOT <aeris@imirhil.fr>
parents:
1586
diff
changeset
|
977 |
1819
9451a569aee5
sphinx doc cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
978 :param cls: |
9451a569aee5
sphinx doc cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1818
diff
changeset
|
979 :param repo_name: |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
980 """ |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
981 from rhodecode.lib.utils import is_valid_repo |
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
982 |
1593 | 983 return is_valid_repo(repo_name, cls.base_path()) |
1508
4aba7be311e8
API added checks for a valid repository on pull command
Marcin Kuzminski <marcin@python-works.com>
parents:
1500
diff
changeset
|
984 |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
985 def get_api_data(self): |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
986 """ |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
987 Common function for generating repo api data |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
988 |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
989 """ |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
990 repo = self |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
991 data = dict( |
2510
9059b2d91303
Change return paremeters for get_api_data in user and repo
Marcin Kuzminski <marcin@python-works.com>
parents:
2508
diff
changeset
|
992 repo_id=repo.repo_id, |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
993 repo_name=repo.repo_name, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
994 repo_type=repo.repo_type, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
995 clone_uri=repo.clone_uri, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
996 private=repo.private, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
997 created_on=repo.created_on, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
998 description=repo.description, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
999 landing_rev=repo.landing_rev, |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
1000 owner=repo.user.username, |
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:
3067
diff
changeset
|
1001 fork_of=repo.fork.repo_name if repo.fork else None, |
ebd76deee70d
Default parameters are now also used for creating repos using API calls, and initial repo scanner
Marcin Kuzminski <marcin@python-works.com>
parents:
3067
diff
changeset
|
1002 enable_statistics=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:
3067
diff
changeset
|
1003 enable_locking=repo.enable_locking, |
3174
37c0ac5fe42f
added last_changeset information in get_repo API function
Marcin Kuzminski <marcin@python-works.com>
parents:
3170
diff
changeset
|
1004 enable_downloads=repo.enable_downloads, |
3502
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
1005 last_changeset=repo.changeset_cache, |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
1006 locked_by=User.get(self.locked[0]).get_api_data() \ |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
1007 if self.locked[0] else None, |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
1008 locked_date=time_to_datetime(self.locked[1]) \ |
7cde75eac0fe
get_locks API function draft
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
1009 if self.locked[1] else None |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
1010 ) |
3308
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
1011 rc_config = RhodeCodeSetting.get_app_settings() |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
1012 repository_fields = str2bool(rc_config.get('rhodecode_repository_fields')) |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
1013 if repository_fields: |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
1014 for f in self.extra_fields: |
72a91632b731
repository extra fields implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
3278
diff
changeset
|
1015 data[f.field_key_prefixed] = f.field_value |
2508
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
1016 |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
1017 return data |
43cb5b6047fd
Added functions for getting API data to repo and user models
Marcin Kuzminski <marcin@python-works.com>
parents:
2506
diff
changeset
|
1018 |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1019 @classmethod |
3808
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3788
diff
changeset
|
1020 def lock(cls, repo, user_id, lock_time=None): |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3788
diff
changeset
|
1021 if not lock_time: |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3788
diff
changeset
|
1022 lock_time = time.time() |
2feb58495f34
locking API returns objects instead of string messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
3788
diff
changeset
|
1023 repo.locked = [user_id, lock_time] |
2726
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1024 Session().add(repo) |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1025 Session().commit() |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1026 |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1027 @classmethod |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1028 def unlock(cls, repo): |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1029 repo.locked = None |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1030 Session().add(repo) |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1031 Session().commit() |
aa17c7a1b8a5
Implemented basic locking functionality.
Marcin Kuzminski <marcin@python-works.com>
parents:
2724
diff
changeset
|
1032 |
3457
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3420
diff
changeset
|
1033 @classmethod |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3420
diff
changeset
|
1034 def getlock(cls, repo): |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3420
diff
changeset
|
1035 return repo.locked |
08e8115585bd
calling lock function without lock attribute, will return lock state
Marcin Kuzminski <marcin@python-works.com>
parents:
3420
diff
changeset
|
1036 |
2936
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2835
diff
changeset
|
1037 @property |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2835
diff
changeset
|
1038 def last_db_change(self): |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2835
diff
changeset
|
1039 return self.updated_on |
62e493c7f436
Added lightweight dashboard option. ref #500
Marcin Kuzminski <marcin@python-works.com>
parents:
2835
diff
changeset
|
1040 |
3170
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1041 def clone_url(self, **override): |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1042 from pylons import url |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1043 from urlparse import urlparse |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1044 import urllib |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1045 parsed_url = urlparse(url('home', qualified=True)) |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1046 default_clone_uri = '%(scheme)s://%(user)s%(pass)s%(netloc)s%(prefix)s%(path)s' |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1047 decoded_path = safe_unicode(urllib.unquote(parsed_url.path)) |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1048 args = { |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1049 'user': '', |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1050 'pass': '', |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1051 'scheme': parsed_url.scheme, |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1052 'netloc': parsed_url.netloc, |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1053 'prefix': decoded_path, |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1054 'path': self.repo_name |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1055 } |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1056 |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1057 args.update(override) |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1058 return default_clone_uri % args |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
1059 |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1060 #========================================================================== |
1466 | 1061 # SCM PROPERTIES |
1062 #========================================================================== | |
1063 | |
2251
986430cde505
fixed issue with getting README files from git repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2248
diff
changeset
|
1064 def get_changeset(self, rev=None): |
1593 | 1065 return get_changeset_safe(self.scm_instance, rev) |
1466 | 1066 |
2603
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1067 def get_landing_changeset(self): |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1068 """ |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1069 Returns landing changeset, or if that doesn't exist returns the tip |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1070 """ |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1071 cs = self.get_changeset(self.landing_rev) or self.get_changeset() |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1072 return cs |
370ed7829168
Readme renderer now uses landing_rev parameter to render the readme based on
Marcin Kuzminski <marcin@python-works.com>
parents:
2588
diff
changeset
|
1073 |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1074 def update_changeset_cache(self, cs_cache=None): |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1075 """ |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1076 Update cache of last changeset for repository, keys should be:: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1077 |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1078 short_id |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1079 raw_id |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1080 revision |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1081 message |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1082 date |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1083 author |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1084 |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1085 :param cs_cache: |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1086 """ |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1087 from rhodecode.lib.vcs.backends.base import BaseChangeset |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1088 if cs_cache is None: |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1089 cs_cache = EmptyChangeset() |
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1090 # use no-cache version here |
3549
e4a4006faceb
no_cache version of scm is now a function
Marcin Kuzminski <marcin@python-works.com>
parents:
3502
diff
changeset
|
1091 scm_repo = self.scm_instance_no_cache() |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1092 if scm_repo: |
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1093 cs_cache = scm_repo.get_changeset() |
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1094 |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1095 if isinstance(cs_cache, BaseChangeset): |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1096 cs_cache = cs_cache.__json__() |
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1097 |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1098 if (cs_cache != self.changeset_cache or not self.changeset_cache): |
3226
226013bac971
update repo-info shouldn't allow setting empty values NEVER !
Marcin Kuzminski <marcin@python-works.com>
parents:
3222
diff
changeset
|
1099 _default = datetime.datetime.fromtimestamp(0) |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1100 last_change = cs_cache.get('date') or _default |
3636
ddc4c12f00fb
fixed issues with importing non-ascii repo names
Marcin Kuzminski <marcin@python-works.com>
parents:
3631
diff
changeset
|
1101 log.debug('updated repo %s with new cs cache %s' |
ddc4c12f00fb
fixed issues with importing non-ascii repo names
Marcin Kuzminski <marcin@python-works.com>
parents:
3631
diff
changeset
|
1102 % (self.repo_name, cs_cache)) |
2937
d439d408b415
Update last_change from VCS data on request.
Marcin Kuzminski <marcin@python-works.com>
parents:
2936
diff
changeset
|
1103 self.updated_on = last_change |
3147
8182ebed2922
Added full last changeset info to lightweight dashboard
Marcin Kuzminski <marcin@python-works.com>
parents:
3146
diff
changeset
|
1104 self.changeset_cache = cs_cache |
2937
d439d408b415
Update last_change from VCS data on request.
Marcin Kuzminski <marcin@python-works.com>
parents:
2936
diff
changeset
|
1105 Session().add(self) |
d439d408b415
Update last_change from VCS data on request.
Marcin Kuzminski <marcin@python-works.com>
parents:
2936
diff
changeset
|
1106 Session().commit() |
3227
99ce5d097a09
fixes for issue #731, update-repoinfo sometimes failed to update data when changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3226
diff
changeset
|
1107 else: |
3636
ddc4c12f00fb
fixed issues with importing non-ascii repo names
Marcin Kuzminski <marcin@python-works.com>
parents:
3631
diff
changeset
|
1108 log.debug('Skipping repo:%s already with latest changes' |
ddc4c12f00fb
fixed issues with importing non-ascii repo names
Marcin Kuzminski <marcin@python-works.com>
parents:
3631
diff
changeset
|
1109 % self.repo_name) |
2937
d439d408b415
Update last_change from VCS data on request.
Marcin Kuzminski <marcin@python-works.com>
parents:
2936
diff
changeset
|
1110 |
1466 | 1111 @property |
1593 | 1112 def tip(self): |
1113 return self.get_changeset('tip') | |
1466 | 1114 |
1115 @property | |
1593 | 1116 def author(self): |
1466 | 1117 return self.tip.author |
1118 | |
1119 @property | |
1593 | 1120 def last_change(self): |
1466 | 1121 return self.scm_instance.last_change |
1122 | |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1123 def get_comments(self, revisions=None): |
1884
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1124 """ |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1125 Returns comments for this repository grouped by revisions |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1126 |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1127 :param revisions: filter query by revisions only |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1128 """ |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1129 cmts = ChangesetComment.query()\ |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1130 .filter(ChangesetComment.repo == self) |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1131 if revisions: |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1132 cmts = cmts.filter(ChangesetComment.revision.in_(revisions)) |
3850
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
1133 grouped = collections.defaultdict(list) |
1884
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1134 for cmt in cmts.all(): |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1135 grouped[cmt.revision].append(cmt) |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1136 return grouped |
0614862a20ec
Added number of comments in changelog for each changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
1824
diff
changeset
|
1137 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1138 def statuses(self, revisions=None): |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1139 """ |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1140 Returns statuses for this repository |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1141 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1142 :param revisions: list of revisions to get statuses for |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1143 """ |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1144 |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1145 statuses = ChangesetStatus.query()\ |
2287
8447d35b674e
Added simple versioning for changeset status
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
1146 .filter(ChangesetStatus.repo == self)\ |
8447d35b674e
Added simple versioning for changeset status
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
1147 .filter(ChangesetStatus.version == 0) |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1148 if revisions: |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1149 statuses = statuses.filter(ChangesetStatus.revision.in_(revisions)) |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1150 grouped = {} |
2542
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1151 |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1152 #maybe we have open new pullrequest without a status ? |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1153 stat = ChangesetStatus.STATUS_UNDER_REVIEW |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1154 status_lbl = ChangesetStatus.get_status_lbl(stat) |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1155 for pr in PullRequest.query().filter(PullRequest.org_repo == self).all(): |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1156 for rev in pr.revisions: |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1157 pr_id = pr.pull_request_id |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1158 pr_repo = pr.other_repo.repo_name |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1159 grouped[rev] = [stat, status_lbl, pr_id, pr_repo] |
4496d3119627
mock changeset status(to under review) if there's opened pull request but not yet with a status
Marcin Kuzminski <marcin@python-works.com>
parents:
2532
diff
changeset
|
1160 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1161 for stat in statuses.all(): |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1162 pr_id = pr_repo = None |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1163 if stat.pull_request: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1164 pr_id = stat.pull_request.pull_request_id |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1165 pr_repo = stat.pull_request.other_repo.repo_name |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1166 grouped[stat.revision] = [str(stat.status), stat.status_lbl, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1167 pr_id, pr_repo] |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1168 return grouped |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1169 |
3246
b9ba0d4d3abf
implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents:
3239
diff
changeset
|
1170 def _repo_size(self): |
b9ba0d4d3abf
implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents:
3239
diff
changeset
|
1171 from rhodecode.lib import helpers as h |
b9ba0d4d3abf
implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents:
3239
diff
changeset
|
1172 log.debug('calculating repository size...') |
b9ba0d4d3abf
implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents:
3239
diff
changeset
|
1173 return h.format_byte_size(self.scm_instance.size) |
b9ba0d4d3abf
implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents:
3239
diff
changeset
|
1174 |
1466 | 1175 #========================================================================== |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1176 # SCM CACHE INSTANCE |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1177 #========================================================================== |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1178 |
1593 | 1179 def set_invalidate(self): |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1180 """ |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1181 Mark caches of this repo as invalid. |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1182 """ |
3717 | 1183 CacheInvalidation.set_invalidate(self.repo_name) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1184 |
3278
c2bf0fa7b3cb
git hook handler shouldn't ever use cache instances
Marcin Kuzminski <marcin@python-works.com>
parents:
3274
diff
changeset
|
1185 def scm_instance_no_cache(self): |
c2bf0fa7b3cb
git hook handler shouldn't ever use cache instances
Marcin Kuzminski <marcin@python-works.com>
parents:
3274
diff
changeset
|
1186 return self.__get_instance() |
c2bf0fa7b3cb
git hook handler shouldn't ever use cache instances
Marcin Kuzminski <marcin@python-works.com>
parents:
3274
diff
changeset
|
1187 |
3680
0db18ba129ea
scm_instance shouldn't be cached in anyway inside object
Marcin Kuzminski <marcin@python-works.com>
parents:
3636
diff
changeset
|
1188 @property |
1593 | 1189 def scm_instance(self): |
3025
f61adead3520
Added option to ini files for controlling full cache of VCS instances.
Marcin Kuzminski <marcin@python-works.com>
parents:
3024
diff
changeset
|
1190 import rhodecode |
f61adead3520
Added option to ini files for controlling full cache of VCS instances.
Marcin Kuzminski <marcin@python-works.com>
parents:
3024
diff
changeset
|
1191 full_cache = str2bool(rhodecode.CONFIG.get('vcs_full_cache')) |
f61adead3520
Added option to ini files for controlling full cache of VCS instances.
Marcin Kuzminski <marcin@python-works.com>
parents:
3024
diff
changeset
|
1192 if full_cache: |
f61adead3520
Added option to ini files for controlling full cache of VCS instances.
Marcin Kuzminski <marcin@python-works.com>
parents:
3024
diff
changeset
|
1193 return self.scm_instance_cached() |
1400
0d7b56b97953
Simplified last_login call on user, and changed login to use User model directly
Marcin Kuzminski <marcin@python-works.com>
parents:
1388
diff
changeset
|
1194 return self.__get_instance() |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1195 |
3772
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1196 def scm_instance_cached(self, valid_cache_keys=None): |
1593 | 1197 @cache_region('long_term') |
1198 def _c(repo_name): | |
1400
0d7b56b97953
Simplified last_login call on user, and changed login to use User model directly
Marcin Kuzminski <marcin@python-works.com>
parents:
1388
diff
changeset
|
1199 return self.__get_instance() |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1200 rn = self.repo_name |
2352
90e06f53af8c
Implemented cache-map on main page to save executing select
Marcin Kuzminski <marcin@python-works.com>
parents:
2339
diff
changeset
|
1201 |
3773
8e2cd46f765b
invalidate: encapsulate how key is generated from repo_name and kind
Mads Kiilerich <madski@unity3d.com>
parents:
3772
diff
changeset
|
1202 valid = CacheInvalidation.test_and_set_valid(rn, None, valid_cache_keys=valid_cache_keys) |
3772
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1203 if not valid: |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1204 log.debug('Cache for %s invalidated, getting new object' % (rn)) |
1593 | 1205 region_invalidate(_c, None, rn) |
3686
f18801f827da
repr of cache inv object show also now cache_active + some better logging
Marcin Kuzminski <marcin@python-works.com>
parents:
3685
diff
changeset
|
1206 else: |
f18801f827da
repr of cache inv object show also now cache_active + some better logging
Marcin Kuzminski <marcin@python-works.com>
parents:
3685
diff
changeset
|
1207 log.debug('Getting obj for %s from cache' % (rn)) |
1593 | 1208 return _c(rn) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1209 |
1593 | 1210 def __get_instance(self): |
1368
04b43168742d
adde short cache for repo_path
Marcin Kuzminski <marcin@python-works.com>
parents:
1366
diff
changeset
|
1211 repo_full_path = self.repo_full_path |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1212 try: |
1593 | 1213 alias = get_scm(repo_full_path)[0] |
3420
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1214 log.debug('Creating instance of %s repository from %s' |
a6bef3e8a361
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
Marcin Kuzminski <marcin@python-works.com>
parents:
3417
diff
changeset
|
1215 % (alias, repo_full_path)) |
1593 | 1216 backend = get_backend(alias) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1217 except VCSError: |
1593 | 1218 log.error(traceback.format_exc()) |
1219 log.error('Perhaps this repository is in db and not in ' | |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1220 'filesystem run rescan repositories with ' |
1593 | 1221 '"destroy old data " option from admin panel') |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1222 return |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1223 |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1224 if alias == 'hg': |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1225 |
1594 | 1226 repo = backend(safe_str(repo_full_path), create=False, |
1227 baseui=self._ui) | |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1228 # skip hidden web repository |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1229 if repo._get_hidden(): |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1230 return |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1231 else: |
1594 | 1232 repo = backend(repo_full_path, create=False) |
1366
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1233 |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1234 return repo |
9c0f5d558789
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached
Marcin Kuzminski <marcin@python-works.com>
parents:
1360
diff
changeset
|
1235 |
1065
5d676b6ab71c
Moved BaseModel into base class for declarative base. Added some handy methods into
Marcin Kuzminski <marcin@python-works.com>
parents:
1039
diff
changeset
|
1236 |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1237 class RepoGroup(Base, BaseModel): |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1238 __tablename__ = 'groups' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1239 __table_args__ = ( |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1240 UniqueConstraint('group_name', 'group_parent_id'), |
1963
9bbde54232dc
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
1960
diff
changeset
|
1241 CheckConstraint('group_id != group_parent_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1242 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1243 'mysql_charset': 'utf8'}, |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1244 ) |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1245 __mapper_args__ = {'order_by': 'group_name'} |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1246 |
1594 | 1247 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1248 group_name = Column("group_name", String(255, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None) |
1594 | 1249 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1250 group_description = Column("group_description", String(10000, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
2749
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1251 enable_locking = Column("enable_locking", Boolean(), nullable=False, unique=None, default=False) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1252 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None) |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1253 |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1254 repo_group_to_perm = relationship('UserRepoGroupToPerm', cascade='all', order_by='UserRepoGroupToPerm.group_to_perm_id') |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1255 users_group_to_perm = relationship('UserGroupRepoGroupToPerm', cascade='all') |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1256 parent_group = relationship('RepoGroup', remote_side=group_id) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1257 user = relationship('User') |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1258 |
1594 | 1259 def __init__(self, group_name='', parent_group=None): |
878
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1260 self.group_name = group_name |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1261 self.parent_group = parent_group |
859bc9e7a15d
Extended repo2db mapper with group creation via directory structures
Marcin Kuzminski <marcin@python-works.com>
parents:
836
diff
changeset
|
1262 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1263 def __unicode__(self): |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1264 return u"<%s('id:%s:%s')>" % (self.__class__.__name__, self.group_id, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1265 self.group_name) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
1266 |
1346
cf78d302d441
#47 implemented deleting of empty groups. Fixed problem with full paths on nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1345
diff
changeset
|
1267 @classmethod |
3239
a9565b8b429b
filter out repo groups choices to only ones that you have write+ access to. Before it was read+ access and you got proper
Marcin Kuzminski <marcin@python-works.com>
parents:
3234
diff
changeset
|
1268 def groups_choices(cls, groups=None, show_empty_group=True): |
1547
fbc762ae3496
unified generation of repo groups choices
Marcin Kuzminski <marcin@python-works.com>
parents:
1546
diff
changeset
|
1269 from webhelpers.html import literal as _literal |
3222
b4daef4cc26d
Group management delegation:
Marcin Kuzminski <marcin@python-works.com>
parents:
3212
diff
changeset
|
1270 if not groups: |
b4daef4cc26d
Group management delegation:
Marcin Kuzminski <marcin@python-works.com>
parents:
3212
diff
changeset
|
1271 groups = cls.query().all() |
3239
a9565b8b429b
filter out repo groups choices to only ones that you have write+ access to. Before it was read+ access and you got proper
Marcin Kuzminski <marcin@python-works.com>
parents:
3234
diff
changeset
|
1272 |
3222
b4daef4cc26d
Group management delegation:
Marcin Kuzminski <marcin@python-works.com>
parents:
3212
diff
changeset
|
1273 repo_groups = [] |
b4daef4cc26d
Group management delegation:
Marcin Kuzminski <marcin@python-works.com>
parents:
3212
diff
changeset
|
1274 if show_empty_group: |
3942
e6a3f4b414d2
fixed translation and unicode issues
Marcin Kuzminski <marcin@python-works.com>
parents:
3909
diff
changeset
|
1275 repo_groups = [('-1', u'-- %s --' % _('top level'))] |
1547
fbc762ae3496
unified generation of repo groups choices
Marcin Kuzminski <marcin@python-works.com>
parents:
1546
diff
changeset
|
1276 sep = ' » ' |
1593 | 1277 _name = lambda k: _literal(sep.join(k)) |
1547
fbc762ae3496
unified generation of repo groups choices
Marcin Kuzminski <marcin@python-works.com>
parents:
1546
diff
changeset
|
1278 |
1593 | 1279 repo_groups.extend([(x.group_id, _name(x.full_path_splitted)) |
2835
faffec4abbda
Implemented permissions for writing to repo
Marcin Kuzminski <marcin@python-works.com>
parents:
2821
diff
changeset
|
1280 for x in groups]) |
1591 | 1281 |
1594 | 1282 repo_groups = sorted(repo_groups, key=lambda t: t[1].split(sep)[0]) |
1547
fbc762ae3496
unified generation of repo groups choices
Marcin Kuzminski <marcin@python-works.com>
parents:
1546
diff
changeset
|
1283 return repo_groups |
1591 | 1284 |
1547
fbc762ae3496
unified generation of repo groups choices
Marcin Kuzminski <marcin@python-works.com>
parents:
1546
diff
changeset
|
1285 @classmethod |
1593 | 1286 def url_sep(cls): |
2339
79b3c9c66c54
Added optional repo_name into issue tracker url to get just the name of repo without group prefix
Marcin Kuzminski <marcin@python-works.com>
parents:
2251
diff
changeset
|
1287 return URL_SEP |
1346
cf78d302d441
#47 implemented deleting of empty groups. Fixed problem with full paths on nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1345
diff
changeset
|
1288 |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1289 @classmethod |
1594 | 1290 def get_by_group_name(cls, group_name, cache=False, case_insensitive=False): |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1291 if case_insensitive: |
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1292 gr = cls.query()\ |
1593 | 1293 .filter(cls.group_name.ilike(group_name)) |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1294 else: |
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1295 gr = cls.query()\ |
1593 | 1296 .filter(cls.group_name == group_name) |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1297 if cache: |
2062
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
1298 gr = gr.options(FromCache( |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
1299 "sql_cache_short", |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
1300 "get_group_%s" % _hash_key(group_name) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
1301 ) |
bf8ed0adbc66
fixes #371 fixed issues with beaker/sqlalchemy and non-ascii cache keys
Marcin Kuzminski <marcin@python-works.com>
parents:
2058
diff
changeset
|
1302 ) |
1584
3338a0994472
Improve API with user/group/repo CRUD methods
Nicolas VINOT <aeris@imirhil.fr>
parents:
1508
diff
changeset
|
1303 return gr.scalar() |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1304 |
1159
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1305 @property |
1593 | 1306 def parents(self): |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1307 parents_recursion_limit = 5 |
1159
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1308 groups = [] |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1309 if self.parent_group is None: |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1310 return groups |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1311 cur_gr = self.parent_group |
1593 | 1312 groups.insert(0, cur_gr) |
1349
526120c77a38
#47 added editing of groups, and moving them between. Added check constraint for groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1346
diff
changeset
|
1313 cnt = 0 |
1159
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1314 while 1: |
1349
526120c77a38
#47 added editing of groups, and moving them between. Added check constraint for groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1346
diff
changeset
|
1315 cnt += 1 |
1593 | 1316 gr = getattr(cur_gr, 'parent_group', None) |
1159
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1317 cur_gr = cur_gr.parent_group |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1318 if gr is None: |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1319 break |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1320 if cnt == parents_recursion_limit: |
1349
526120c77a38
#47 added editing of groups, and moving them between. Added check constraint for groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1346
diff
changeset
|
1321 # this will prevent accidental infinit loops |
1593 | 1322 log.error('group nested more than %s' % |
1323 parents_recursion_limit) | |
1349
526120c77a38
#47 added editing of groups, and moving them between. Added check constraint for groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1346
diff
changeset
|
1324 break |
526120c77a38
#47 added editing of groups, and moving them between. Added check constraint for groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1346
diff
changeset
|
1325 |
1593 | 1326 groups.insert(0, gr) |
1159
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1327 return groups |
187a924ed653
Changes for repo groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1155
diff
changeset
|
1328 |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1329 @property |
1593 | 1330 def children(self): |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1331 return RepoGroup.query().filter(RepoGroup.parent_group == self) |
1323
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1301
diff
changeset
|
1332 |
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1301
diff
changeset
|
1333 @property |
1593 | 1334 def name(self): |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1335 return self.group_name.split(RepoGroup.url_sep())[-1] |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1336 |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1337 @property |
1593 | 1338 def full_path(self): |
1594 | 1339 return self.group_name |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1340 |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1341 @property |
1593 | 1342 def full_path_splitted(self): |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1343 return self.group_name.split(RepoGroup.url_sep()) |
1323
a7a772ea7b95
fixed saving settings on repositories inside groups, also fixes #187
Marcin Kuzminski <marcin@python-works.com>
parents:
1301
diff
changeset
|
1344 |
1193
523382549c45
Added repo group page showing what reposiories are inside a group
Marcin Kuzminski <marcin@python-works.com>
parents:
1159
diff
changeset
|
1345 @property |
1593 | 1346 def repositories(self): |
2079
477fe54b8af8
fixed sorting of repos in group
Marcin Kuzminski <marcin@python-works.com>
parents:
2063
diff
changeset
|
1347 return Repository.query()\ |
477fe54b8af8
fixed sorting of repos in group
Marcin Kuzminski <marcin@python-works.com>
parents:
2063
diff
changeset
|
1348 .filter(Repository.group == self)\ |
477fe54b8af8
fixed sorting of repos in group
Marcin Kuzminski <marcin@python-works.com>
parents:
2063
diff
changeset
|
1349 .order_by(Repository.repo_name) |
1193
523382549c45
Added repo group page showing what reposiories are inside a group
Marcin Kuzminski <marcin@python-works.com>
parents:
1159
diff
changeset
|
1350 |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1351 @property |
1593 | 1352 def repositories_recursive_count(self): |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1353 cnt = self.repositories.count() |
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1354 |
1593 | 1355 def children_count(group): |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1356 cnt = 0 |
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1357 for child in group.children: |
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1358 cnt += child.repositories.count() |
1593 | 1359 cnt += children_count(child) |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1360 return cnt |
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1361 |
1593 | 1362 return cnt + children_count(self) |
1385
7e221629a3e5
#209 Added recursive count on repositories to calculate all repos within all nested groups
Marcin Kuzminski <marcin@python-works.com>
parents:
1381
diff
changeset
|
1363 |
3459
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1364 def _recursive_objects(self, include_repos=True): |
2749
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1365 all_ = [] |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1366 |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1367 def _get_members(root_gr): |
3459
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1368 if include_repos: |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1369 for r in root_gr.repositories: |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1370 all_.append(r) |
2749
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1371 childs = root_gr.children.all() |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1372 if childs: |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1373 for gr in childs: |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1374 all_.append(gr) |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1375 _get_members(gr) |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1376 |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1377 _get_members(self) |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1378 return [self] + all_ |
3ed4dae499d0
Recursive set locking on all children of a group.
Marcin Kuzminski <marcin@python-works.com>
parents:
2731
diff
changeset
|
1379 |
3459
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1380 def recursive_groups_and_repos(self): |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1381 """ |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1382 Recursive return all groups, with repositories in those groups |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1383 """ |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1384 return self._recursive_objects() |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1385 |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1386 def recursive_groups(self): |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1387 """ |
3473 | 1388 Returns all children groups for this group including children of children |
3459
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1389 """ |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1390 return self._recursive_objects(include_repos=False) |
94f251fda314
fixed issue with renaming repos group together with changing parents with multiple nested trees
Marcin Kuzminski <marcin@python-works.com>
parents:
3457
diff
changeset
|
1391 |
1593 | 1392 def get_new_name(self, group_name): |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1393 """ |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1394 returns new full group name based on parent and new name |
1591 | 1395 |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1396 :param group_name: |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1397 """ |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1398 path_prefix = (self.parent_group.full_path_splitted if |
1594 | 1399 self.parent_group else []) |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1400 return RepoGroup.url_sep().join(path_prefix + [group_name]) |
1538
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1401 |
27be8f94c207
implements #226 repo groups available by path
Marcin Kuzminski <marcin@python-works.com>
parents:
1530
diff
changeset
|
1402 |
1593 | 1403 class Permission(Base, BaseModel): |
226
c6526b7531e9
rewritten db manage script to use sqlalchemy. Fixed sqlalchemy models to more generic.
Marcin Kuzminski <marcin@python-works.com>
parents:
89
diff
changeset
|
1404 __tablename__ = 'permissions' |
2149 | 1405 __table_args__ = ( |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
1406 Index('p_perm_name_idx', 'permission_name'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1407 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1408 'mysql_charset': 'utf8'}, |
1409 ) | |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1410 PERMS = [ |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1411 ('hg.admin', _('RhodeCode Administrator')), |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1412 |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1413 ('repository.none', _('Repository no access')), |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1414 ('repository.read', _('Repository read access')), |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1415 ('repository.write', _('Repository write access')), |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1416 ('repository.admin', _('Repository admin access')), |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1417 |
3416
5706f6ab60cf
follow-up on texts missing from 'users groups'/'repositories group' cleanup
Mads Kiilerich <madski@unity3d.com>
parents:
3370
diff
changeset
|
1418 ('group.none', _('Repository group no access')), |
5706f6ab60cf
follow-up on texts missing from 'users groups'/'repositories group' cleanup
Mads Kiilerich <madski@unity3d.com>
parents:
3370
diff
changeset
|
1419 ('group.read', _('Repository group read access')), |
5706f6ab60cf
follow-up on texts missing from 'users groups'/'repositories group' cleanup
Mads Kiilerich <madski@unity3d.com>
parents:
3370
diff
changeset
|
1420 ('group.write', _('Repository group write access')), |
5706f6ab60cf
follow-up on texts missing from 'users groups'/'repositories group' cleanup
Mads Kiilerich <madski@unity3d.com>
parents:
3370
diff
changeset
|
1421 ('group.admin', _('Repository group admin access')), |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1422 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1423 ('usergroup.none', _('User group no access')), |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1424 ('usergroup.read', _('User group read access')), |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1425 ('usergroup.write', _('User group write access')), |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1426 ('usergroup.admin', _('User group admin access')), |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1427 |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1428 ('hg.repogroup.create.false', _('Repository Group creation disabled')), |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1429 ('hg.repogroup.create.true', _('Repository Group creation enabled')), |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1430 |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1431 ('hg.usergroup.create.false', _('User Group creation disabled')), |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1432 ('hg.usergroup.create.true', _('User Group creation enabled')), |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1433 |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1434 ('hg.create.none', _('Repository creation disabled')), |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1435 ('hg.create.repository', _('Repository creation enabled')), |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1436 |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1437 ('hg.fork.none', _('Repository forking disabled')), |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1438 ('hg.fork.repository', _('Repository forking enabled')), |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1439 |
3786
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1440 ('hg.register.none', _('Registration disabled')), |
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1441 ('hg.register.manual_activate', _('User Registration with manual account activation')), |
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1442 ('hg.register.auto_activate', _('User Registration with automatic account activation')), |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1443 |
3786
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1444 ('hg.extern_activate.manual', _('Manual activation of external account')), |
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1445 ('hg.extern_activate.auto', _('Automatic activation of external account')), |
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1446 |
2532
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1447 ] |
19de74e33fb0
Better descriptions of given permission overview in edit user view
Marcin Kuzminski <marcin@python-works.com>
parents:
2531
diff
changeset
|
1448 |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1449 #definition of system default permissions for DEFAULT user |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1450 DEFAULT_USER_PERMISSIONS = [ |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1451 'repository.read', |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1452 'group.read', |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1453 'usergroup.read', |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1454 'hg.create.repository', |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1455 'hg.fork.repository', |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1456 'hg.register.manual_activate', |
3786
222e6769e7b5
Added separate default permission for external_auth account
Marcin Kuzminski <marcin@python-works.com>
parents:
3773
diff
changeset
|
1457 'hg.extern_activate.auto', |
3733
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1458 ] |
af049a957506
fixed default permissions population during upgrades
Marcin Kuzminski <marcin@python-works.com>
parents:
3729
diff
changeset
|
1459 |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1460 # defines which permissions are more important higher the more important |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1461 # Weight defines which permissions are more important. |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1462 # The higher number the more important. |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1463 PERM_WEIGHTS = { |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1464 'repository.none': 0, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1465 'repository.read': 1, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1466 'repository.write': 3, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1467 'repository.admin': 4, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1468 |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1469 'group.none': 0, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1470 'group.read': 1, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1471 'group.write': 3, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1472 'group.admin': 4, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1473 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1474 'usergroup.none': 0, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1475 'usergroup.read': 1, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1476 'usergroup.write': 3, |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1477 'usergroup.admin': 4, |
3734
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1478 'hg.repogroup.create.false': 0, |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1479 'hg.repogroup.create.true': 1, |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1480 |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1481 'hg.usergroup.create.false': 0, |
a8f520540ab0
New default permissions definition for user group create
Marcin Kuzminski <marcin@python-works.com>
parents:
3733
diff
changeset
|
1482 'hg.usergroup.create.true': 1, |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1483 |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1484 'hg.fork.none': 0, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1485 'hg.fork.repository': 1, |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1486 'hg.create.none': 0, |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1487 'hg.create.repository': 1 |
2709
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1488 } |
d2d35cf2b351
RhodeCode now has a option to explicitly set forking permissions. ref #508
Marcin Kuzminski <marcin@python-works.com>
parents:
2708
diff
changeset
|
1489 |
1594 | 1490 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1491 permission_name = Column("permission_name", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1492 permission_longname = Column("permission_longname", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
1493 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1494 def __unicode__(self): |
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1495 return u"<%s('%s:%s')>" % ( |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1496 self.__class__.__name__, self.permission_id, self.permission_name |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1497 ) |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
1498 |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
1499 @classmethod |
1593 | 1500 def get_by_key(cls, key): |
1501 return cls.query().filter(cls.permission_name == key).scalar() | |
1266
a1bcfe58a1ab
Fixed #161 form saves the create repository permission.
Marcin Kuzminski <marcin@python-works.com>
parents:
1206
diff
changeset
|
1502 |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1503 @classmethod |
1744
d41a115d9a39
remove cache from default perms. In some cases of concurrent repo removal it crashed.
Marcin Kuzminski <marcin@python-works.com>
parents:
1733
diff
changeset
|
1504 def get_default_perms(cls, default_user_id): |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1505 q = Session().query(UserRepoToPerm, Repository, cls)\ |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1506 .join((Repository, UserRepoToPerm.repository_id == Repository.repo_id))\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1507 .join((cls, UserRepoToPerm.permission_id == cls.permission_id))\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1508 .filter(UserRepoToPerm.user_id == default_user_id) |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1509 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1510 return q.all() |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1511 |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1512 @classmethod |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1513 def get_default_group_perms(cls, default_user_id): |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1514 q = Session().query(UserRepoGroupToPerm, RepoGroup, cls)\ |
1982
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1515 .join((RepoGroup, UserRepoGroupToPerm.group_id == RepoGroup.group_id))\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1516 .join((cls, UserRepoGroupToPerm.permission_id == cls.permission_id))\ |
87f0800abc7b
#227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents:
1976
diff
changeset
|
1517 .filter(UserRepoGroupToPerm.user_id == default_user_id) |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1518 |
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1519 return q.all() |
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1520 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1521 @classmethod |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1522 def get_default_user_group_perms(cls, default_user_id): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1523 q = Session().query(UserUserGroupToPerm, UserGroup, cls)\ |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1524 .join((UserGroup, UserUserGroupToPerm.user_group_id == UserGroup.users_group_id))\ |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1525 .join((cls, UserUserGroupToPerm.permission_id == cls.permission_id))\ |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1526 .filter(UserUserGroupToPerm.user_id == default_user_id) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1527 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1528 return q.all() |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1529 |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1530 |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1531 class UserRepoToPerm(Base, BaseModel): |
296
29370bb76fa6
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
Marcin Kuzminski <marcin@python-works.com>
parents:
265
diff
changeset
|
1532 __tablename__ = 'repo_to_perm' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1533 __table_args__ = ( |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1534 UniqueConstraint('user_id', 'repository_id', 'permission_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1535 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1536 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1537 ) |
1594 | 1538 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1539 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
1540 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | |
1541 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None) | |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
1542 |
1593 | 1543 user = relationship('User') |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1544 repository = relationship('Repository') |
1593 | 1545 permission = relationship('Permission') |
399
f5c1eec9f376
rename repo2perm into repo_to_perm
Marcin Kuzminski <marcin@python-works.com>
parents:
392
diff
changeset
|
1546 |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1547 @classmethod |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1548 def create(cls, user, repository, permission): |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1549 n = cls() |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1550 n.user = user |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1551 n.repository = repository |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1552 n.permission = permission |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1553 Session().add(n) |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1554 return n |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1555 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1556 def __unicode__(self): |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1557 return u'<%s => %s >' % (self.user, self.repository) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1558 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1559 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1560 class UserUserGroupToPerm(Base, BaseModel): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1561 __tablename__ = 'user_user_group_to_perm' |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1562 __table_args__ = ( |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1563 UniqueConstraint('user_id', 'user_group_id', 'permission_id'), |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1564 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1565 'mysql_charset': 'utf8'} |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1566 ) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1567 user_user_group_to_perm_id = Column("user_user_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1568 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1569 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1570 user_group_id = Column("user_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1571 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1572 user = relationship('User') |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1573 user_group = relationship('UserGroup') |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1574 permission = relationship('Permission') |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1575 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1576 @classmethod |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1577 def create(cls, user, user_group, permission): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1578 n = cls() |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1579 n.user = user |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1580 n.user_group = user_group |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1581 n.permission = permission |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1582 Session().add(n) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1583 return n |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1584 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1585 def __unicode__(self): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1586 return u'<%s => %s >' % (self.user, self.user_group) |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1587 |
1800 | 1588 |
1593 | 1589 class UserToPerm(Base, BaseModel): |
399
f5c1eec9f376
rename repo2perm into repo_to_perm
Marcin Kuzminski <marcin@python-works.com>
parents:
392
diff
changeset
|
1590 __tablename__ = 'user_to_perm' |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1591 __table_args__ = ( |
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1592 UniqueConstraint('user_id', 'permission_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1593 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1594 'mysql_charset': 'utf8'} |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1595 ) |
1594 | 1596 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1597 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
1598 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
1599 |
1593 | 1600 user = relationship('User') |
1728
07e56179633e
- fixes celery sqlalchemy session issues for async forking
Marcin Kuzminski <marcin@python-works.com>
parents:
1727
diff
changeset
|
1601 permission = relationship('Permission', lazy='joined') |
399
f5c1eec9f376
rename repo2perm into repo_to_perm
Marcin Kuzminski <marcin@python-works.com>
parents:
392
diff
changeset
|
1602 |
3729
49e5d4fa01e9
add repr for UserToPerm
Marcin Kuzminski <marcin@python-works.com>
parents:
3717
diff
changeset
|
1603 def __unicode__(self): |
49e5d4fa01e9
add repr for UserToPerm
Marcin Kuzminski <marcin@python-works.com>
parents:
3717
diff
changeset
|
1604 return u'<%s => %s >' % (self.user, self.permission) |
49e5d4fa01e9
add repr for UserToPerm
Marcin Kuzminski <marcin@python-works.com>
parents:
3717
diff
changeset
|
1605 |
1014
6fdc3ff65fce
#56 added assignments of users groups into repository
Marcin Kuzminski <marcin@python-works.com>
parents:
1000
diff
changeset
|
1606 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1607 class UserGroupRepoToPerm(Base, BaseModel): |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1608 __tablename__ = 'users_group_repo_to_perm' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1609 __table_args__ = ( |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1610 UniqueConstraint('repository_id', 'users_group_id', 'permission_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1611 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1612 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1613 ) |
1594 | 1614 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1615 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) | |
1616 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | |
1617 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None) | |
958
7d1483f3170b
added user group to perm table
Marcin Kuzminski <marcin@python-works.com>
parents:
956
diff
changeset
|
1618 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1619 users_group = relationship('UserGroup') |
1593 | 1620 permission = relationship('Permission') |
1621 repository = relationship('Repository') | |
958
7d1483f3170b
added user group to perm table
Marcin Kuzminski <marcin@python-works.com>
parents:
956
diff
changeset
|
1622 |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1623 @classmethod |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1624 def create(cls, users_group, repository, permission): |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1625 n = cls() |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1626 n.users_group = users_group |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1627 n.repository = repository |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1628 n.permission = permission |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1629 Session().add(n) |
1729
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1630 return n |
da8ee2ef7f6d
implements #236 forking copy permission option
Marcin Kuzminski <marcin@python-works.com>
parents:
1728
diff
changeset
|
1631 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1632 def __unicode__(self): |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1633 return u'<UserGroupRepoToPerm:%s => %s >' % (self.users_group, self.repository) |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1634 |
1800 | 1635 |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1636 class UserGroupUserGroupToPerm(Base, BaseModel): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1637 __tablename__ = 'user_group_user_group_to_perm' |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1638 __table_args__ = ( |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1639 UniqueConstraint('target_user_group_id', 'user_group_id', 'permission_id'), |
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1640 CheckConstraint('target_user_group_id != user_group_id'), |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1641 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1642 'mysql_charset': 'utf8'} |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1643 ) |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1644 user_group_user_group_to_perm_id = Column("user_group_user_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1645 target_user_group_id = Column("target_user_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1646 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1647 user_group_id = Column("user_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1648 |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1649 target_user_group = relationship('UserGroup', primaryjoin='UserGroupUserGroupToPerm.target_user_group_id==UserGroup.users_group_id') |
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1650 user_group = relationship('UserGroup', primaryjoin='UserGroupUserGroupToPerm.user_group_id==UserGroup.users_group_id') |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1651 permission = relationship('Permission') |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1652 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1653 @classmethod |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1654 def create(cls, target_user_group, user_group, permission): |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1655 n = cls() |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1656 n.target_user_group = target_user_group |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1657 n.user_group = user_group |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1658 n.permission = permission |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1659 Session().add(n) |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1660 return n |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1661 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1662 def __unicode__(self): |
3788
d9b89874edf9
UserGroup on UserGroup permissions implementation.
Marcin Kuzminski <marcin@python-works.com>
parents:
3786
diff
changeset
|
1663 return u'<UserGroupUserGroup:%s => %s >' % (self.target_user_group, self.user_group) |
3714
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1664 |
7e3d89d9d3a2
- Manage User’s Groups: create, delete, rename, add/remove users inside.
Marcin Kuzminski <marcin@python-works.com>
parents:
3687
diff
changeset
|
1665 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1666 class UserGroupToPerm(Base, BaseModel): |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1667 __tablename__ = 'users_group_to_perm' |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1668 __table_args__ = ( |
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1669 UniqueConstraint('users_group_id', 'permission_id',), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1670 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1671 'mysql_charset': 'utf8'} |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1672 ) |
1594 | 1673 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1674 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) | |
1675 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) | |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1676 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1677 users_group = relationship('UserGroup') |
1593 | 1678 permission = relationship('Permission') |
1271
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1679 |
aa7e45ad0cea
Fixed permissions for users groups, group can have create repo permission now.
Marcin Kuzminski <marcin@python-works.com>
parents:
1266
diff
changeset
|
1680 |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1681 class UserRepoGroupToPerm(Base, BaseModel): |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1682 __tablename__ = 'user_repo_group_to_perm' |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1683 __table_args__ = ( |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1684 UniqueConstraint('user_id', 'group_id', 'permission_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1685 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1686 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1687 ) |
879
b19341623d48
added group to perm mapping table
Marcin Kuzminski <marcin@python-works.com>
parents:
878
diff
changeset
|
1688 |
1594 | 1689 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1690 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1691 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None) |
1594 | 1692 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
879
b19341623d48
added group to perm mapping table
Marcin Kuzminski <marcin@python-works.com>
parents:
878
diff
changeset
|
1693 |
1593 | 1694 user = relationship('User') |
2000
72c525a7e7ad
added migrations from 1.2.X to 1.3
Marcin Kuzminski <marcin@python-works.com>
parents:
1990
diff
changeset
|
1695 group = relationship('RepoGroup') |
1593 | 1696 permission = relationship('Permission') |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1697 |
1800 | 1698 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1699 class UserGroupRepoGroupToPerm(Base, BaseModel): |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1700 __tablename__ = 'users_group_repo_group_to_perm' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1701 __table_args__ = ( |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1702 UniqueConstraint('users_group_id', 'group_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1703 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1704 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1705 ) |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1706 |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1707 users_group_repo_group_to_perm_id = Column("users_group_repo_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1708 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None) |
1988
5eae67552695
db unique constraints fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1982
diff
changeset
|
1709 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None) |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1710 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None) |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1711 |
3417
fa6ba6727475
further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents:
3416
diff
changeset
|
1712 users_group = relationship('UserGroup') |
1633
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1713 permission = relationship('Permission') |
2c0d35e336b5
refactoring of models names for repoGroup permissions
Marcin Kuzminski <marcin@python-works.com>
parents:
1607
diff
changeset
|
1714 group = relationship('RepoGroup') |
879
b19341623d48
added group to perm mapping table
Marcin Kuzminski <marcin@python-works.com>
parents:
878
diff
changeset
|
1715 |
1800 | 1716 |
1593 | 1717 class Statistics(Base, BaseModel): |
493
2256c78afe53
implemented basic autoupdating statistics fetched from database
Marcin Kuzminski <marcin@python-works.com>
parents:
473
diff
changeset
|
1718 __tablename__ = 'statistics' |
2149 | 1719 __table_args__ = ( |
2150
a8c9c0094ddf
White space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2149
diff
changeset
|
1720 UniqueConstraint('repository_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1721 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1722 'mysql_charset': 'utf8'} |
1723 ) | |
1594 | 1724 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1725 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None) | |
1726 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False) | |
1727 commit_activity = Column("commit_activity", LargeBinary(1000000), nullable=False)#JSON data | |
1728 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data | |
1729 languages = Column("languages", LargeBinary(1000000), nullable=False)#JSON data | |
631
05528ad948c4
Hacking for git support,and new faster repo scan
Marcin Kuzminski <marcin@python-works.com>
parents:
549
diff
changeset
|
1730 |
1594 | 1731 repository = relationship('Repository', single_parent=True) |
399
f5c1eec9f376
rename repo2perm into repo_to_perm
Marcin Kuzminski <marcin@python-works.com>
parents:
392
diff
changeset
|
1732 |
1800 | 1733 |
1593 | 1734 class UserFollowing(Base, BaseModel): |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
1735 __tablename__ = 'user_followings' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1736 __table_args__ = ( |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1737 UniqueConstraint('user_id', 'follows_repository_id'), |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1738 UniqueConstraint('user_id', 'follows_user_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1739 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1740 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
1741 ) |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
1742 |
1594 | 1743 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
1744 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None) | |
1745 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None) | |
1746 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None) | |
1747 follows_from = Column('follows_from', DateTime(timezone=False), nullable=True, unique=None, default=datetime.datetime.now) | |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
1748 |
1594 | 1749 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id') |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
1750 |
1594 | 1751 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id') |
1752 follows_repository = relationship('Repository', order_by='Repository.repo_name') | |
734
49eb69d78988
implemented user dashboards, and following system.
Marcin Kuzminski <marcin@python-works.com>
parents:
713
diff
changeset
|
1753 |
1279
cb216757a62d
#179 Added followers page
Marcin Kuzminski <marcin@python-works.com>
parents:
1271
diff
changeset
|
1754 @classmethod |
1593 | 1755 def get_repo_followers(cls, repo_id): |
1756 return cls.query().filter(cls.follows_repo_id == repo_id) | |
1279
cb216757a62d
#179 Added followers page
Marcin Kuzminski <marcin@python-works.com>
parents:
1271
diff
changeset
|
1757 |
1800 | 1758 |
1593 | 1759 class CacheInvalidation(Base, BaseModel): |
670
e7c670cc03cb
Adde table for cache invalidation
Marcin Kuzminski <marcin@python-works.com>
parents:
667
diff
changeset
|
1760 __tablename__ = 'cache_invalidation' |
2149 | 1761 __table_args__ = ( |
1762 UniqueConstraint('cache_key'), | |
2352
90e06f53af8c
Implemented cache-map on main page to save executing select
Marcin Kuzminski <marcin@python-works.com>
parents:
2339
diff
changeset
|
1763 Index('key_idx', 'cache_key'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1764 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1765 'mysql_charset': 'utf8'}, |
1766 ) | |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1767 # cache_id, not used |
1594 | 1768 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True) |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1769 # cache_key as created by _get_cache_key |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1770 cache_key = Column("cache_key", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1771 # cache_args is a repo_name |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1772 cache_args = Column("cache_args", String(255, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None) |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1773 # instance sets cache_active True when it is caching, |
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1774 # other instances set cache_active to False to indicate that this cache is invalid |
1594 | 1775 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False) |
670
e7c670cc03cb
Adde table for cache invalidation
Marcin Kuzminski <marcin@python-works.com>
parents:
667
diff
changeset
|
1776 |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1777 def __init__(self, cache_key, repo_name=''): |
692
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
670
diff
changeset
|
1778 self.cache_key = cache_key |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1779 self.cache_args = repo_name |
692
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
670
diff
changeset
|
1780 self.cache_active = False |
cb0d9ce6ac5c
#50 on point cache invalidation changes.
Marcin Kuzminski <marcin@python-works.com>
parents:
670
diff
changeset
|
1781 |
2156
a27e4d44237e
Use __unicode__ instead of __repr__ in models.
Marcin Kuzminski <marcin@python-works.com>
parents:
2152
diff
changeset
|
1782 def __unicode__(self): |
3686
f18801f827da
repr of cache inv object show also now cache_active + some better logging
Marcin Kuzminski <marcin@python-works.com>
parents:
3685
diff
changeset
|
1783 return u"<%s('%s:%s[%s]')>" % (self.__class__.__name__, |
f18801f827da
repr of cache inv object show also now cache_active + some better logging
Marcin Kuzminski <marcin@python-works.com>
parents:
3685
diff
changeset
|
1784 self.cache_id, self.cache_key, self.cache_active) |
2352
90e06f53af8c
Implemented cache-map on main page to save executing select
Marcin Kuzminski <marcin@python-works.com>
parents:
2339
diff
changeset
|
1785 |
3687
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1786 def _cache_key_partition(self): |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1787 prefix, repo_name, suffix = self.cache_key.partition(self.cache_args) |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1788 return prefix, repo_name, suffix |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1789 |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1790 def get_prefix(self): |
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1791 """ |
3687
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1792 get prefix that might have been used in _get_cache_key to |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1793 generate self.cache_key. Only used for informational purposes |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1794 in repo_edit.html. |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1795 """ |
3687
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1796 # prefix, repo_name, suffix |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1797 return self._cache_key_partition()[0] |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1798 |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1799 def get_suffix(self): |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1800 """ |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1801 get suffix that might have been used in _get_cache_key to |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1802 generate self.cache_key. Only used for informational purposes |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1803 in repo_edit.html. |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1804 """ |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1805 # prefix, repo_name, suffix |
8849c07d8c62
fixed prefix extractions from cache keys + cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3686
diff
changeset
|
1806 return self._cache_key_partition()[2] |
2809
070d2eacd48b
Show cache keys in admin settings of repository
Marcin Kuzminski <marcin@python-works.com>
parents:
2808
diff
changeset
|
1807 |
2147
d25bd432bc3e
- #347 when running multiple RhodeCode instances, properly invalidates cache
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
1808 @classmethod |
3757
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1809 def clear_cache(cls): |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1810 """ |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1811 Delete all cache keys from database. |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1812 Should only be run when all instances are down and all entries thus stale. |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1813 """ |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1814 cls.query().delete() |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1815 Session().commit() |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1816 |
f08881dcc9eb
invalidate: clear CacheInvalidation when upgrading
Mads Kiilerich <madski@unity3d.com>
parents:
3734
diff
changeset
|
1817 @classmethod |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1818 def _get_cache_key(cls, key): |
2013
8530c3cd9d04
fixed issue with hybrid property for ldap_active
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
1819 """ |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1820 Wrapper for generating a unique cache key for this instance and "key". |
3682
cf65b2c1b69d
invalidation: some documentation and refactoring, second round
Mads Kiilerich <madski@unity3d.com>
parents:
3680
diff
changeset
|
1821 key must / will start with a repo_name which will be stored in .cache_args . |
2013
8530c3cd9d04
fixed issue with hybrid property for ldap_active
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
1822 """ |
2016
6020e3884a58
implements #212 moved default encoding variable into rhodecode-config. It's now possible to change
Marcin Kuzminski <marcin@python-works.com>
parents:
2013
diff
changeset
|
1823 import rhodecode |
3606
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1824 prefix = rhodecode.CONFIG.get('instance_id', '') |
c8ecfe42b285
invalidation: some documentation and refactoring
Mads Kiilerich <madski@unity3d.com>
parents:
3599
diff
changeset
|
1825 return "%s%s" % (prefix, key) |
2013
8530c3cd9d04
fixed issue with hybrid property for ldap_active
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
1826 |
8530c3cd9d04
fixed issue with hybrid property for ldap_active
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
1827 @classmethod |
3685
02e1e270bf93
invalidation: set_invalidate is (obviously) only used to invalidate the whole repo
Mads Kiilerich <madski@unity3d.com>
parents:
3684
diff
changeset
|
1828 def set_invalidate(cls, repo_name): |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1829 """ |
3685
02e1e270bf93
invalidation: set_invalidate is (obviously) only used to invalidate the whole repo
Mads Kiilerich <madski@unity3d.com>
parents:
3684
diff
changeset
|
1830 Mark all caches of a repo as invalid in the database. |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1831 """ |
3685
02e1e270bf93
invalidation: set_invalidate is (obviously) only used to invalidate the whole repo
Mads Kiilerich <madski@unity3d.com>
parents:
3684
diff
changeset
|
1832 inv_objs = Session().query(cls).filter(cls.cache_args == repo_name).all() |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1833 |
2147
d25bd432bc3e
- #347 when running multiple RhodeCode instances, properly invalidates cache
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
1834 try: |
d25bd432bc3e
- #347 when running multiple RhodeCode instances, properly invalidates cache
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
1835 for inv_obj in inv_objs: |
3685
02e1e270bf93
invalidation: set_invalidate is (obviously) only used to invalidate the whole repo
Mads Kiilerich <madski@unity3d.com>
parents:
3684
diff
changeset
|
1836 log.debug('marking %s key for invalidation based on repo_name=%s' |
02e1e270bf93
invalidation: set_invalidate is (obviously) only used to invalidate the whole repo
Mads Kiilerich <madski@unity3d.com>
parents:
3684
diff
changeset
|
1837 % (inv_obj, safe_str(repo_name))) |
3020
00498b3e4c88
Cleaned the way cache keys are invalidated
Marcin Kuzminski <marcin@python-works.com>
parents:
3018
diff
changeset
|
1838 inv_obj.cache_active = False |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1839 Session().add(inv_obj) |
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1840 Session().commit() |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1841 except Exception: |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1842 log.error(traceback.format_exc()) |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1843 Session().rollback() |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1844 |
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1845 @classmethod |
3773
8e2cd46f765b
invalidate: encapsulate how key is generated from repo_name and kind
Mads Kiilerich <madski@unity3d.com>
parents:
3772
diff
changeset
|
1846 def test_and_set_valid(cls, repo_name, kind, valid_cache_keys=None): |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1847 """ |
3772
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1848 Mark this cache key as active and currently cached. |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1849 Return True if the existing cache registration still was valid. |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1850 Return False to indicate that it had been invalidated and caches should be refreshed. |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1851 """ |
3773
8e2cd46f765b
invalidate: encapsulate how key is generated from repo_name and kind
Mads Kiilerich <madski@unity3d.com>
parents:
3772
diff
changeset
|
1852 |
8e2cd46f765b
invalidate: encapsulate how key is generated from repo_name and kind
Mads Kiilerich <madski@unity3d.com>
parents:
3772
diff
changeset
|
1853 key = (repo_name + '_' + kind) if kind else repo_name |
3772
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1854 cache_key = cls._get_cache_key(key) |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1855 |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1856 if valid_cache_keys and cache_key in valid_cache_keys: |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1857 return True |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1858 |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1859 try: |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1860 inv_obj = cls.query().filter(cls.cache_key == cache_key).scalar() |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1861 if not inv_obj: |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1862 inv_obj = CacheInvalidation(cache_key, repo_name) |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1863 was_valid = inv_obj.cache_active |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1864 inv_obj.cache_active = True |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1865 Session().add(inv_obj) |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1866 Session().commit() |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1867 return was_valid |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1868 except Exception: |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1869 log.error(traceback.format_exc()) |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1870 Session().rollback() |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1871 return False |
1607
e886f91fcb71
Cached readme generation
Marcin Kuzminski <marcin@python-works.com>
parents:
1594
diff
changeset
|
1872 |
2352
90e06f53af8c
Implemented cache-map on main page to save executing select
Marcin Kuzminski <marcin@python-works.com>
parents:
2339
diff
changeset
|
1873 @classmethod |
3772
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1874 def get_valid_cache_keys(cls): |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1875 """ |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1876 Return opaque object with information of which caches still are valid |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1877 and can be used without checking for invalidation. |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1878 """ |
910ad1ffee99
invalidation: merge .invalidate and .set_valid as .test_and_set_valid
Mads Kiilerich <madski@unity3d.com>
parents:
3759
diff
changeset
|
1879 return set(inv_obj.cache_key for inv_obj in cls.query().filter(cls.cache_active).all()) |
2352
90e06f53af8c
Implemented cache-map on main page to save executing select
Marcin Kuzminski <marcin@python-works.com>
parents:
2339
diff
changeset
|
1880 |
1665
36f77a46f291
Added cache options to some db getters
Marcin Kuzminski <marcin@python-works.com>
parents:
1634
diff
changeset
|
1881 |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1882 class ChangesetComment(Base, BaseModel): |
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1883 __tablename__ = 'changeset_comments' |
2149 | 1884 __table_args__ = ( |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
1885 Index('cc_revision_idx', 'revision'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
1886 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 1887 'mysql_charset': 'utf8'}, |
1888 ) | |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1889 comment_id = Column('comment_id', Integer(), nullable=False, primary_key=True) |
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1890 repo_id = Column('repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
1891 revision = Column('revision', String(40), nullable=True) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
1892 pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True) |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
1893 line_no = Column('line_no', Unicode(10), nullable=True) |
2724
29db53a79ab2
added highlight lines field in ChangesetComments, will be used
Marcin Kuzminski <marcin@python-works.com>
parents:
2709
diff
changeset
|
1894 hl_lines = Column('hl_lines', Unicode(512), nullable=True) |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
1895 f_path = Column('f_path', Unicode(1000), nullable=True) |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1896 user_id = Column('user_id', Integer(), ForeignKey('users.user_id'), nullable=False) |
2791
85bb0866d444
UnicodeText make mysql more happy
Marcin Kuzminski <marcin@python-works.com>
parents:
2766
diff
changeset
|
1897 text = Column('text', UnicodeText(25000), nullable=False) |
2639
f3e039e4dc49
Added created_on column to changeset comments for proper ordering.
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
1898 created_on = Column('created_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
f3e039e4dc49
Added created_on column to changeset comments for proper ordering.
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
1899 modified_at = Column('modified_at', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1900 |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1901 author = relationship('User', lazy='joined') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1902 repo = relationship('Repository') |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2674
diff
changeset
|
1903 status_change = relationship('ChangesetStatus', cascade="all, delete, delete-orphan") |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
1904 pull_request = relationship('PullRequest', lazy='joined') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1669
diff
changeset
|
1905 |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1906 @classmethod |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1907 def get_users(cls, revision=None, pull_request_id=None): |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1908 """ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1909 Returns user associated with this ChangesetComment. ie those |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1910 who actually commented |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1800
diff
changeset
|
1911 |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1912 :param cls: |
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1913 :param revision: |
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1914 """ |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
1915 q = Session().query(User)\ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1916 .join(ChangesetComment.author) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1917 if revision: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1918 q = q.filter(cls.revision == revision) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1919 elif pull_request_id: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1920 q = q.filter(cls.pull_request_id == pull_request_id) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
1921 return q.all() |
1886 | 1922 |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
1923 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1924 class ChangesetStatus(Base, BaseModel): |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1925 __tablename__ = 'changeset_statuses' |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1926 __table_args__ = ( |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
1927 Index('cs_revision_idx', 'revision'), |
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
1928 Index('cs_version_idx', 'version'), |
2287
8447d35b674e
Added simple versioning for changeset status
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
1929 UniqueConstraint('repo_id', 'revision', 'version'), |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1930 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1931 'mysql_charset': 'utf8'} |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1932 ) |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1933 STATUS_NOT_REVIEWED = DEFAULT = 'not_reviewed' |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1934 STATUS_APPROVED = 'approved' |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1935 STATUS_REJECTED = 'rejected' |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1936 STATUS_UNDER_REVIEW = 'under_review' |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1937 |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1938 STATUSES = [ |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1939 (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1940 (STATUS_APPROVED, _("Approved")), |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1941 (STATUS_REJECTED, _("Rejected")), |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1942 (STATUS_UNDER_REVIEW, _("Under Review")), |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1943 ] |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1944 |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1945 changeset_status_id = Column('changeset_status_id', Integer(), nullable=False, primary_key=True) |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1946 repo_id = Column('repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1947 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None) |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1948 revision = Column('revision', String(40), nullable=False) |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1949 status = Column('status', String(128), nullable=False, default=DEFAULT) |
2286
9265958e33bb
Show changes of status inside comments
Marcin Kuzminski <marcin@python-works.com>
parents:
2280
diff
changeset
|
1950 changeset_comment_id = Column('changeset_comment_id', Integer(), ForeignKey('changeset_comments.comment_id')) |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1951 modified_at = Column('modified_at', DateTime(), nullable=False, default=datetime.datetime.now) |
2287
8447d35b674e
Added simple versioning for changeset status
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
1952 version = Column('version', Integer(), nullable=False, default=0) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1953 pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1954 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1955 author = relationship('User', lazy='joined') |
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1956 repo = relationship('Repository') |
2286
9265958e33bb
Show changes of status inside comments
Marcin Kuzminski <marcin@python-works.com>
parents:
2280
diff
changeset
|
1957 comment = relationship('ChangesetComment', lazy='joined') |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1958 pull_request = relationship('PullRequest', lazy='joined') |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1959 |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1960 def __unicode__(self): |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1961 return u"<%s('%s:%s')>" % ( |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1962 self.__class__.__name__, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1963 self.status, self.author |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1964 ) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2480
diff
changeset
|
1965 |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2287
diff
changeset
|
1966 @classmethod |
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2287
diff
changeset
|
1967 def get_status_lbl(cls, value): |
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2287
diff
changeset
|
1968 return dict(cls.STATUSES).get(value) |
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2287
diff
changeset
|
1969 |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1970 @property |
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1971 def status_lbl(self): |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2287
diff
changeset
|
1972 return ChangesetStatus.get_status_lbl(self.status) |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2215
diff
changeset
|
1973 |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
1974 |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1975 class PullRequest(Base, BaseModel): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1976 __tablename__ = 'pull_requests' |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1977 __table_args__ = ( |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1978 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1979 'mysql_charset': 'utf8'}, |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1980 ) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1981 |
4049
3b5f32aeed36
comments: clarify in ui whether comments are for changeset or PR
Mads Kiilerich <madski@unity3d.com>
parents:
3971
diff
changeset
|
1982 # values for .status |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1983 STATUS_NEW = u'new' |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1984 STATUS_OPEN = u'open' |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1985 STATUS_CLOSED = u'closed' |
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1986 |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1987 pull_request_id = Column('pull_request_id', Integer(), nullable=False, primary_key=True) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1988 title = Column('title', Unicode(256), nullable=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
1989 description = Column('description', UnicodeText(10240), nullable=True) |
4049
3b5f32aeed36
comments: clarify in ui whether comments are for changeset or PR
Mads Kiilerich <madski@unity3d.com>
parents:
3971
diff
changeset
|
1990 status = Column('status', Unicode(256), nullable=False, default=STATUS_NEW) # only for closedness, not approve/reject/etc |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
1991 created_on = Column('created_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
1992 updated_on = Column('updated_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
1993 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1994 _revisions = Column('revisions', UnicodeText(20500)) # 500 revisions max |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1995 org_repo_id = Column('org_repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1996 org_ref = Column('org_ref', Unicode(256), nullable=False) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1997 other_repo_id = Column('other_repo_id', Integer(), ForeignKey('repositories.repo_id'), nullable=False) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1998 other_ref = Column('other_ref', Unicode(256), nullable=False) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
1999 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2000 @hybrid_property |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2001 def revisions(self): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2002 return self._revisions.split(':') |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2003 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2004 @revisions.setter |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2005 def revisions(self, val): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2006 self._revisions = ':'.join(val) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2007 |
3170
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2008 @property |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2009 def org_ref_parts(self): |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2010 return self.org_ref.split(':') |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2011 |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2012 @property |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2013 def other_ref_parts(self): |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2014 return self.other_ref.split(':') |
2ab2eed4a70a
implemented #725 Pull Request View - Show origin repo URL
Marcin Kuzminski <marcin@python-works.com>
parents:
3152
diff
changeset
|
2015 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
2016 author = relationship('User', lazy='joined') |
2674
a221706dab50
merged + fixed pull request #62: Implemented metatags and visualisation options.
Marcin Kuzminski <marcin@python-works.com>
parents:
2668
diff
changeset
|
2017 reviewers = relationship('PullRequestReviewers', |
2666
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
2018 cascade="all, delete, delete-orphan") |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2019 org_repo = relationship('Repository', primaryjoin='PullRequest.org_repo_id==Repository.repo_id') |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2020 other_repo = relationship('Repository', primaryjoin='PullRequest.other_repo_id==Repository.repo_id') |
2666
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
2021 statuses = relationship('ChangesetStatus') |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
2022 comments = relationship('ChangesetComment', |
c51fb1da6df2
cascade fixes for comments/pull-requests/reviewers
Marcin Kuzminski <marcin@python-works.com>
parents:
2665
diff
changeset
|
2023 cascade="all, delete, delete-orphan") |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2024 |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
2025 def is_closed(self): |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
2026 return self.status == self.STATUS_CLOSED |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2603
diff
changeset
|
2027 |
3264
565806c66c4d
Add new attr to pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
3246
diff
changeset
|
2028 @property |
565806c66c4d
Add new attr to pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
3246
diff
changeset
|
2029 def last_review_status(self): |
3274
567207469e95
laste_review status should only return if there are any statuses
Marcin Kuzminski <marcin@python-works.com>
parents:
3267
diff
changeset
|
2030 return self.statuses[-1].status if self.statuses else '' |
3264
565806c66c4d
Add new attr to pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
3246
diff
changeset
|
2031 |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2032 def __json__(self): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2033 return dict( |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2034 revisions=self.revisions |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2035 ) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2036 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2037 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2038 class PullRequestReviewers(Base, BaseModel): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2039 __tablename__ = 'pull_request_reviewers' |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2040 __table_args__ = ( |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2041 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2042 'mysql_charset': 'utf8'}, |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2043 ) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2044 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2045 def __init__(self, user=None, pull_request=None): |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2046 self.user = user |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2047 self.pull_request = pull_request |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2048 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2049 pull_requests_reviewers_id = Column('pull_requests_reviewers_id', Integer(), nullable=False, primary_key=True) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2050 pull_request_id = Column("pull_request_id", Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=False) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2051 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2052 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2053 user = relationship('User') |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2430
diff
changeset
|
2054 pull_request = relationship('PullRequest') |
1886 | 2055 |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2056 |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2057 class Notification(Base, BaseModel): |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2058 __tablename__ = 'notifications' |
2149 | 2059 __table_args__ = ( |
2463
b426ecc30319
Added some DB indexes to optimize queries
Marcin Kuzminski <marcin@python-works.com>
parents:
2462
diff
changeset
|
2060 Index('notification_type_idx', 'type'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
2061 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 2062 'mysql_charset': 'utf8'}, |
2063 ) | |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2064 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2065 TYPE_CHANGESET_COMMENT = u'cs_comment' |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2066 TYPE_MESSAGE = u'message' |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2067 TYPE_MENTION = u'mention' |
1731
31e6eb2fb4b2
implements #222 registration feedback
Marcin Kuzminski <marcin@python-works.com>
parents:
1729
diff
changeset
|
2068 TYPE_REGISTRATION = u'registration' |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
2218
diff
changeset
|
2069 TYPE_PULL_REQUEST = u'pull_request' |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
2070 TYPE_PULL_REQUEST_COMMENT = u'pull_request_comment' |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2071 |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2072 notification_id = Column('notification_id', Integer(), nullable=False, primary_key=True) |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2073 subject = Column('subject', Unicode(512), nullable=True) |
2588
32dd6896abcf
added status column to pull request + some small refactoring of models
Marcin Kuzminski <marcin@python-works.com>
parents:
2585
diff
changeset
|
2074 body = Column('body', UnicodeText(50000), nullable=True) |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2075 created_by = Column("created_by", Integer(), ForeignKey('users.user_id'), nullable=True) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2076 created_on = Column('created_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2077 type_ = Column('type', Unicode(256)) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2078 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2079 created_by_user = relationship('User') |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
2080 notifications_to_users = relationship('UserNotification', lazy='joined', |
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
2081 cascade="all, delete, delete-orphan") |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2082 |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2083 @property |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2084 def recipients(self): |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2085 return [x.user for x in UserNotification.query()\ |
2248
72542dc597be
fixed issue with empty APIKEYS on registration #438
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
2086 .filter(UserNotification.notification == self)\ |
2585
a52cee88d612
fixed sorting in recipients query of notifications
Marcin Kuzminski <marcin@python-works.com>
parents:
2562
diff
changeset
|
2087 .order_by(UserNotification.user_id.asc()).all()] |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2088 |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2089 @classmethod |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2090 def create(cls, created_by, subject, body, recipients, type_=None): |
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2091 if type_ is None: |
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2092 type_ = Notification.TYPE_MESSAGE |
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2093 |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2094 notification = cls() |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2095 notification.created_by_user = created_by |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2096 notification.subject = subject |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2097 notification.body = body |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2098 notification.type_ = type_ |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
2099 notification.created_on = datetime.datetime.now() |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2100 |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2101 for u in recipients: |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2102 assoc = UserNotification() |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2103 assoc.notification = notification |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2104 u.notifications.append(assoc) |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
2105 Session().add(notification) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2106 return notification |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2107 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2108 @property |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2109 def description(self): |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2110 from rhodecode.model.notification import NotificationModel |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2111 return NotificationModel().make_description(self) |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2112 |
1800 | 2113 |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2114 class UserNotification(Base, BaseModel): |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2115 __tablename__ = 'user_to_notification' |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
2116 __table_args__ = ( |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
2117 UniqueConstraint('user_id', 'notification_id'), |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
2118 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 2119 'mysql_charset': 'utf8'} |
1958
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
2120 ) |
7e4b3d3a9c5c
renamed repo groups table
Marcin Kuzminski <marcin@python-works.com>
parents:
1950
diff
changeset
|
2121 user_id = Column('user_id', Integer(), ForeignKey('users.user_id'), primary_key=True) |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2122 notification_id = Column("notification_id", Integer(), ForeignKey('notifications.notification_id'), primary_key=True) |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1702
diff
changeset
|
2123 read = Column('read', Boolean, default=False) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2124 sent_on = Column('sent_on', DateTime(timezone=False), nullable=True, unique=None) |
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2125 |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
2126 user = relationship('User', lazy="joined") |
1717
7ff304d3028f
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
1716
diff
changeset
|
2127 notification = relationship('Notification', lazy="joined", |
1960
3daa7093fbbb
fix typo in db models
Marcin Kuzminski <marcin@python-works.com>
parents:
1958
diff
changeset
|
2128 order_by=lambda: Notification.created_on.desc(),) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2129 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2130 def mark_as_read(self): |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
2131 self.read = True |
2520
a1e156503afe
Fixed calls to Session in db model
Marcin Kuzminski <marcin@python-works.com>
parents:
2510
diff
changeset
|
2132 Session().add(self) |
1702
8cb7f5c4d494
#302 - basic notification system, models+tests
Marcin Kuzminski <marcin@python-works.com>
parents:
1693
diff
changeset
|
2133 |
1800 | 2134 |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2135 class Gist(Base, BaseModel): |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2136 __tablename__ = 'gists' |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2137 __table_args__ = ( |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2138 Index('g_gist_access_id_idx', 'gist_access_id'), |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2139 Index('g_created_on_idx', 'created_on'), |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2140 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
3957
b87def4b3cbb
Add autoincrement for sqlite into Gist table.
Marcin Kuzminski <marcin@python-works.com>
parents:
3942
diff
changeset
|
2141 'mysql_charset': 'utf8', 'sqlite_autoincrement': True} |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2142 ) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2143 GIST_PUBLIC = u'public' |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2144 GIST_PRIVATE = u'private' |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2145 |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2146 gist_id = Column('gist_id', Integer(), primary_key=True) |
3870
b08a3f8a4148
decrease column size for gist_access_id.
Marcin Kuzminski <marcin@python-works.com>
parents:
3869
diff
changeset
|
2147 gist_access_id = Column('gist_access_id', Unicode(250)) |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2148 gist_description = Column('gist_description', UnicodeText(1024)) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2149 gist_owner = Column('user_id', Integer(), ForeignKey('users.user_id'), nullable=True) |
3971
7f71d22a1794
Fixed issues with how mysql handles float values. Caused gists with
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
2150 gist_expires = Column('gist_expires', Float(53), nullable=False) |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2151 gist_type = Column('gist_type', Unicode(128), nullable=False) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2152 created_on = Column('created_on', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2153 modified_at = Column('modified_at', DateTime(timezone=False), nullable=False, default=datetime.datetime.now) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2154 |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2155 owner = relationship('User') |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2156 |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2157 @classmethod |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2158 def get_or_404(cls, id_): |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2159 res = cls.query().filter(cls.gist_access_id == id_).scalar() |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2160 if not res: |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2161 raise HTTPNotFound |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2162 return res |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2163 |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2164 @classmethod |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2165 def get_by_access_id(cls, gist_access_id): |
3842
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2166 return cls.query().filter(cls.gist_access_id == gist_access_id).scalar() |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2167 |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2168 def gist_url(self): |
3850
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
2169 import rhodecode |
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
2170 alias_url = rhodecode.CONFIG.get('gist_alias_url') |
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
2171 if alias_url: |
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
2172 return alias_url.replace('{gistid}', self.gist_access_id) |
7a4df261a375
added alias configuration option for gists.
Marcin Kuzminski <marcin@python-works.com>
parents:
3842
diff
changeset
|
2173 |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2174 from pylons import url |
3866
1fdec7e3aeb2
refactored url.resource to full definition of routes
Marcin Kuzminski <marcin@python-works.com>
parents:
3850
diff
changeset
|
2175 return url('gist', gist_id=self.gist_access_id, qualified=True) |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2176 |
3842
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2177 @classmethod |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2178 def base_path(cls): |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2179 """ |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2180 Returns base path when all gists are stored |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2181 |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2182 :param cls: |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2183 """ |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2184 from rhodecode.model.gist import GIST_STORE_LOC |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2185 q = Session().query(RhodeCodeUi)\ |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2186 .filter(RhodeCodeUi.ui_key == URL_SEP) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2187 q = q.options(FromCache("sql_cache_short", "repository_repo_path")) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2188 return os.path.join(q.one().ui_value, GIST_STORE_LOC) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2189 |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2190 def get_api_data(self): |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2191 """ |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2192 Common function for generating gist related data for API |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2193 """ |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2194 gist = self |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2195 data = dict( |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2196 gist_id=gist.gist_id, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2197 type=gist.gist_type, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2198 access_id=gist.gist_access_id, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2199 description=gist.gist_description, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2200 url=gist.gist_url(), |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2201 expires=gist.gist_expires, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2202 created_on=gist.created_on, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2203 ) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2204 return data |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2205 |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2206 def __json__(self): |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2207 data = dict( |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2208 ) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2209 data.update(self.get_api_data()) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2210 return data |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2211 ## SCM functions |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2212 |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2213 @property |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2214 def scm_instance(self): |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2215 from rhodecode.lib.vcs import get_repo |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2216 base_path = self.base_path() |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2217 return get_repo(os.path.join(*map(safe_str, |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2218 [base_path, self.gist_access_id]))) |
54bc7a89f090
gists: add some API related code improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
2219 |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3808
diff
changeset
|
2220 |
1593 | 2221 class DbMigrateVersion(Base, BaseModel): |
834
8924ed0e4f36
added current db version into rhodecode,
Marcin Kuzminski <marcin@python-works.com>
parents:
832
diff
changeset
|
2222 __tablename__ = 'db_migrate_version' |
2149 | 2223 __table_args__ = ( |
2356
2da7b5984ae5
typo fix + code garden
Marcin Kuzminski <marcin@python-works.com>
parents:
2352
diff
changeset
|
2224 {'extend_existing': True, 'mysql_engine': 'InnoDB', |
2149 | 2225 'mysql_charset': 'utf8'}, |
2226 ) | |
1594 | 2227 repository_id = Column('repository_id', String(250), primary_key=True) |
1593 | 2228 repository_path = Column('repository_path', Text) |
2229 version = Column('version', Integer) |