summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-03-11 20:58:42 -0500
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2012-03-11 21:10:28 -0500
commitc4e515160d0e6d8f4e661ddafdba66d974799485 (patch)
treea1849b36e6cda9b79c134cf46ffb9794920065d5
parentec6867197f168b767ec7945e59ee0668a0a6a034 (diff)
downloadaskbot-c4e515160d0e6d8f4e661ddafdba66d974799485.tar.gz
askbot-c4e515160d0e6d8f4e661ddafdba66d974799485.tar.bz2
askbot-c4e515160d0e6d8f4e661ddafdba66d974799485.zip
replaced the unnecessary hack for dealing with deleted badges with the code that automatically updates the badge data at startup
-rw-r--r--askbot/models/badges.py5
-rw-r--r--askbot/models/repute.py25
-rw-r--r--askbot/views/meta.py6
3 files changed, 6 insertions, 30 deletions
diff --git a/askbot/models/badges.py b/askbot/models/badges.py
index b909b7e1..61149df3 100644
--- a/askbot/models/badges.py
+++ b/askbot/models/badges.py
@@ -878,6 +878,11 @@ def init_badges():
#from the __init__ function?
for key in BADGES.keys():
get_badge(key).get_stored_data()
+ #remove any badges from the database
+ #that are no longer in the BADGES dictionary
+ BadgeData.objects.exclude(
+ slug__in = map(slugify, BADGES.keys())
+ ).delete()
award_badges_signal = Signal(
providing_args=[
diff --git a/askbot/models/repute.py b/askbot/models/repute.py
index aa6287c2..c9c1b8bf 100644
--- a/askbot/models/repute.py
+++ b/askbot/models/repute.py
@@ -17,30 +17,7 @@ class BadgeData(models.Model):
"""retrieves badge metadata stored
in a file"""
from askbot.models import badges
- try:
- return badges.get_badge(self.slug)
- except KeyError:
- #return a dummy badge
- return badges.Badge(level = const.BRONZE_BADGE)
-
- def is_real_badge(self):
- """true if badge with a given slug exists
- todo: may need attention - currently some badge data is defined in a file,
- and some in the database. Data in the file is considered
- more up to date. It is possifle that the file is edited,
- and data is not deleted from the database, this method
- will find such condition.
-
- The reason why some data is on disk, is that each
- badge has code associated with them, that code is not stored in the database.
- Therefore maintenance of badge data requires more attention...
- """
- from askbot.models import badges
- try:
- badges.get_badge(self.slug)
- return True
- except KeyError:
- return False
+ return badges.get_badge(self.slug)
@property
def name(self):
diff --git a/askbot/views/meta.py b/askbot/views/meta.py
index 5cd17005..b2f09cf4 100644
--- a/askbot/views/meta.py
+++ b/askbot/views/meta.py
@@ -127,12 +127,6 @@ def badges(request):#user status/reputation system
def badge(request, id):
#todo: supplement database data with the stuff from badges.py
badge = get_object_or_404(BadgeData, id=id)
- if not badge.is_real_badge():
- #this is a hack around a non-elegant badge data system
- #a request can come for a badge that is no longer used
- #for example from a search engine that knows of past
- #url structure
- raise Http404
badge_recipients = User.objects.filter(
award_user__badge = badge