Skip to content

Commit a1c990e

Browse files
author
Ezequiel Torres
committed
Fixed bugs in update individual feature
* Value edition was removed because there is no functions in MLCLocal to edit this field #41
1 parent 889563d commit a1c990e

File tree

2 files changed

+44
-16
lines changed

2 files changed

+44
-16
lines changed

MLC/GUI/Experiment/ExperimentDialog.py

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,18 @@ def _config_table_edited(self, left, right):
257257
.format(self._experiment_name, section, parameter, value))
258258
self._autogenerated_object.save_config_button.setDisabled(False)
259259

260+
def _get_db_view_stored_value(self, model_index, table_model, indiv_id):
261+
indiv_data = self._mlc_local.get_individual(self._experiment_name, indiv_id)
262+
old_value = None
263+
264+
if model_index.column() == 4:
265+
# Cost modified
266+
old_value = indiv_data.get_cost_history()[self._current_gen][0][0]
267+
elif model_index.column() == 5:
268+
# Value modified
269+
old_value = indiv_data.get_value()
270+
return old_value
271+
260272
def _db_view_edited(self, left, right):
261273
db_view = self._autogenerated_object.db_view
262274
table_model = db_view.model()
@@ -269,24 +281,31 @@ def _db_view_edited(self, left, right):
269281
indiv_id = int(table_model.get_data(left.row(), 1))
270282
if response == QMessageBox.No:
271283
# Get the value stored in the database
272-
indiv_data = self._mlc_local.get_individual(self._experiment_name, indiv_id)
273-
274-
if left.column() == 4:
275-
# Cost modified
276-
old_value = indiv_data.get_cost_history()[self._current_gen][0][0]
277-
logger.info('[EXPERIMENT {0}] [DB_VIEW_EDITED] - '
278-
'Edition was canceled. Cell({1}, {2}) - Old value: {3}'
279-
.format(self._experiment_name, left.row(),
280-
left.column(), old_value))
281-
table_model.set_data(left.row(), left.column(), str(old_value))
282-
elif left.column() == 5:
283-
# Value modified
284-
# TODO:
285-
pass
284+
old_value = self._get_db_view_stored_value(model_index=left,
285+
table_model=table_model,
286+
indiv_id=indiv_id)
287+
logger.info('[EXPERIMENT {0}] [DB_VIEW_EDITED] - '
288+
'Edition was canceled. Cell({1}, {2}) - Old value: {3}'
289+
.format(self._experiment_name, left.row(),
290+
left.column(), old_value))
291+
table_model.set_data(left.row(), left.column(), str(old_value))
286292
else:
287293
value = table_model.get_data(left.row(), left.column())
288294

289295
if left.column() == 4:
296+
try:
297+
float(value)
298+
except ValueError:
299+
logger.info("[EXPERIMENT {0}] [DB_VIEW_EDITED] - "
300+
"Cost inserted is not valid. Individual won't be updated)")
301+
QMessageBox.critical(self, "Invalid cost",
302+
"Cost inserted is not valid. Individual won't be updated ")
303+
old_value = self._get_db_view_stored_value(model_index=left,
304+
table_model=table_model,
305+
indiv_id=indiv_id)
306+
table_model.set_data(left.row(), left.column(), str(old_value))
307+
return
308+
290309
logger.info('[EXPERIMENT {0}] [DB_VIEW_EDITED] - '
291310
'Updating database. Cell ({1}, {2}) - Value: {3}'
292311
.format(self._experiment_name, left.row(),
@@ -296,6 +315,8 @@ def _db_view_edited(self, left, right):
296315
new_cost=float(value),
297316
new_ev_time=time.time(),
298317
generation=self._current_gen)
318+
QMessageBox.information(self, "Experiment updated",
319+
"Individual was succesfully updated")
299320
elif left.column() == 5:
300321
# TODO
301322
pass
@@ -382,7 +403,10 @@ def _update_experiment_info(self):
382403
self._current_gen = 1
383404

384405
header = ['Population Index', 'Individual Index', 'Gen Method', 'Appearences', 'Cost', 'Value']
385-
editable_columns = [4, 5]
406+
# TODO: Add support for value edition
407+
# editable_columns = [4, 5]
408+
editable_columns = [4]
409+
386410
table_model = ConfigTableModel("DB TABLE", self._individuals_per_generation[self._current_gen - 1],
387411
header, self)
388412
db_view = self._autogenerated_object.db_view

MLC/db/sqlite/sqlite_repository.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
from MLC.db.mlc_repository import MLCRepository
55
from MLC.db.mlc_repository import MLCRepositoryHelper, IndividualData
66
from MLC.individual.Individual import Individual
7+
from MLC.Log.log import get_gui_logger
78
from MLC.Simulation import Simulation
89
from sql_statements import *
910

11+
logger = get_gui_logger()
12+
1013

1114
class SQLiteRepository(MLCRepository):
1215
IN_MEMORY_DB = ":memory:"
@@ -208,7 +211,8 @@ def update_individual_cost(self, individual_id, cost, evaluation_time, generatio
208211
else:
209212
stmt_to_update_cost = stmt_update_cost(individual_id, cost, evaluation_time, generation)
210213

211-
print ">>> STMT:%s" % stmt_to_update_cost
214+
logger.debug("[SQLITE_REPO] [UPDATE_INDIV_COST] - Query executed: {0}"
215+
.format(stmt_to_update_cost))
212216
self.__execute(stmt_to_update_cost)
213217

214218
def __execute(self, statement):

0 commit comments

Comments
 (0)