0001-misc-use-relative-imports-36517.patch
extra/pyvotecore/vote_field.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import random |
20 | 20 |
from quixote.html import htmltext, TemplateIO |
21 |
from qommon.form import CompositeWidget, IntWidget, WidgetList, StringWidget, \ |
|
21 |
from wcs.qommon.form import CompositeWidget, IntWidget, WidgetList, StringWidget, \
|
|
22 | 22 |
CheckboxWidget, SingleSelectWidget |
23 | 23 |
from wcs.fields import WidgetField, register_field_class |
24 | 24 |
from pyvotecore import schulze_method, irv, ranked_pairs, schulze_pr, \ |
extra/vote/anonymity.py | ||
---|---|---|
19 | 19 |
from quixote import get_publisher |
20 | 20 | |
21 | 21 |
from wcs.fields import WidgetField, register_field_class |
22 |
from qommon.form import * |
|
22 |
from wcs.qommon.form import *
|
|
23 | 23 | |
24 | 24 |
class VoteAnonymityWidget(CheckboxWidget): |
25 | 25 |
vote_anonymity = 'anonymous' |
extra/vote/ranked_items.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
import random |
20 | 20 |
from quixote.html import htmltext, TemplateIO |
21 |
from qommon.form import * |
|
21 |
from wcs.qommon.form import *
|
|
22 | 22 |
from wcs.fields import WidgetField, register_field_class |
23 | 23 | |
24 | 24 |
class RankedItemsWidget(CompositeWidget): |
tests/test_admin_pages.py | ||
---|---|---|
28 | 28 | |
29 | 29 |
from wcs.qommon import errors, sessions |
30 | 30 |
from wcs.qommon.form import UploadedFile |
31 |
from qommon.ident.password_accounts import PasswordAccount |
|
31 |
from wcs.qommon.ident.password_accounts import PasswordAccount
|
|
32 | 32 |
from wcs.qommon.http_request import HTTPRequest |
33 | 33 |
from wcs.qommon.template import get_current_theme |
34 | 34 |
from wcs.qommon.bounces import Bounce |
... | ... | |
4501 | 4501 |
resp = resp.forms[0].submit() # confirm delete |
4502 | 4502 |
assert len(pub.cfg['idp']) == 0 |
4503 | 4503 | |
4504 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
4504 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
4505 | 4505 |
idp_metadata_filename = os.path.join(os.path.dirname(__file__), 'idp_metadata.xml') |
4506 | 4506 |
urlopen.side_effect = lambda *args: open(idp_metadata_filename) |
4507 | 4507 |
resp = app.get('/backoffice/settings/identification/idp/idp/') |
tests/test_api.py | ||
---|---|---|
530 | 530 |
formdef.workflow_id = workflow.id |
531 | 531 |
formdef.store() |
532 | 532 | |
533 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
533 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
534 | 534 |
urlopen.side_effect = lambda *args: StringIO('''\ |
535 | 535 |
{"data": [{"id": 0, "text": "zéro", "foo": "bar"}, \ |
536 | 536 |
{"id": 1, "text": "uné", "foo": "bar1"}, \ |
... | ... | |
1282 | 1282 |
formdata.status = 'wf-new' |
1283 | 1283 |
formdata.evolution[-1].status = 'wf-new' |
1284 | 1284 | |
1285 |
from qommon.form import PicklableUpload as PicklableUpload2 |
|
1286 | 1285 |
from wcs.qommon.form import PicklableUpload as PicklableUpload3 |
1287 |
upload = PicklableUpload2('test.txt', 'text/plain', 'ascii')
|
|
1286 |
upload = PicklableUpload3('test.txt', 'text/plain', 'ascii')
|
|
1288 | 1287 |
upload.receive(['test']) |
1289 | 1288 |
upload2 = PicklableUpload3('test.txt', 'text/plain', 'ascii') |
1290 | 1289 |
upload2.receive(['test']) |
... | ... | |
2547 | 2546 |
assert orig == 'example.net' |
2548 | 2547 | |
2549 | 2548 |
def test_reverse_geocoding(pub): |
2550 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
2549 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2551 | 2550 |
urlopen.side_effect = lambda *args: StringIO(json.dumps({'address': 'xxx'})) |
2552 | 2551 |
get_app(pub).get('/api/reverse-geocoding', status=400) |
2553 | 2552 |
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0') |
... | ... | |
2603 | 2602 |
'?format=json&orig=coucou&email=%s' % urllib.quote(local_user.email), '1234') |
2604 | 2603 |
return signed_url[len('http://example.net'):] |
2605 | 2604 | |
2606 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
2605 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2607 | 2606 |
urlopen.side_effect = lambda *args: StringIO('''\ |
2608 | 2607 |
{"data": [{"id": 0, "text": "zéro", "foo": "bar"}, \ |
2609 | 2608 |
{"id": 1, "text": "uné", "foo": "bar1"}, \ |
... | ... | |
2634 | 2633 | |
2635 | 2634 | |
2636 | 2635 |
def test_geocoding(pub): |
2637 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
2636 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2638 | 2637 |
urlopen.side_effect = lambda *args: StringIO(json.dumps([{'lat': 0, 'lon': 0}])) |
2639 | 2638 |
get_app(pub).get('/api/geocoding', status=400) |
2640 | 2639 |
resp = get_app(pub).get('/api/geocoding?q=test') |
tests/test_backoffice_pages.py | ||
---|---|---|
22 | 22 |
xlwt = None |
23 | 23 | |
24 | 24 |
from quixote import cleanup, get_publisher |
25 |
from qommon import ods |
|
25 |
from wcs.qommon import ods
|
|
26 | 26 |
from wcs.api_utils import sign_url |
27 | 27 |
from wcs.qommon import errors, sessions |
28 | 28 |
from wcs.qommon.form import PicklableUpload |
29 |
from qommon.ident.password_accounts import PasswordAccount |
|
29 |
from wcs.qommon.ident.password_accounts import PasswordAccount
|
|
30 | 30 |
from wcs.qommon.http_request import HTTPRequest |
31 | 31 |
from wcs.roles import Role |
32 | 32 |
from wcs.workflows import (Workflow, CommentableWorkflowStatusItem, |
... | ... | |
2899 | 2899 | |
2900 | 2900 |
app = login(get_app(pub)) |
2901 | 2901 | |
2902 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
2902 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2903 | 2903 |
data = {'data': [{'id': 'A', 'text': 'hello'}, {'id': 'B', 'text': 'world'}]} |
2904 | 2904 |
def side_effect(url, *args): |
2905 | 2905 |
assert '?name_id=admin' in url |
... | ... | |
4023 | 4023 | |
4024 | 4024 |
app = get_app(pub) |
4025 | 4025 | |
4026 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
4026 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
4027 | 4027 |
data1 = {'data': [{'id': 'A', 'text': 'hello'}, {'id': 'B', 'text': 'world'}]} |
4028 | 4028 |
data2 = {'data': [{'id': 'C', 'text': 'hello'}, {'id': 'D', 'text': 'world'}]} |
4029 | 4029 |
def side_effect(url, *args): |
tests/test_datasource.py | ||
---|---|---|
387 | 387 | |
388 | 388 |
data_source2 = NamedDataSource.select()[0] |
389 | 389 |
assert data_source2.data_source == data_source.data_source |
390 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
390 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
391 | 391 |
urlopen.side_effect = lambda *args: StringIO( |
392 | 392 |
'{"data": [{"id": 0, "text": "zéro"}, {"id": 1, "text": "uné"}, {"id": 2, "text": "deux"}]}') |
393 | 393 |
assert data_sources.get_items({'type': 'foobar'}) == [ |
... | ... | |
403 | 403 |
data_source.data_source = {'type': 'json', 'value': "https://api.example.com/json"} |
404 | 404 |
data_source.store() |
405 | 405 | |
406 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
406 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
407 | 407 |
urlopen.side_effect = lambda *args: StringIO( |
408 | 408 |
'{"data": [{"id": 0, "text": "zero"}]}') |
409 | 409 |
assert len(data_sources.get_items({'type': 'foobar'})) == 1 |
... | ... | |
420 | 420 | |
421 | 421 |
data_source.data_source = {'type': 'json', 'value': "https://api.example.com/json?foo=bar"} |
422 | 422 |
data_source.store() |
423 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
423 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
424 | 424 |
urlopen.side_effect = lambda *args: StringIO( |
425 | 425 |
'{"data": [{"id": 0, "text": "zero"}]}') |
426 | 426 |
assert len(data_sources.get_items({'type': 'foobar'})) == 1 |
... | ... | |
437 | 437 | |
438 | 438 |
data_source.data_source = {'type': 'json', 'value': "https://no-secret.example.com/json"} |
439 | 439 |
data_source.store() |
440 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
440 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
441 | 441 |
urlopen.side_effect = lambda *args: StringIO( |
442 | 442 |
'{"data": [{"id": 0, "text": "zero"}]}') |
443 | 443 |
assert len(data_sources.get_items({'type': 'foobar'})) == 1 |
... | ... | |
450 | 450 |
datasource.data_source = {'type': 'json', 'value': 'http://whatever/'} |
451 | 451 |
datasource.store() |
452 | 452 | |
453 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
453 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
454 | 454 |
urlopen.side_effect = lambda *args: StringIO( |
455 | 455 |
json.dumps({'data': [{'id': '1', 'text': 'foo'}, {'id': '2', 'text': 'bar'}]})) |
456 | 456 |
tests/test_fc_auth.py | ||
---|---|---|
144 | 144 |
} |
145 | 145 | |
146 | 146 |
assert pub.user_class.count() == 0 |
147 |
with mock.patch('qommon.ident.franceconnect.http_post_request') as http_post_request, \ |
|
148 |
mock.patch('qommon.ident.franceconnect.http_get_page') as http_get_page: |
|
147 |
with mock.patch('wcs.qommon.ident.franceconnect.http_post_request') as http_post_request, \
|
|
148 |
mock.patch('wcs.qommon.ident.franceconnect.http_get_page') as http_get_page:
|
|
149 | 149 |
http_post_request.return_value = (None, 200, json.dumps(token_result), None) |
150 | 150 |
http_get_page.return_value = (None, 200, json.dumps(user_info_result), None) |
151 | 151 |
resp = app.get('/ident/fc/callback?%s' % urllib.urlencode({ |
... | ... | |
197 | 197 |
id_token['nonce'] = qs['nonce'][0] |
198 | 198 |
token_result['id_token'] = '.%s.' % base64url_encode(json.dumps(id_token)) |
199 | 199 | |
200 |
with mock.patch('qommon.ident.franceconnect.http_post_request') as http_post_request, \ |
|
201 |
mock.patch('qommon.ident.franceconnect.http_get_page') as http_get_page: |
|
200 |
with mock.patch('wcs.qommon.ident.franceconnect.http_post_request') as http_post_request, \
|
|
201 |
mock.patch('wcs.qommon.ident.franceconnect.http_get_page') as http_get_page:
|
|
202 | 202 |
http_post_request.return_value = (None, 200, json.dumps(token_result), None) |
203 | 203 |
http_get_page.return_value = (None, 200, json.dumps(user_info_result), None) |
204 | 204 |
resp = app.get('/ident/fc/callback?%s' % urllib.urlencode({ |
... | ... | |
245 | 245 |
'family_name': 'Deux', |
246 | 246 |
# 'email': 'john.deux@example.com', # missing |
247 | 247 |
} |
248 |
with mock.patch('qommon.ident.franceconnect.http_post_request') as http_post_request, \ |
|
249 |
mock.patch('qommon.ident.franceconnect.http_get_page') as http_get_page: |
|
248 |
with mock.patch('wcs.qommon.ident.franceconnect.http_post_request') as http_post_request, \
|
|
249 |
mock.patch('wcs.qommon.ident.franceconnect.http_get_page') as http_get_page:
|
|
250 | 250 |
http_post_request.return_value = (None, 200, json.dumps(token_result), None) |
251 | 251 |
http_get_page.return_value = (None, 200, json.dumps(bad_user_info_result), None) |
252 | 252 |
resp = app.get('/ident/fc/callback?%s' % urllib.urlencode({ |
tests/test_fields.py | ||
---|---|---|
8 | 8 | |
9 | 9 |
from quixote import cleanup |
10 | 10 |
from quixote.http_request import Upload |
11 |
from qommon.http_request import HTTPRequest |
|
11 |
from wcs.qommon.http_request import HTTPRequest
|
|
12 | 12 |
from wcs.qommon import sessions |
13 | 13 |
from wcs import fields |
14 | 14 |
from wcs.qommon.form import Form |
tests/test_form_pages.py | ||
---|---|---|
850 | 850 |
formdef.store() |
851 | 851 |
formdef.data_class().wipe() |
852 | 852 | |
853 |
with mock.patch('qommon.publisher.Substitutions.invalidate_cache') as invalidate_cache: |
|
853 |
with mock.patch('wcs.qommon.publisher.Substitutions.invalidate_cache') as invalidate_cache:
|
|
854 | 854 |
resp = get_app(pub).get('/test/') |
855 | 855 |
call_count = invalidate_cache.call_count |
856 | 856 | |
... | ... | |
861 | 861 |
formdef.store() |
862 | 862 | |
863 | 863 |
# check the cache doesn't get invalidated for every page |
864 |
with mock.patch('qommon.publisher.Substitutions.invalidate_cache') as invalidate_cache: |
|
864 |
with mock.patch('wcs.qommon.publisher.Substitutions.invalidate_cache') as invalidate_cache:
|
|
865 | 865 |
resp = get_app(pub).get('/test/') |
866 | 866 |
assert invalidate_cache.call_count == call_count |
867 | 867 | |
... | ... | |
2496 | 2496 |
data_source=ds, display_disabled_items=True, |
2497 | 2497 |
prefill={'type': 'formula', 'value': '["2"]'})] |
2498 | 2498 | |
2499 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
2499 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2500 | 2500 |
data = {'data': [{'id': '1', 'text': 'hello'}, {'id': '2', 'text': 'world'}]} |
2501 | 2501 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
2502 | 2502 |
resp = get_app(pub).get('/test/') |
... | ... | |
4948 | 4948 |
data_source=ds, display_disabled_items=True)] |
4949 | 4949 |
formdef.store() |
4950 | 4950 | |
4951 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
4951 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
4952 | 4952 |
data = {'data': [{'id': '1', 'text': 'hello'}, {'id': '2', 'text': 'world'}]} |
4953 | 4953 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
4954 | 4954 |
resp = get_app(pub).get('/test/') |
... | ... | |
4961 | 4961 | |
4962 | 4962 |
formdef.data_class().wipe() |
4963 | 4963 | |
4964 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
4964 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
4965 | 4965 |
data = {'data': [{'id': '1', 'text': 'hello', 'disabled': True}, {'id': '2', 'text': 'world'}]} |
4966 | 4966 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
4967 | 4967 |
resp = get_app(pub).get('/test/') |
... | ... | |
4986 | 4986 |
display_disabled_items=False)] |
4987 | 4987 |
formdef.store() |
4988 | 4988 | |
4989 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
4989 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
4990 | 4990 |
data = {'data': [{'id': '1', 'text': 'hello', 'disabled': True}, {'id': '2', 'text': 'world'}]} |
4991 | 4991 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
4992 | 4992 |
resp = get_app(pub).get('/test/') |
... | ... | |
5003 | 5003 |
data_source=ds, display_mode='radio', display_disabled_items=True)] |
5004 | 5004 |
formdef.store() |
5005 | 5005 | |
5006 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5006 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5007 | 5007 |
data = {'data': [{'id': '1', 'text': 'hello'}, {'id': '2', 'text': 'world'}]} |
5008 | 5008 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5009 | 5009 |
resp = get_app(pub).get('/test/') |
... | ... | |
5016 | 5016 | |
5017 | 5017 |
formdef.data_class().wipe() |
5018 | 5018 | |
5019 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5019 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5020 | 5020 |
data = {'data': [{'id': '1', 'text': 'hello', 'disabled': True}, {'id': '2', 'text': 'world'}]} |
5021 | 5021 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5022 | 5022 |
resp = get_app(pub).get('/test/') |
... | ... | |
5045 | 5045 |
data_source=ds, display_disabled_items=True)] |
5046 | 5046 |
formdef.store() |
5047 | 5047 | |
5048 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5048 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5049 | 5049 |
data = {'data': [{'id': '1', 'text': 'hello'}, {'id': '2', 'text': 'world'}]} |
5050 | 5050 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5051 | 5051 |
resp = get_app(pub).get('/test/') |
... | ... | |
5058 | 5058 | |
5059 | 5059 |
formdef.data_class().wipe() |
5060 | 5060 | |
5061 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5061 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5062 | 5062 |
data = {'data': [{'id': '1', 'text': 'hello', 'disabled': True}, {'id': '2', 'text': 'world'}]} |
5063 | 5063 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5064 | 5064 |
resp = get_app(pub).get('/test/') |
... | ... | |
5075 | 5075 |
data_source=ds, display_disabled_items=False)] |
5076 | 5076 |
formdef.store() |
5077 | 5077 | |
5078 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5078 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5079 | 5079 |
data = {'data': [{'id': '1', 'text': 'hello', 'disabled': True}, {'id': '2', 'text': 'world'}]} |
5080 | 5080 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5081 | 5081 |
resp = get_app(pub).get('/test/') |
... | ... | |
5104 | 5104 |
] |
5105 | 5105 |
formdef.store() |
5106 | 5106 | |
5107 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5107 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5108 | 5108 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}, |
5109 | 5109 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]} |
5110 | 5110 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
... | ... | |
5121 | 5121 |
# check hint is displayed within |
5122 | 5122 |
formdef.fields[0].hint = 'help text' |
5123 | 5123 |
formdef.store() |
5124 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5124 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5125 | 5125 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}, |
5126 | 5126 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]} |
5127 | 5127 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
... | ... | |
5141 | 5141 |
formdef.data_class().wipe() |
5142 | 5142 | |
5143 | 5143 |
app = get_app(pub) |
5144 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5144 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5145 | 5145 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}, |
5146 | 5146 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]} |
5147 | 5147 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
... | ... | |
5150 | 5150 |
pq = resp.pyquery.remove_namespaces() |
5151 | 5151 |
select2_url = pq('select').attr['data-select2-url'] |
5152 | 5152 | |
5153 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5153 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5154 | 5154 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5155 | 5155 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5156 | 5156 |
resp2 = app.get(select2_url + '?q=hell') |
... | ... | |
5166 | 5166 |
resp.form['f0'].force_value('1') |
5167 | 5167 |
resp.form.fields['f0_display'].force_value('hello') |
5168 | 5168 | |
5169 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5169 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5170 | 5170 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5171 | 5171 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5172 | 5172 |
resp = resp.form.submit('submit') # -> validation page |
... | ... | |
5175 | 5175 |
assert resp.form['f0'].value == '1' |
5176 | 5176 |
assert resp.form['f0_label'].value == 'hello' |
5177 | 5177 | |
5178 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5178 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5179 | 5179 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5180 | 5180 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5181 | 5181 |
resp = resp.form.submit('submit') # -> submit |
... | ... | |
5193 | 5193 |
''') |
5194 | 5194 | |
5195 | 5195 |
app = get_app(pub) |
5196 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5196 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5197 | 5197 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}, |
5198 | 5198 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]} |
5199 | 5199 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
... | ... | |
5202 | 5202 |
pq = resp.pyquery.remove_namespaces() |
5203 | 5203 |
select2_url = pq('select').attr['data-select2-url'] |
5204 | 5204 | |
5205 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5205 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5206 | 5206 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5207 | 5207 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5208 | 5208 |
resp2 = app.get(select2_url + '?q=hell') |
... | ... | |
5215 | 5215 |
resp.form['f0'].force_value('1') |
5216 | 5216 |
resp.form.fields['f0_display'].force_value('hello') |
5217 | 5217 | |
5218 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5218 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5219 | 5219 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5220 | 5220 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5221 | 5221 |
resp = resp.form.submit('submit') # -> validation page |
... | ... | |
5224 | 5224 |
assert resp.form['f0'].value == '1' |
5225 | 5225 |
assert resp.form['f0_label'].value == 'hello' |
5226 | 5226 | |
5227 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5227 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5228 | 5228 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}]} |
5229 | 5229 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
5230 | 5230 |
resp = resp.form.submit('submit') # -> submit |
... | ... | |
5240 | 5240 |
formdef.store() |
5241 | 5241 | |
5242 | 5242 |
app = get_app(pub) |
5243 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5243 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5244 | 5244 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'}, |
5245 | 5245 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]} |
5246 | 5246 |
urlopen.side_effect = lambda *args: StringIO.StringIO(json.dumps(data)) |
... | ... | |
5274 | 5274 |
formdef.store() |
5275 | 5275 | |
5276 | 5276 |
app = get_app(pub) |
5277 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5277 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5278 | 5278 |
resp = app.get('/test/') |
5279 | 5279 |
assert urlopen.call_count == 0 |
5280 | 5280 |
pq = resp.pyquery.remove_namespaces() |
... | ... | |
5287 | 5287 |
resp.form['f0'].force_value('1') |
5288 | 5288 |
resp.form['f0_display'].force_value('hello') |
5289 | 5289 | |
5290 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5290 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5291 | 5291 |
resp = resp.form.submit('submit') # -> validation page |
5292 | 5292 |
assert urlopen.call_count == 0 |
5293 | 5293 |
assert resp.form['f0'].value == '1' |
5294 | 5294 |
assert resp.form['f0_label'].value == 'hello' |
5295 | 5295 | |
5296 |
with mock.patch('qommon.misc.urlopen') as urlopen: |
|
5296 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
5297 | 5297 |
resp = resp.form.submit('submit') # -> submit |
5298 | 5298 |
assert urlopen.call_count == 0 |
5299 | 5299 |
assert formdef.data_class().select()[0].data['0'] == '1' |
tests/test_formdata.py | ||
---|---|---|
7 | 7 | |
8 | 8 |
from quixote import cleanup |
9 | 9 |
from quixote.http_request import Upload |
10 |
from qommon.template import Template |
|
11 |
from qommon.form import PicklableUpload |
|
10 |
from wcs.qommon.template import Template
|
|
11 |
from wcs.qommon.form import PicklableUpload
|
|
12 | 12 |
from wcs.qommon.http_request import HTTPRequest |
13 | 13 |
from wcs import fields, formdef |
14 | 14 |
from wcs.categories import Category |
tests/test_formdef_import.py | ||
---|---|---|
13 | 13 |
from wcs.formdef import FormDef, fields, FormdefImportError |
14 | 14 |
from wcs.workflows import Workflow |
15 | 15 |
from wcs.roles import Role |
16 |
from qommon.misc import indent_xml as indent |
|
16 |
from wcs.qommon.misc import indent_xml as indent
|
|
17 | 17 | |
18 | 18 |
from utilities import create_temporary_pub |
19 | 19 |
tests/test_publisher.py | ||
---|---|---|
182 | 182 | |
183 | 183 |
# simulate another locked cron |
184 | 184 |
import tempfile |
185 |
from qommon.vendor import locket |
|
185 |
from wcs.qommon.vendor import locket
|
|
186 | 186 |
lockfile = os.path.join(tempfile.gettempdir(), 'wcs-cron-in-progress.lock') |
187 | 187 |
with locket.lock_file(lockfile, timeout=0): |
188 | 188 |
with mock.patch('wcs.qommon.management.commands.cron.cron_worker') as cron_worker: |
tests/test_role.py | ||
---|---|---|
4 | 4 | |
5 | 5 |
from utilities import create_temporary_pub, clean_temporary_pub |
6 | 6 | |
7 |
from qommon.storage import StorableObject |
|
7 |
from wcs.qommon.storage import StorableObject
|
|
8 | 8 |
from wcs.roles import Role, get_user_roles |
9 | 9 | |
10 | 10 |
def setup_module(module): |
tests/test_templates.py | ||
---|---|---|
6 | 6 | |
7 | 7 |
from django.test import override_settings |
8 | 8 |
from quixote import cleanup |
9 |
from qommon.substitution import CompatibilityNamesDict |
|
10 |
from qommon.template import Template, TemplateError |
|
9 |
from wcs.qommon.substitution import CompatibilityNamesDict
|
|
10 |
from wcs.qommon.template import Template, TemplateError
|
|
11 | 11 |
from wcs.conditions import Condition |
12 | 12 |
from wcs.variables import LazyFormData |
13 | 13 |
tests/test_workflow_import.py | ||
---|---|---|
21 | 21 |
from wcs.roles import Role |
22 | 22 |
from wcs.fields import StringField |
23 | 23 | |
24 |
from qommon.misc import indent_xml as indent |
|
24 |
from wcs.qommon.misc import indent_xml as indent
|
|
25 | 25 | |
26 | 26 |
from utilities import create_temporary_pub, clean_temporary_pub |
27 | 27 |
tests/test_workflows.py | ||
---|---|---|
13 | 13 |
from django.utils.six import StringIO |
14 | 14 | |
15 | 15 |
from quixote import cleanup, get_response |
16 |
from qommon.errors import ConnectionError |
|
16 |
from wcs.qommon.errors import ConnectionError
|
|
17 | 17 |
from quixote.http_request import Upload as QuixoteUpload |
18 | 18 |
from wcs.qommon.http_request import HTTPRequest |
19 |
from qommon.form import * |
|
19 |
from wcs.qommon.form import *
|
|
20 | 20 | |
21 | 21 |
from wcs.formdef import FormDef |
22 | 22 |
from wcs import sessions |
... | ... | |
2221 | 2221 |
item.body = 'my message' |
2222 | 2222 |
with mock.patch('wcs.wscalls.get_secret_and_orig') as mocked_secret_and_orig: |
2223 | 2223 |
mocked_secret_and_orig.return_value = ('secret', 'localhost') |
2224 |
with mock.patch('qommon.misc._http_request') as mocked_http_post: |
|
2224 |
with mock.patch('wcs.qommon.misc._http_request') as mocked_http_post:
|
|
2225 | 2225 |
mocked_http_post.return_value = ('response', '200', 'data', 'headers') |
2226 | 2226 |
item.perform(formdata) |
2227 | 2227 |
url = mocked_http_post.call_args[0][0] |
tests/utilities.py | ||
---|---|---|
25 | 25 |
from wcs.tracking_code import TrackingCode |
26 | 26 |
import wcs.qommon.emails |
27 | 27 |
import wcs.qommon.sms |
28 |
import qommon.sms |
|
29 |
from qommon.errors import ConnectionError |
|
28 |
from wcs.qommon.errors import ConnectionError |
|
30 | 29 | |
31 | 30 |
import wcs.middleware |
32 | 31 | |
... | ... | |
264 | 263 | |
265 | 264 |
def __enter__(self): |
266 | 265 |
self.wcs_create_smtp_server = sys.modules['wcs.qommon.emails'].create_smtp_server |
267 |
self.qommon_create_smtp_server = sys.modules['qommon.emails'].create_smtp_server |
|
268 | ||
269 | 266 |
sys.modules['wcs.qommon.emails'].create_smtp_server = self.create_smtp_server |
270 |
sys.modules['qommon.emails'].create_smtp_server = self.create_smtp_server |
|
271 | ||
272 | 267 |
self.emails = {} |
273 | 268 |
return self |
274 | 269 | |
275 | 270 |
def __exit__(self, exc_type, exc_value, tb): |
276 | 271 |
del self.emails |
277 | 272 |
sys.modules['wcs.qommon.emails'].create_smtp_server = self.wcs_create_smtp_server |
278 |
sys.modules['qommon.emails'].create_smtp_server = self.qommon_create_smtp_server |
|
279 | 273 | |
280 | 274 | |
281 | 275 |
class MockSubstitutionVariables(object): |
... | ... | |
290 | 284 | |
291 | 285 |
def __enter__(self): |
292 | 286 |
import wcs.qommon.misc |
293 |
import qommon.misc |
|
294 | ||
295 | 287 |
self.wcs_qommon_misc_http_request = wcs.qommon.misc._http_request |
296 |
self.qommon_misc_http_request = qommon.misc._http_request |
|
297 | ||
298 | 288 |
wcs.qommon.misc._http_request = self.http_request |
299 |
qommon.misc._http_request = self.http_request |
|
300 | 289 |
return self |
301 | 290 | |
302 | 291 |
def __exit__(self, exc_type, exc_value, tb): |
303 | 292 |
import wcs.qommon.misc |
304 |
import qommon.misc |
|
305 | ||
306 | 293 |
wcs.qommon.misc._http_request = self.wcs_qommon_misc_http_request |
307 |
qommon.misc._http_request = self.qommon_misc_http_request |
|
308 | ||
309 | 294 |
del self.wcs_qommon_misc_http_request |
310 |
del self.qommon_misc_http_request |
|
311 | 295 | |
312 | 296 |
def http_request(self, url, method='GET', body=None, headers={}, |
313 | 297 |
cert_file=None, timeout=None, raise_on_http_errors=False): |
... | ... | |
397 | 381 |
def __enter__(self): |
398 | 382 |
self.sms = [] |
399 | 383 |
self.wcs_get_sms_class = wcs.qommon.sms.SMS.get_sms_class |
400 |
self.qommon_get_sms_class = qommon.sms.SMS.get_sms_class |
|
401 | 384 |
wcs.qommon.sms.SMS.get_sms_class = self.get_sms_class |
402 |
qommon.sms.SMS.get_sms_class = self.get_sms_class |
|
403 | 385 |
return self |
404 | 386 | |
405 | 387 |
def __exit__(self, exc_type, exc_value, tb): |
406 | 388 |
del self.sms |
407 | 389 |
wcs.qommon.sms.SMS.get_sms_class = self.wcs_get_sms_class |
408 |
qommon.sms.SMS.get_sms_class = self.qommon_get_sms_class |
wcs/__init__.py | ||
---|---|---|
18 | 18 |
import os |
19 | 19 |
sys.path.insert(0, os.path.dirname(__file__)) |
20 | 20 | |
21 |
import monkeypatch |
|
22 | ||
23 |
import qommon |
|
24 |
sys.modules['qommon'] = sys.modules['wcs.qommon'] |
|
25 | ||
26 |
import qommon.form |
|
27 |
sys.modules['form'] = qommon.form |
|
28 | ||
29 |
import compat |
|
21 |
from . import monkeypatch |
|
22 |
from . import compat |
wcs/admin/__init__.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from root import RootDirectory |
|
17 |
from .root import RootDirectory |
wcs/admin/bounces.py | ||
---|---|---|
21 | 21 |
from quixote.directory import Directory |
22 | 22 |
from quixote.html import htmltext, TemplateIO |
23 | 23 | |
24 |
from qommon import _ |
|
25 |
from qommon import errors |
|
26 |
from qommon import misc |
|
27 |
from qommon.bounces import Bounce |
|
28 |
from qommon.backoffice.menu import html_top |
|
29 |
from qommon.admin.menu import command_icon |
|
30 | ||
31 |
from qommon.form import * |
|
32 |
from qommon.misc import get_cfg |
|
24 |
from ..qommon import _
|
|
25 |
from ..qommon import errors
|
|
26 |
from ..qommon import misc
|
|
27 |
from ..qommon.bounces import Bounce
|
|
28 |
from ..qommon.backoffice.menu import html_top
|
|
29 |
from ..qommon.admin.menu import command_icon
|
|
30 | ||
31 |
from ..qommon.form import *
|
|
32 |
from ..qommon.misc import get_cfg
|
|
33 | 33 | |
34 | 34 |
def get_email_type_label(type): |
35 | 35 |
from settings import EmailsDirectory |
wcs/admin/categories.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _ |
|
21 |
from ..qommon import _
|
|
22 | 22 |
from wcs.categories import Category |
23 |
from qommon.form import * |
|
24 |
from qommon.backoffice.menu import html_top |
|
23 |
from ..qommon.form import *
|
|
24 |
from ..qommon.backoffice.menu import html_top
|
|
25 | 25 | |
26 | 26 |
from wcs.formdef import FormDef |
27 | 27 |
wcs/admin/data_sources.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _ |
|
22 |
from qommon import template |
|
23 |
from qommon.form import * |
|
24 |
from qommon.misc import json_response |
|
25 |
from qommon.backoffice.menu import html_top |
|
21 |
from ..qommon import _
|
|
22 |
from ..qommon import template
|
|
23 |
from ..qommon.form import *
|
|
24 |
from ..qommon.misc import json_response
|
|
25 |
from ..qommon.backoffice.menu import html_top
|
|
26 | 26 |
from wcs.data_sources import (NamedDataSource, DataSourceSelectionWidget, |
27 | 27 |
get_structured_items) |
28 | 28 |
from wcs.formdef import FormDef |
wcs/admin/fields.py | ||
---|---|---|
20 | 20 |
from quixote.directory import Directory |
21 | 21 |
from quixote.html import TemplateIO, htmltext, htmlescape |
22 | 22 | |
23 |
from qommon import _ |
|
24 |
from qommon.form import * |
|
25 |
from qommon import errors, misc |
|
26 |
from qommon.backoffice.menu import html_top |
|
27 |
from qommon.admin.menu import command_icon |
|
23 |
from ..qommon import _
|
|
24 |
from ..qommon.form import *
|
|
25 |
from ..qommon import errors, misc
|
|
26 |
from ..qommon.backoffice.menu import html_top
|
|
27 |
from ..qommon.admin.menu import command_icon
|
|
28 | 28 | |
29 | 29 |
from wcs import fields |
30 | 30 |
from wcs.formdef import FormDef |
wcs/admin/forms.py | ||
---|---|---|
28 | 28 |
from quixote.directory import Directory, AccessControlled |
29 | 29 |
from quixote.html import TemplateIO, htmltext |
30 | 30 | |
31 |
from qommon import _ |
|
32 |
from qommon import misc |
|
33 |
from qommon.errors import * |
|
34 |
from qommon.form import * |
|
35 |
from qommon.backoffice.menu import html_top |
|
36 |
from qommon import get_logger |
|
37 |
from qommon.misc import C_ |
|
31 |
from ..qommon import _
|
|
32 |
from ..qommon import misc
|
|
33 |
from ..qommon.errors import *
|
|
34 |
from ..qommon.form import *
|
|
35 |
from ..qommon.backoffice.menu import html_top
|
|
36 |
from ..qommon import get_logger
|
|
37 |
from ..qommon.misc import C_
|
|
38 | 38 | |
39 |
from qommon.afterjobs import AfterJob |
|
39 |
from ..qommon.afterjobs import AfterJob
|
|
40 | 40 | |
41 | 41 |
from wcs.formdef import FormDef, FormdefImportError, FormdefImportRecoverableError |
42 | 42 |
from wcs.categories import Category |
... | ... | |
44 | 44 |
from wcs.workflows import Workflow |
45 | 45 |
from wcs.forms.root import qrcode |
46 | 46 | |
47 |
from fields import FieldDefPage, FieldsDirectory |
|
47 |
from .fields import FieldDefPage, FieldsDirectory
|
|
48 | 48 |
from .categories import CategoriesDirectory |
49 | 49 |
from .data_sources import NamedDataSourcesDirectory |
50 | 50 |
from .logged_errors import LoggedErrorsDirectory |
wcs/admin/logged_errors.py | ||
---|---|---|
19 | 19 |
from quixote import get_response, get_publisher, redirect |
20 | 20 |
from quixote.directory import Directory |
21 | 21 |
from quixote.html import TemplateIO, htmltext |
22 |
from qommon import _, ngettext |
|
23 |
from qommon import errors, get_cfg |
|
24 |
from qommon.misc import localstrftime |
|
22 |
from ..qommon import _, ngettext
|
|
23 |
from ..qommon import errors, get_cfg
|
|
24 |
from ..qommon.misc import localstrftime
|
|
25 | 25 | |
26 | 26 |
from wcs.logged_errors import LoggedError |
27 | 27 |
wcs/admin/roles.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _, get_cfg |
|
22 |
from qommon import errors |
|
23 |
from qommon.form import * |
|
21 |
from ..qommon import _, get_cfg
|
|
22 |
from ..qommon import errors
|
|
23 |
from ..qommon.form import *
|
|
24 | 24 | |
25 |
from qommon.backoffice.menu import html_top |
|
25 |
from ..qommon.backoffice.menu import html_top
|
|
26 | 26 | |
27 | 27 |
from wcs.roles import Role, get_user_roles |
28 | 28 |
from wcs.formdef import FormDef |
wcs/admin/settings.py | ||
---|---|---|
33 | 33 |
from quixote.directory import Directory |
34 | 34 |
from quixote.html import TemplateIO, htmltext |
35 | 35 | |
36 |
from qommon import _ |
|
37 |
from qommon import get_cfg |
|
38 |
from qommon import errors |
|
39 |
from qommon import misc |
|
40 |
from qommon import template |
|
41 |
from qommon.form import * |
|
42 |
from qommon.sms import SMS |
|
43 | ||
44 |
from qommon.afterjobs import AfterJob |
|
45 |
from qommon.backoffice.menu import html_top |
|
46 |
from qommon.admin.menu import error_page |
|
47 |
from qommon.admin.cfg import cfg_submit |
|
48 |
from qommon.admin.emails import EmailsDirectory |
|
36 |
from ..qommon import _
|
|
37 |
from ..qommon import get_cfg
|
|
38 |
from ..qommon import errors
|
|
39 |
from ..qommon import misc
|
|
40 |
from ..qommon import template
|
|
41 |
from ..qommon.form import *
|
|
42 |
from ..qommon.sms import SMS
|
|
43 | ||
44 |
from ..qommon.afterjobs import AfterJob
|
|
45 |
from ..qommon.backoffice.menu import html_top
|
|
46 |
from ..qommon.admin.menu import error_page
|
|
47 |
from ..qommon.admin.cfg import cfg_submit
|
|
48 |
from ..qommon.admin.emails import EmailsDirectory
|
|
49 | 49 |
from wcs.qommon.admin.texts import TextsDirectory |
50 |
from qommon.admin.settings import SettingsDirectory as QommonSettingsDirectory |
|
51 |
from qommon.admin.logger import LoggerDirectory |
|
52 |
import qommon.ident |
|
53 |
import qommon.template |
|
50 |
from ..qommon.admin.settings import SettingsDirectory as QommonSettingsDirectory |
|
51 |
from ..qommon.admin.logger import LoggerDirectory |
|
52 |
from ..qommon import ident |
|
54 | 53 | |
55 | 54 |
from wcs.formdef import FormDef |
56 | 55 |
from wcs.carddef import CardDef |
... | ... | |
108 | 107 | |
109 | 108 |
def _q_lookup(self, component): |
110 | 109 |
get_response().breadcrumb.append( ('identification/', _('Identification')) ) |
111 |
return qommon.ident.get_method_admin_directory(component)
|
|
110 |
return ident.get_method_admin_directory(component) |
|
112 | 111 | |
113 | 112 | |
114 | 113 |
class UserFieldDefPage(FieldDefPage): |
... | ... | |
204 | 203 |
self.publisher.cfg['users'] = users_cfg |
205 | 204 |
self.publisher.write_cfg() |
206 | 205 |
if self.publisher.is_using_postgresql(): |
207 |
import sql |
|
206 |
from wcs import sql
|
|
208 | 207 |
sql.do_user_table() |
209 | 208 |
sql.do_tracking_code_table() |
210 | 209 |
sql.do_session_table() |
... | ... | |
371 | 370 | |
372 | 371 |
if path[1] in ('backoffice', 'admin') or \ |
373 | 372 |
get_request().get_method() == 'POST': |
374 |
from qommon.template import error_page as base_error_page |
|
373 |
from ..qommon.template import error_page as base_error_page
|
|
375 | 374 |
output = base_error_page(_("The theme preview doesn't support this.")) |
376 | 375 |
else: |
377 | 376 |
output = root_directory._q_traverse(path[1:]) |
378 | 377 | |
379 |
from qommon.template import decorate |
|
378 |
from ..qommon.template import decorate
|
|
380 | 379 |
if isinstance(output, template.QommonTemplateResponse): |
381 | 380 |
output = template.render(output.templates, output.context) |
382 | 381 |
theme_preview = decorate(output, response) |
... | ... | |
440 | 439 |
identification_cfg = get_cfg('identification', {}) |
441 | 440 |
for method in identification_cfg.get('methods', []): |
442 | 441 |
try: |
443 |
method_admin = qommon.ident.get_method_admin_directory(method)
|
|
442 |
method_admin = ident.get_method_admin_directory(method) |
|
444 | 443 |
except AttributeError: |
445 | 444 |
continue |
446 | 445 | |
... | ... | |
637 | 636 |
r += htmltext('<a rel="popup" href="install_theme">%s</a>') % _('Install New Theme') |
638 | 637 | |
639 | 638 |
r += htmltext('<form action="themes" enctype="multipart/form-data" method="post">') |
640 |
themes = qommon.template.get_themes_dict()
|
|
639 |
themes = template.get_themes_dict() |
|
641 | 640 |
r += htmltext('<ul class="biglist themes">') |
642 | 641 |
for theme, theme_dict in sorted(themes.items()): |
643 | 642 |
label = theme_dict.get('label') |
... | ... | |
670 | 669 |
r += htmltext('</form>') |
671 | 670 |
return r.getvalue() |
672 | 671 |
else: |
673 |
themes = qommon.template.get_themes()
|
|
672 |
themes = template.get_themes() |
|
674 | 673 |
if themes.has_key(str(request.form['theme'])): |
675 | 674 |
branding_cfg = get_cfg('branding', {}) |
676 | 675 |
branding_cfg[str('theme')] = str(request.form['theme']) |
... | ... | |
683 | 682 |
if not theme_id: |
684 | 683 |
return redirect('themes') |
685 | 684 | |
686 |
theme_directory = qommon.template.get_theme_directory(theme_id)
|
|
685 |
theme_directory = template.get_theme_directory(theme_id) |
|
687 | 686 |
if not theme_directory: |
688 | 687 |
return redirect('themes') |
689 | 688 | |
... | ... | |
752 | 751 |
get_session().message = ('error', _('Theme is missing a desc.xml file.')) |
753 | 752 |
return redirect('themes') |
754 | 753 |
desc_xml = z.read('%s/desc.xml' % theme_name) |
755 |
theme_dict = qommon.template.get_theme_dict(StringIO(desc_xml))
|
|
754 |
theme_dict = template.get_theme_dict(StringIO(desc_xml)) |
|
756 | 755 |
if theme_dict.get('name') != theme_name: |
757 | 756 |
get_session().message = ('error', _('desc.xml is missing a name attribute.')) |
758 | 757 |
return redirect('themes') |
... | ... | |
779 | 778 |
return self.install_theme_from_file(StringIO(fp.read())) |
780 | 779 | |
781 | 780 |
def template(self): |
782 |
from qommon.template import get_default_ezt_template |
|
781 |
from wcs.qommon.template import get_default_ezt_template
|
|
783 | 782 |
default_template_ezt = get_default_ezt_template() |
784 | 783 |
branding_cfg = get_cfg('branding', {}) |
785 | 784 |
template = branding_cfg.get('template', default_template_ezt) |
... | ... | |
811 | 810 |
return r.getvalue() |
812 | 811 | |
813 | 812 |
def template_submit(self, form = None): |
814 |
from qommon.template import DEFAULT_TEMPLATE_EZT, get_default_ezt_template |
|
813 |
from wcs.qommon.template import DEFAULT_TEMPLATE_EZT, get_default_ezt_template
|
|
815 | 814 |
theme_default_template_ezt = get_default_ezt_template() |
816 | 815 | |
817 | 816 |
get_publisher().reload_cfg() |
wcs/admin/users.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _ |
|
21 |
from ..qommon import _
|
|
22 | 22 |
import wcs.qommon.storage as st |
23 |
from qommon import errors |
|
24 |
from qommon import misc, get_cfg |
|
25 |
from qommon.backoffice.listing import pagination_links |
|
23 |
from ..qommon import errors
|
|
24 |
from ..qommon import misc, get_cfg
|
|
25 |
from ..qommon.backoffice.listing import pagination_links
|
|
26 | 26 |
from wcs.roles import Role |
27 | 27 | |
28 |
import qommon.ident
|
|
29 |
from qommon.ident.idp import is_idp_managing_user_attributes, is_idp_managing_user_roles |
|
30 |
from qommon.form import * |
|
31 |
from qommon.admin.emails import EmailsDirectory |
|
32 |
from qommon.backoffice.menu import html_top |
|
33 |
from qommon.admin.menu import error_page |
|
28 |
from ..qommon import ident
|
|
29 |
from ..qommon.ident.idp import is_idp_managing_user_attributes, is_idp_managing_user_roles
|
|
30 |
from ..qommon.form import *
|
|
31 |
from ..qommon.admin.emails import EmailsDirectory
|
|
32 |
from ..qommon.backoffice.menu import html_top
|
|
33 |
from ..qommon.admin.menu import error_page
|
|
34 | 34 | |
35 | 35 |
class UserUI(object): |
36 | 36 |
def __init__(self, user): |
... | ... | |
65 | 65 |
'render_br': False, |
66 | 66 |
'options': [(None, '---', None)] + [(x.id, x.name, x.id) for x in roles]}) |
67 | 67 | |
68 |
for klass in [x for x in qommon.ident.get_method_classes() if x.key in ident_methods]:
|
|
68 |
for klass in [x for x in ident.get_method_classes() if x.key in ident_methods]: |
|
69 | 69 |
if klass.method_admin_widget: |
70 | 70 |
value = klass().get_value(self.user) |
71 | 71 |
form.add(klass.method_admin_widget, 'method_%s' % klass.key, required = False, |
... | ... | |
94 | 94 |
self.user.store() |
95 | 95 | |
96 | 96 |
ident_methods = get_cfg('identification', {}).get('methods', []) |
97 |
for klass in [x for x in qommon.ident.get_method_classes() if x.key in ident_methods]:
|
|
97 |
for klass in [x for x in ident.get_method_classes() if x.key in ident_methods]: |
|
98 | 98 |
widget = form.get_widget('method_%s' % klass.key) |
99 | 99 |
if widget: |
100 | 100 |
klass().submit(self.user, widget) |
... | ... | |
229 | 229 | |
230 | 230 |
for method in ident_methods: |
231 | 231 |
try: |
232 |
actions = qommon.ident.get_method_user_directory(
|
|
232 |
actions = ident.get_method_user_directory( |
|
233 | 233 |
method, self.user).get_actions() |
234 | 234 |
except AttributeError: |
235 | 235 |
continue |
... | ... | |
283 | 283 |
return r.getvalue() |
284 | 284 |
else: |
285 | 285 |
ident_methods = get_cfg('identification', {}).get('methods', []) |
286 |
for klass in [x for x in qommon.ident.get_method_classes() if x.key in ident_methods]:
|
|
286 |
for klass in [x for x in ident.get_method_classes() if x.key in ident_methods]: |
|
287 | 287 |
if hasattr(klass, str('delete')): |
288 | 288 |
klass().delete(self.user) |
289 | 289 |
self.user.remove_self() |
... | ... | |
293 | 293 |
ident_methods = get_cfg('identification', {}).get('methods', []) |
294 | 294 |
if component in ident_methods: |
295 | 295 |
get_response().breadcrumb.append((component + '/', None)) |
296 |
return qommon.ident.get_method_user_directory(component, self.user)
|
|
296 |
return ident.get_method_user_directory(component, self.user) |
|
297 | 297 | |
298 | 298 |
class UsersDirectory(Directory): |
299 | 299 |
_q_exports = ['', 'new'] |
wcs/admin/workflows.py | ||
---|---|---|
27 | 27 |
from quixote.directory import Directory |
28 | 28 |
from quixote.html import TemplateIO, htmltext |
29 | 29 | |
30 |
from qommon import _ |
|
31 |
from qommon import errors |
|
32 |
from qommon import misc |
|
33 |
from qommon.form import * |
|
34 |
from qommon.backoffice.menu import html_top |
|
35 |
from qommon.admin.menu import command_icon |
|
36 |
from qommon import get_logger |
|
30 |
from ..qommon import _
|
|
31 |
from ..qommon import errors
|
|
32 |
from ..qommon import misc
|
|
33 |
from ..qommon.form import *
|
|
34 |
from ..qommon.backoffice.menu import html_top
|
|
35 |
from ..qommon.admin.menu import command_icon
|
|
36 |
from ..qommon import get_logger
|
|
37 | 37 | |
38 | 38 |
from wcs.workflows import * |
39 | 39 |
from wcs.carddef import CardDef |
wcs/admin/wscalls.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _ |
|
22 |
from qommon import errors |
|
23 |
from qommon.form import * |
|
24 |
from qommon.backoffice.menu import html_top |
|
21 |
from ..qommon import _
|
|
22 |
from ..qommon import errors
|
|
23 |
from ..qommon.form import *
|
|
24 |
from ..qommon.backoffice.menu import html_top
|
|
25 | 25 |
from wcs.wscalls import NamedWsCall, WsCallRequestWidget |
26 | 26 | |
27 | 27 |
class NamedWsCallUI(object): |
wcs/api.py | ||
---|---|---|
25 | 25 |
from django.utils.six.moves.urllib import parse as urllib |
26 | 26 |
from django.http import HttpResponse, HttpResponseBadRequest |
27 | 27 | |
28 |
from qommon import _ |
|
29 |
from qommon import misc |
|
30 |
from qommon.evalutils import make_datetime |
|
31 |
from qommon.errors import (AccessForbiddenError, QueryError, TraversalError, |
|
28 |
from .qommon import _
|
|
29 |
from .qommon import misc
|
|
30 |
from .qommon.evalutils import make_datetime
|
|
31 |
from .qommon.errors import (AccessForbiddenError, QueryError, TraversalError,
|
|
32 | 32 |
UnknownNameIdAccessForbiddenError, RequestError) |
33 |
from qommon.form import ComputedExpressionWidget, ConditionWidget |
|
33 |
from .qommon.form import ComputedExpressionWidget, ConditionWidget
|
|
34 | 34 | |
35 | 35 |
from wcs.categories import Category |
36 | 36 |
from wcs.conditions import Condition, ValidationError |
... | ... | |
42 | 42 |
import wcs.qommon.storage as st |
43 | 43 |
from wcs.api_utils import sign_url_auto_orig, is_url_signed, get_user_from_api_query_string |
44 | 44 | |
45 |
from backoffice.management import FormPage as BackofficeFormPage |
|
46 |
from backoffice.management import ManagementDirectory |
|
45 |
from .backoffice.management import FormPage as BackofficeFormPage
|
|
46 |
from .backoffice.management import ManagementDirectory
|
|
47 | 47 | |
48 | 48 |
def posted_json_data_to_formdata_data(formdef, data): |
49 | 49 |
# remap fields from varname to field id |
... | ... | |
632 | 632 | |
633 | 633 |
if get_publisher().is_using_postgresql() and not get_request().form.get('full') == 'on': |
634 | 634 |
from wcs import sql |
635 |
from qommon.storage import Equal |
|
635 |
from .qommon.storage import Equal
|
|
636 | 636 |
order_by = 'receipt_time' |
637 | 637 |
if get_request().form.get('sort') == 'desc': |
638 | 638 |
order_by = '-receipt_time' |
wcs/api_utils.py | ||
---|---|---|
27 | 27 |
from django.utils.six.moves.urllib import parse as urlparse |
28 | 28 | |
29 | 29 |
from quixote import get_request, get_publisher |
30 |
from qommon.errors import (AccessForbiddenError, UnknownNameIdAccessForbiddenError) |
|
30 |
from .qommon.errors import (AccessForbiddenError, UnknownNameIdAccessForbiddenError)
|
|
31 | 31 |
import qommon.misc |
32 | 32 | |
33 | 33 |
DEFAULT_DURATION = 30 |
wcs/backoffice/__init__.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from root import RootDirectory |
|
17 |
from .root import RootDirectory |
wcs/backoffice/cards.py | ||
---|---|---|
21 | 21 |
from quixote import get_publisher, get_request, get_response, get_session, redirect |
22 | 22 |
from quixote.html import TemplateIO, htmltext |
23 | 23 | |
24 |
from qommon import _, misc |
|
25 |
from qommon.misc import C_ |
|
24 |
from ..qommon import _, misc
|
|
25 |
from ..qommon.misc import C_
|
|
26 | 26 | |
27 | 27 |
from wcs.carddef import CardDef |
28 | 28 |
from wcs.roles import Role |
wcs/backoffice/data_management.py | ||
---|---|---|
17 | 17 |
from quixote import get_request, get_response, get_session, redirect |
18 | 18 |
from quixote.html import TemplateIO, htmltext, htmlescape |
19 | 19 | |
20 |
from qommon import _ |
|
21 |
from qommon import errors |
|
22 |
from qommon.backoffice.menu import html_top |
|
20 |
from ..qommon import _
|
|
21 |
from ..qommon import errors
|
|
22 |
from ..qommon.backoffice.menu import html_top
|
|
23 | 23 | |
24 | 24 |
from wcs.carddef import CardDef |
25 | 25 |
from .management import ManagementDirectory, FormPage, FormFillPage, FormBackOfficeStatusPage |
wcs/backoffice/management.py | ||
---|---|---|
33 | 33 |
from quixote.directory import Directory |
34 | 34 |
from quixote.html import TemplateIO, htmltext, htmlescape |
35 | 35 | |
36 |
from qommon import _, ngettext, ezt |
|
37 |
from qommon.admin.emails import EmailsDirectory |
|
38 |
from qommon.admin.menu import command_icon |
|
39 |
from qommon.backoffice.menu import html_top |
|
40 |
from qommon.backoffice.listing import pagination_links |
|
41 |
from qommon import misc, get_logger |
|
42 |
from qommon.evalutils import make_datetime |
|
43 |
from qommon.misc import C_, ellipsize |
|
44 |
from qommon.afterjobs import AfterJob |
|
45 |
from qommon import emails |
|
46 |
import qommon.sms
|
|
47 |
from qommon import errors |
|
48 |
from qommon import ods |
|
49 |
from qommon.form import * |
|
50 |
from qommon.storage import (Equal, NotEqual, LessOrEqual, GreaterOrEqual, Or, |
|
36 |
from ..qommon import _, ngettext, ezt
|
|
37 |
from ..qommon.admin.emails import EmailsDirectory
|
|
38 |
from ..qommon.admin.menu import command_icon
|
|
39 |
from ..qommon.backoffice.menu import html_top
|
|
40 |
from ..qommon.backoffice.listing import pagination_links
|
|
41 |
from ..qommon import misc, get_logger
|
|
42 |
from ..qommon.evalutils import make_datetime
|
|
43 |
from ..qommon.misc import C_, ellipsize
|
|
44 |
from ..qommon.afterjobs import AfterJob
|
|
45 |
from ..qommon import emails
|
|
46 |
from ..qommon import sms
|
|
47 |
from ..qommon import errors
|
|
48 |
from ..qommon import ods
|
|
49 |
from ..qommon.form import *
|
|
50 |
from ..qommon.storage import (Equal, NotEqual, LessOrEqual, GreaterOrEqual, Or,
|
|
51 | 51 |
Intersects, ILike, FtsMatch, Contains, Null) |
52 | 52 | |
53 | 53 |
from wcs.api_utils import get_user_from_api_query_string |
... | ... | |
142 | 142 |
if get_publisher().use_sms_feature: |
143 | 143 |
sms_cfg = get_cfg('sms', {}) |
144 | 144 |
mode = sms_cfg.get('mode', 'none') |
145 |
sms_class = qommon.sms.SMS.get_sms_class(mode)
|
|
145 |
sms_class = sms.SMS.get_sms_class(mode) |
|
146 | 146 |
if sms_class: |
147 | 147 |
form.add(StringWidget, 'sms', title=_('SMS Number'), required=False) |
148 | 148 |
form.add(RadiobuttonsWidget, 'method', |
wcs/backoffice/root.py | ||
---|---|---|
19 | 19 |
from quixote import get_publisher, get_request, get_response, redirect |
20 | 20 |
from quixote.html import TemplateIO, htmltext |
21 | 21 | |
22 |
from qommon import _ |
|
23 |
from qommon.backoffice import BackofficeRootDirectory |
|
24 |
from qommon.backoffice.menu import html_top |
|
22 |
from ..qommon import _
|
|
23 |
from ..qommon.backoffice import BackofficeRootDirectory
|
|
24 |
from ..qommon.backoffice.menu import html_top
|
|
25 | 25 | |
26 |
from qommon import misc, get_cfg |
|
27 |
from qommon import errors |
|
28 |
from qommon.form import * |
|
26 |
from ..qommon import misc, get_cfg
|
|
27 |
from ..qommon import errors
|
|
28 |
from ..qommon.form import *
|
|
29 | 29 | |
30 | 30 |
from wcs.formdef import FormDef |
31 | 31 | |
... | ... | |
202 | 202 |
return r.getvalue() |
203 | 203 | |
204 | 204 |
def get_sidebar(self): |
205 |
from qommon.admin.menu import get_vc_version |
|
205 |
from ..qommon.admin.menu import get_vc_version
|
|
206 | 206 |
r = TemplateIO(html=True) |
207 | 207 | |
208 | 208 |
r += htmltext('<div class="bo-block">') |
wcs/backoffice/studio.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 |
from quixote.directory import Directory |
19 |
from qommon import _ |
|
20 |
from qommon.backoffice.menu import html_top |
|
21 |
from qommon import template |
|
19 |
from ..qommon import _
|
|
20 |
from ..qommon.backoffice.menu import html_top
|
|
21 |
from ..qommon import template
|
|
22 | 22 | |
23 | 23 | |
24 | 24 |
class StudioDirectory(Directory): |
wcs/backoffice/submission.py | ||
---|---|---|
22 | 22 |
from quixote.directory import Directory |
23 | 23 |
from quixote.html import TemplateIO, htmltext |
24 | 24 | |
25 |
from qommon import _ |
|
26 |
from qommon.backoffice.menu import html_top |
|
27 |
from qommon.form import * |
|
28 |
from qommon import errors, misc |
|
25 |
from ..qommon import _
|
|
26 |
from ..qommon.backoffice.menu import html_top
|
|
27 |
from ..qommon.form import *
|
|
28 |
from ..qommon import errors, misc
|
|
29 | 29 | |
30 | 30 |
from wcs.formdata import FormData |
31 | 31 |
from wcs.formdef import FormDef |
wcs/carddef.py | ||
---|---|---|
18 | 18 |
import sys |
19 | 19 | |
20 | 20 |
from quixote import get_publisher |
21 |
from qommon import _ |
|
21 |
from .qommon import _
|
|
22 | 22 | |
23 | 23 |
from wcs.carddata import CardData |
24 | 24 |
from wcs.formdef import FormDef |
wcs/categories.py | ||
---|---|---|
17 | 17 |
from quixote import get_publisher, get_response |
18 | 18 |
from quixote.html import htmltext |
19 | 19 | |
20 |
from qommon import _ |
|
21 |
from qommon.storage import StorableObject |
|
22 |
from qommon.misc import simplify |
|
23 |
from qommon.substitution import Substitutions |
|
24 |
from qommon.xml_storage import XmlStorableObject |
|
20 |
from .qommon import _
|
|
21 |
from .qommon.storage import StorableObject
|
|
22 |
from .qommon.misc import simplify
|
|
23 |
from .qommon.substitution import Substitutions
|
|
24 |
from .qommon.xml_storage import XmlStorableObject
|
|
25 | 25 | |
26 | 26 |
class Category(XmlStorableObject): |
27 | 27 |
_names = 'categories' |
wcs/conditions.py | ||
---|---|---|
19 | 19 |
from quixote import get_publisher |
20 | 20 |
from django.template import Context, Template, TemplateSyntaxError |
21 | 21 | |
22 |
from qommon import _, get_logger |
|
23 |
from qommon.misc import site_encode |
|
22 |
from .qommon import _, get_logger
|
|
23 |
from .qommon.misc import site_encode
|
|
24 | 24 | |
25 | 25 | |
26 | 26 |
class ValidationError(ValueError): |
wcs/ctl/backup.py | ||
---|---|---|
18 | 18 |
import time |
19 | 19 |
import os |
20 | 20 | |
21 |
from qommon.ctl import Command, make_option |
|
21 |
from ..qommon.ctl import Command, make_option
|
|
22 | 22 | |
23 | 23 | |
24 | 24 |
class CmdBackup(Command): |
wcs/ctl/check_hobos.py | ||
---|---|---|
25 | 25 |
import hashlib |
26 | 26 | |
27 | 27 |
from quixote import cleanup |
28 |
from qommon import misc |
|
29 |
from qommon.ctl import Command, make_option |
|
30 |
from qommon.storage import atomic_write |
|
28 |
from ..qommon import misc
|
|
29 |
from ..qommon.ctl import Command, make_option
|
|
30 |
from ..qommon.storage import atomic_write
|
|
31 | 31 | |
32 | 32 |
from wcs.admin.settings import UserFieldsFormDef |
33 | 33 |
from wcs.fields import StringField, EmailField, DateField |
... | ... | |
299 | 299 | |
300 | 300 |
# initialize service provider side |
301 | 301 |
if not pub.cfg['sp'].get('publickey'): |
302 |
from qommon.ident.idp import MethodAdminDirectory |
|
302 |
from ..qommon.ident.idp import MethodAdminDirectory
|
|
303 | 303 |
spconfig = pub.cfg['sp'] |
304 | 304 |
spconfig['saml2_base_url'] = str(service.get('base_url')) + '/saml' |
305 | 305 |
spconfig['saml2_providerid'] = spconfig['saml2_base_url'] + '/metadata' |
... | ... | |
329 | 329 |
(bfd, metadata_pathname) = tempfile.mkstemp('.metadata') |
330 | 330 |
atomic_write(metadata_pathname, s) |
331 | 331 | |
332 |
from qommon.ident.idp import AdminIDPDir |
|
332 |
from ..qommon.ident.idp import AdminIDPDir
|
|
333 | 333 |
admin_dir = AdminIDPDir() |
334 | 334 |
key_provider_id = admin_dir.submit_new_remote( |
335 | 335 |
metadata_pathname, None, metadata_url, None) |
wcs/ctl/delete_tenant.py | ||
---|---|---|
21 | 21 |
from datetime import datetime |
22 | 22 |
from shutil import rmtree |
23 | 23 | |
24 |
from qommon.ctl import Command, make_option |
|
24 |
from ..qommon.ctl import Command, make_option
|
|
25 | 25 | |
26 | 26 | |
27 | 27 |
class CmdDeleteTenant(Command): |
wcs/ctl/export_settings.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import os |
18 | 18 | |
19 |
from qommon.ctl import Command, make_option |
|
19 |
from ..qommon.ctl import Command, make_option
|
|
20 | 20 | |
21 | 21 |
class CmdExportSettings(Command): |
22 | 22 |
name = 'export_settings' |
wcs/ctl/hobo_notify.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
from quixote import get_publisher |
22 | 22 |
from wcs.roles import Role |
23 |
from qommon.ctl import Command |
|
24 |
from qommon.publisher import get_cfg |
|
23 |
from ..qommon.ctl import Command
|
|
24 |
from ..qommon.publisher import get_cfg
|
|
25 | 25 |
from wcs.admin.settings import UserFieldsFormDef |
26 | 26 |
from wcs.qommon.misc import json_encode_helper |
27 | 27 |
wcs/ctl/management/commands/__init__.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
from django.core.management.base import BaseCommand, CommandError |
20 | 20 | |
21 |
from qommon.publisher import get_publisher_class |
|
21 |
from wcs.qommon.publisher import get_publisher_class
|
|
22 | 22 | |
23 | 23 | |
24 | 24 |
class TenantCommand(BaseCommand): |
wcs/ctl/management/commands/convert_to_sql.py | ||
---|---|---|
23 | 23 |
from django.core.management.base import BaseCommand |
24 | 24 |
from django.core.management.base import CommandError |
25 | 25 | |
26 |
from qommon.publisher import get_publisher_class |
|
26 |
from wcs.qommon.publisher import get_publisher_class
|
|
27 | 27 | |
28 | 28 |
from wcs import sql |
29 | 29 |
from wcs.formdef import FormDef |
wcs/ctl/management/commands/runscript.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
from django.core.management.base import CommandError |
23 | 23 | |
24 |
from qommon.publisher import get_publisher_class |
|
24 |
from wcs.qommon.publisher import get_publisher_class
|
|
25 | 25 | |
26 | 26 |
from . import TenantCommand |
27 | 27 |
wcs/ctl/process_bounce.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
from Bouncers import BouncerAPI |
23 | 23 | |
24 |
from qommon.ctl import Command |
|
24 |
from ..qommon.ctl import Command
|
|
25 | 25 | |
26 | 26 |
COMMA_SPACE = ', ' |
27 | 27 | |
... | ... | |
29 | 29 |
name = 'process_bounce' |
30 | 30 | |
31 | 31 |
def execute(self, base_options, sub_options, args): |
32 |
from qommon.tokens import Token |
|
33 |
from qommon.bounces import Bounce |
|
32 |
from ..qommon.tokens import Token
|
|
33 |
from ..qommon.bounces import Bounce
|
|
34 | 34 | |
35 |
import publisher |
|
35 |
from .. import publisher
|
|
36 | 36 | |
37 | 37 |
try: |
38 | 38 |
publisher.WcsPublisher.configure(self.config) |
wcs/ctl/rebuild_indexes.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import os |
18 | 18 | |
19 |
from qommon.ctl import Command, make_option |
|
19 |
from ..qommon.ctl import Command, make_option
|
|
20 | 20 | |
21 | 21 |
def rebuild_vhost_indexes(pub, destroy=False): |
22 | 22 |
from wcs.formdef import FormDef |
wcs/ctl/restore.py | ||
---|---|---|
18 | 18 |
import tarfile |
19 | 19 |
import os |
20 | 20 | |
21 |
from qommon.ctl import Command, make_option |
|
21 |
from ..qommon.ctl import Command, make_option
|
|
22 | 22 | |
23 | 23 | |
24 | 24 |
class CmdRestore(Command): |
wcs/ctl/runscript.py | ||
---|---|---|
19 | 19 |
import warnings |
20 | 20 |
import sys |
21 | 21 | |
22 |
from qommon.ctl import Command, make_option |
|
22 |
from ..qommon.ctl import Command, make_option
|
|
23 | 23 | |
24 | 24 |
class CmdRunScript(Command): |
25 | 25 |
'''Run a script within a given host publisher context''' |
wcs/ctl/shell.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
import os.path |
23 | 23 | |
24 |
from qommon.ctl import Command, make_option |
|
24 |
from ..qommon.ctl import Command, make_option
|
|
25 | 25 | |
26 | 26 |
class CmdShell(Command): |
27 | 27 |
'''Launch a shell and initialize a publisher on a given host''' |
wcs/ctl/wipe_data.py | ||
---|---|---|
17 | 17 |
import os |
18 | 18 |
import sys |
19 | 19 | |
20 |
from qommon.ctl import Command, make_option |
|
20 |
from ..qommon.ctl import Command, make_option
|
|
21 | 21 | |
22 | 22 |
class CmdWipeData(Command): |
23 | 23 |
name = 'wipe-data' |
wcs/data_sources.py | ||
---|---|---|
24 | 24 |
from quixote import get_publisher, get_request, get_session |
25 | 25 |
from quixote.html import TemplateIO |
26 | 26 | |
27 |
from qommon import _ |
|
28 |
from qommon.form import * |
|
29 |
from qommon.humantime import seconds2humanduration |
|
30 |
from qommon.misc import get_variadic_url |
|
31 |
import qommon.misc
|
|
32 |
from qommon import get_logger |
|
27 |
from .qommon import _
|
|
28 |
from .qommon.form import *
|
|
29 |
from .qommon.humantime import seconds2humanduration
|
|
30 |
from .qommon.misc import get_variadic_url
|
|
31 |
from .qommon import misc
|
|
32 |
from .qommon import get_logger
|
|
33 | 33 | |
34 |
from qommon.storage import StorableObject |
|
35 |
from qommon.template import Template |
|
36 |
from qommon.xml_storage import XmlStorableObject |
|
34 |
from .qommon.storage import StorableObject
|
|
35 |
from .qommon.template import Template
|
|
36 |
from .qommon.xml_storage import XmlStorableObject
|
|
37 | 37 | |
38 |
from wcs.api_utils import sign_url_auto_orig
|
|
38 |
from .api_utils import sign_url_auto_orig |
|
39 | 39 | |
40 | 40 | |
41 | 41 |
data_source_functions = {} |
... | ... | |
63 | 63 |
('carddef:%s' % x.url_name, x.name, 'carddef:%s' % x.url_name) |
64 | 64 |
for x in CardDef.select(lightweight=True, ignore_errors=True) |
65 | 65 |
if x.digest_template]) |
66 |
options.sort(key=lambda x: qommon.misc.simplify(x[1]))
|
|
66 |
options.sort(key=lambda x: misc.simplify(x[1])) |
|
67 | 67 | |
68 | 68 |
options.insert(0, (None, _('None'), None)) |
69 | 69 |
options.append(('json', _('JSON URL'), 'json')) |
... | ... | |
124 | 124 |
items = [x.get_data_source_structured_item() |
125 | 125 |
for x in carddef.data_class().select() |
126 | 126 |
if not x.is_draft()] |
127 |
items.sort(key=lambda x: qommon.misc.simplify(x['text']))
|
|
127 |
items.sort(key=lambda x: misc.simplify(x['text'])) |
|
128 | 128 |
return items |
129 | 129 | |
130 | 130 |
if data_source.get('type') not in ('json', 'jsonp', 'formula'): |
... | ... | |
154 | 154 |
return [] |
155 | 155 |
if len(value) == 0: |
156 | 156 |
return [] |
157 |
value = qommon.misc.json_encode_helper(value, get_publisher().site_charset)
|
|
157 |
value = misc.json_encode_helper(value, get_publisher().site_charset) |
|
158 | 158 |
if isinstance(value[0], list) or isinstance(value[0], tuple): |
159 | 159 |
if len(value[0]) >= 3: |
160 | 160 |
return [{'id': x[0], 'text': x[1], 'key': x[2]} for x in value] |
... | ... | |
196 | 196 |
unsigned_url = url |
197 | 197 |
url = sign_url_auto_orig(url) |
198 | 198 |
try: |
199 |
entries = qommon.misc.json_loads(qommon.misc.urlopen(url).read())
|
|
199 |
entries = misc.json_loads(misc.urlopen(url).read())
|
|
200 | 200 |
if type(entries) is not dict: |
201 | 201 |
raise ValueError('not a json dict') |
202 | 202 |
if type(entries.get('data')) is not list: |
... | ... | |
216 | 216 |
cache.set(cache_key, items, cache_duration) |
217 | 217 | |
218 | 218 |
return items |
219 |
except qommon.misc.ConnectionError as e:
|
|
219 |
except misc.ConnectionError as e: |
|
220 | 220 |
get_logger().warn('Error loading JSON data source (%s)' % str(e)) |
221 | 221 |
except ValueError as e: |
222 | 222 |
get_logger().warn('Error reading JSON data source output (%s)' % str(e)) |
... | ... | |
300 | 300 |
super(NamedDataSource, self).store() |
301 | 301 | |
302 | 302 |
def get_new_slug(self): |
303 |
new_slug = qommon.misc.simplify(self.name, space='_')
|
|
303 |
new_slug = misc.simplify(self.name, space='_') |
|
304 | 304 |
base_new_slug = new_slug |
305 | 305 |
suffix_no = 0 |
306 | 306 |
while True: |
... | ... | |
369 | 369 | |
370 | 370 |
unsigned_url = url |
371 | 371 |
url = sign_url_auto_orig(url) |
372 |
resp = qommon.misc.urlopen(url).read()
|
|
372 |
resp = misc.urlopen(url).read() |
|
373 | 373 |
if hasattr(request, 'datasources_cache'): |
374 | 374 |
request.datasources_cache[unsigned_url] = resp |
375 | 375 |
return resp |
... | ... | |
384 | 384 |
value = None |
385 | 385 |
if self.type == 'json' and self.id_parameter: |
386 | 386 |
resp = self.load_json(self.id_parameter, option_id) |
387 |
response = qommon.misc.json_loads(resp)
|
|
387 |
response = misc.json_loads(resp) |
|
388 | 388 |
if response['data']: |
389 | 389 |
value = response['data'][0] |
390 | 390 |
else: |
wcs/fields.py | ||
---|---|---|
33 | 33 |
from django.utils.html import urlize |
34 | 34 |
from django.utils.six.moves.html_parser import HTMLParser |
35 | 35 | |
36 |
from qommon import _ |
|
37 |
from qommon import evalutils |
|
38 |
from qommon.form import * |
|
39 |
from qommon.misc import localstrftime, strftime, date_format, ellipsize, can_thumbnail |
|
40 |
from qommon.template import Template, TemplateError |
|
41 |
from qommon import get_cfg, get_logger |
|
42 | ||
43 |
import data_sources |
|
44 |
import portfolio |
|
45 |
from conditions import Condition |
|
36 |
from .qommon import _
|
|
37 |
from .qommon import evalutils
|
|
38 |
from .qommon.form import *
|
|
39 |
from .qommon.misc import localstrftime, strftime, date_format, ellipsize, can_thumbnail
|
|
40 |
from .qommon.template import Template, TemplateError
|
|
41 |
from .qommon import get_cfg, get_logger
|
|
42 | ||
43 |
from . import data_sources
|
|
44 |
from . import portfolio
|
|
45 |
from .conditions import Condition
|
|
46 | 46 | |
47 | 47 | |
48 | 48 |
class PrefillSelectionWidget(CompositeWidget): |
wcs/formdata.py | ||
---|---|---|
25 | 25 |
from quixote import get_request, get_publisher, get_session |
26 | 26 |
from quixote.http_request import Upload |
27 | 27 | |
28 |
from qommon import _ |
|
29 |
from qommon.storage import StorableObject, Intersects, Contains |
|
30 |
import qommon.misc
|
|
31 |
from qommon.evalutils import make_datetime |
|
32 |
from qommon.publisher import get_cfg |
|
33 |
from qommon.substitution import Substitutions, invalidate_substitution_cache |
|
34 |
from qommon.template import Template |
|
28 |
from .qommon import _
|
|
29 |
from .qommon.storage import StorableObject, Intersects, Contains
|
|
30 |
from .qommon import misc
|
|
31 |
from .qommon.evalutils import make_datetime
|
|
32 |
from .qommon.publisher import get_cfg
|
|
33 |
from .qommon.substitution import Substitutions, invalidate_substitution_cache
|
|
34 |
from .qommon.template import Template
|
|
35 | 35 | |
36 |
from roles import Role |
|
37 |
from fields import FileField |
|
36 |
from .roles import Role
|
|
37 |
from .fields import FileField
|
|
38 | 38 | |
39 | 39 | |
40 | 40 |
def get_dict_with_varnames(fields, data, formdata=None, varnames_only=False): |
... | ... | |
58 | 58 |
new_data['f%s' % field.id.replace('-', '_')] = value |
59 | 59 | |
60 | 60 |
# also add it as 'field_' + normalized(field label) |
61 |
identifier_name = qommon.misc.simplify(field.label, space = '_')
|
|
61 |
identifier_name = misc.simplify(field.label, space = '_') |
|
62 | 62 |
new_data['field_' + identifier_name] = value |
63 | 63 | |
64 | 64 |
# and finally add it as its manually defined variable name |
... | ... | |
638 | 638 |
if field.type == 'display_name': |
639 | 639 |
return self.get_display_name() |
640 | 640 |
if field.type == 'time': |
641 |
return qommon.misc.localstrftime(self.receipt_time)
|
|
641 |
return misc.localstrftime(self.receipt_time) |
|
642 | 642 |
if field.type == 'last_update_time': |
643 |
return qommon.misc.localstrftime(self.last_update_time)
|
|
643 |
return misc.localstrftime(self.last_update_time) |
|
644 | 644 |
if field.type == 'user-label': |
645 | 645 |
return self.get_user_label() or '-' |
646 | 646 |
if field.type == 'status': |
... | ... | |
685 | 685 | |
686 | 686 |
if self.id: |
687 | 687 |
d.update({ |
688 |
'form_receipt_date': qommon.misc.strftime(qommon.misc.date_format(), self.receipt_time),
|
|
689 |
'form_receipt_time': qommon.misc.strftime('%H:%M', self.receipt_time),
|
|
688 |
'form_receipt_date': misc.strftime(misc.date_format(), self.receipt_time),
|
|
689 |
'form_receipt_time': misc.strftime('%H:%M', self.receipt_time), |
|
690 | 690 |
'form_number': str(self.get_display_id()), |
691 | 691 |
'form_number_raw': '%s' % self.id, |
692 | 692 |
'form_url': self.get_url(), |
... | ... | |
823 | 823 |
return d |
824 | 824 | |
825 | 825 |
def get_substitution_variables(self, minimal=False): |
826 |
from qommon.substitution import CompatibilityNamesDict |
|
826 |
from .qommon.substitution import CompatibilityNamesDict
|
|
827 | 827 |
from wcs.variables import LazyFormData |
828 | 828 |
from wcs.workflows import AttachmentsSubstitutionProxy |
829 | 829 |
variables = CompatibilityNamesDict({ |
... | ... | |
1080 | 1080 |
def export_to_json(self, include_files=True, anonymise=False): |
1081 | 1081 |
data = self.get_json_export_dict(include_files=include_files, anonymise=anonymise) |
1082 | 1082 |
return json.dumps(data, |
1083 |
cls=qommon.misc.JSONEncoder,
|
|
1083 |
cls=misc.JSONEncoder, |
|
1084 | 1084 |
encoding=get_publisher().site_charset) |
1085 | 1085 | |
1086 | 1086 |
def mark_as_being_visited(self): |
wcs/formdef.py | ||
---|---|---|
27 | 27 |
from quixote import get_request, get_publisher |
28 | 28 |
from quixote.http_request import Upload |
29 | 29 | |
30 |
from qommon import _ |
|
31 |
from qommon.storage import StorableObject, fix_key |
|
32 |
from qommon.cron import CronJob |
|
33 |
from qommon.form import * |
|
34 |
from qommon.misc import simplify, get_as_datetime |
|
35 |
from qommon import get_cfg |
|
36 |
from qommon.substitution import Substitutions |
|
37 |
from qommon.publisher import get_publisher_class |
|
38 | ||
39 |
from formdata import FormData |
|
40 |
from roles import Role, logged_users_role |
|
41 |
from categories import Category |
|
42 |
import fields |
|
43 |
import data_sources |
|
30 |
from .qommon import _
|
|
31 |
from .qommon.storage import StorableObject, fix_key
|
|
32 |
from .qommon.cron import CronJob
|
|
33 |
from .qommon.form import *
|
|
34 |
from .qommon.misc import simplify, get_as_datetime
|
|
35 |
from .qommon import get_cfg
|
|
36 |
from .qommon.substitution import Substitutions
|
|
37 |
from .qommon.publisher import get_publisher_class
|
|
38 | ||
39 |
from .formdata import FormData
|
|
40 |
from .roles import Role, logged_users_role
|
|
41 |
from .categories import Category
|
|
42 |
from . import fields
|
|
43 |
from . import data_sources
|
|
44 | 44 | |
45 | 45 | |
46 | 46 |
class FormdefImportError(Exception): |
... | ... | |
1252 | 1252 |
return d |
1253 | 1253 | |
1254 | 1254 |
def get_substitution_variables(self, minimal=False): |
1255 |
from qommon.substitution import CompatibilityNamesDict |
|
1255 |
from .qommon.substitution import CompatibilityNamesDict
|
|
1256 | 1256 |
from wcs.variables import LazyFormDef |
1257 | 1257 |
return CompatibilityNamesDict({'form': LazyFormDef(self)}) |
1258 | 1258 | |
... | ... | |
1462 | 1462 |
return pickle.dumps(object, protocol=2) + pickle.dumps(object.fields, protocol=2) |
1463 | 1463 | |
1464 | 1464 | |
1465 |
from qommon.admin.emails import EmailsDirectory |
|
1465 |
from .qommon.admin.emails import EmailsDirectory
|
|
1466 | 1466 | |
1467 | 1467 |
EmailsDirectory.register('new_user', N_('Notification of creation to user'), |
1468 | 1468 |
enabled=False, |
wcs/forms/actions.py | ||
---|---|---|
17 | 17 |
from quixote import redirect |
18 | 18 |
from quixote.directory import Directory |
19 | 19 | |
20 |
from qommon import errors |
|
21 |
from qommon import misc |
|
22 |
from qommon import template |
|
23 |
from qommon import tokens |
|
24 |
from qommon.form import Form |
|
20 |
from ..qommon import errors
|
|
21 |
from ..qommon import misc
|
|
22 |
from ..qommon import template
|
|
23 |
from ..qommon import tokens
|
|
24 |
from ..qommon.form import Form
|
|
25 | 25 | |
26 | 26 |
from wcs.formdef import FormDef |
27 | 27 |
from wcs.forms.common import FormTemplateMixin |
wcs/forms/backoffice.py | ||
---|---|---|
19 | 19 |
from quixote import get_request, get_publisher, redirect |
20 | 20 |
from quixote.html import htmltext, TemplateIO |
21 | 21 | |
22 |
from qommon import _ |
|
23 |
from qommon import misc |
|
24 |
from qommon.form import * |
|
25 |
from qommon.backoffice.listing import pagination_links |
|
22 |
from ..qommon import _
|
|
23 |
from ..qommon import misc
|
|
24 |
from ..qommon.form import *
|
|
25 |
from ..qommon.backoffice.listing import pagination_links
|
|
26 | 26 |
from wcs.roles import logged_users_role |
27 | 27 | |
28 | 28 |
class FormDefUI(object): |
wcs/forms/common.py | ||
---|---|---|
26 | 26 |
from wcs.fields import WidgetField, FileField |
27 | 27 |
from wcs.workflows import EditableWorkflowStatusItem |
28 | 28 | |
29 |
from qommon import _ |
|
30 |
from qommon import misc |
|
31 |
from qommon import template |
|
32 |
from qommon import get_logger |
|
33 |
from qommon.form import * |
|
29 |
from ..qommon import _
|
|
30 |
from ..qommon import misc
|
|
31 |
from ..qommon import template
|
|
32 |
from ..qommon import get_logger
|
|
33 |
from ..qommon.form import *
|
|
34 | 34 | |
35 | 35 |
from wcs.qommon.admin.texts import TextsDirectory |
36 | 36 | |
37 |
from qommon import errors |
|
37 |
from ..qommon import errors
|
|
38 | 38 | |
39 | 39 | |
40 | 40 |
class FileDirectory(Directory): |
wcs/forms/preview.py | ||
---|---|---|
17 | 17 |
from quixote import get_publisher |
18 | 18 |
from quixote.directory import Directory, AccessControlled |
19 | 19 |
from quixote.html import htmltext, TemplateIO |
20 |
from qommon import errors, _ |
|
20 |
from ..qommon import errors, _
|
|
21 | 21 | |
22 | 22 |
from .root import FormPage |
23 | 23 |
wcs/forms/root.py | ||
---|---|---|
38 | 38 |
from quixote.form.widget import * |
39 | 39 |
from quixote.html import TemplateIO, htmltext |
40 | 40 | |
41 |
from qommon import _ |
|
42 |
from qommon.admin.emails import EmailsDirectory |
|
43 |
from qommon import errors, get_cfg |
|
44 |
from qommon import misc, get_logger |
|
45 |
from qommon import template |
|
46 |
from qommon.form import * |
|
47 |
from qommon.logger import BotFilter |
|
48 |
from qommon import emails |
|
41 |
from ..qommon import _
|
|
42 |
from ..qommon.admin.emails import EmailsDirectory
|
|
43 |
from ..qommon import errors, get_cfg
|
|
44 |
from ..qommon import misc, get_logger
|
|
45 |
from ..qommon import template
|
|
46 |
from ..qommon.form import *
|
|
47 |
from ..qommon.logger import BotFilter
|
|
48 |
from ..qommon import emails
|
|
49 | 49 | |
50 | 50 |
from wcs import data_sources |
51 | 51 |
from wcs.categories import Category |
wcs/forms/workflows.py | ||
---|---|---|
19 | 19 |
from quixote import get_request, get_response |
20 | 20 |
from quixote.directory import Directory |
21 | 21 | |
22 |
from qommon import errors |
|
22 |
from ..qommon import errors
|
|
23 | 23 | |
24 | 24 |
from wcs.api import get_user_from_api_query_string, is_url_signed |
25 | 25 |
from wcs.roles import logged_users_role |
wcs/logged_errors.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import datetime |
18 | 18 | |
19 |
from qommon.misc import simplify |
|
20 |
from qommon.xml_storage import XmlStorableObject |
|
19 |
from .qommon.misc import simplify
|
|
20 |
from .qommon.xml_storage import XmlStorableObject
|
|
21 | 21 |
from wcs.formdef import FormDef |
22 | 22 |
from wcs.workflows import Workflow |
23 | 23 |
wcs/myspace.py | ||
---|---|---|
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from quixote import get_request, redirect |
18 |
import qommon.myspace
|
|
18 |
from .qommon import myspace
|
|
19 | 19 | |
20 |
class MyspaceDirectory(qommon.myspace.MyspaceDirectory):
|
|
20 |
class MyspaceDirectory(myspace.MyspaceDirectory): |
|
21 | 21 |
_q_exports = ['', 'profile', 'new', 'password', 'remove', 'drafts', 'forms'] |
22 | 22 | |
23 | 23 |
def drafts(self): |
wcs/portfolio.py | ||
---|---|---|
17 | 17 |
import json |
18 | 18 |
import hashlib |
19 | 19 |
import urllib |
20 |
import urlparse |
|
21 | 20 |
import base64 |
22 | 21 | |
23 |
from qommon import get_logger |
|
24 |
from qommon.misc import http_get_page, json_loads, http_post_request, urlopen |
|
25 |
import qommon.form |
|
22 |
from django.utils.six.moves.urllib import parse as urlparse |
|
23 | ||
24 |
from .qommon import get_logger |
|
25 |
from .qommon.misc import http_get_page, json_loads, http_post_request, urlopen |
|
26 | 26 |
from quixote import get_publisher, get_request, get_response, redirect, get_session |
27 | 27 |
from quixote.directory import Directory |
28 | 28 |
from quixote.html import TemplateIO, htmltext |
... | ... | |
131 | 131 |
scheme, netloc, path, qs, frag = urlparse.urlsplit(url) |
132 | 132 |
path = map(None, path.split('/')) |
133 | 133 |
name = urllib.unquote(path[-1]) |
134 |
download = qommon.form.PicklableUpload(name, content_type='application/pdf') |
|
134 |
from .qommon.form import PicklableUpload |
|
135 |
download = PicklableUpload(name, content_type='application/pdf') |
|
135 | 136 |
download.__setstate__({ |
136 | 137 |
'data': document, |
137 | 138 |
}) |
wcs/publisher.py | ||
---|---|---|
29 | 29 |
except ImportError: |
30 | 30 |
pass |
31 | 31 | |
32 |
from qommon.publisher import set_publisher_class, QommonPublisher |
|
32 |
from .qommon.publisher import set_publisher_class, QommonPublisher
|
|
33 | 33 | |
34 | 34 |
# this is terribly ugly but import RootDirectory will import a bunch of things, |
35 | 35 |
# and some of them need a publisher to be set |
... | ... | |
38 | 38 |
set_publisher_class(StubWcsPublisher) |
39 | 39 | |
40 | 40 | |
41 |
from root import RootDirectory |
|
42 |
from backoffice import RootDirectory as BackofficeRootDirectory |
|
43 |
from admin import RootDirectory as AdminRootDirectory |
|
44 |
import sessions |
|
45 |
from qommon.cron import CronJob |
|
41 |
from .root import RootDirectory
|
|
42 |
from .backoffice import RootDirectory as BackofficeRootDirectory
|
|
43 |
from .admin import RootDirectory as AdminRootDirectory
|
|
44 |
from . import sessions
|
|
45 |
from .qommon.cron import CronJob
|
|
46 | 46 | |
47 |
from users import User |
|
48 |
from tracking_code import TrackingCode |
|
49 |
from logged_errors import LoggedError |
|
47 |
from .users import User
|
|
48 |
from .tracking_code import TrackingCode
|
|
49 |
from .logged_errors import LoggedError
|
|
50 | 50 | |
51 | 51 |
import pickle |
52 | 52 | |
53 | 53 |
class UnpicklerClass(pickle.Unpickler): |
54 | 54 |
def find_class(self, module, name): |
55 |
if module == 'wcs.form':
|
|
56 |
module = 'qommon.form' |
|
55 |
if module == 'qommon.form':
|
|
56 |
module = 'wcs.qommon.form'
|
|
57 | 57 |
__import__(module) |
58 | 58 |
mod = sys.modules[module] |
59 | 59 |
klass = getattr(mod, name) |
wcs/qommon/__init__.py | ||
---|---|---|
40 | 40 |
return message |
41 | 41 |
return unicode(pub.ngettext(*args), 'utf-8').encode(pub.site_charset) |
42 | 42 | |
43 |
from publisher import get_cfg, get_logger, get_publisher_class |
|
44 |
import publisher |
|
43 |
from .publisher import get_cfg, get_logger, get_publisher_class
|
|
44 |
from . import publisher
|
|
45 | 45 |
publisher._ = _ |
46 | 46 | |
47 | 47 |
wcs/qommon/admin/cfg.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 |
from qommon import get_cfg
|
|
19 |
from .. import get_cfg
|
|
20 | 20 | |
21 | 21 |
def cfg_submit(form, cfg_key, fields): |
22 | 22 |
get_publisher().reload_cfg() |
wcs/qommon/admin/emails.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import htmltext, TemplateIO |
20 | 20 | |
21 |
from qommon import _
|
|
22 |
from qommon.form import *
|
|
23 |
from qommon import misc, get_cfg
|
|
24 |
from qommon.backoffice.menu import html_top
|
|
25 |
from qommon.admin.cfg import cfg_submit
|
|
21 |
from .. import _
|
|
22 |
from ..form import *
|
|
23 |
from .. import misc, get_cfg
|
|
24 |
from ..backoffice.menu import html_top
|
|
25 |
from ..admin.cfg import cfg_submit
|
|
26 | 26 | |
27 | 27 |
class EmailsDirectory(Directory): |
28 | 28 |
emails_dict = {} |
wcs/qommon/admin/logger.py | ||
---|---|---|
21 | 21 |
from quixote.html import htmltext, TemplateIO |
22 | 22 |
from quixote.directory import Directory |
23 | 23 | |
24 |
from qommon import _
|
|
25 |
from qommon import logger, errors
|
|
26 |
from qommon.backoffice.menu import html_top
|
|
27 |
from qommon.admin.menu import error_page
|
|
24 |
from .. import _
|
|
25 |
from .. import logger, errors
|
|
26 |
from ..backoffice.menu import html_top
|
|
27 |
from ..admin.menu import error_page
|
|
28 | 28 | |
29 | 29 |
class ByUserDirectory(Directory): |
30 | 30 |
def _q_lookup(self, component): |
wcs/qommon/admin/menu.py | ||
---|---|---|
17 | 17 |
from quixote import get_publisher, get_request |
18 | 18 |
from quixote.html import TemplateIO, htmltext |
19 | 19 | |
20 |
from qommon import _
|
|
21 |
from qommon.backoffice.menu import html_top
|
|
20 |
from .. import _
|
|
21 |
from ..backoffice.menu import html_top
|
|
22 | 22 |
import re |
23 | 23 | |
24 | 24 |
def _find_vc_version(): |
wcs/qommon/admin/settings.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory, AccessControlled |
19 | 19 |
from quixote.html import TemplateIO, htmltext |
20 | 20 | |
21 |
from qommon import _
|
|
22 |
from qommon.form import *
|
|
23 |
from qommon.admin.cfg import cfg_submit
|
|
24 |
from qommon.backoffice.menu import html_top
|
|
21 |
from .. import _
|
|
22 |
from ..form import *
|
|
23 |
from ..admin.cfg import cfg_submit
|
|
24 |
from ..backoffice.menu import html_top
|
|
25 | 25 | |
26 | 26 |
class SettingsDirectory(AccessControlled, Directory): |
27 | 27 |
def _q_access(self): |
wcs/qommon/admin/texts.py | ||
---|---|---|
20 | 20 |
from quixote.html import TemplateIO, htmltext |
21 | 21 |
from quixote.directory import Directory |
22 | 22 | |
23 |
from qommon import _ |
|
24 |
from qommon.form import * |
|
25 |
from qommon import misc, get_cfg, ezt |
|
26 |
from qommon.backoffice.menu import html_top |
|
27 |
from qommon.template import Template |
|
23 |
from wcs.qommon import _
|
|
24 |
from wcs.qommon.form import *
|
|
25 |
from wcs.qommon import misc, get_cfg, ezt
|
|
26 |
from wcs.qommon.backoffice.menu import html_top
|
|
27 |
from wcs.qommon.template import Template
|
|
28 | 28 | |
29 | 29 | |
30 | 30 |
class TextsDirectory(Directory): |
wcs/qommon/afterjobs.py | ||
---|---|---|
17 | 17 |
from quixote.directory import Directory |
18 | 18 |
from quixote import get_response |
19 | 19 | |
20 |
import errors |
|
21 |
from http_response import AfterJob |
|
22 |
from qommon import _
|
|
20 |
from . import errors
|
|
21 |
from .http_response import AfterJob
|
|
22 |
from . import _
|
|
23 | 23 | |
24 | 24 |
class AfterJobStatusDirectory(Directory): |
25 | 25 |
def _q_lookup(self, component): |
wcs/qommon/backoffice/__init__.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from root import BackofficeRootDirectory |
|
17 |
from .root import BackofficeRootDirectory |
wcs/qommon/backoffice/listing.py | ||
---|---|---|
19 | 19 |
from quixote.html import htmltext, TemplateIO |
20 | 20 |
from quixote import get_request, get_response |
21 | 21 | |
22 |
from qommon import _
|
|
22 |
from .. import _
|
|
23 | 23 | |
24 | 24 |
def pagination_links(offset, limit, total_count): |
25 | 25 |
get_response().add_javascript(['jquery.js', 'wcs.listing.js']) |
wcs/qommon/backoffice/menu.py | ||
---|---|---|
17 | 17 |
from quixote import get_response, get_request, get_publisher, get_session |
18 | 18 |
from quixote.html import htmltext, TemplateIO |
19 | 19 | |
20 |
from qommon import get_cfg
|
|
21 |
from qommon import _
|
|
20 |
from .. import get_cfg
|
|
21 |
from .. import _
|
|
22 | 22 | |
23 | 23 |
def generate_header_menu(selected = None): |
24 | 24 |
return get_publisher().get_backoffice_root().generate_header_menu(selected=selected) |
wcs/qommon/backoffice/root.py | ||
---|---|---|
17 | 17 |
from quixote.directory import Directory, AccessControlled |
18 | 18 |
from quixote import get_publisher, get_request, get_response |
19 | 19 | |
20 |
from qommon import _
|
|
21 |
from qommon import errors
|
|
20 |
from .. import _
|
|
21 |
from .. import errors
|
|
22 | 22 | |
23 | 23 |
class BackofficeRootDirectory(AccessControlled, Directory): |
24 | 24 |
wcs/qommon/bounces.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from qommon.storage import StorableObject
|
|
17 |
from .storage import StorableObject |
|
18 | 18 | |
19 | 19 |
class Bounce(StorableObject): |
20 | 20 |
_names = 'bounces' |
wcs/qommon/ctl.py | ||
---|---|---|
24 | 24 |
'Command', |
25 | 25 |
] |
26 | 26 | |
27 |
import qommon |
|
28 |
from qommon import _
|
|
27 |
from wcs import qommon
|
|
28 |
from . import _
|
|
29 | 29 |
qommon._commands = {} |
30 | 30 | |
31 | 31 |
class Command(object): |
wcs/qommon/emails.py | ||
---|---|---|
27 | 27 |
from email.mime.nonmultipart import MIMENonMultipart |
28 | 28 |
from email.mime.text import MIMEText |
29 | 29 |
from email.utils import formataddr |
30 |
import email.Charset as Charset |
|
31 | 30 |
import smtplib |
32 | 31 |
import socket |
33 | 32 | |
... | ... | |
47 | 46 | |
48 | 47 |
from quixote import get_request, get_response, get_publisher |
49 | 48 | |
50 |
from publisher import get_cfg, get_logger |
|
51 |
import errors |
|
52 |
import tokens |
|
53 |
from admin.emails import EmailsDirectory |
|
54 |
from template import Template |
|
49 |
from .publisher import get_cfg, get_logger
|
|
50 |
from . import errors
|
|
51 |
from . import tokens
|
|
52 |
from .admin.emails import EmailsDirectory
|
|
53 |
from .template import Template
|
|
55 | 54 | |
56 |
Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8') |
|
55 |
try: |
|
56 |
import email.Charset as Charset |
|
57 |
Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8') |
|
58 |
except ImportError: |
|
59 |
pass |
|
57 | 60 | |
58 | 61 | |
59 | 62 |
if docutils: |
wcs/qommon/errors.py | ||
---|---|---|
21 | 21 |
from quixote.errors import * |
22 | 22 |
from quixote.html import TemplateIO, htmltext |
23 | 23 | |
24 |
import template |
|
24 |
from . import template
|
|
25 | 25 | |
26 | 26 | |
27 | 27 |
class AccessForbiddenError(AccessError): |
... | ... | |
30 | 30 |
self.location_hint = location_hint |
31 | 31 | |
32 | 32 |
def render(self): |
33 |
from qommon import _
|
|
33 |
from . import _
|
|
34 | 34 |
if self.public_msg: |
35 | 35 |
return template.error_page(self.public_msg, _('Access Forbidden'), |
36 | 36 |
continue_to = (get_publisher().get_root_url(), _('the homepage')), |
... | ... | |
63 | 63 | |
64 | 64 |
class InternalServerError(object): |
65 | 65 |
def render(self): |
66 |
from qommon import _
|
|
66 |
from . import _
|
|
67 | 67 |
template.html_top(_('Oops, the server borked severely')) |
68 | 68 |
r = TemplateIO(html=True) |
69 | 69 | |
... | ... | |
116 | 116 | |
117 | 117 | |
118 | 118 |
def format_publish_error(exc): |
119 |
from qommon import _
|
|
119 |
from . import _
|
|
120 | 120 |
if getattr(exc, 'public_msg', None): |
121 | 121 |
return template.error_page(exc.format(), _(exc.title)) |
122 | 122 |
else: |
wcs/qommon/form.py | ||
---|---|---|
35 | 35 |
except ImportError: |
36 | 36 |
Image = None |
37 | 37 | |
38 |
from storage import atomic_write |
|
38 |
from .storage import atomic_write
|
|
39 | 39 | |
40 | 40 |
try: |
41 | 41 |
from feedparser import _sanitizeHTML |
... | ... | |
69 | 69 |
from django.utils.safestring import mark_safe |
70 | 70 | |
71 | 71 |
from .template import render as render_template, Template, TemplateError |
72 |
from wcs.portfolio import has_portfolio
|
|
72 |
from ..portfolio import has_portfolio
|
|
73 | 73 |
from wcs.conditions import Condition, ValidationError |
74 | 74 | |
75 |
from qommon import _, ngettext
|
|
76 |
import misc |
|
75 |
from . import _, ngettext
|
|
76 |
from . import misc
|
|
77 | 77 |
from .humantime import humanduration2seconds, seconds2humanduration, timewords |
78 | 78 |
from .misc import strftime, C_, HAS_PDFTOPPM |
79 |
from publisher import get_cfg |
|
79 |
from .publisher import get_cfg
|
|
80 | 80 |
from .template_utils import render_block_to_string |
81 | 81 | |
82 | 82 |
QuixoteForm = Form |
... | ... | |
1484 | 1484 |
if self.value: |
1485 | 1485 |
if _sanitizeHTML: |
1486 | 1486 |
self.value = _sanitizeHTML(self.value, get_request().charset, 'text/html') |
1487 |
elif isinstance(self.value, unicode): |
|
1488 |
self.value = self.value.encode(get_publisher().site_charset) |
|
1487 | 1489 |
if self.value.startswith('<br />'): |
1488 | 1490 |
self.value = self.value[6:] |
1489 | 1491 |
if self.value.endswith('<br />'): |
wcs/qommon/http_request.py | ||
---|---|---|
23 | 23 |
import quixote.http_request |
24 | 24 |
from quixote.errors import RequestError |
25 | 25 | |
26 |
from http_response import HTTPResponse |
|
26 |
from .http_response import HTTPResponse
|
|
27 | 27 | |
28 | 28 |
class HTTPRequest(quixote.http_request.HTTPRequest): |
29 | 29 |
signed = False |
... | ... | |
51 | 51 |
if auth_header.startswith('Basic '): |
52 | 52 |
auth_header = auth_header.split(' ', 1)[1] |
53 | 53 |
username, password = base64.decodestring(auth_header).split(':', 1) |
54 |
from qommon.ident.password_accounts import PasswordAccount
|
|
54 |
from .ident.password_accounts import PasswordAccount |
|
55 | 55 |
try: |
56 | 56 |
self._user = PasswordAccount.get_with_credentials(username, password) |
57 | 57 |
except KeyError: |
wcs/qommon/http_response.py | ||
---|---|---|
24 | 24 |
import quixote.http_response |
25 | 25 |
from quixote import get_publisher, get_request |
26 | 26 | |
27 |
from qommon.storage import StorableObject
|
|
27 |
from .storage import StorableObject |
|
28 | 28 | |
29 | 29 |
class AfterJob(StorableObject): |
30 | 30 |
_names = 'afterjobs' |
... | ... | |
99 | 99 |
def get_javascript_for_header(self): |
100 | 100 |
s = '' |
101 | 101 |
if self.javascript_scripts: |
102 |
from qommon.admin.menu import get_vc_version
|
|
102 |
from .admin.menu import get_vc_version |
|
103 | 103 |
version_hash = hashlib.md5(str(get_vc_version())).hexdigest() |
104 | 104 |
root_url = get_publisher().get_root_url() + get_publisher().qommon_static_dir |
105 | 105 |
s += '\n'.join(['<script type="text/javascript" src="%sjs/%s?%s"></script>' % ( |
... | ... | |
120 | 120 |
def get_css_includes_for_header(self): |
121 | 121 |
if not self.css_includes: |
122 | 122 |
return '' |
123 |
from qommon.admin.menu import get_vc_version
|
|
123 |
from .admin.menu import get_vc_version |
|
124 | 124 |
version_hash = hashlib.md5(str(get_vc_version())).hexdigest() |
125 | 125 |
root_url = get_publisher().get_root_url() + get_publisher().qommon_static_dir |
126 | 126 |
return '\n'.join(['<link rel="stylesheet" type="text/css" href="%scss/%s?%s" />' % ( |
wcs/qommon/humantime.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import re |
18 | 18 | |
19 |
from qommon import _
|
|
19 |
from . import _
|
|
20 | 20 | |
21 | 21 |
_minute = 60 |
22 | 22 |
_hour = 60 * 60 |
wcs/qommon/ident/__init__.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 |
import base |
|
19 |
from . import base
|
|
20 | 20 | |
21 | 21 |
def login(method): |
22 | 22 |
m = get_publisher().ident_methods.get(method) |
wcs/qommon/ident/franceconnect.py | ||
---|---|---|
24 | 24 |
from quixote.directory import Directory |
25 | 25 |
from quixote.html import htmltext, TemplateIO |
26 | 26 | |
27 |
from qommon import _
|
|
28 |
from qommon.backoffice.menu import html_top
|
|
29 |
from qommon import template, get_cfg, get_logger
|
|
30 |
from qommon.form import (Form, StringWidget, CompositeWidget, ComputedExpressionWidget,
|
|
27 |
from .. import _
|
|
28 |
from ..backoffice.menu import html_top
|
|
29 |
from .. import template, get_cfg, get_logger
|
|
30 |
from ..form import (Form, StringWidget, CompositeWidget, ComputedExpressionWidget,
|
|
31 | 31 |
SingleSelectWidget, WidgetListAsTable) |
32 |
from qommon.misc import http_post_request, http_get_page, json_loads
|
|
32 |
from ..misc import http_post_request, http_get_page, json_loads
|
|
33 | 33 | |
34 | 34 |
from wcs.workflows import WorkflowStatusItem |
35 | 35 |
from wcs.formdata import flatten_dict |
wcs/qommon/ident/idp.py | ||
---|---|---|
26 | 26 |
from quixote import redirect, get_session, get_response, get_publisher |
27 | 27 |
from quixote.html import htmltext, TemplateIO |
28 | 28 | |
29 |
from qommon import _
|
|
30 |
from qommon import misc, get_cfg, get_logger
|
|
31 |
from qommon.form import *
|
|
32 |
from qommon.tokens import Token
|
|
29 |
from .. import _
|
|
30 |
from .. import misc, get_cfg, get_logger
|
|
31 |
from ..form import *
|
|
32 |
from ..tokens import Token
|
|
33 | 33 | |
34 |
from qommon import template
|
|
35 |
from qommon import errors
|
|
34 |
from .. import template
|
|
35 |
from .. import errors
|
|
36 | 36 | |
37 |
from qommon.backoffice.menu import html_top
|
|
38 |
from qommon.admin.menu import command_icon
|
|
37 |
from ..backoffice.menu import html_top
|
|
38 |
from ..admin.menu import command_icon
|
|
39 | 39 | |
40 |
from base import AuthMethod |
|
41 |
from qommon.storage import atomic_write
|
|
40 |
from .base import AuthMethod
|
|
41 |
from ..storage import atomic_write
|
|
42 | 42 | |
43 |
import qommon.x509utils as x509utils
|
|
44 |
import qommon.saml2utils as saml2utils
|
|
43 |
from .. import x509utils
|
|
44 |
from .. import saml2utils
|
|
45 | 45 | |
46 | 46 |
ADMIN_TITLE = N_('SAML2') |
47 | 47 | |
... | ... | |
1024 | 1024 |
return r.getvalue() |
1025 | 1025 | |
1026 | 1026 |
def identities_submit(self, form): |
1027 |
from qommon.admin.settings import cfg_submit |
|
1027 |
from wcs.qommon.admin.settings import cfg_submit
|
|
1028 | 1028 |
cfg_submit(form, 'saml_identities', |
1029 | 1029 |
('grab-user-with-wsf', 'identity-creation', 'notify-on-register', |
1030 | 1030 |
'email-confirmation', 'registration-url')) |
wcs/qommon/ident/password.py | ||
---|---|---|
18 | 18 |
import time |
19 | 19 |
import csv |
20 | 20 | |
21 |
from base import AuthMethod, NoSuchMethodForUserError |
|
21 |
from .base import AuthMethod, NoSuchMethodForUserError
|
|
22 | 22 | |
23 | 23 |
from quixote import redirect, get_publisher |
24 | 24 |
from quixote.directory import AccessControlled, Directory |
25 | 25 |
from quixote.html import TemplateIO, htmltext |
26 | 26 | |
27 |
from qommon import _, ngettext
|
|
28 |
from qommon.form import *
|
|
27 |
from .. import _, ngettext
|
|
28 |
from ..form import *
|
|
29 | 29 | |
30 |
from qommon.publisher import get_publisher_class
|
|
31 |
from qommon import misc, get_cfg, get_logger
|
|
32 |
from qommon import emails
|
|
33 |
from qommon import template
|
|
34 |
from qommon import tokens
|
|
35 |
from qommon import errors
|
|
30 |
from ..publisher import get_publisher_class
|
|
31 |
from .. import misc, get_cfg, get_logger
|
|
32 |
from .. import emails
|
|
33 |
from .. import template
|
|
34 |
from .. import tokens
|
|
35 |
from .. import errors
|
|
36 | 36 | |
37 |
from qommon.admin.menu import command_icon
|
|
37 |
from ..admin.menu import command_icon
|
|
38 | 38 | |
39 |
from qommon.backoffice.menu import html_top
|
|
39 |
from ..backoffice.menu import html_top
|
|
40 | 40 | |
41 |
from qommon.admin.emails import EmailsDirectory
|
|
41 |
from ..admin.emails import EmailsDirectory
|
|
42 | 42 |
from wcs.qommon.admin.texts import TextsDirectory |
43 | 43 | |
44 |
from qommon.cron import CronJob
|
|
45 |
from qommon.afterjobs import AfterJob
|
|
46 |
import qommon.storage as st
|
|
44 |
from ..cron import CronJob
|
|
45 |
from ..afterjobs import AfterJob
|
|
46 |
from .. import storage as st
|
|
47 | 47 | |
48 |
from password_accounts import PasswordAccount, HASHING_ALGOS |
|
48 |
from .password_accounts import PasswordAccount, HASHING_ALGOS
|
|
49 | 49 | |
50 | 50 | |
51 | 51 |
def notify_admins_user_registered(account): |
... | ... | |
756 | 756 |
return r.getvalue() |
757 | 757 | |
758 | 758 |
def passwords_submit(self, form): |
759 |
from admin.settings import cfg_submit |
|
759 |
from wcs.admin.settings import cfg_submit
|
|
760 | 760 |
cfg_submit(form, 'passwords', |
761 | 761 |
('can_change', 'generate', |
762 | 762 |
'min_length', 'max_length', |
... | ... | |
806 | 806 |
return r.getvalue() |
807 | 807 | |
808 | 808 |
def identities_submit(self, form): |
809 |
from admin.settings import cfg_submit |
|
809 |
from wcs.admin.settings import cfg_submit
|
|
810 | 810 |
cfg_submit(form, 'identities', |
811 | 811 |
('creation', 'email-as-username', 'notify-on-register', 'email-confirmation', |
812 | 812 |
'warn_about_unused_account_delay', 'remove_unused_account_delay')) |
wcs/qommon/ident/password_accounts.py | ||
---|---|---|
18 | 18 | |
19 | 19 |
from quixote import get_publisher |
20 | 20 | |
21 |
from qommon.storage import StorableObject
|
|
21 |
from ..storage import StorableObject
|
|
22 | 22 | |
23 | 23 |
HASHING_ALGOS = { |
24 | 24 |
'sha': hashlib.sha1, |
wcs/qommon/management/commands/collectstatic.py | ||
---|---|---|
18 | 18 |
import shutil |
19 | 19 | |
20 | 20 |
from django.core.management.base import BaseCommand |
21 |
from qommon.publisher import get_publisher_class |
|
21 |
from wcs.qommon.publisher import get_publisher_class
|
|
22 | 22 | |
23 | 23 |
class Command(BaseCommand): |
24 | 24 |
help = "Collect static files in a single location." |
wcs/qommon/management/commands/cron.py | ||
---|---|---|
20 | 20 | |
21 | 21 |
from django.conf import settings |
22 | 22 |
from django.core.management.base import BaseCommand, CommandError |
23 |
from qommon.publisher import get_publisher_class |
|
23 |
from wcs.qommon.publisher import get_publisher_class
|
|
24 | 24 | |
25 |
from qommon.vendor import locket |
|
26 |
from qommon.cron import cron_worker |
|
25 |
from wcs.qommon.vendor import locket
|
|
26 |
from wcs.qommon.cron import cron_worker
|
|
27 | 27 |
from wcs.wf.jump import JUMP_TIMEOUT_INTERVAL |
28 | 28 | |
29 | 29 |
wcs/qommon/management/commands/migrate.py | ||
---|---|---|
18 | 18 |
import quixote |
19 | 19 | |
20 | 20 |
from django.core.management.base import BaseCommand |
21 |
from qommon.publisher import get_publisher_class |
|
21 |
from wcs.qommon.publisher import get_publisher_class
|
|
22 | 22 | |
23 | 23 |
class Command(BaseCommand): |
24 | 24 |
help = 'Migrate databases' |
wcs/qommon/misc.py | ||
---|---|---|
46 | 46 |
from quixote import get_publisher, get_response, get_request |
47 | 47 |
from quixote.html import htmltext |
48 | 48 | |
49 |
from qommon import _
|
|
50 |
from qommon import get_cfg, get_logger, ezt
|
|
51 |
from qommon.errors import ConnectionError
|
|
52 |
from qommon.template import Template
|
|
49 |
from . import _
|
|
50 |
from . import get_cfg, get_logger, ezt
|
|
51 |
from .errors import ConnectionError |
|
52 |
from .template import Template |
|
53 | 53 | |
54 | 54 |
from django.utils.six import StringIO |
55 | 55 |
wcs/qommon/myspace.py | ||
---|---|---|
18 | 18 |
from quixote.directory import Directory |
19 | 19 |
from quixote.html import htmltext, TemplateIO |
20 | 20 | |
21 |
from qommon import _
|
|
22 |
from qommon import template
|
|
23 |
from qommon.form import *
|
|
24 |
from qommon import get_cfg
|
|
25 |
from qommon import errors
|
|
21 |
from . import _
|
|
22 |
from . import template
|
|
23 |
from .form import * |
|
24 |
from . import get_cfg
|
|
25 |
from . import errors
|
|
26 | 26 | |
27 |
import qommon.ident.password |
|
28 |
from qommon.ident.password_accounts import PasswordAccount |
|
27 |
from .ident.password_accounts import PasswordAccount |
|
29 | 28 | |
30 | 29 |
from wcs.qommon.admin.texts import TextsDirectory |
31 | 30 | |
... | ... | |
152 | 151 |
return redirect('.') |
153 | 152 | |
154 | 153 |
if form.is_submitted() and not form.has_errors(): |
155 |
qommon.ident.password.check_password(form, 'new_password') |
|
154 |
from .qommon.ident.password import check_password |
|
155 |
check_password(form, 'new_password') |
|
156 | 156 |
new_password = form.get_widget('new_password').parse() |
157 | 157 |
new2_password = form.get_widget('new2_password').parse() |
158 | 158 |
if new_password != new2_password: |
wcs/qommon/pages.py | ||
---|---|---|
20 | 20 |
from quixote.directory import Directory |
21 | 21 |
from quixote.util import StaticDirectory |
22 | 22 | |
23 |
from qommon import errors
|
|
24 |
from qommon import template
|
|
23 |
from . import errors
|
|
24 |
from . import template
|
|
25 | 25 | |
26 | 26 |
class PagesDirectory(Directory): |
27 | 27 |
_q_exports = [''] |
wcs/qommon/publisher.py | ||
---|---|---|
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
import collections |
18 |
from django.utils.six.moves import builtins |
|
18 | 19 |
from django.utils.six.moves import configparser as ConfigParser |
19 | 20 |
from django.utils.six.moves import cPickle |
20 | 21 |
import datetime |
... | ... | |
32 | 33 |
import sys |
33 | 34 |
import time |
34 | 35 |
import traceback |
35 |
import __builtin__ |
|
36 |
__builtin__.__dict__['N_'] = lambda x: x
|
|
36 | ||
37 |
builtins.__dict__['N_'] = lambda x: x
|
|
37 | 38 | |
38 | 39 |
import linecache |
39 | 40 |
import requests |
... | ... | |
46 | 47 |
from django.utils.translation import gettext, ngettext |
47 | 48 | |
48 | 49 |
from quixote.publish import Publisher, get_request, get_response, get_publisher, redirect |
49 |
from http_request import HTTPRequest |
|
50 |
from http_response import HTTPResponse, AfterJob |
|
50 |
from .http_request import HTTPRequest
|
|
51 |
from .http_response import HTTPResponse, AfterJob
|
|
51 | 52 | |
52 |
from cron import CronJob |
|
53 |
from substitution import Substitutions, CompatibilityNamesDict |
|
53 |
from .cron import CronJob
|
|
54 |
from .substitution import Substitutions, CompatibilityNamesDict
|
|
54 | 55 | |
55 |
import errors |
|
56 |
import template |
|
56 |
from . import errors
|
|
57 |
from . import template
|
|
57 | 58 |
import logging |
58 | 59 |
import logging.handlers |
59 |
import logger |
|
60 |
import storage |
|
60 |
from . import logger
|
|
61 |
from . import storage
|
|
61 | 62 |
import urllib |
62 | 63 | |
63 | 64 |
class ImmediateRedirectException(Exception): |
... | ... | |
556 | 557 |
lasso = None |
557 | 558 |
classes = [] |
558 | 559 |
if lasso: |
559 |
import qommon.ident.idp
|
|
560 |
classes.append(qommon.ident.idp.IdPAuthMethod)
|
|
561 |
import qommon.ident.franceconnect
|
|
562 |
classes.append(qommon.ident.franceconnect.FCAuthMethod)
|
|
563 |
import qommon.ident.password
|
|
564 |
classes.append(qommon.ident.password.PasswordAuthMethod)
|
|
560 |
from .ident import idp
|
|
561 |
classes.append(idp.IdPAuthMethod) |
|
562 |
from .ident import franceconnect
|
|
563 |
classes.append(franceconnect.FCAuthMethod) |
|
564 |
from .ident import password
|
|
565 |
classes.append(password.PasswordAuthMethod) |
|
565 | 566 |
self.ident_methods = {} |
566 | 567 |
for klass in classes: |
567 | 568 |
self.ident_methods[klass.key] = klass |
... | ... | |
1008 | 1009 | |
1009 | 1010 | |
1010 | 1011 |
def set_publisher_class(klass): |
1011 |
__builtin__.__dict__['__publisher_class'] = klass
|
|
1012 |
builtins.__dict__['__publisher_class'] = klass
|
|
1012 | 1013 | |
1013 | 1014 |
def get_publisher_class(): |
1014 |
return __builtin__.__dict__.get('__publisher_class')
|
|
1015 |
return builtins.__dict__.get('__publisher_class')
|
|
1015 | 1016 | |
1016 | 1017 | |
1017 | 1018 |
Substitutions.register('site_name', category=N_('General'), comment=N_('Site Name')) |
wcs/qommon/saml2.py | ||
---|---|---|
31 | 31 |
from quixote.directory import Directory |
32 | 32 |
from quixote import get_session, get_session_manager |
33 | 33 | |
34 |
import misc |
|
35 |
from publisher import get_cfg, get_logger |
|
36 |
from qommon import _
|
|
37 |
from qommon import template
|
|
38 |
from template import error_page |
|
34 |
from . import misc
|
|
35 |
from .publisher import get_cfg, get_logger
|
|
36 |
from . import _
|
|
37 |
from . import template
|
|
38 |
from .template import error_page
|
|
39 | 39 |
from wcs.roles import Role |
40 | 40 | |
41 |
import errors |
|
41 |
from . import errors
|
|
42 | 42 | |
43 | 43 | |
44 | 44 |
class SOAPException(Exception): |
wcs/qommon/saml2utils.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import os |
18 | 18 | |
19 |
import x509utils |
|
19 |
from . import x509utils
|
|
20 | 20 | |
21 | 21 |
def bool2xs(boolean): |
22 | 22 |
'''Convert a boolean value to XSchema boolean representation''' |
wcs/qommon/sessions.py | ||
---|---|---|
28 | 28 |
from django.conf import settings |
29 | 29 |
from django.core.signing import Signer, BadSignature |
30 | 30 | |
31 |
from qommon import misc
|
|
32 |
from qommon.storage import StorableObject
|
|
33 |
from publisher import get_cfg |
|
31 |
from . import misc
|
|
32 |
from .storage import StorableObject |
|
33 |
from .publisher import get_cfg
|
|
34 | 34 |
from quixote.publish import get_session, get_session_manager, get_request |
35 | 35 | |
36 | 36 |
wcs/qommon/sms.py | ||
---|---|---|
17 | 17 |
import re |
18 | 18 |
import urllib |
19 | 19 | |
20 |
from qommon import errors, misc
|
|
21 |
from qommon import get_cfg, get_logger
|
|
22 |
from qommon.form import StringWidget, PasswordWidget
|
|
20 |
from . import errors, misc
|
|
21 |
from . import get_cfg, get_logger
|
|
22 |
from .form import StringWidget, PasswordWidget |
|
23 | 23 |
from wcs.wscalls import call_webservice |
24 | 24 | |
25 | 25 |
wcs/qommon/storage.py | ||
---|---|---|
23 | 23 |
import shutil |
24 | 24 |
import sys |
25 | 25 |
import tempfile |
26 |
try: |
|
27 |
import thread as _thread |
|
28 |
except ImportError: |
|
29 |
import dummy_thread as _thread |
|
30 | 26 | |
31 |
from vendor import locket |
|
27 |
from django.utils.six.moves import _thread |
|
28 | ||
29 |
from .vendor import locket |
|
32 | 30 | |
33 | 31 |
from quixote import get_publisher |
34 | 32 |
wcs/qommon/substitution.py | ||
---|---|---|
120 | 120 | |
121 | 121 |
@classmethod |
122 | 122 |
def get_substitution_html_table(cls): |
123 |
from qommon import _
|
|
123 |
from . import _
|
|
124 | 124 |
r = TemplateIO(html=True) |
125 | 125 |
r += htmltext('<table id="substvars">') |
126 | 126 |
r += htmltext('<thead><tr><th>%s</th><th>%s</th><th>%s</th></tr></thead>' % ( |
wcs/qommon/template.py | ||
---|---|---|
32 | 32 |
from quixote.util import StaticDirectory, StaticFile |
33 | 33 |
from quixote.html import htmltext, htmlescape, TemplateIO |
34 | 34 | |
35 |
import errors |
|
36 |
import ezt |
|
35 |
from . import ezt |
|
37 | 36 | |
38 | 37 | |
39 | 38 |
def get_template_from_script(filename): |
... | ... | |
186 | 185 | |
187 | 186 |
def error_page(error_message, error_title = None, exception = None, continue_to = None, |
188 | 187 |
location_hint = None): |
189 |
from qommon import _
|
|
188 |
from . import _
|
|
190 | 189 |
if not error_title: |
191 | 190 |
error_title = _('Error') |
192 | 191 |
if exception: |
... | ... | |
195 | 194 | |
196 | 195 |
kwargs = {'title': error_title} |
197 | 196 |
if location_hint == 'backoffice': |
198 |
import qommon.backoffice.menu |
|
199 |
error_html_top = qommon.backoffice.menu.html_top |
|
197 |
from .backoffice.menu import html_top as error_html_top |
|
200 | 198 |
kwargs[str('section')] = None |
201 | 199 |
else: |
202 | 200 |
error_html_top = html_top |
... | ... | |
432 | 430 | |
433 | 431 | |
434 | 432 |
def ezt_raises(exception, on_parse=False): |
435 |
from qommon import _
|
|
433 |
from . import _
|
|
436 | 434 |
parts = [] |
437 | 435 |
parts.append({ |
438 | 436 |
ezt.ArgCountSyntaxError: _('wrong number of arguments'), |
... | ... | |
472 | 470 |
self.template = engines['django'].from_string(value) |
473 | 471 |
except DjangoTemplateSyntaxError as e: |
474 | 472 |
if raises: |
475 |
from qommon import _
|
|
473 |
from . import _
|
|
476 | 474 |
raise TemplateError(_('syntax error in Django template: %s'), e) |
477 | 475 |
self.render = self.null_render |
478 | 476 | |
... | ... | |
497 | 495 |
rendered = self.template.render(context) |
498 | 496 |
except (DjangoTemplateSyntaxError, DjangoVariableDoesNotExist) as e: |
499 | 497 |
if self.raises: |
500 |
from qommon import _
|
|
498 |
from . import _
|
|
501 | 499 |
raise TemplateError(_('failure to render Django template: %s'), e) |
502 | 500 |
else: |
503 | 501 |
return self.value |
wcs/qommon/tokens.py | ||
---|---|---|
17 | 17 |
import random |
18 | 18 |
import string |
19 | 19 | |
20 |
from qommon.storage import StorableObject
|
|
20 |
from .storage import StorableObject |
|
21 | 21 |
import time |
22 | 22 | |
23 | 23 |
class Token(StorableObject): |
wcs/roles.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 |
from qommon import _ |
|
20 |
from qommon.storage import StorableObject |
|
21 |
import qommon.misc |
|
19 |
from .qommon import _, misc |
|
20 |
from .qommon.storage import StorableObject |
|
22 | 21 | |
23 | 22 |
class Role(StorableObject): |
24 | 23 |
_names = 'roles' |
... | ... | |
51 | 50 |
super(Role, self).store() |
52 | 51 | |
53 | 52 |
def get_new_slug(self): |
54 |
new_slug = qommon.misc.simplify(self.name)
|
|
53 |
new_slug = misc.simplify(self.name) |
|
55 | 54 |
base_new_slug = new_slug |
56 | 55 |
suffix_no = 0 |
57 | 56 |
while True: |
... | ... | |
126 | 125 | |
127 | 126 | |
128 | 127 |
def get_user_roles(): |
129 |
t = sorted([(qommon.misc.simplify(x.name), x.id, x.name, x.id) for x in Role.select()])
|
|
128 |
t = sorted([(misc.simplify(x.name), x.id, x.name, x.id) for x in Role.select()]) |
|
130 | 129 |
return [x[1:] for x in t] |
131 | 130 |
wcs/root.py | ||
---|---|---|
25 | 25 |
from quixote.html import htmltext, TemplateIO |
26 | 26 |
from quixote.util import StaticDirectory |
27 | 27 | |
28 |
import forms.root
|
|
29 |
from qommon import saml2 |
|
30 | ||
31 |
from qommon import _ |
|
32 |
from qommon import errors |
|
33 |
from qommon import get_cfg, get_logger |
|
34 |
from qommon import template |
|
35 |
from qommon.form import * |
|
36 |
import qommon.ident
|
|
37 |
import qommon.pages
|
|
38 | ||
39 |
from qommon.afterjobs import AfterJobStatusDirectory |
|
40 | ||
41 |
from categories import Category |
|
42 |
from formdef import FormDef |
|
43 |
from data_sources import NamedDataSource |
|
44 |
from wscalls import NamedWsCall |
|
45 |
from wcs.api import ApiDirectory
|
|
46 |
from myspace import MyspaceDirectory |
|
47 |
from forms.preview import PreviewDirectory |
|
48 |
from wcs.forms.actions import ActionsDirectory
|
|
49 |
from wcs.scripts import Script
|
|
50 | ||
51 |
from wcs import portfolio
|
|
28 |
from .forms import root
|
|
29 |
from .qommon import saml2
|
|
30 | ||
31 |
from .qommon import _
|
|
32 |
from .qommon import errors
|
|
33 |
from .qommon import get_cfg, get_logger
|
|
34 |
from .qommon import template
|
|
35 |
from .qommon.form import *
|
|
36 |
from .qommon import ident
|
|
37 |
from .qommon import pages
|
|
38 | ||
39 |
from .qommon.afterjobs import AfterJobStatusDirectory
|
|
40 | ||
41 |
from .categories import Category
|
|
42 |
from .formdef import FormDef
|
|
43 |
from .data_sources import NamedDataSource
|
|
44 |
from .wscalls import NamedWsCall
|
|
45 |
from .api import ApiDirectory |
|
46 |
from .myspace import MyspaceDirectory
|
|
47 |
from .forms.preview import PreviewDirectory
|
|
48 |
from .forms.actions import ActionsDirectory |
|
49 |
from .scripts import Script |
|
50 | ||
51 |
from . import portfolio
|
|
52 | 52 | |
53 | 53 |
class CompatibilityDirectory(Directory): |
54 | 54 |
_q_exports = [''] |
... | ... | |
61 | 61 |
def _q_lookup(self, component): |
62 | 62 |
get_response().breadcrumb.append(('ident/', None)) |
63 | 63 |
try: |
64 |
return qommon.ident.get_method_directory(component)
|
|
64 |
return ident.get_method_directory(component) |
|
65 | 65 |
except KeyError: |
66 | 66 |
raise errors.TraversalError() |
67 | 67 | |
... | ... | |
91 | 91 |
if len(ident_methods) == 1: |
92 | 92 |
method = ident_methods[0] |
93 | 93 |
try: |
94 |
return qommon.ident.login(method)
|
|
94 |
return ident.login(method) |
|
95 | 95 |
except KeyError: |
96 | 96 |
msg = 'failed to login with method %s' % method |
97 | 97 |
get_logger().error(msg) |
... | ... | |
100 | 100 |
form = Form(enctype='multipart/form-data') |
101 | 101 |
form.add(RadiobuttonsWidget, 'method', |
102 | 102 |
options = [(x.key, _(x.description)) \ |
103 |
for x in qommon.ident.get_method_classes() if \
|
|
103 |
for x in ident.get_method_classes() if \ |
|
104 | 104 |
x.key in ident_methods], |
105 | 105 |
delim = htmltext('<br/>')) |
106 | 106 |
form.add_submit('submit', _('Submit')) |
... | ... | |
115 | 115 |
return redirect(login_url) |
116 | 116 |
else: |
117 | 117 |
try: |
118 |
return qommon.ident.login(method)
|
|
118 |
return ident.login(method) |
|
119 | 119 |
except KeyError: |
120 | 120 |
msg = 'failed to login with method %s' % method |
121 | 121 |
get_logger().error(msg) |
... | ... | |
129 | 129 | |
130 | 130 |
def _q_lookup(self, component): |
131 | 131 |
try: |
132 |
dir = qommon.ident.get_method_directory(component)
|
|
132 |
dir = ident.get_method_directory(component) |
|
133 | 133 |
# set the register page as the index page, so the url can be |
134 | 134 |
# /login/password/ instead of /login/password/login |
135 | 135 |
dir._q_exports.append('') |
... | ... | |
155 | 155 |
if len(ident_methods) == 1: |
156 | 156 |
method = ident_methods[0] |
157 | 157 |
try: |
158 |
return qommon.ident.register(method)
|
|
158 |
return ident.register(method) |
|
159 | 159 |
except KeyError: |
160 | 160 |
get_logger().error('failed to register with method %s' % method) |
161 | 161 |
return errors.TraversalError() |
... | ... | |
163 | 163 |
form = Form(enctype='multipart/form-data') |
164 | 164 |
form.add(RadiobuttonsWidget, 'method', |
165 | 165 |
options = [(x.key, _(x.description)) \ |
166 |
for x in qommon.ident.get_method_classes() if \
|
|
166 |
for x in ident.get_method_classes() if \ |
|
167 | 167 |
x.key in ident_methods], |
168 | 168 |
delim = htmltext('<br/>')) |
169 | 169 |
form.add_submit('submit', _('Submit')) |
... | ... | |
181 | 181 | |
182 | 182 |
def _q_lookup(self, component): |
183 | 183 |
try: |
184 |
dir = qommon.ident.get_method_directory(component)
|
|
184 |
dir = ident.get_method_directory(component) |
|
185 | 185 |
# set the register page as the index page, so the url can be |
186 | 186 |
# /register/password/ instead of /register/password/register |
187 | 187 |
dir._q_exports.append('') |
... | ... | |
246 | 246 |
api = ApiDirectory() |
247 | 247 |
themes = template.ThemesDirectory() |
248 | 248 |
myspace = MyspaceDirectory() |
249 |
pages = qommon.pages.PagesDirectory()
|
|
249 |
pages = pages.PagesDirectory() |
|
250 | 250 |
fargo = portfolio.FargoDirectory() |
251 | 251 |
static = StaticsDirectory() |
252 | 252 |
actions = ActionsDirectory() |
253 | 253 | |
254 | 254 |
def tryauth(self): |
255 |
return forms.root.tryauth(get_publisher().get_root_url())
|
|
255 |
return root.tryauth(get_publisher().get_root_url()) |
|
256 | 256 | |
257 | 257 |
def auth(self): |
258 |
return forms.root.auth(get_publisher().get_root_url())
|
|
258 |
return root.auth(get_publisher().get_root_url()) |
|
259 | 259 | |
260 | 260 |
def logout(self): |
261 | 261 |
get_logger().info('logout') |
... | ... | |
339 | 339 |
except errors.TraversalError: |
340 | 340 |
pass |
341 | 341 | |
342 |
return forms.root.RootDirectory()._q_traverse(path)
|
|
342 |
return root.RootDirectory()._q_traverse(path) |
|
343 | 343 | |
344 | 344 |
def _q_lookup(self, component): |
345 | 345 |
# is this a category ? |
... | ... | |
352 | 352 |
try: |
353 | 353 |
formdef = FormDef.get_by_urlname(component) |
354 | 354 |
except KeyError: |
355 |
return forms.root.RootDirectory(category)
|
|
355 |
return root.RootDirectory(category) |
|
356 | 356 | |
357 | 357 |
# or a form ? |
358 |
return forms.root.RootDirectory()._q_lookup(component)
|
|
358 |
return root.RootDirectory()._q_lookup(component) |
|
359 | 359 | |
360 | 360 |
def reload_top(self): |
361 | 361 |
get_response().filter = {} |
wcs/sessions.py | ||
---|---|---|
18 | 18 |
import time |
19 | 19 |
import uuid |
20 | 20 | |
21 |
import qommon.sessions
|
|
22 |
from qommon.sessions import Session |
|
21 |
from .qommon import sessions
|
|
22 |
from .qommon.sessions import Session
|
|
23 | 23 | |
24 | 24 |
class BasicSession(Session): |
25 | 25 | |
... | ... | |
155 | 155 |
return None |
156 | 156 |
return self.data_source_query_url_tokens.get(token) |
157 | 157 | |
158 |
qommon.sessions.BasicSession = BasicSession |
|
159 |
StorageSessionManager = qommon.sessions.StorageSessionManager |
|
158 |
sessions.BasicSession = BasicSession |
|
159 |
StorageSessionManager = sessions.StorageSessionManager |
wcs/sql.py | ||
---|---|---|
22 | 22 |
import cPickle |
23 | 23 | |
24 | 24 |
from quixote import get_publisher |
25 |
import qommon |
|
26 |
from qommon.storage import _take, parse_clause as parse_storage_clause |
|
27 |
from qommon.substitution import invalidate_substitution_cache |
|
28 |
from qommon import get_cfg |
|
25 |
from . import qommon
|
|
26 |
from .qommon.storage import _take, parse_clause as parse_storage_clause
|
|
27 |
from .qommon.substitution import invalidate_substitution_cache
|
|
28 |
from .qommon import get_cfg
|
|
29 | 29 | |
30 | 30 |
import wcs.categories |
31 | 31 |
import wcs.carddata |
... | ... | |
593 | 593 |
'anonymous', 'name_identifiers', 'verified_fields', |
594 | 594 |
'lasso_dump', 'last_seen', 'fts', 'ascii_name']) |
595 | 595 | |
596 |
from admin.settings import UserFieldsFormDef |
|
596 |
from wcs.admin.settings import UserFieldsFormDef
|
|
597 | 597 |
formdef = UserFieldsFormDef() |
598 | 598 | |
599 | 599 |
for field in formdef.get_all_fields(): |
wcs/tracking_code.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import random |
18 | 18 | |
19 |
from qommon.storage import StorableObject |
|
19 |
from .qommon.storage import StorableObject
|
|
20 | 20 | |
21 |
from formdef import FormDef |
|
21 |
from .formdef import FormDef
|
|
22 | 22 | |
23 | 23 |
class TrackingCode(StorableObject): |
24 | 24 |
_names = 'tracking-codes' |
wcs/users.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from qommon import _ |
|
18 |
from qommon.misc import simplify |
|
19 |
from qommon.storage import StorableObject |
|
20 |
from qommon import get_cfg |
|
17 |
from .qommon import _
|
|
18 |
from .qommon.misc import simplify
|
|
19 |
from .qommon.storage import StorableObject
|
|
20 |
from .qommon import get_cfg
|
|
21 | 21 |
import wcs.qommon.storage as st |
22 | 22 | |
23 |
from qommon.substitution import Substitutions, invalidate_substitution_cache |
|
23 |
from .qommon.substitution import Substitutions, invalidate_substitution_cache
|
|
24 | 24 | |
25 | 25 |
class User(StorableObject): |
26 | 26 |
_names = 'users' |
wcs/variables.py | ||
---|---|---|
22 | 22 | |
23 | 23 |
from pyproj import Geod |
24 | 24 | |
25 |
import qommon.misc
|
|
26 |
from qommon.evalutils import make_datetime |
|
27 |
from qommon.templatetags.qommon import parse_datetime |
|
28 |
from qommon.storage import (Or, Equal, NotEqual) |
|
25 |
from .qommon import misc
|
|
26 |
from .qommon.evalutils import make_datetime
|
|
27 |
from .qommon.templatetags.qommon import parse_datetime
|
|
28 |
from .qommon.storage import (Or, Equal, NotEqual)
|
|
29 | 29 | |
30 | 30 | |
31 | 31 |
class LazyFormDefObjectsManager(object): |
... | ... | |
214 | 214 | |
215 | 215 |
@property |
216 | 216 |
def receipt_date(self): |
217 |
return qommon.misc.strftime(qommon.misc.date_format(), self._formdata.receipt_time)
|
|
217 |
return misc.strftime(misc.date_format(), self._formdata.receipt_time)
|
|
218 | 218 | |
219 | 219 |
@property |
220 | 220 |
def receipt_time(self): |
221 |
return qommon.misc.strftime('%H:%M', self._formdata.receipt_time)
|
|
221 |
return misc.strftime('%H:%M', self._formdata.receipt_time) |
|
222 | 222 | |
223 | 223 |
@property |
224 | 224 |
def number(self): |
... | ... | |
334 | 334 |
value = field.convert_value_to_str(value) |
335 | 335 |
elif value is None: |
336 | 336 |
value = '' |
337 |
identifier_name = qommon.misc.simplify(field.label, space='_')
|
|
337 |
identifier_name = misc.simplify(field.label, space='_') |
|
338 | 338 |
d[identifier_name] = value |
339 | 339 | |
340 | 340 |
return d |
... | ... | |
529 | 529 | |
530 | 530 |
def __contains__(self, value): |
531 | 531 |
if self._field.key == 'items': |
532 |
return qommon.misc.site_encode(value) in self._data.get(self._field.id)
|
|
532 |
return misc.site_encode(value) in self._data.get(self._field.id) |
|
533 | 533 |
return value in self.get_value() |
534 | 534 | |
535 | 535 |
def __unicode__(self): |
wcs/wf/aggregation_email.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from qommon import _ |
|
18 |
from qommon.publisher import get_publisher_class |
|
19 |
from qommon.storage import StorableObject |
|
20 |
from qommon.form import * |
|
21 |
from qommon.cron import CronJob |
|
22 |
from qommon import emails |
|
17 |
from ..qommon import _
|
|
18 |
from ..qommon.publisher import get_publisher_class
|
|
19 |
from ..qommon.storage import StorableObject
|
|
20 |
from ..qommon.form import *
|
|
21 |
from ..qommon.cron import CronJob
|
|
22 |
from ..qommon import emails
|
|
23 | 23 | |
24 | 24 |
from wcs.workflows import WorkflowStatusItem, register_item_class, \ |
25 | 25 |
get_role_translation |
wcs/wf/attachment.py | ||
---|---|---|
17 | 17 | |
18 | 18 |
from quixote import redirect |
19 | 19 | |
20 |
from qommon import _ |
|
20 |
from ..qommon import _
|
|
21 | 21 |
from wcs.workflows import * |
22 |
from qommon.errors import * |
|
22 |
from ..qommon.errors import *
|
|
23 | 23 | |
24 | 24 |
from wcs.forms.common import FormStatusPage, FileDirectory |
25 | 25 |
from wcs.portfolio import has_portfolio, push_document |
wcs/wf/backoffice_fields.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import xml.etree.ElementTree as ET |
18 | 18 | |
19 |
from qommon import _ |
|
20 |
from qommon.form import (WidgetListAsTable, CompositeWidget, SingleSelectWidget, |
|
19 |
from ..qommon import _
|
|
20 |
from ..qommon.form import (WidgetListAsTable, CompositeWidget, SingleSelectWidget,
|
|
21 | 21 |
ComputedExpressionWidget) |
22 | 22 |
from wcs.fields import WidgetField |
23 | 23 |
from wcs.workflows import (WorkflowStatusItem, |
wcs/wf/criticality.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 |
from qommon import _ |
|
19 |
from ..qommon import _
|
|
20 | 20 |
from wcs.qommon.form import SingleSelectWidget |
21 | 21 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
22 | 22 |
wcs/wf/dispatch.py | ||
---|---|---|
17 | 17 |
import collections |
18 | 18 |
import xml.etree.ElementTree as ET |
19 | 19 | |
20 |
from qommon import _ |
|
21 |
from qommon.form import * |
|
22 |
from qommon.template import Template |
|
23 |
from qommon import get_logger |
|
20 |
from ..qommon import _
|
|
21 |
from ..qommon.form import *
|
|
22 |
from ..qommon.template import Template
|
|
23 |
from ..qommon import get_logger
|
|
24 | 24 |
from wcs.roles import Role, get_user_roles |
25 | 25 |
from wcs.workflows import XmlSerialisable, WorkflowStatusItem, register_item_class |
26 | 26 |
wcs/wf/export_to_model.py | ||
---|---|---|
29 | 29 |
from quixote.directory import Directory |
30 | 30 |
from quixote.html import htmltext |
31 | 31 | |
32 |
from qommon import _, ezt
|
|
33 |
from qommon import get_logger |
|
34 |
from qommon.form import (SingleSelectWidget, WidgetList, CheckboxWidget, |
|
32 |
from ..qommon import _, ezt, misc
|
|
33 |
from ..qommon import get_logger
|
|
34 |
from ..qommon.form import (SingleSelectWidget, WidgetList, CheckboxWidget,
|
|
35 | 35 |
StringWidget, UploadWidget, WysiwygTextWidget, Upload, |
36 | 36 |
UploadedFile, UploadValidationError, VarnameWidget, |
37 | 37 |
RadiobuttonsWidget, PicklableUpload, ComputedExpressionWidget) |
38 |
from qommon.errors import PublishError |
|
39 |
from qommon.template import TemplateError |
|
40 |
import qommon |
|
38 |
from ..qommon.errors import PublishError |
|
39 |
from ..qommon.template import TemplateError |
|
41 | 40 | |
42 | 41 |
from wcs.fields import SubtitleField, TitleField, CommentField, PageField |
43 | 42 |
from wcs.workflows import (WorkflowStatusItem, AttachmentEvolutionPart, |
... | ... | |
381 | 380 |
return filename |
382 | 381 | |
383 | 382 |
def get_directory_name(self): |
384 |
return qommon.misc.simplify(self.label or 'export_to_model', space='_')
|
|
383 |
return misc.simplify(self.label or 'export_to_model', space='_') |
|
385 | 384 |
directory_name = property(get_directory_name) |
386 | 385 | |
387 | 386 |
def apply_template_to_formdata(self, formdata): |
wcs/wf/form.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import xml.etree.ElementTree as ET |
18 | 18 | |
19 |
from qommon import _ |
|
20 |
from qommon.form import * |
|
19 |
from ..qommon import _
|
|
20 |
from ..qommon.form import *
|
|
21 | 21 | |
22 | 22 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
23 | 23 |
from wcs.formdef import FormDef, lax_int |
wcs/wf/geolocate.py | ||
---|---|---|
26 | 26 | |
27 | 27 |
from quixote import get_publisher |
28 | 28 | |
29 |
from qommon import _ |
|
30 |
from qommon import get_logger |
|
31 |
from qommon.errors import ConnectionError |
|
32 |
from qommon.form import RadiobuttonsWidget, ComputedExpressionWidget, CheckboxWidget |
|
33 |
from qommon.misc import http_get_page, normalize_geolocation |
|
29 |
from ..qommon import _
|
|
30 |
from ..qommon import get_logger
|
|
31 |
from ..qommon.errors import ConnectionError
|
|
32 |
from ..qommon.form import RadiobuttonsWidget, ComputedExpressionWidget, CheckboxWidget
|
|
33 |
from ..qommon.misc import http_get_page, normalize_geolocation
|
|
34 | 34 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
35 | 35 | |
36 | 36 |
class GeolocateWorkflowStatusItem(WorkflowStatusItem): |
wcs/wf/jump.py | ||
---|---|---|
21 | 21 |
from quixote import get_publisher, get_request, redirect |
22 | 22 | |
23 | 23 |
from quixote.directory import Directory |
24 |
from qommon import _ |
|
25 |
from qommon.humantime import * |
|
26 |
from qommon.form import * |
|
27 |
from qommon import errors |
|
28 |
from qommon.publisher import get_publisher_class |
|
29 |
from qommon.cron import CronJob |
|
24 |
from ..qommon import _
|
|
25 |
from ..qommon.humantime import *
|
|
26 |
from ..qommon.form import *
|
|
27 |
from ..qommon import errors
|
|
28 |
from ..qommon.publisher import get_publisher_class
|
|
29 |
from ..qommon.cron import CronJob
|
|
30 | 30 | |
31 | 31 |
from wcs.workflows import Workflow, WorkflowStatusJumpItem, register_item_class |
32 | 32 |
from wcs.api import get_user_from_api_query_string, is_url_signed |
wcs/wf/notification.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher |
18 | 18 | |
19 |
from qommon import _, ezt |
|
20 |
from qommon.form import * |
|
21 |
from qommon.template import TemplateError |
|
22 |
from qommon import get_logger |
|
19 |
from ..qommon import _, ezt
|
|
20 |
from ..qommon.form import *
|
|
21 |
from ..qommon.template import TemplateError
|
|
22 |
from ..qommon import get_logger
|
|
23 | 23 | |
24 | 24 |
from wcs.roles import Role |
25 | 25 |
from wcs.workflows import (WorkflowStatusItem, register_item_class, |
wcs/wf/profile.py | ||
---|---|---|
23 | 23 | |
24 | 24 |
from quixote import get_publisher, get_response |
25 | 25 | |
26 |
from qommon import _ |
|
27 |
from qommon.form import (CompositeWidget, SingleSelectWidget, |
|
26 |
from ..qommon import _
|
|
27 |
from ..qommon.form import (CompositeWidget, SingleSelectWidget,
|
|
28 | 28 |
WidgetListAsTable, ComputedExpressionWidget) |
29 |
from qommon.ident.idp import is_idp_managing_user_attributes |
|
30 |
from qommon.misc import http_patch_request, JSONEncoder |
|
31 |
from qommon.publisher import get_cfg, get_logger |
|
29 |
from ..qommon.ident.idp import is_idp_managing_user_attributes
|
|
30 |
from ..qommon.misc import http_patch_request, JSONEncoder
|
|
31 |
from ..qommon.publisher import get_cfg, get_logger
|
|
32 | 32 | |
33 | 33 |
from wcs.api_utils import sign_url, get_secret_and_orig, MissingSecret |
34 | 34 |
from wcs.workflows import XmlSerialisable, WorkflowStatusItem, register_item_class |
wcs/wf/redirect_to_url.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from qommon import _ |
|
18 |
from qommon.form import ComputedExpressionWidget |
|
17 |
from ..qommon import _
|
|
18 |
from ..qommon.form import ComputedExpressionWidget
|
|
19 | 19 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
20 | 20 | |
21 | 21 |
wcs/wf/register_comment.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
import cgi |
18 | 18 | |
19 |
from qommon import _, ezt |
|
20 |
from qommon.form import * |
|
21 |
from qommon.template import TemplateError |
|
22 |
from qommon import get_logger |
|
19 |
from ..qommon import _, ezt
|
|
20 |
from ..qommon.form import *
|
|
21 |
from ..qommon.template import TemplateError
|
|
22 |
from ..qommon import get_logger
|
|
23 | 23 | |
24 | 24 |
from wcs.workflows import (WorkflowStatusItem, register_item_class, template_on_formdata, |
25 | 25 |
AttachmentEvolutionPart) |
wcs/wf/remove.py | ||
---|---|---|
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from quixote import get_publisher, get_request, get_response, get_session |
18 |
from qommon import _ |
|
18 |
from ..qommon import _
|
|
19 | 19 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
20 | 20 | |
21 | 21 |
class RemoveWorkflowStatusItem(WorkflowStatusItem): |
wcs/wf/resubmit.py | ||
---|---|---|
16 | 16 | |
17 | 17 |
from quixote import get_publisher, get_request, get_session |
18 | 18 | |
19 |
from qommon import _ |
|
19 |
from ..qommon import _
|
|
20 | 20 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
21 | 21 |
from wcs.formdef import FormDef |
22 | 22 |
from wcs.qommon.form import (WidgetList, SingleSelectWidget, StringWidget, |
wcs/wf/roles.py | ||
---|---|---|
21 | 21 | |
22 | 22 |
from quixote import get_request, get_publisher, get_response |
23 | 23 | |
24 |
from qommon import _ |
|
25 |
from qommon.form import * |
|
24 |
from ..qommon import _
|
|
25 |
from ..qommon.form import *
|
|
26 | 26 |
from wcs.workflows import WorkflowStatusItem, register_item_class |
27 | 27 |
from wcs.roles import get_user_roles, Role |
28 |
from qommon.ident.idp import is_idp_managing_user_attributes |
|
29 |
from qommon.misc import http_post_request, http_delete_request |
|
30 |
from qommon.publisher import get_cfg, get_logger |
|
28 |
from ..qommon.ident.idp import is_idp_managing_user_attributes
|
|
29 |
from ..qommon.misc import http_post_request, http_delete_request
|
|
30 |
from ..qommon.publisher import get_cfg, get_logger
|
|
31 | 31 |
from wcs.api_utils import sign_url, get_secret_and_orig, MissingSecret |
32 | 32 | |
33 | 33 |
wcs/wf/wscall.py | ||
---|---|---|
25 | 25 | |
26 | 26 |
from quixote.html import TemplateIO, htmltext |
27 | 27 | |
28 |
from qommon import _ |
|
29 |
from qommon.errors import ConnectionError |
|
30 |
from qommon.form import * |
|
31 |
from qommon.misc import json_loads, site_encode |
|
28 |
from ..qommon import _
|
|
29 |
from ..qommon.errors import ConnectionError
|
|
30 |
from ..qommon.form import *
|
|
31 |
from ..qommon.misc import json_loads, site_encode
|
|
32 | 32 |
from wcs.workflows import (WorkflowStatusItem, register_item_class, |
33 | 33 |
AbortActionException, AttachmentEvolutionPart) |
34 | 34 |
from wcs.wscalls import call_webservice |
wcs/workflows.py | ||
---|---|---|
14 | 14 |
# You should have received a copy of the GNU General Public License |
15 | 15 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 |
from qommon import ezt |
|
17 |
from .qommon import ezt
|
|
18 | 18 |
import collections |
19 | 19 |
import copy |
20 | 20 |
import datetime |
... | ... | |
29 | 29 | |
30 | 30 |
from quixote import get_request, get_response, redirect |
31 | 31 | |
32 |
from qommon import _ |
|
33 |
from qommon.misc import C_, get_as_datetime, file_digest, get_foreground_colour |
|
34 |
from qommon.storage import StorableObject, atomic_write, NotEqual, Contains, Null |
|
35 |
from qommon.form import * |
|
36 |
from qommon.humantime import seconds2humanduration |
|
37 |
from qommon import emails, get_cfg, get_logger |
|
32 |
from .qommon import _
|
|
33 |
from .qommon.misc import C_, get_as_datetime, file_digest, get_foreground_colour
|
|
34 |
from .qommon.storage import StorableObject, atomic_write, NotEqual, Contains, Null
|
|
35 |
from .qommon.form import *
|
|
36 |
from .qommon.humantime import seconds2humanduration
|
|
37 |
from .qommon import emails, get_cfg, get_logger
|
|
38 | 38 |
from quixote.html import htmltext |
39 |
import qommon.errors
|
|
40 |
from qommon.template import Template, TemplateError |
|
39 |
from .qommon import errors
|
|
40 |
from .qommon.template import Template, TemplateError
|
|
41 | 41 | |
42 |
from wcs.conditions import Condition
|
|
43 |
from wcs.roles import Role, logged_users_role, get_user_roles
|
|
44 |
from wcs.fields import FileField
|
|
45 |
from wcs.formdef import FormDef
|
|
46 |
from wcs.formdata import Evolution
|
|
42 |
from .conditions import Condition |
|
43 |
from .roles import Role, logged_users_role, get_user_roles |
|
44 |
from .fields import FileField |
|
45 |
from .formdef import FormDef |
|
46 |
from .formdata import Evolution |
|
47 | 47 | |
48 | 48 |
if not __name__.startswith('wcs.') and not __name__ == "__main__": |
49 | 49 |
raise ImportError('Import of workflows module must be absolute (import wcs.workflows)') |
... | ... | |
677 | 677 | |
678 | 678 |
@classmethod |
679 | 679 |
def get_default_workflow(cls): |
680 |
from qommon.admin.emails import EmailsDirectory |
|
680 |
from .qommon.admin.emails import EmailsDirectory
|
|
681 | 681 | |
682 | 682 |
workflow = Workflow(name=_('Default')) |
683 | 683 |
workflow.id = '_default' |
... | ... | |
2667 | 2667 |
'sms could not be generated' % (url, str(e))) |
2668 | 2668 |
return |
2669 | 2669 | |
2670 |
import qommon.sms
|
|
2670 |
from .qommon import sms
|
|
2671 | 2671 | |
2672 | 2672 |
sms_cfg = get_cfg('sms', {}) |
2673 | 2673 |
sender = sms_cfg.get('sender', 'AuQuotidien')[:11] |
2674 | 2674 |
mode = sms_cfg.get('mode', 'none') |
2675 | 2675 |
try: |
2676 |
qommon.sms.SMS.get_sms_class(mode).send(sender, destinations, sms_body[:160])
|
|
2677 |
except qommon.errors.SMSError as e:
|
|
2676 |
sms.SMS.get_sms_class(mode).send(sender, destinations, sms_body[:160]) |
|
2677 |
except errors.SMSError as e: |
|
2678 | 2678 |
get_logger().error(e) |
2679 | 2679 | |
2680 | 2680 |
register_item_class(SendSMSWorkflowStatusItem) |
... | ... | |
2862 | 2862 | |
2863 | 2863 | |
2864 | 2864 |
def load_extra(): |
2865 |
import wf.aggregation_email |
|
2866 |
import wf.timeout_jump |
|
2867 |
import wf.jump |
|
2868 |
import wf.attachment |
|
2869 |
import wf.remove |
|
2870 |
import wf.roles |
|
2871 |
import wf.dispatch |
|
2872 |
import wf.geolocate |
|
2873 |
import wf.wscall |
|
2874 |
import wf.form |
|
2875 |
import wf.register_comment |
|
2876 |
import wf.anonymise |
|
2877 |
import wf.export_to_model |
|
2878 |
import wf.resubmit |
|
2879 |
import wf.criticality |
|
2880 |
import wf.profile |
|
2881 |
import wf.backoffice_fields |
|
2882 |
import wf.redirect_to_url |
|
2883 |
import wf.notification |
|
2884 | ||
2885 |
from wf.export_to_model import ExportToModel |
|
2865 |
from .wf import aggregation_email |
|
2866 |
from .wf import timeout_jump |
|
2867 |
from .wf import jump |
|
2868 |
from .wf import attachment |
|
2869 |
from .wf import remove |
|
2870 |
from .wf import roles |
|
2871 |
from .wf import dispatch |
|
2872 |
from .wf import geolocate |
|
2873 |
from .wf import wscall |
|
2874 |
from .wf import form |
|
2875 |
from .wf import register_comment |
|
2876 |
from .wf import anonymise |
|
2877 |
from .wf import export_to_model |
|
2878 |
from .wf import resubmit |
|
2879 |
from .wf import criticality |
|
2880 |
from .wf import profile |
|
2881 |
from .wf import backoffice_fields |
|
2882 |
from .wf import redirect_to_url |
|
2883 |
from .wf import notification |
|
2884 | ||
2885 |
from .wf.export_to_model import ExportToModel |
wcs/wscalls.py | ||
---|---|---|
24 | 24 | |
25 | 25 |
from quixote import get_publisher, get_request |
26 | 26 | |
27 |
from qommon import _ |
|
28 |
from qommon.misc import simplify, get_variadic_url, JSONEncoder, json_loads |
|
29 |
from qommon.xml_storage import XmlStorableObject |
|
30 |
from qommon.form import (CompositeWidget, StringWidget, WidgetDict, |
|
27 |
from .qommon import _
|
|
28 |
from .qommon.misc import simplify, get_variadic_url, JSONEncoder, json_loads
|
|
29 |
from .qommon.xml_storage import XmlStorableObject
|
|
30 |
from .qommon.form import (CompositeWidget, StringWidget, WidgetDict,
|
|
31 | 31 |
ComputedExpressionWidget, RadiobuttonsWidget, CheckboxWidget) |
32 |
import qommon.misc
|
|
33 |
from qommon.template import Template |
|
32 |
from .qommon import misc
|
|
33 |
from .qommon.template import Template
|
|
34 | 34 | |
35 | 35 |
from wcs.api_utils import sign_url, get_secret_and_orig, MissingSecret |
36 | 36 |
from wcs.workflows import WorkflowStatusItem |
... | ... | |
109 | 109 |
headers['Content-type'] = 'application/json' |
110 | 110 |
payload = json.dumps(payload, cls=JSONEncoder, |
111 | 111 |
encoding=get_publisher().site_charset) |
112 |
response, status, data, auth_header = qommon.misc._http_request(
|
|
112 |
response, status, data, auth_header = misc._http_request( |
|
113 | 113 |
url, method=method, body=payload, headers=headers) |
114 | 114 |
elif method == 'DELETE': |
115 |
response, status, data, auth_header = qommon.misc._http_request(
|
|
115 |
response, status, data, auth_header = misc._http_request( |
|
116 | 116 |
url, method='DELETE', headers=headers) |
117 | 117 |
else: |
118 |
response, status, data, auth_header = qommon.misc.http_get_page(
|
|
118 |
response, status, data, auth_header = misc.http_get_page( |
|
119 | 119 |
url, headers=headers) |
120 | 120 |
request = get_request() |
121 | 121 |
if cache is True and request and hasattr(request, 'wscalls_cache'): |
122 |
- |