0002-general-add-template-access-to-cards-and-forms-43328.patch
tests/test_carddef.py | ||
---|---|---|
1 | 1 |
import pytest |
2 | 2 | |
3 | 3 |
from wcs.qommon.http_request import HTTPRequest |
4 |
from wcs.qommon.template import Template |
|
4 | 5 |
from wcs.carddef import CardDef |
5 | 6 |
from wcs.fields import StringField |
6 | 7 | |
... | ... | |
74 | 75 | |
75 | 76 |
carddef2 = CardDef.import_from_xml_tree(carddef_xml) |
76 | 77 |
assert carddef2.name == 'foo' |
78 | ||
79 | ||
80 |
def test_template_access(pub): |
|
81 |
CardDef.wipe() |
|
82 |
carddef = CardDef() |
|
83 |
carddef.name = 'foo' |
|
84 |
carddef.fields = [ |
|
85 |
StringField(id='1', label='Test', type='string', varname='foo'), |
|
86 |
] |
|
87 |
carddef.store() |
|
88 |
carddef.data_class().wipe() |
|
89 | ||
90 |
for i in range(10): |
|
91 |
carddata = carddef.data_class()() |
|
92 |
carddata.data = {'1': 'blah'} |
|
93 |
carddata.just_created() |
|
94 |
carddata.store() |
|
95 | ||
96 |
context = pub.substitutions.get_context_variables(mode='lazy') |
|
97 |
tmpl = Template('{{cards.foo.objects|filter_by:"foo"|filter_value:"blah"|count}}') |
|
98 |
assert tmpl.render(context) == '10' |
tests/test_formdata.py | ||
---|---|---|
929 | 929 |
assert tmpl.render(context) == '7' |
930 | 930 | |
931 | 931 | |
932 |
def test_lazy_global_forms(pub, variable_test_data): |
|
933 |
lazy_formdata = variable_test_data |
|
934 |
formdef = lazy_formdata._formdef |
|
935 |
formdef.store() |
|
936 |
data_class = lazy_formdata._formdef.data_class() |
|
937 |
for i in range(6): |
|
938 |
formdata = data_class() |
|
939 |
formdata.data = {'0': 'bar'} |
|
940 |
formdata.just_created() |
|
941 |
formdata.store() |
|
942 |
for i in range(4): |
|
943 |
formdata = data_class() |
|
944 |
formdata.data = {'0': 'foo'} |
|
945 |
formdata.just_created() |
|
946 |
formdata.jump_status('finished') |
|
947 |
formdata.store() |
|
948 | ||
949 |
formdata = data_class() |
|
950 |
formdata.data = {'0': 'bar'} |
|
951 |
formdata.status = 'draft' |
|
952 |
formdata.store() |
|
953 | ||
954 |
# template tags |
|
955 |
context = pub.substitutions.get_context_variables(mode='lazy') |
|
956 |
tmpl = Template('{{forms.foobarlazy.slug}}') |
|
957 |
assert tmpl.render(context) == 'foobarlazy' |
|
958 | ||
959 |
tmpl = Template('{{forms.foobarlazy.objects|filter_by:"foo_foo"|filter_value:"bar"|count}}') |
|
960 |
assert tmpl.render(context) == '7' |
|
961 | ||
962 | ||
932 | 963 |
def test_lazy_variables(pub, variable_test_data): |
933 | 964 |
formdata = FormDef.select()[0].data_class().select()[0] |
934 | 965 |
for mode in (None, 'lazy'): |
wcs/qommon/substitution.py | ||
---|---|---|
41 | 41 | |
42 | 42 |
def set_empty(self): |
43 | 43 |
from wcs.data_sources import NamedDataSource |
44 |
from wcs.variables import CardsSource, FormsSource |
|
44 | 45 |
from wcs.wscalls import NamedWsCall |
45 | 46 |
from wcs.scripts import Script |
46 |
self.sources = [NamedDataSource, NamedWsCall, Script] |
|
47 |
self.sources = [NamedDataSource, NamedWsCall, CardsSource, FormsSource, Script]
|
|
47 | 48 | |
48 | 49 |
@classmethod |
49 | 50 |
def register(cls, varname, category=None, comment=None): |
wcs/variables.py | ||
---|---|---|
29 | 29 |
from .qommon.templatetags.qommon import parse_datetime |
30 | 30 |
from .qommon.storage import (Or, Equal, NotEqual) |
31 | 31 | |
32 |
from .carddef import CardDef |
|
32 | 33 |
from .formdef import FormDef |
33 | 34 | |
34 | 35 | |
... | ... | |
889 | 890 |
field.id = field.varname or field.id |
890 | 891 |
data = self._formdef.workflow_options |
891 | 892 |
super(LazyFormDefOptions, self).__init__(fields, data) |
893 | ||
894 | ||
895 |
class CardsSource: |
|
896 |
@classmethod |
|
897 |
def get_substitution_variables(cls): |
|
898 |
return {'cards': cls()} |
|
899 | ||
900 |
def inspect_keys(self): |
|
901 |
return [] |
|
902 | ||
903 |
def __getattr__(self, attr): |
|
904 |
try: |
|
905 |
return LazyFormDef(CardDef.get_by_urlname(attr)) |
|
906 |
except KeyError: |
|
907 |
raise AttributeError(attr) |
|
908 | ||
909 | ||
910 |
class FormsSource: |
|
911 |
@classmethod |
|
912 |
def get_substitution_variables(cls): |
|
913 |
return {'forms': cls()} |
|
914 | ||
915 |
def inspect_keys(self): |
|
916 |
return [] |
|
917 | ||
918 |
def __getattr__(self, attr): |
|
919 |
try: |
|
920 |
return LazyFormDef(FormDef.get_by_urlname(attr)) |
|
921 |
except KeyError: |
|
922 |
raise AttributeError(attr) |
|
892 |
- |