views:

105

answers:

2

Hi folks,

I'm thinking of adding a reputation system to a web application, the site is already being used so I'm trying to be careful about my choices.

I'm developing in Django/Python, thought this would be important.

Reputation is generated in all actions that contribute to the site, similar to Stackoverflow's system.

I know there are literally millions of ways of implementing this, and this is why I feel quite lost.

Two alternatives I am not sure about are:

  • Keep track of reasons why reputation was incremented
  • Ignore reasons in order to reduce complexity of the site and overhead

Would be happy with a few pointers, and directions. Would be very much appreciated!

+2  A: 

keep track of the reasons, IMHO. It surely wouldn't be that complex, and you don't need to store a huge amount of information, just a datetime, point value, command, target, and originator. If the data gets to be too much after some time dump the DB to a backup medium and clear the history.

Segfault
+4  A: 

In Django, I'd suggest having a property on the User (or Profile) model that calculates a user's reputation on-demand. Then, cache the reputation with your caching framework and/or store to the database for fast retrieval.

This way, in addition to having the records of what impacts reputation, you can change your reputation criteria at will.

Daniel
@Daniel thank you. That is some good pointers!
RadiantHex