diff -r cdbbe9ca465e -r a48f4e860f7b app/soc/modules/ghop/logic/models/task.py --- a/app/soc/modules/ghop/logic/models/task.py Sat Nov 14 18:24:36 2009 +0100 +++ b/app/soc/modules/ghop/logic/models/task.py Sat Nov 14 23:27:03 2009 +0100 @@ -19,6 +19,7 @@ __authors__ = [ '"Madhusudan.C.S" ', + '"Daniel Hans" ', '"Lennard de Rijk" ', ] @@ -31,6 +32,9 @@ from django.utils.translation import ugettext from soc.logic.models import base +from soc.logic import tags + +from soc.modules.ghop.logic.models import comment as ghop_comment_logic import soc.models.linkable @@ -45,6 +49,7 @@ 'NeedsWork': 'transitFromNeedsWork', } +TAG_NAMES = ['arbit_tag', 'difficulty', 'task_type'] class Logic(base.Logic): """Logic methods for the GHOPTask model. @@ -70,6 +75,8 @@ """Defines the name, key_name and model for this entity. """ + self.tags_service = tags.TagsService(TAG_NAMES) + super(Logic, self).__init__(model, base_model=base_model, scope_logic=scope_logic) @@ -431,5 +438,23 @@ return update_dict + def delete(self, entity): + """Delete existing entity from datastore. + """ + + def task_delete_txn(entity): + """Performs all necessary operations in a single transaction when a task + is deleted. + """ + + to_delete = [] + to_delete += ghop_comment_logic.logic.getForFields(ancestors=[entity]) + to_delete += [entity] + + db.delete(to_delete) + + self.tags_service.removeAllTagsForEntity(entity) + db.run_in_transaction(task_delete_txn, entity) + logic = Logic()