Skip to content

Commit

Permalink
removed observer code
Browse files Browse the repository at this point in the history
  • Loading branch information
brosner committed Mar 17, 2011
1 parent 09fbf58 commit 7781513
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 82 deletions.
3 changes: 1 addition & 2 deletions notification/admin.py
@@ -1,6 +1,6 @@
from django.contrib import admin from django.contrib import admin


from notification.models import NoticeType, NoticeSetting, ObservedItem, NoticeQueueBatch from notification.models import NoticeType, NoticeSetting, NoticeQueueBatch




class NoticeTypeAdmin(admin.ModelAdmin): class NoticeTypeAdmin(admin.ModelAdmin):
Expand All @@ -14,4 +14,3 @@ class NoticeSettingAdmin(admin.ModelAdmin):
admin.site.register(NoticeQueueBatch) admin.site.register(NoticeQueueBatch)
admin.site.register(NoticeType, NoticeTypeAdmin) admin.site.register(NoticeType, NoticeTypeAdmin)
admin.site.register(NoticeSetting, NoticeSettingAdmin) admin.site.register(NoticeSetting, NoticeSettingAdmin)
admin.site.register(ObservedItem)
80 changes: 0 additions & 80 deletions notification/models.py
Expand Up @@ -239,83 +239,3 @@ def get_for(self, observed, observer, signal):
content_type = ContentType.objects.get_for_model(observed) content_type = ContentType.objects.get_for_model(observed)
observed_item = self.get(content_type=content_type, object_id=observed.id, user=observer, signal=signal) observed_item = self.get(content_type=content_type, object_id=observed.id, user=observer, signal=signal)
return observed_item return observed_item


class ObservedItem(models.Model):

user = models.ForeignKey(User, verbose_name=_("user"))

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
observed_object = generic.GenericForeignKey("content_type", "object_id")

notice_type = models.ForeignKey(NoticeType, verbose_name=_("notice type"))

added = models.DateTimeField(_("added"), default=datetime.datetime.now)

# the signal that will be listened to send the notice
signal = models.TextField(verbose_name=_("signal"))

objects = ObservedItemManager()

class Meta:
ordering = ["-added"]
verbose_name = _("observed item")
verbose_name_plural = _("observed items")

def send_notice(self, extra_context=None):
if extra_context is None:
extra_context = {}
extra_context.update({"observed": self.observed_object})
send([self.user], self.notice_type.label, extra_context)


def observe(observed, observer, notice_type_label, signal="post_save"):
"""
Create a new ObservedItem.
To be used by applications to register a user as an observer for some object.
"""
notice_type = NoticeType.objects.get(label=notice_type_label)
observed_item = ObservedItem(
user=observer, observed_object=observed,
notice_type=notice_type, signal=signal
)
observed_item.save()
return observed_item


def stop_observing(observed, observer, signal="post_save"):
"""
Remove an observed item.
"""
observed_item = ObservedItem.objects.get_for(observed, observer, signal)
observed_item.delete()


def send_observation_notices_for(observed, signal="post_save", extra_context=None):
"""
Send a notice for each registered user about an observed object.
"""
if extra_context is None:
extra_context = {}
observed_items = ObservedItem.objects.all_for(observed, signal)
for observed_item in observed_items:
observed_item.send_notice(extra_context)
return observed_items


def is_observing(observed, observer, signal="post_save"):
if isinstance(observer, AnonymousUser):
return False
try:
observed_items = ObservedItem.objects.get_for(observed, observer, signal)
return True
except ObservedItem.DoesNotExist:
return False
except ObservedItem.MultipleObjectsReturned:
return True


def handle_observations(sender, instance, *args, **kw):
send_observation_notices_for(instance)

0 comments on commit 7781513

Please sign in to comment.