##// END OF EJS Templates
updated config files, and changed model repo_followers to followers
marcink -
r1034:9e59b16d beta
parent child Browse files
Show More
@@ -1,205 +1,218 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # rhodecode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 ################################################################################
10 ################################################################################
11 ## Uncomment and replace with the address which should receive ##
11 ## Uncomment and replace with the address which should receive ##
12 ## any error reports after application crash ##
12 ## any error reports after application crash ##
13 ## Additionally those settings will be used by rhodecode mailing system ##
13 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ################################################################################
14 ################################################################################
15 #email_to = admin@localhost
15 #email_to = admin@localhost
16 #error_email_from = paste_error@localhost
16 #error_email_from = paste_error@localhost
17 #app_email_from = rhodecode-noreply@localhost
17 #app_email_from = rhodecode-noreply@localhost
18 #error_message =
18 #error_message =
19
19
20 #smtp_server = mail.server.com
20 #smtp_server = mail.server.com
21 #smtp_username =
21 #smtp_username =
22 #smtp_password =
22 #smtp_password =
23 #smtp_port =
23 #smtp_port =
24 #smtp_use_tls = false
24 #smtp_use_tls = false
25 #smtp_use_ssl = true
25 #smtp_use_ssl = true
26
26
27 [server:main]
27 [server:main]
28 ##nr of threads to spawn
28 ##nr of threads to spawn
29 threadpool_workers = 5
29 threadpool_workers = 5
30
30
31 ##max request before thread respawn
31 ##max request before thread respawn
32 threadpool_max_requests = 2
32 threadpool_max_requests = 2
33
33
34 ##option to use threads of process
34 ##option to use threads of process
35 use_threadpool = true
35 use_threadpool = true
36
36
37 use = egg:Paste#http
37 use = egg:Paste#http
38 host = 127.0.0.1
38 host = 127.0.0.1
39 port = 8001
39 port = 8001
40
40
41 [app:main]
41 [app:main]
42 use = egg:rhodecode
42 use = egg:rhodecode
43 full_stack = true
43 full_stack = true
44 static_files = false
44 static_files = false
45 lang=en
45 lang=en
46 cache_dir = %(here)s/data
46 cache_dir = %(here)s/data
47 index_dir = %(here)s/data/index
47 index_dir = %(here)s/data/index
48 cut_off_limit = 256000
48 cut_off_limit = 256000
49 force_https = false
49 force_https = false
50
50
51 ####################################
51 ####################################
52 ### CELERY CONFIG ####
52 ### CELERY CONFIG ####
53 ####################################
53 ####################################
54 use_celery = false
54 use_celery = false
55 broker.host = localhost
55 broker.host = localhost
56 broker.vhost = rabbitmqhost
56 broker.vhost = rabbitmqhost
57 broker.port = 5672
57 broker.port = 5672
58 broker.user = rabbitmq
58 broker.user = rabbitmq
59 broker.password = qweqwe
59 broker.password = qweqwe
60
60
61 celery.imports = rhodecode.lib.celerylib.tasks
61 celery.imports = rhodecode.lib.celerylib.tasks
62
62
63 celery.result.backend = amqp
63 celery.result.backend = amqp
64 celery.result.dburi = amqp://
64 celery.result.dburi = amqp://
65 celery.result.serialier = json
65 celery.result.serialier = json
66
66
67 #celery.send.task.error.emails = true
67 #celery.send.task.error.emails = true
68 #celery.amqp.task.result.expires = 18000
68 #celery.amqp.task.result.expires = 18000
69
69
70 celeryd.concurrency = 2
70 celeryd.concurrency = 2
71 #celeryd.log.file = celeryd.log
71 #celeryd.log.file = celeryd.log
72 celeryd.log.level = debug
72 celeryd.log.level = debug
73 celeryd.max.tasks.per.child = 3
73 celeryd.max.tasks.per.child = 3
74
74
75 #tasks will never be sent to the queue, but executed locally instead.
75 #tasks will never be sent to the queue, but executed locally instead.
76 celery.always.eager = false
76 celery.always.eager = false
77
77
78 ####################################
78 ####################################
79 ### BEAKER CACHE ####
79 ### BEAKER CACHE ####
80 ####################################
80 ####################################
81 beaker.cache.data_dir=/%(here)s/data/cache/data
81 beaker.cache.data_dir=%(here)s/data/cache/data
82 beaker.cache.lock_dir=/%(here)s/data/cache/lock
82 beaker.cache.lock_dir=%(here)s/data/cache/lock
83
83 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
84 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
84
85
85 beaker.cache.super_short_term.type=memory
86 beaker.cache.super_short_term.type=memory
86 beaker.cache.super_short_term.expire=10
87 beaker.cache.super_short_term.expire=10
87
88
88 beaker.cache.short_term.type=memory
89 beaker.cache.short_term.type=memory
89 beaker.cache.short_term.expire=60
90 beaker.cache.short_term.expire=60
90
91
91 beaker.cache.long_term.type=memory
92 beaker.cache.long_term.type=memory
92 beaker.cache.long_term.expire=36000
93 beaker.cache.long_term.expire=36000
93
94
94
95
95 beaker.cache.sql_cache_short.type=memory
96 beaker.cache.sql_cache_short.type=memory
96 beaker.cache.sql_cache_short.expire=5
97 beaker.cache.sql_cache_short.expire=10
97
98
98 beaker.cache.sql_cache_med.type=memory
99 beaker.cache.sql_cache_med.type=memory
99 beaker.cache.sql_cache_med.expire=360
100 beaker.cache.sql_cache_med.expire=360
100
101
101 beaker.cache.sql_cache_long.type=file
102 beaker.cache.sql_cache_long.type=file
102 beaker.cache.sql_cache_long.expire=3600
103 beaker.cache.sql_cache_long.expire=3600
103
104
104 ####################################
105 ####################################
105 ### BEAKER SESSION ####
106 ### BEAKER SESSION ####
106 ####################################
107 ####################################
107 ## Type of storage used for the session, current types are
108 ## Type of storage used for the session, current types are
108 ## dbm, file, memcached, database, and memory.
109 ## dbm, file, memcached, database, and memory.
109 ## The storage uses the Container API
110 ## The storage uses the Container API
110 ##that is also used by the cache system.
111 ##that is also used by the cache system.
111 beaker.session.type = file
112 beaker.session.type = file
112
113
113 beaker.session.key = rhodecode
114 beaker.session.key = rhodecode
114 beaker.session.secret = g654dcno0-9873jhgfreyu
115 beaker.session.secret = g654dcno0-9873jhgfreyu
115 beaker.session.timeout = 36000
116 beaker.session.timeout = 36000
116
117
117 ##auto save the session to not to use .save()
118 ##auto save the session to not to use .save()
118 beaker.session.auto = False
119 beaker.session.auto = False
119
120
120 ##true exire at browser close
121 ##true exire at browser close
121 #beaker.session.cookie_expires = 3600
122 #beaker.session.cookie_expires = 3600
122
123
123
124
124 ################################################################################
125 ################################################################################
125 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
126 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
126 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
127 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
127 ## execute malicious code after an exception is raised. ##
128 ## execute malicious code after an exception is raised. ##
128 ################################################################################
129 ################################################################################
129 set debug = false
130 set debug = false
130
131
131 ##################################
132 ##################################
132 ### LOGVIEW CONFIG ###
133 ### LOGVIEW CONFIG ###
133 ##################################
134 ##################################
134 logview.sqlalchemy = #faa
135 logview.sqlalchemy = #faa
135 logview.pylons.templating = #bfb
136 logview.pylons.templating = #bfb
136 logview.pylons.util = #eee
137 logview.pylons.util = #eee
137
138
138 #########################################################
139 #########################################################
139 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
140 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
140 #########################################################
141 #########################################################
141 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
142 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
142 #sqlalchemy.db1.echo = False
143 #sqlalchemy.db1.echo = False
143 #sqlalchemy.db1.pool_recycle = 3600
144 #sqlalchemy.db1.pool_recycle = 3600
144 sqlalchemy.convert_unicode = true
145 sqlalchemy.convert_unicode = true
145
146
146 ################################
147 ################################
147 ### LOGGING CONFIGURATION ####
148 ### LOGGING CONFIGURATION ####
148 ################################
149 ################################
149 [loggers]
150 [loggers]
150 keys = root, routes, rhodecode, sqlalchemy
151 keys = root, routes, rhodecode, sqlalchemy,beaker,templates
151
152
152 [handlers]
153 [handlers]
153 keys = console
154 keys = console
154
155
155 [formatters]
156 [formatters]
156 keys = generic,color_formatter
157 keys = generic,color_formatter
157
158
158 #############
159 #############
159 ## LOGGERS ##
160 ## LOGGERS ##
160 #############
161 #############
161 [logger_root]
162 [logger_root]
162 level = INFO
163 level = INFO
163 handlers = console
164 handlers = console
164
165
165 [logger_routes]
166 [logger_routes]
166 level = INFO
167 level = INFO
167 handlers = console
168 handlers = console
168 qualname = routes.middleware
169 qualname = routes.middleware
169 # "level = DEBUG" logs the route matched and routing variables.
170 # "level = DEBUG" logs the route matched and routing variables.
170 propagate = 0
171 propagate = 0
171
172
173 [logger_beaker]
174 level = ERROR
175 handlers = console
176 qualname = beaker.container
177 propagate = 0
178
179 [logger_templates]
180 level = INFO
181 handlers = console
182 qualname = pylons.templating
183 propagate = 0
184
172 [logger_rhodecode]
185 [logger_rhodecode]
173 level = DEBUG
186 level = DEBUG
174 handlers = console
187 handlers = console
175 qualname = rhodecode
188 qualname = rhodecode
176 propagate = 0
189 propagate = 0
177
190
178 [logger_sqlalchemy]
191 [logger_sqlalchemy]
179 level = ERROR
192 level = ERROR
180 handlers = console
193 handlers = console
181 qualname = sqlalchemy.engine
194 qualname = sqlalchemy.engine
182 propagate = 0
195 propagate = 0
183
196
184 ##############
197 ##############
185 ## HANDLERS ##
198 ## HANDLERS ##
186 ##############
199 ##############
187
200
188 [handler_console]
201 [handler_console]
189 class = StreamHandler
202 class = StreamHandler
190 args = (sys.stderr,)
203 args = (sys.stderr,)
191 level = NOTSET
204 level = NOTSET
192 formatter = color_formatter
205 formatter = color_formatter
193
206
194 ################
207 ################
195 ## FORMATTERS ##
208 ## FORMATTERS ##
196 ################
209 ################
197
210
198 [formatter_generic]
211 [formatter_generic]
199 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
212 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
200 datefmt = %Y-%m-%d %H:%M:%S
213 datefmt = %Y-%m-%d %H:%M:%S
201
214
202 [formatter_color_formatter]
215 [formatter_color_formatter]
203 class=rhodecode.lib.colored_formatter.ColorFormatter
216 class=rhodecode.lib.colored_formatter.ColorFormatter
204 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
217 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
205 datefmt = %Y-%m-%d %H:%M:%S No newline at end of file
218 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,205 +1,218 b''
1 ################################################################################
1 ################################################################################
2 ################################################################################
2 ################################################################################
3 # RhodeCode - Pylons environment configuration #
3 # RhodeCode - Pylons environment configuration #
4 # #
4 # #
5 # The %(here)s variable will be replaced with the parent directory of this file#
5 # The %(here)s variable will be replaced with the parent directory of this file#
6 ################################################################################
6 ################################################################################
7
7
8 [DEFAULT]
8 [DEFAULT]
9 debug = true
9 debug = true
10 ################################################################################
10 ################################################################################
11 ## Uncomment and replace with the address which should receive ##
11 ## Uncomment and replace with the address which should receive ##
12 ## any error reports after application crash ##
12 ## any error reports after application crash ##
13 ## Additionally those settings will be used by RhodeCode mailing system ##
13 ## Additionally those settings will be used by RhodeCode mailing system ##
14 ################################################################################
14 ################################################################################
15 #email_to = admin@localhost
15 #email_to = admin@localhost
16 #error_email_from = paste_error@localhost
16 #error_email_from = paste_error@localhost
17 #app_email_from = rhodecode-noreply@localhost
17 #app_email_from = rhodecode-noreply@localhost
18 #error_message =
18 #error_message =
19
19
20 #smtp_server = mail.server.com
20 #smtp_server = mail.server.com
21 #smtp_username =
21 #smtp_username =
22 #smtp_password =
22 #smtp_password =
23 #smtp_port =
23 #smtp_port =
24 #smtp_use_tls = false
24 #smtp_use_tls = false
25 #smtp_use_ssl = true
25 #smtp_use_ssl = true
26
26
27 [server:main]
27 [server:main]
28 ##nr of threads to spawn
28 ##nr of threads to spawn
29 threadpool_workers = 5
29 threadpool_workers = 5
30
30
31 ##max request before thread respawn
31 ##max request before thread respawn
32 threadpool_max_requests = 10
32 threadpool_max_requests = 10
33
33
34 ##option to use threads of process
34 ##option to use threads of process
35 use_threadpool = true
35 use_threadpool = true
36
36
37 use = egg:Paste#http
37 use = egg:Paste#http
38 host = 127.0.0.1
38 host = 127.0.0.1
39 port = 5000
39 port = 5000
40
40
41 [app:main]
41 [app:main]
42 use = egg:rhodecode
42 use = egg:rhodecode
43 full_stack = true
43 full_stack = true
44 static_files = true
44 static_files = true
45 lang=en
45 lang=en
46 cache_dir = %(here)s/data
46 cache_dir = %(here)s/data
47 index_dir = %(here)s/data/index
47 index_dir = %(here)s/data/index
48 app_instance_uuid = ${app_instance_uuid}
48 app_instance_uuid = ${app_instance_uuid}
49 cut_off_limit = 256000
49 cut_off_limit = 256000
50 force_https = false
50 force_https = false
51
51
52 ####################################
52 ####################################
53 ### CELERY CONFIG ####
53 ### CELERY CONFIG ####
54 ####################################
54 ####################################
55 use_celery = false
55 use_celery = false
56 broker.host = localhost
56 broker.host = localhost
57 broker.vhost = rabbitmqhost
57 broker.vhost = rabbitmqhost
58 broker.port = 5672
58 broker.port = 5672
59 broker.user = rabbitmq
59 broker.user = rabbitmq
60 broker.password = qweqwe
60 broker.password = qweqwe
61
61
62 celery.imports = rhodecode.lib.celerylib.tasks
62 celery.imports = rhodecode.lib.celerylib.tasks
63
63
64 celery.result.backend = amqp
64 celery.result.backend = amqp
65 celery.result.dburi = amqp://
65 celery.result.dburi = amqp://
66 celery.result.serialier = json
66 celery.result.serialier = json
67
67
68 #celery.send.task.error.emails = true
68 #celery.send.task.error.emails = true
69 #celery.amqp.task.result.expires = 18000
69 #celery.amqp.task.result.expires = 18000
70
70
71 celeryd.concurrency = 2
71 celeryd.concurrency = 2
72 #celeryd.log.file = celeryd.log
72 #celeryd.log.file = celeryd.log
73 celeryd.log.level = debug
73 celeryd.log.level = debug
74 celeryd.max.tasks.per.child = 3
74 celeryd.max.tasks.per.child = 3
75
75
76 #tasks will never be sent to the queue, but executed locally instead.
76 #tasks will never be sent to the queue, but executed locally instead.
77 celery.always.eager = false
77 celery.always.eager = false
78
78
79 ####################################
79 ####################################
80 ### BEAKER CACHE ####
80 ### BEAKER CACHE ####
81 ####################################
81 ####################################
82 beaker.cache.data_dir=/%(here)s/data/cache/data
82 beaker.cache.data_dir=%(here)s/data/cache/data
83 beaker.cache.lock_dir=/%(here)s/data/cache/lock
83 beaker.cache.lock_dir=%(here)s/data/cache/lock
84
84 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
85 beaker.cache.regions=super_short_term,short_term,long_term,sql_cache_short,sql_cache_med,sql_cache_long
85
86
86 beaker.cache.super_short_term.type=memory
87 beaker.cache.super_short_term.type=memory
87 beaker.cache.super_short_term.expire=10
88 beaker.cache.super_short_term.expire=10
88
89
89 beaker.cache.short_term.type=memory
90 beaker.cache.short_term.type=memory
90 beaker.cache.short_term.expire=60
91 beaker.cache.short_term.expire=60
91
92
92 beaker.cache.long_term.type=memory
93 beaker.cache.long_term.type=memory
93 beaker.cache.long_term.expire=36000
94 beaker.cache.long_term.expire=36000
94
95
95 beaker.cache.sql_cache_short.type=memory
96 beaker.cache.sql_cache_short.type=memory
96 beaker.cache.sql_cache_short.expire=10
97 beaker.cache.sql_cache_short.expire=10
97
98
98 beaker.cache.sql_cache_med.type=memory
99 beaker.cache.sql_cache_med.type=memory
99 beaker.cache.sql_cache_med.expire=360
100 beaker.cache.sql_cache_med.expire=360
100
101
101 beaker.cache.sql_cache_long.type=file
102 beaker.cache.sql_cache_long.type=file
102 beaker.cache.sql_cache_long.expire=3600
103 beaker.cache.sql_cache_long.expire=3600
103
104
104 ####################################
105 ####################################
105 ### BEAKER SESSION ####
106 ### BEAKER SESSION ####
106 ####################################
107 ####################################
107 ## Type of storage used for the session, current types are
108 ## Type of storage used for the session, current types are
108 ## dbm, file, memcached, database, and memory.
109 ## dbm, file, memcached, database, and memory.
109 ## The storage uses the Container API
110 ## The storage uses the Container API
110 ##that is also used by the cache system.
111 ##that is also used by the cache system.
111 beaker.session.type = file
112 beaker.session.type = file
112
113
113 beaker.session.key = rhodecode
114 beaker.session.key = rhodecode
114 beaker.session.secret = ${app_instance_secret}
115 beaker.session.secret = ${app_instance_secret}
115 beaker.session.timeout = 36000
116 beaker.session.timeout = 36000
116
117
117 ##auto save the session to not to use .save()
118 ##auto save the session to not to use .save()
118 beaker.session.auto = False
119 beaker.session.auto = False
119
120
120 ##true exire at browser close
121 ##true exire at browser close
121 #beaker.session.cookie_expires = 3600
122 #beaker.session.cookie_expires = 3600
122
123
123
124
124 ################################################################################
125 ################################################################################
125 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
126 ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ##
126 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
127 ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
127 ## execute malicious code after an exception is raised. ##
128 ## execute malicious code after an exception is raised. ##
128 ################################################################################
129 ################################################################################
129 set debug = false
130 set debug = false
130
131
131 ##################################
132 ##################################
132 ### LOGVIEW CONFIG ###
133 ### LOGVIEW CONFIG ###
133 ##################################
134 ##################################
134 logview.sqlalchemy = #faa
135 logview.sqlalchemy = #faa
135 logview.pylons.templating = #bfb
136 logview.pylons.templating = #bfb
136 logview.pylons.util = #eee
137 logview.pylons.util = #eee
137
138
138 #########################################################
139 #########################################################
139 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
140 ### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
140 #########################################################
141 #########################################################
141 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
142 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db
142 #sqlalchemy.db1.echo = False
143 #sqlalchemy.db1.echo = False
143 #sqlalchemy.db1.pool_recycle = 3600
144 #sqlalchemy.db1.pool_recycle = 3600
144 sqlalchemy.convert_unicode = true
145 sqlalchemy.convert_unicode = true
145
146
146 ################################
147 ################################
147 ### LOGGING CONFIGURATION ####
148 ### LOGGING CONFIGURATION ####
148 ################################
149 ################################
149 [loggers]
150 [loggers]
150 keys = root, routes, rhodecode, sqlalchemy
151 keys = root, routes, rhodecode, sqlalchemy,beaker,templates
151
152
152 [handlers]
153 [handlers]
153 keys = console
154 keys = console
154
155
155 [formatters]
156 [formatters]
156 keys = generic,color_formatter
157 keys = generic,color_formatter
157
158
158 #############
159 #############
159 ## LOGGERS ##
160 ## LOGGERS ##
160 #############
161 #############
161 [logger_root]
162 [logger_root]
162 level = INFO
163 level = INFO
163 handlers = console
164 handlers = console
164
165
165 [logger_routes]
166 [logger_routes]
166 level = INFO
167 level = INFO
167 handlers = console
168 handlers = console
168 qualname = routes.middleware
169 qualname = routes.middleware
169 # "level = DEBUG" logs the route matched and routing variables.
170 # "level = DEBUG" logs the route matched and routing variables.
170 propagate = 0
171 propagate = 0
171
172
173 [logger_beaker]
174 level = ERROR
175 handlers = console
176 qualname = beaker.container
177 propagate = 0
178
179 [logger_templates]
180 level = INFO
181 handlers = console
182 qualname = pylons.templating
183 propagate = 0
184
172 [logger_rhodecode]
185 [logger_rhodecode]
173 level = DEBUG
186 level = DEBUG
174 handlers = console
187 handlers = console
175 qualname = rhodecode
188 qualname = rhodecode
176 propagate = 0
189 propagate = 0
177
190
178 [logger_sqlalchemy]
191 [logger_sqlalchemy]
179 level = ERROR
192 level = ERROR
180 handlers = console
193 handlers = console
181 qualname = sqlalchemy.engine
194 qualname = sqlalchemy.engine
182 propagate = 0
195 propagate = 0
183
196
184 ##############
197 ##############
185 ## HANDLERS ##
198 ## HANDLERS ##
186 ##############
199 ##############
187
200
188 [handler_console]
201 [handler_console]
189 class = StreamHandler
202 class = StreamHandler
190 args = (sys.stderr,)
203 args = (sys.stderr,)
191 level = NOTSET
204 level = NOTSET
192 formatter = color_formatter
205 formatter = color_formatter
193
206
194 ################
207 ################
195 ## FORMATTERS ##
208 ## FORMATTERS ##
196 ################
209 ################
197
210
198 [formatter_generic]
211 [formatter_generic]
199 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
212 format = %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
200 datefmt = %Y-%m-%d %H:%M:%S
213 datefmt = %Y-%m-%d %H:%M:%S
201
214
202 [formatter_color_formatter]
215 [formatter_color_formatter]
203 class=rhodecode.lib.colored_formatter.ColorFormatter
216 class=rhodecode.lib.colored_formatter.ColorFormatter
204 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
217 format= %(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
205 datefmt = %Y-%m-%d %H:%M:%S No newline at end of file
218 datefmt = %Y-%m-%d %H:%M:%S
@@ -1,346 +1,346 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 rhodecode.model.db
3 rhodecode.model.db
4 ~~~~~~~~~~~~~~~~~~
4 ~~~~~~~~~~~~~~~~~~
5
5
6 Database Models for RhodeCode
6 Database Models for RhodeCode
7
7
8 :created_on: Apr 08, 2010
8 :created_on: Apr 08, 2010
9 :author: marcink
9 :author: marcink
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
10 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
11 :license: GPLv3, see COPYING for more details.
11 :license: GPLv3, see COPYING for more details.
12 """
12 """
13 # This program is free software; you can redistribute it and/or
13 # This program is free software; you can redistribute it and/or
14 # modify it under the terms of the GNU General Public License
14 # modify it under the terms of the GNU General Public License
15 # as published by the Free Software Foundation; version 2
15 # as published by the Free Software Foundation; version 2
16 # of the License or (at your opinion) any later version of the license.
16 # of the License or (at your opinion) any later version of the license.
17 #
17 #
18 # This program is distributed in the hope that it will be useful,
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
21 # GNU General Public License for more details.
22 #
22 #
23 # You should have received a copy of the GNU General Public License
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
26 # MA 02110-1301, USA.
26 # MA 02110-1301, USA.
27 import logging
27 import logging
28 import datetime
28 import datetime
29 from datetime import date
29 from datetime import date
30
30
31 from sqlalchemy import *
31 from sqlalchemy import *
32 from sqlalchemy.exc import DatabaseError
32 from sqlalchemy.exc import DatabaseError
33 from sqlalchemy.orm import relationship, backref, class_mapper
33 from sqlalchemy.orm import relationship, backref, class_mapper
34 from sqlalchemy.orm.session import Session
34 from sqlalchemy.orm.session import Session
35
35
36 from rhodecode.model.meta import Base
36 from rhodecode.model.meta import Base
37
37
38 log = logging.getLogger(__name__)
38 log = logging.getLogger(__name__)
39
39
40 class BaseModel(object):
40 class BaseModel(object):
41
41
42 @classmethod
42 @classmethod
43 def _get_keys(cls):
43 def _get_keys(cls):
44 """return column names for this model """
44 """return column names for this model """
45 return class_mapper(cls).c.keys()
45 return class_mapper(cls).c.keys()
46
46
47 def get_dict(self):
47 def get_dict(self):
48 """return dict with keys and values corresponding
48 """return dict with keys and values corresponding
49 to this model data """
49 to this model data """
50
50
51 d = {}
51 d = {}
52 for k in self._get_keys():
52 for k in self._get_keys():
53 d[k] = getattr(self, k)
53 d[k] = getattr(self, k)
54 return d
54 return d
55
55
56 def get_appstruct(self):
56 def get_appstruct(self):
57 """return list with keys and values tupples corresponding
57 """return list with keys and values tupples corresponding
58 to this model data """
58 to this model data """
59
59
60 l = []
60 l = []
61 for k in self._get_keys():
61 for k in self._get_keys():
62 l.append((k, getattr(self, k),))
62 l.append((k, getattr(self, k),))
63 return l
63 return l
64
64
65 def populate_obj(self, populate_dict):
65 def populate_obj(self, populate_dict):
66 """populate model with data from given populate_dict"""
66 """populate model with data from given populate_dict"""
67
67
68 for k in self._get_keys():
68 for k in self._get_keys():
69 if k in populate_dict:
69 if k in populate_dict:
70 setattr(self, k, populate_dict[k])
70 setattr(self, k, populate_dict[k])
71
71
72 class RhodeCodeSettings(Base, BaseModel):
72 class RhodeCodeSettings(Base, BaseModel):
73 __tablename__ = 'rhodecode_settings'
73 __tablename__ = 'rhodecode_settings'
74 __table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True})
74 __table_args__ = (UniqueConstraint('app_settings_name'), {'useexisting':True})
75 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
75 app_settings_id = Column("app_settings_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
76 app_settings_name = Column("app_settings_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
76 app_settings_name = Column("app_settings_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
77 app_settings_value = Column("app_settings_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
77 app_settings_value = Column("app_settings_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
78
78
79 def __init__(self, k='', v=''):
79 def __init__(self, k='', v=''):
80 self.app_settings_name = k
80 self.app_settings_name = k
81 self.app_settings_value = v
81 self.app_settings_value = v
82
82
83 def __repr__(self):
83 def __repr__(self):
84 return "<%s('%s:%s')>" % (self.__class__.__name__,
84 return "<%s('%s:%s')>" % (self.__class__.__name__,
85 self.app_settings_name, self.app_settings_value)
85 self.app_settings_name, self.app_settings_value)
86
86
87 class RhodeCodeUi(Base, BaseModel):
87 class RhodeCodeUi(Base, BaseModel):
88 __tablename__ = 'rhodecode_ui'
88 __tablename__ = 'rhodecode_ui'
89 __table_args__ = {'useexisting':True}
89 __table_args__ = {'useexisting':True}
90 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
90 ui_id = Column("ui_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
91 ui_section = Column("ui_section", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
91 ui_section = Column("ui_section", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
92 ui_key = Column("ui_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
92 ui_key = Column("ui_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
93 ui_value = Column("ui_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
93 ui_value = Column("ui_value", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
94 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True)
94 ui_active = Column("ui_active", Boolean(), nullable=True, unique=None, default=True)
95
95
96
96
97 class User(Base, BaseModel):
97 class User(Base, BaseModel):
98 __tablename__ = 'users'
98 __tablename__ = 'users'
99 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True})
99 __table_args__ = (UniqueConstraint('username'), UniqueConstraint('email'), {'useexisting':True})
100 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
100 user_id = Column("user_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
101 username = Column("username", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
101 username = Column("username", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
102 password = Column("password", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
102 password = Column("password", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
103 active = Column("active", Boolean(), nullable=True, unique=None, default=None)
103 active = Column("active", Boolean(), nullable=True, unique=None, default=None)
104 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False)
104 admin = Column("admin", Boolean(), nullable=True, unique=None, default=False)
105 name = Column("name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
105 name = Column("name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
106 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
106 lastname = Column("lastname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
107 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
107 email = Column("email", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
108 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None)
108 last_login = Column("last_login", DateTime(timezone=False), nullable=True, unique=None, default=None)
109 ldap_dn = Column("ldap_dn", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
109 ldap_dn = Column("ldap_dn", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
110
110
111 user_log = relationship('UserLog', cascade='all')
111 user_log = relationship('UserLog', cascade='all')
112 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all')
112 user_perms = relationship('UserToPerm', primaryjoin="User.user_id==UserToPerm.user_id", cascade='all')
113
113
114 repositories = relationship('Repository')
114 repositories = relationship('Repository')
115 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all')
115 user_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_user_id==User.user_id', cascade='all')
116
116
117 @property
117 @property
118 def full_contact(self):
118 def full_contact(self):
119 return '%s %s <%s>' % (self.name, self.lastname, self.email)
119 return '%s %s <%s>' % (self.name, self.lastname, self.email)
120
120
121
121
122 @property
122 @property
123 def is_admin(self):
123 def is_admin(self):
124 return self.admin
124 return self.admin
125
125
126 def __repr__(self):
126 def __repr__(self):
127 return "<%s('id:%s:%s')>" % (self.__class__.__name__,
127 return "<%s('id:%s:%s')>" % (self.__class__.__name__,
128 self.user_id, self.username)
128 self.user_id, self.username)
129
129
130 def update_lastlogin(self):
130 def update_lastlogin(self):
131 """Update user lastlogin"""
131 """Update user lastlogin"""
132
132
133 try:
133 try:
134 session = Session.object_session(self)
134 session = Session.object_session(self)
135 self.last_login = datetime.datetime.now()
135 self.last_login = datetime.datetime.now()
136 session.add(self)
136 session.add(self)
137 session.commit()
137 session.commit()
138 log.debug('updated user %s lastlogin', self.username)
138 log.debug('updated user %s lastlogin', self.username)
139 except (DatabaseError,):
139 except (DatabaseError,):
140 session.rollback()
140 session.rollback()
141
141
142
142
143 class UserLog(Base, BaseModel):
143 class UserLog(Base, BaseModel):
144 __tablename__ = 'user_logs'
144 __tablename__ = 'user_logs'
145 __table_args__ = {'useexisting':True}
145 __table_args__ = {'useexisting':True}
146 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
146 user_log_id = Column("user_log_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
147 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
147 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
148 repository_id = Column("repository_id", Integer(length=None, convert_unicode=False, assert_unicode=None), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
148 repository_id = Column("repository_id", Integer(length=None, convert_unicode=False, assert_unicode=None), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
149 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
149 repository_name = Column("repository_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
150 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
150 user_ip = Column("user_ip", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
151 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
151 action = Column("action", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
152 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None)
152 action_date = Column("action_date", DateTime(timezone=False), nullable=True, unique=None, default=None)
153
153
154 @property
154 @property
155 def action_as_day(self):
155 def action_as_day(self):
156 return date(*self.action_date.timetuple()[:3])
156 return date(*self.action_date.timetuple()[:3])
157
157
158 user = relationship('User')
158 user = relationship('User')
159 repository = relationship('Repository')
159 repository = relationship('Repository')
160
160
161
161
162 class UsersGroup(Base, BaseModel):
162 class UsersGroup(Base, BaseModel):
163 __tablename__ = 'users_groups'
163 __tablename__ = 'users_groups'
164 __table_args__ = {'useexisting':True}
164 __table_args__ = {'useexisting':True}
165
165
166 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
166 users_group_id = Column("users_group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
167 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
167 users_group_name = Column("users_group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
168 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None)
168 users_group_active = Column("users_group_active", Boolean(), nullable=True, unique=None, default=None)
169
169
170 members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined")
170 members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined")
171
171
172 class UsersGroupMember(Base, BaseModel):
172 class UsersGroupMember(Base, BaseModel):
173 __tablename__ = 'users_groups_members'
173 __tablename__ = 'users_groups_members'
174 __table_args__ = {'useexisting':True}
174 __table_args__ = {'useexisting':True}
175
175
176 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
176 users_group_member_id = Column("users_group_member_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
177 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
177 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
178 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
178 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
179
179
180 user = relationship('User', lazy='joined')
180 user = relationship('User', lazy='joined')
181 users_group = relationship('UsersGroup')
181 users_group = relationship('UsersGroup')
182
182
183 def __init__(self, gr_id='', u_id=''):
183 def __init__(self, gr_id='', u_id=''):
184 self.users_group_id = gr_id
184 self.users_group_id = gr_id
185 self.user_id = u_id
185 self.user_id = u_id
186
186
187 class Repository(Base, BaseModel):
187 class Repository(Base, BaseModel):
188 __tablename__ = 'repositories'
188 __tablename__ = 'repositories'
189 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
189 __table_args__ = (UniqueConstraint('repo_name'), {'useexisting':True},)
190 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
190 repo_id = Column("repo_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
191 repo_name = Column("repo_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
191 repo_name = Column("repo_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
192 repo_type = Column("repo_type", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg')
192 repo_type = Column("repo_type", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=False, default='hg')
193 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None)
193 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=False, default=None)
194 private = Column("private", Boolean(), nullable=True, unique=None, default=None)
194 private = Column("private", Boolean(), nullable=True, unique=None, default=None)
195 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True)
195 enable_statistics = Column("statistics", Boolean(), nullable=True, unique=None, default=True)
196 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
196 enable_downloads = Column("downloads", Boolean(), nullable=True, unique=None, default=True)
197 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
197 description = Column("description", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
198 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None)
198 fork_id = Column("fork_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=False, default=None)
199 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None)
199 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=False, default=None)
200
200
201 user = relationship('User')
201 user = relationship('User')
202 fork = relationship('Repository', remote_side=repo_id)
202 fork = relationship('Repository', remote_side=repo_id)
203 group = relationship('Group')
203 group = relationship('Group')
204 repo_to_perm = relationship('RepoToPerm', cascade='all', order_by='RepoToPerm.repo_to_perm_id')
204 repo_to_perm = relationship('RepoToPerm', cascade='all', order_by='RepoToPerm.repo_to_perm_id')
205 users_group_to_perm = relationship('UsersGroupToPerm', cascade='all')
205 users_group_to_perm = relationship('UsersGroupToPerm', cascade='all')
206 stats = relationship('Statistics', cascade='all', uselist=False)
206 stats = relationship('Statistics', cascade='all', uselist=False)
207
207
208 repo_followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all')
208 followers = relationship('UserFollowing', primaryjoin='UserFollowing.follows_repo_id==Repository.repo_id', cascade='all')
209
209
210 logs = relationship('UserLog', cascade='all')
210 logs = relationship('UserLog', cascade='all')
211
211
212 def __repr__(self):
212 def __repr__(self):
213 return "<%s('%s:%s')>" % (self.__class__.__name__,
213 return "<%s('%s:%s')>" % (self.__class__.__name__,
214 self.repo_id, self.repo_name)
214 self.repo_id, self.repo_name)
215
215
216 class Group(Base, BaseModel):
216 class Group(Base, BaseModel):
217 __tablename__ = 'groups'
217 __tablename__ = 'groups'
218 __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
218 __table_args__ = (UniqueConstraint('group_name'), {'useexisting':True},)
219
219
220 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
220 group_id = Column("group_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
221 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
221 group_name = Column("group_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=False, unique=True, default=None)
222 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
222 group_parent_id = Column("group_parent_id", Integer(), ForeignKey('groups.group_id'), nullable=True, unique=None, default=None)
223
223
224 parent_group = relationship('Group', remote_side=group_id)
224 parent_group = relationship('Group', remote_side=group_id)
225
225
226
226
227 def __init__(self, group_name='', parent_group=None):
227 def __init__(self, group_name='', parent_group=None):
228 self.group_name = group_name
228 self.group_name = group_name
229 self.parent_group = parent_group
229 self.parent_group = parent_group
230
230
231 def __repr__(self):
231 def __repr__(self):
232 return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
232 return "<%s('%s:%s')>" % (self.__class__.__name__, self.group_id,
233 self.group_name)
233 self.group_name)
234
234
235 class Permission(Base, BaseModel):
235 class Permission(Base, BaseModel):
236 __tablename__ = 'permissions'
236 __tablename__ = 'permissions'
237 __table_args__ = {'useexisting':True}
237 __table_args__ = {'useexisting':True}
238 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
238 permission_id = Column("permission_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
239 permission_name = Column("permission_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
239 permission_name = Column("permission_name", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
240 permission_longname = Column("permission_longname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
240 permission_longname = Column("permission_longname", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
241
241
242 def __repr__(self):
242 def __repr__(self):
243 return "<%s('%s:%s')>" % (self.__class__.__name__,
243 return "<%s('%s:%s')>" % (self.__class__.__name__,
244 self.permission_id, self.permission_name)
244 self.permission_id, self.permission_name)
245
245
246 class RepoToPerm(Base, BaseModel):
246 class RepoToPerm(Base, BaseModel):
247 __tablename__ = 'repo_to_perm'
247 __tablename__ = 'repo_to_perm'
248 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True})
248 __table_args__ = (UniqueConstraint('user_id', 'repository_id'), {'useexisting':True})
249 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
249 repo_to_perm_id = Column("repo_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
250 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
250 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
251 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
251 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
252 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
252 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
253
253
254 user = relationship('User')
254 user = relationship('User')
255 permission = relationship('Permission')
255 permission = relationship('Permission')
256 repository = relationship('Repository')
256 repository = relationship('Repository')
257
257
258 class UserToPerm(Base, BaseModel):
258 class UserToPerm(Base, BaseModel):
259 __tablename__ = 'user_to_perm'
259 __tablename__ = 'user_to_perm'
260 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
260 __table_args__ = (UniqueConstraint('user_id', 'permission_id'), {'useexisting':True})
261 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
261 user_to_perm_id = Column("user_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
262 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
262 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
263 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
263 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
264
264
265 user = relationship('User')
265 user = relationship('User')
266 permission = relationship('Permission')
266 permission = relationship('Permission')
267
267
268
268
269 class UsersGroupToPerm(Base, BaseModel):
269 class UsersGroupToPerm(Base, BaseModel):
270 __tablename__ = 'users_group_to_perm'
270 __tablename__ = 'users_group_to_perm'
271 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
271 __table_args__ = (UniqueConstraint('users_group_id', 'permission_id'), {'useexisting':True})
272 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
272 users_group_to_perm_id = Column("users_group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
273 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
273 users_group_id = Column("users_group_id", Integer(), ForeignKey('users_groups.users_group_id'), nullable=False, unique=None, default=None)
274 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
274 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
275 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
275 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=None, default=None)
276
276
277 users_group = relationship('UsersGroup')
277 users_group = relationship('UsersGroup')
278 permission = relationship('Permission')
278 permission = relationship('Permission')
279 repository = relationship('Repository')
279 repository = relationship('Repository')
280
280
281 class GroupToPerm(Base, BaseModel):
281 class GroupToPerm(Base, BaseModel):
282 __tablename__ = 'group_to_perm'
282 __tablename__ = 'group_to_perm'
283 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
283 __table_args__ = (UniqueConstraint('group_id', 'permission_id'), {'useexisting':True})
284
284
285 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
285 group_to_perm_id = Column("group_to_perm_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
286 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
286 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
287 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
287 permission_id = Column("permission_id", Integer(), ForeignKey('permissions.permission_id'), nullable=False, unique=None, default=None)
288 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
288 group_id = Column("group_id", Integer(), ForeignKey('groups.group_id'), nullable=False, unique=None, default=None)
289
289
290 user = relationship('User')
290 user = relationship('User')
291 permission = relationship('Permission')
291 permission = relationship('Permission')
292 group = relationship('Group')
292 group = relationship('Group')
293
293
294 class Statistics(Base, BaseModel):
294 class Statistics(Base, BaseModel):
295 __tablename__ = 'statistics'
295 __tablename__ = 'statistics'
296 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
296 __table_args__ = (UniqueConstraint('repository_id'), {'useexisting':True})
297 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
297 stat_id = Column("stat_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
298 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None)
298 repository_id = Column("repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=False, unique=True, default=None)
299 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
299 stat_on_revision = Column("stat_on_revision", Integer(), nullable=False)
300 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data
300 commit_activity = Column("commit_activity", LargeBinary(), nullable=False)#JSON data
301 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data
301 commit_activity_combined = Column("commit_activity_combined", LargeBinary(), nullable=False)#JSON data
302 languages = Column("languages", LargeBinary(), nullable=False)#JSON data
302 languages = Column("languages", LargeBinary(), nullable=False)#JSON data
303
303
304 repository = relationship('Repository', single_parent=True)
304 repository = relationship('Repository', single_parent=True)
305
305
306 class UserFollowing(Base, BaseModel):
306 class UserFollowing(Base, BaseModel):
307 __tablename__ = 'user_followings'
307 __tablename__ = 'user_followings'
308 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'),
308 __table_args__ = (UniqueConstraint('user_id', 'follows_repository_id'),
309 UniqueConstraint('user_id', 'follows_user_id')
309 UniqueConstraint('user_id', 'follows_user_id')
310 , {'useexisting':True})
310 , {'useexisting':True})
311
311
312 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
312 user_following_id = Column("user_following_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
313 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
313 user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=False, unique=None, default=None)
314 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None)
314 follows_repo_id = Column("follows_repository_id", Integer(), ForeignKey('repositories.repo_id'), nullable=True, unique=None, default=None)
315 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
315 follows_user_id = Column("follows_user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
316
316
317 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
317 user = relationship('User', primaryjoin='User.user_id==UserFollowing.user_id')
318
318
319 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
319 follows_user = relationship('User', primaryjoin='User.user_id==UserFollowing.follows_user_id')
320 follows_repository = relationship('Repository', order_by='Repository.repo_name')
320 follows_repository = relationship('Repository', order_by='Repository.repo_name')
321
321
322 class CacheInvalidation(Base, BaseModel):
322 class CacheInvalidation(Base, BaseModel):
323 __tablename__ = 'cache_invalidation'
323 __tablename__ = 'cache_invalidation'
324 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True})
324 __table_args__ = (UniqueConstraint('cache_key'), {'useexisting':True})
325 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
325 cache_id = Column("cache_id", Integer(), nullable=False, unique=True, default=None, primary_key=True)
326 cache_key = Column("cache_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
326 cache_key = Column("cache_key", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
327 cache_args = Column("cache_args", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
327 cache_args = Column("cache_args", String(length=None, convert_unicode=False, assert_unicode=None), nullable=True, unique=None, default=None)
328 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False)
328 cache_active = Column("cache_active", Boolean(), nullable=True, unique=None, default=False)
329
329
330
330
331 def __init__(self, cache_key, cache_args=''):
331 def __init__(self, cache_key, cache_args=''):
332 self.cache_key = cache_key
332 self.cache_key = cache_key
333 self.cache_args = cache_args
333 self.cache_args = cache_args
334 self.cache_active = False
334 self.cache_active = False
335
335
336 def __repr__(self):
336 def __repr__(self):
337 return "<%s('%s:%s')>" % (self.__class__.__name__,
337 return "<%s('%s:%s')>" % (self.__class__.__name__,
338 self.cache_id, self.cache_key)
338 self.cache_id, self.cache_key)
339
339
340 class DbMigrateVersion(Base, BaseModel):
340 class DbMigrateVersion(Base, BaseModel):
341 __tablename__ = 'db_migrate_version'
341 __tablename__ = 'db_migrate_version'
342 __table_args__ = {'useexisting':True}
342 __table_args__ = {'useexisting':True}
343 repository_id = Column('repository_id', String(250), primary_key=True)
343 repository_id = Column('repository_id', String(250), primary_key=True)
344 repository_path = Column('repository_path', Text)
344 repository_path = Column('repository_path', Text)
345 version = Column('version', Integer)
345 version = Column('version', Integer)
346
346
General Comments 0
You need to be logged in to leave comments. Login now