Skip to content

Commit 4db6b69

Browse files
committed
Merge branch 'release/v0.4.1'
2 parents aed9262 + a60cbd2 commit 4db6b69

File tree

10 files changed

+63
-21
lines changed

10 files changed

+63
-21
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [0.4.1] - 2020-11-26
5+
6+
- Bring back calculateTotalOnObjectArray (#11)
7+
- Bypassing default ordering by when generating the report (#10)
8+
- Fix in dates in template and view
9+
10+
411
## [0.4.0] - 2020-11-24 [BREAKING]
512

613
- Renamed `SampleReportView` to `SlickReportView`

slick_reporting/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
default_app_config = 'slick_reporting.apps.ReportAppConfig'
33

4-
VERSION = (0, 4, 0)
4+
VERSION = (0, 4, 1)
55

6-
__version__ = '0.4.0'
6+
__version__ = '0.4.1'

slick_reporting/fields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def prepare(self, q_filters=None, kwargs_filters=None, **kwargs):
153153

154154
def get_queryset(self):
155155
queryset = self.report_model.objects
156-
return queryset
156+
return queryset.order_by()
157157

158158
def get_annotation_name(self):
159159
"""

slick_reporting/form_factory.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,14 @@ def report_form_factory(model, fkeys_filter_func=None, foreign_key_widget_func=N
117117

118118
fields['start_date'] = forms.DateTimeField(required=False, label=_('From date'),
119119
initial=app_settings.SLICK_REPORTING_DEFAULT_START_DATE,
120-
widget=forms.DateTimeInput(format='%m/%d/%Y %H:%M',
121-
attrs={'autocomplete': "off"}),
120+
widget=forms.DateTimeInput(
121+
attrs={'autocomplete': "off"}),
122122
)
123123

124124
fields['end_date'] = forms.DateTimeField(required=False, label=_('To date'),
125125
initial=app_settings.SLICK_REPORTING_DEFAULT_END_DATE,
126-
widget=forms.DateTimeInput(format='%m/%d/%Y %H:%M',
127-
attrs={'autocomplete': "off"})
126+
widget=forms.DateTimeInput(
127+
attrs={'autocomplete': "off"})
128128
)
129129

130130
for name, f_field in fkeys_map.items():

slick_reporting/generator.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ def __init__(self, report_model=None, main_queryset=None, start_date=None, end_d
164164
self.crosstab_compute_reminder = self.crosstab_compute_reminder if crosstab_compute_reminder is None else crosstab_compute_reminder
165165

166166
main_queryset = main_queryset or self.report_model.objects
167+
main_queryset = main_queryset.order_by()
167168

168169
self.columns = self.columns or columns or []
169170
self.group_by = self.group_by or group_by

slick_reporting/static/slick_reporting/ra.chartsjs.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,36 @@
6666
return chartObject
6767
}
6868

69+
function calculateTotalOnObjectArray(data, columns) {
70+
// Compute totals in array of objects
71+
// example :
72+
// calculateTotalOnObjectArray ([{ value1:500, value2: 70} , {value:200, value2:15} ], ['value'])
73+
// return {'value1': 700, value2:85}
74+
75+
let total_container = {};
76+
for (let r = 0; r < data.length; r++) {
77+
78+
for (let i = 0; i < columns.length; i++) {
79+
if (typeof total_container[columns[i]] == 'undefined') {
80+
total_container[columns[i]] = 0;
81+
}
82+
let val = data[r][columns[i]];
83+
if (val === '-') val = 0;
84+
85+
else if (typeof (val) == 'string') {
86+
try {
87+
val = val.replace(/,/g, '');
88+
} catch (err) {
89+
console.log(err, val, typeof (val));
90+
}
91+
}
92+
total_container[columns[i]] += parseFloat(val);
93+
}
94+
}
95+
return total_container;
96+
}
97+
98+
6999
function extractDataFromResponse(response, chartOptions) {
70100
let dataFieldName = chartOptions['data_source'];
71101
let titleFieldName = chartOptions['title_source'];
@@ -157,7 +187,7 @@
157187
function getObjFromArray(objList, obj_key, key_value, failToFirst) {
158188
failToFirst = typeof (failToFirst) !== 'undefined';
159189
if (key_value !== '') {
160-
for (var i = 0; i < objList.length; i++) {
190+
for (let i = 0; i < objList.length; i++) {
161191
if (objList[i][obj_key] === key_value) {
162192
return objList[i];
163193
}

slick_reporting/templates/slick_reporting/simple_report.html

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,12 @@ <h4 class="py-5">Results</h4>
102102
$('.raReportDateRange').daterangepicker(setDatePickerObj()).on('apply.daterangepicker', function (ev, picker) {
103103

104104
var container = picker.element;
105-
var $startDate = container.find('[name=start_date_0]');
106-
var $startTime = container.find('[name=start_date_1]');
107-
var $endDate = container.find('[name=end_date_0]');
108-
var $endTime = container.find('[name=end_date_1]');
109-
$startDate.val(picker.startDate.format('YYYY') + '-' + picker.startDate.format('MM') + "-" + picker.startDate.format('DD'))
110-
$startTime.val(picker.startDate.format('HH') + ":" + picker.startDate.format('mm'));
111-
$endDate.val(picker.endDate.format('YYYY') + '-' + picker.endDate.format('MM') + "-" + picker.endDate.format('DD'))
112-
$endTime.val(picker.endDate.format('HH') + ":" + picker.endDate.format('mm'));
105+
var $startDate = container.find('[name=start_date]');
106+
var $startTime = container.find('[name=start_date]');
107+
var $endDate = container.find('[name=end_date]');
108+
var $endTime = container.find('[name=end_date]');
109+
$startDate.val(picker.startDate.format('YYYY') + '-' + picker.startDate.format('MM') + "-" + picker.startDate.format('DD') + ' ' +picker.startDate.format('HH') + ":" + picker.startDate.format('mm'))
110+
$endDate.val(picker.endDate.format('YYYY') + '-' + picker.endDate.format('MM') + "-" + picker.endDate.format('DD') +' ' + picker.endDate.format('HH') + ":" + picker.endDate.format('mm'))
113111
container.parents('.panel').find('.refreshReport').trigger('click');
114112

115113
})
@@ -130,7 +128,7 @@ <h4 class="py-5">Results</h4>
130128
try {
131129
myChart.destroy();
132130
} catch (err) {
133-
console.error(err);
131+
console.info(err);
134132
}
135133
myChart = new Chart($chart, chartObject);
136134

slick_reporting/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ def get_report_generator(self, queryset, for_print):
117117
self.crosstab_compute_reminder = self.form.get_crosstab_compute_reminder()
118118

119119
return self.report_generator_class(self.report_model,
120+
start_date=self.form.cleaned_data['start_date'],
121+
end_date=self.form.cleaned_data['end_date'],
120122
q_filters=q_filters,
121123
kwargs_filters=kw_filters,
122124
date_field=self.date_field,

tests/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,18 @@ class SimpleSales(models.Model):
3535
quantity = models.DecimalField(_('quantity'), max_digits=19, decimal_places=2, default=0)
3636
price = models.DecimalField(_('price'), max_digits=19, decimal_places=2, default=0)
3737
value = models.DecimalField(_('value'), max_digits=19, decimal_places=2, default=0)
38+
created_at = models.DateTimeField(null=True, verbose_name=_('Created at'))
39+
3840

3941
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
40-
self.value = self.quantity * self.price
42+
self.value = self.quantity * self.price
4143
super().save(force_insert, force_update, using, update_fields)
4244

4345
class Meta:
4446
verbose_name = _('Sale')
4547
verbose_name_plural = _('Sales')
48+
ordering = ['-created_at']
49+
4650

4751
#
4852
# class Invoice(BaseMovementInfo):

tests/tests.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,14 @@ def setUpTestData(cls):
5050

5151
SimpleSales.objects.create(
5252
doc_date=datetime.datetime(year, 1, 2), client=cls.client1,
53-
product=cls.product1, quantity=10, price=10)
53+
product=cls.product1, quantity=10, price=10, created_at=datetime.datetime(year, 1, 5))
5454
SimpleSales.objects.create(
5555
doc_date=datetime.datetime(year, 2, 2), client=cls.client1,
56-
product=cls.product1, quantity=10, price=10)
56+
product=cls.product1, quantity=10, price=10, created_at=datetime.datetime(year, 2, 3))
5757

5858
SimpleSales.objects.create(
5959
doc_date=datetime.datetime(year, 3, 2), client=cls.client1,
60-
product=cls.product1, quantity=10, price=10)
60+
product=cls.product1, quantity=10, price=10, created_at=datetime.datetime(year, 3, 3))
6161

6262
# client 2
6363
SimpleSales.objects.create(

0 commit comments

Comments
 (0)