diff --git a/kfet/static/kfet/js/kfet.api.js b/kfet/static/kfet/js/kfet.api.js
index 6afc179f..23fcd4b6 100644
--- a/kfet/static/kfet/js/kfet.api.js
+++ b/kfet/static/kfet/js/kfet.api.js
@@ -565,14 +565,14 @@ class Day extends ModelObject {
* @default ['id', 'date']
* @see {@link Models.ModelObject.props|ModelObject.props}
*/
- static get props() { return ['id', 'date', 'opegroups'] }
+ static get props() { return ['id', 'at', 'opegroups'] }
/**
* Default values for Day model instances
* @default {'id': '', 'date': moment()}
* @see {@link Models.ModelObject.default_data|ModelObject.default_data}
*/
- static get default_data() { return {'id': '', 'date': moment(), 'opegroups': []}; }
+ static get default_data() { return {'id': '', 'at': moment(), 'opegroups': []}; }
/**
* Verbose name for Article model
@@ -580,6 +580,11 @@ class Day extends ModelObject {
*/
static get verbose_name() { return 'day'; }
+ from(data) {
+ super.from(data);
+ this.id = this.at.format("YYYYMMDD");
+ }
+
/**
* @default {@link Formatters.DayFormatter}
*/
@@ -593,14 +598,14 @@ class Day extends ModelObject {
*/
static compare (a, b) {
//Days are sorted by most recent first
- if (a.date < b.date) return 1;
- else if (a.date > b.date) return -1;
+ if (a.at < b.at) return 1;
+ else if (a.at > b.at) return -1;
else return 0;
}
//Parse date and round it
- get date() { return this._date; }
- set date(v) { this._date = dateUTCToParis(v).startOf('date'); }
+ get at() { return this._at; }
+ set at(v) { this._at = dateUTCToParis(v).startOf('date'); }
}
/**
@@ -955,7 +960,8 @@ class ModelForest {
* @param {number} direction
*/
get_or_create(data, direction) {
- var struct_data = this.constructor.structure[data.modelname];
+ var struct = this.constructor.structure ;
+ var struct_data = struct[data.modelname];
var model = struct_data.model;
var existing = this.find(data.modelname, data.content.id);
@@ -963,19 +969,41 @@ class ModelForest {
return existing;
}
- var node = new model(data.content);
+ var node;
+ if (data.content instanceof ModelObject)
+ node = data.content;
+ else
+ node = new model(data.content);
if (direction <= 0) {
var parent_name = struct_data.parent;
- var parent_data = data.parent;
- var parent_struct = this.constructor.structure[parent_name];
- if (parent_data) {
- var parent_node = this.get_or_create(parent_data, -1);
- node[parent_name] = parent_node;
- parent_node[parent_struct.children].push(node);
- } else {
+ if (!parent_name) {
this.roots.push(node);
+ return node;
}
+
+ // If index, we create it
+ if (struct_data.index) {
+ var new_parent = {}
+ for (let key of struct_data.index.fields) {
+ new_parent[key] = data.content[key];
+ }
+
+ // We create model in case there are some special fields
+ var data_parent = {
+ 'modelname': struct_data.index.modelname,
+ 'content': new struct[struct_data.index.modelname].model(new_parent),
+ }
+ console.log(data_parent.content);
+
+ } else {
+ var data_parent = data.parent ;
+ }
+
+ var parent = this.get_or_create(data_parent, -1);
+ var parent_childname = struct[parent.constructor.verbose_name].children;
+ node[parent_name] = parent ;
+ parent[parent_childname].push(node);
}
if (direction >= 0) {
@@ -983,7 +1011,7 @@ class ModelForest {
if (data.children && data.children.length) {
for (let child_data of data.children) {
var child = this.get_or_create(child_data, 1);
- var child_parent = this.constructor.structure[child.constructor.verbose_name];
+ var child_parent = struct[child.constructor.verbose_name];
child[child_parent] = node;
node[child_name].push(child);
}
@@ -1235,6 +1263,10 @@ class OperationList extends APIModelForest {
'model': OperationGroup,
'parent': 'day',
'children': 'opes',
+ 'index': {
+ 'modelname': 'day',
+ 'fields': ["at"]
+ },
},
'transfergroup': {
'model': TransferGroup,
@@ -1648,14 +1680,14 @@ class DayFormatter extends Formatter {
* @default {@link Models.Day.props}
*/
static get props() {
- return Day.props;
+ return ['date'];
}
/**
* a.date formatted as D MMMM
*/
static prop_date(a) {
- return a.date.format('D MMMM');
+ return a.at.format('D MMMM');
}
}
diff --git a/kfet/views.py b/kfet/views.py
index 7826f31d..589b8d41 100644
--- a/kfet/views.py
+++ b/kfet/views.py
@@ -1182,13 +1182,6 @@ def kpsul_perform_operations(request):
'account_id': operationgroup.on_acc.pk,
'checkout_id': operationgroup.checkout.pk,
},
- 'parent': {
- 'modelname': 'day',
- 'content': {
- 'id': operationgroup.at.strftime('%Y%m%d'),
- 'date': operationgroup.at
- },
- },
'children': [],
}]
for ope in operations:
@@ -1547,13 +1540,6 @@ def history_json(request):
'trigramme':
opegroup.on_acc and opegroup.on_acc.trigramme or None,
},
- 'parent': {
- 'modelname': 'day',
- 'content': {
- 'id': opegroup.at.strftime('%Y%m%d'),
- 'date': opegroup.at
- },
- },
'children': [],
}
if request.user.has_perm('kfet.is_team'):
@@ -1603,13 +1589,6 @@ def history_json(request):
'at': transfergroup.at,
'comment': transfergroup.comment,
},
- 'parent': {
- 'modelname': 'day',
- 'content': {
- 'id': transfergroup.at.strftime('%Y%m%d'),
- 'date': transfergroup.at
- },
- },
'children': [],
}