Skip to content

Commit f1608a4

Browse files
author
Ramez Ashraf
committed
Merge branch 'release/0.6.7'
2 parents cdf8d8b + 4638961 commit f1608a4

File tree

6 files changed

+27
-9
lines changed

6 files changed

+27
-9
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# Changelog
22

33
All notable changes to this project will be documented in this file.
4+
## [0.6.7]
5+
6+
- Fix issue with `ReportField` when it has a `requires` in time series and crosstab reports /
47

58
## [0.6.6]
69

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
master_doc = 'index'
2828

2929
# The full version, including alpha/beta/rc tags
30-
release = '0.6.6'
30+
release = '0.6.7'
3131

3232
# -- General configuration ---------------------------------------------------
3333

slick_reporting/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
default_app_config = 'slick_reporting.apps.ReportAppConfig'
22

3-
VERSION = (0, 6, 6)
3+
VERSION = (0, 6, 7)
44

5-
__version__ = '0.6.6'
5+
__version__ = '0.6.7'

slick_reporting/fields.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def init_preparation(self, q_filters=None, kwargs_filters=None, **kwargs):
130130

131131
debit_results, credit_results = self.prepare(q_filters, kwargs_filters, **kwargs)
132132
self._cache = debit_results, credit_results, dep_values
133+
return self._cache
133134

134135
def prepare(self, q_filters=None, kwargs_filters=None, **kwargs):
135136
"""
@@ -188,7 +189,8 @@ def _prepare_dependencies(self, q_filters=None, extra_filters=None, ):
188189
for dep_class in self._require_classes:
189190
dep = dep_class(self.plus_side_q, self.minus_side_q, self.report_model,
190191
date_field=self.date_field, group_by=self.group_by)
191-
values[dep.name] = {'results': dep.init_preparation(q_filters, extra_filters),
192+
results = dep.init_preparation(q_filters, extra_filters)
193+
values[dep.name] = {'results': results,
192194
'instance': dep}
193195
return values
194196

@@ -216,17 +218,19 @@ def get_dependency_value(self, current_obj, name=None):
216218
:return: a dict containing dependencies names as keys and their calculation as values
217219
or a specific value if name is specified.
218220
"""
219-
values = self._resolve_dependencies(current_obj)
221+
values = self._resolve_dependencies(current_obj, name=None)
220222
if name:
221223
return values.get(name)
222224
return values
223225

224-
def _resolve_dependencies(self, current_obj):
226+
def _resolve_dependencies(self, current_obj, name=None):
225227

226228
dep_results = {}
227229
cached_debit, cached_credit, dependencies_value = self._cache
228230
dependencies_value = dependencies_value or {}
229231
for d in dependencies_value.keys():
232+
if name and d != name:
233+
continue
230234
d_instance = dependencies_value[d]['instance']
231235
dep_results[d] = d_instance.resolve(current_obj)
232236
return dep_results
@@ -382,7 +386,7 @@ class PercentageToBalance(SlickReportField):
382386
def final_calculation(self, debit, credit, dep_dict):
383387
obj_balance = dep_dict.get('__balance__')
384388
total = debit - credit
385-
return (obj_balance/total) * 100
389+
return (obj_balance / total) * 100
386390

387391

388392
class CreditReportField(SlickReportField):

slick_reporting/generator.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,11 @@ def _prepare_report_dependencies(self):
306306
if isclass(klass) and issubclass(klass, SlickReportField):
307307
dependencies_names = klass.get_full_dependency_list()
308308

309-
# check if any of this dependencies is on the report
310-
fields_on_report = [x for x in window_cols if x['ref'] in dependencies_names]
309+
# check if any of these dependencies is on the report, if found we call the child to
310+
# resolve the value for its parent avoiding extra database call
311+
fields_on_report = [x for x in window_cols if x['ref'] in dependencies_names
312+
and ((window == 'time_series' and x.get('start_date', '') == col_data.get('start_date', '') and x.get('end_date') == col_data.get('end_date')) or
313+
window == 'crosstab' and x.get('id') == col_data.get('id'))]
311314
for field in fields_on_report:
312315
self._report_fields_dependencies[window][field['name']] = col_data['name']
313316
for col_data in window_cols:

tests/tests.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,14 @@ def test_client_client_sales_monthly(self):
172172
self.assertEqual(data[0]['__total__TS%s0301' % year], 100)
173173
self.assertEqual(data[0]['__total__TS%s0201' % year], 100)
174174

175+
self.assertEqual(data[0]['__debit__TS%s0401' % year], 100)
176+
self.assertEqual(data[0]['__debit__TS%s0301' % year], 100)
177+
self.assertEqual(data[0]['__debit__TS%s0201' % year], 100)
178+
179+
self.assertEqual(data[2]['__debit__TS%s0401' % year], 300)
180+
self.assertEqual(data[2]['__debit__TS%s0301' % year], 300)
181+
self.assertEqual(data[2]['__debit__TS%s0201' % year], 300)
182+
175183
# todo add __fb__ to time series and check the balance
176184

177185
def test_client_statement_detail(self):

0 commit comments

Comments
 (0)