ActiDoo / gamification-engine

gamification-engine (gengine) is a framework for developing gamification features for your application
MIT License
434 stars 108 forks source link

Errors trying to increase_value of a variable for a user #14

Closed philaphil closed 7 years ago

philaphil commented 8 years ago

I created a user id 10 and a variable gold and I am trying to add a value to it from the api and getting the following error

ProgrammingError: (psycopg2.ProgrammingError) function concat(unknown, character varying, unknown) does not exist LINE 3: WHERE goals.condition ILIKE concat(E'%"', variables.name, E'... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. [SQL: 'SELECT goals.id, goals.name, goals.name_translation_id, goals.condition, goals.evaluation, goals.timespan, goals.group_by_key, goals.group_by_dateformat, goals.goal, goals.operator, goals.maxmin, goals.achievement_id, goals.priority, variables.id AS variable_id \nFROM goals, variables \nWHERE goals.condition ILIKE concat(%(param_1)s, variables.name, %(param_2)s) OR goals.condition ILIKE concat(%(param_3)s, variables.name, %(param_4)s)'] [parameters: {'param_4': "'%", 'param_1': '%"', 'param_3': "%'", 'param_2': '"%'}]

philaphil commented 8 years ago

I upgraded from postgres 8.4 to 9.5 and reinstalled the database now I am getting a new error on progress and increase_value calls

TypeError: 'NoneType' object has no attribute 'getitem' TypeError: 'NoneType' object does not support item assignment

here is a full stack trace

{ "achievements": {}, "achievement_errors": { "1": { "id": 1, "error": "Traceback (most recent call last):\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/views.py\", line 92, in ea\n return Achievement.evaluate(user, achievement[\"id\"])\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/models.py\", line 763, in evaluate\n return cache_achievement_eval.get_orcreate(\"%s%s\" % (user[\"id\"],achievement_id),generate)\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/cache/region.py\", line 657, in get_or_create\n async_creator) as value:\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 158, in enter\n return self._enter()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 98, in _enter\n generated = self._enter_create(createdtime)\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 149, in _enter_create\n created = self.creator()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/cache/region.py\", line 625, in gen_value\n created_value = creator()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/models.py\", line 690, in generate\n if not goal_eval[\"achieved\"]:\nTypeError: 'NoneType' object has no attribute 'getitem'\n" }, "2": { "id": 2, "error": "Traceback (most recent call last):\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/views.py\", line 92, in ea\n return Achievement.evaluate(user, achievement[\"id\"])\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/models.py\", line 763, in evaluate\n return cache_achievement_eval.get_orcreate(\"%s%s\" % (user[\"id\"],achievement_id),generate)\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/cache/region.py\", line 657, in get_or_create\n async_creator) as value:\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 158, in enter\n return self._enter()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 98, in _enter\n generated = self._enter_create(createdtime)\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/core/dogpile.py\", line 149, in _enter_create\n created = self.creator()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/dogpile/cache/region.py\", line 625, in gen_value\n created_value = creator()\n File \"/home/api/wwwge/env/lib/python2.7/site-packages/gengine/models.py\", line 686, in generate\n goal_eval[\"leaderboard\"] = Goal.get_leaderboard(goal, user_ids)\nTypeError: 'NoneType' object does not support item assignment\n" } } }

msander commented 8 years ago

It might be an error in your goal definition (We should implement some rule verification!). However, I'll look into it more detailed later.

msander commented 7 years ago

@philaphil Sorry for the way too late response. Is this still an issue for you? We were mainly working on major rule language improvements during the last months and on stability of the whole engine. The current state is in the develop branch, but tests and docs updates are still todos for the upcoming release.

msander commented 7 years ago

Closing this now. In case you still have problems, please open another issue.