927 |
927 |
|
928 |
928 |
|
929 |
929 |
def test_lazy_formdata_queryset_distance(pub, variable_test_data):
|
|
930 |
# Form
|
930 |
931 |
lazy_formdata = variable_test_data
|
931 |
932 |
formdef = lazy_formdata._formdef
|
932 |
933 |
formdef.geolocations = {'base': 'Base'}
|
933 |
934 |
formdef.store()
|
934 |
935 |
data_class = lazy_formdata._formdef.data_class()
|
|
936 |
# Card
|
|
937 |
CardDef.wipe()
|
|
938 |
carddef = CardDef()
|
|
939 |
carddef.name = 'items'
|
|
940 |
carddef.fields = []
|
|
941 |
carddef.geolocations = {'base': 'Base'}
|
|
942 |
carddef.store()
|
|
943 |
carddata_class = carddef.data_class()
|
|
944 |
carddata_class.wipe()
|
|
945 |
|
|
946 |
# create initial carddata like lazy_formdata, with same geolocations
|
|
947 |
carddata = carddata_class()
|
|
948 |
carddata.geolocations = {'base': {'lat': 1, 'lon': 2}}
|
|
949 |
carddata.just_created()
|
|
950 |
carddata.store()
|
|
951 |
lazy_carddata = LazyFormData(carddata)
|
|
952 |
|
|
953 |
# create objects
|
935 |
954 |
for i in range(6):
|
936 |
|
formdata = data_class()
|
937 |
|
formdata.geolocations = {'base': {'lat': i, 'lon': i}}
|
938 |
|
formdata.just_created()
|
939 |
|
formdata.store()
|
|
955 |
for dclass in [data_class, carddata_class]:
|
|
956 |
data = dclass()
|
|
957 |
data.geolocations = {'base': {'lat': i, 'lon': i}}
|
|
958 |
data.just_created()
|
|
959 |
data.store()
|
940 |
960 |
for i in range(4):
|
941 |
|
formdata = data_class()
|
942 |
|
formdata.geolocations = {'base': {'lat': i + 0.5, 'lon': i + 0.5}}
|
943 |
|
formdata.just_created()
|
944 |
|
formdata.jump_status('finished')
|
945 |
|
formdata.store()
|
946 |
|
|
|
961 |
for dclass in [data_class, carddata_class]:
|
|
962 |
data = dclass()
|
|
963 |
data.geolocations = {'base': {'lat': i + 0.5, 'lon': i + 0.5}}
|
|
964 |
data.just_created()
|
|
965 |
data.jump_status('finished')
|
|
966 |
data.store()
|
|
967 |
|
|
968 |
# drafts
|
947 |
969 |
formdata = data_class()
|
948 |
970 |
formdata.status = 'draft'
|
|
971 |
formdata.geolocations = {'base': {'lat': 1, 'lon': 2}}
|
949 |
972 |
formdata.store()
|
|
973 |
carddata = carddata_class()
|
|
974 |
carddata.status = 'draft'
|
|
975 |
carddata.geolocations = {'base': {'lat': 1, 'lon': 2}}
|
|
976 |
carddata.store()
|
950 |
977 |
|
951 |
978 |
# compute distance against map field of lazy formdata
|
952 |
979 |
nearby = lazy_formdata.objects.distance_filter(200000)
|
953 |
980 |
assert len(nearby) == 6
|
954 |
981 |
assert set([x.number for x in nearby]) == set(['1-1', '1-3', '1-4', '1-8', '1-9', '1-10'])
|
|
982 |
nearby = lazy_carddata.objects.set_geo_center(lazy_formdata).distance_filter(200000)
|
|
983 |
assert len(nearby) == 6
|
|
984 |
assert set([x.number for x in nearby]) == set(['1-1', '1-3', '1-4', '1-8', '1-9', '1-10'])
|
955 |
985 |
|
956 |
986 |
# compute distance against geolocation
|
957 |
987 |
lazy_formdata._formdata.geolocations = {'base': {'lat': 2, 'lon': 2.5}}
|
... | ... | |
959 |
989 |
assert len(nearby) == 6
|
960 |
990 |
assert set([x.number for x in nearby]) == set(['1-1', '1-4', '1-5', '1-9', '1-10', '1-11'])
|
961 |
991 |
assert bool(nearby) is True
|
|
992 |
nearby = lazy_carddata.objects.set_geo_center(lazy_formdata).distance_filter(200000)
|
|
993 |
assert len(nearby) == 6
|
|
994 |
assert set([x.number for x in nearby]) == set(['1-1', '1-4', '1-5', '1-9', '1-10', '1-11'])
|
|
995 |
assert bool(nearby) is True
|
|
996 |
|
962 |
997 |
context = pub.substitutions.get_context_variables(mode='lazy')
|
963 |
998 |
tmpl = Template('{{form_objects|distance_filter:200000|count}}')
|
964 |
999 |
assert tmpl.render(context) == '6'
|
|
1000 |
tmpl = Template('{{cards|objects:"items"|set_geo_center:form|distance_filter:200000|count}}')
|
|
1001 |
assert tmpl.render(context) == '6'
|
965 |
1002 |
|
966 |
1003 |
lazy_formdata._formdata.geolocations = {'base': {'lat': 7, 'lon': 7.5}}
|
967 |
1004 |
nearby = lazy_formdata.objects.distance_filter(200000)
|
968 |
1005 |
assert bool(nearby) is False
|
969 |
1006 |
assert len(nearby) == 0
|
|
1007 |
nearby = lazy_carddata.objects.set_geo_center(lazy_formdata).distance_filter(200000)
|
|
1008 |
assert bool(nearby) is False
|
|
1009 |
assert len(nearby) == 0
|
|
1010 |
|
970 |
1011 |
tmpl = Template('{{form_objects|distance_filter:200000|count}}')
|
971 |
1012 |
assert tmpl.render(context) == '0'
|
|
1013 |
tmpl = Template('{{cards|objects:"items"|set_geo_center:form|distance_filter:200000|count}}')
|
|
1014 |
assert tmpl.render(context) == '0'
|
972 |
1015 |
|
973 |
1016 |
|
974 |
1017 |
def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|