Example #1
0
                    event.company.followers.values_list("follower__id",
                                                        flat=True)),
            ))
        return result

    def get_activity(self, event):
        return Activity(
            actor=event.company,
            verb=EventCreateVerb,
            object=event,
            time=event.created_at,
            extra_context={"title": event.title},
        )


register_handler(EventHandler)


class RegistrationHandler(Handler):

    model = Registration
    manager = feed_manager

    def handle_create(self, instance, **kwargs):
        activity = self.get_activity(instance)
        for feeds, recipients in self.get_feeds_and_recipients(instance):
            self.manager.add_activity(activity, recipients, feeds)

    def handle_update(self, instance, **kwargs):
        registered = instance.unregistration_date is not None
        if registered:
Example #2
0
        activity = Activity(
            actor=instance.created_by,
            verb=RestrictedMailSent,
            object=instance,
            time=instance.used,
            extra_context={},
        )
        self.manager.add_activity(activity, [instance.created_by.pk],
                                  [NotificationFeed])

        # Send notification
        notification = RestrictedMailSentNotification(instance.created_by)
        notification.notify()

    def handle_failure(self, sender, reason):
        """
        Notify about restricted mail failure. This action is not connected to a specific user.
        We sends a message to the sender instead of a user. We use the send_mail task directly
        because of this.
        """
        send_email.delay(
            to_email=sender,
            context={"reason": reason},
            subject=f"Kunne ikke sende ut begrenset epost",
            plain_template="restricted/email/process_failure.txt",
            html_template="restricted/email/process_failure.html",
        )


registry.register_handler(RestrictedHandler)
Example #3
0
    def get_activity(self, meeting_invitation):
        return Activity(
            actor=meeting_invitation.created_by,
            verb=MeetingInvitationVerb,
            object=meeting_invitation,
            target=meeting_invitation.user,
            time=meeting_invitation.created_at,
        )

    def handle_create(self, instance, **kwargs):
        activity = self.get_activity(instance)
        self.manager.add_activity(activity, [instance.user.pk], [NotificationFeed])

        # Send notification
        notification = MeetingInvitationNotification(
            instance.user, meeting_invitation=instance
        )
        notification.notify()

    def handle_update(self, instance, **kwargs):
        activity = self.get_activity(instance)
        self.manager.add_activity(activity, [instance.user.pk], [NotificationFeed])

    def handle_delete(self, instance, **kwargs):
        activity = self.get_activity(instance)
        self.manager.remove_activity(activity, [instance.user.pk], [NotificationFeed])


register_handler(MeetingInvitationHandler)
Example #4
0
            verb=CompanyInterestVerb,
            object=instance,
            time=instance.created_at,
            extra_context={},
        )

        recipients = [
            member.user for member in AbakusGroup.objects.get(
                name="Bedkom").memberships.all()
        ]

        self.manager.add_activity(activity,
                                  [recipient.pk for recipient in recipients],
                                  [NotificationFeed])

        for recipient in recipients:
            notification = CompanyInterestNotification(
                recipient, company_interest=instance)
            notification.notify()

        send_email.delay(
            to_email=f"bedriftskontakt@{settings.GSUITE_DOMAIN}",
            context=instance.generate_mail_context(),
            subject="En ny bedrift har meldt sin interesse",
            plain_template="companies/email/company_interest.txt",
            html_template="companies/email/company_interest.html",
        )


register_handler(CompanyInterestHandler)
Example #5
0
                author=author)
            reply_notification.notify()

    def handle_delete(self, instance, **kwargs):
        if not (isinstance(instance.parent, ObjectPermissionsModel)
                and not instance.parent.require_auth):
            return

        activity = self.get_activity(instance)
        for feeds, recipients in self.get_feeds_and_recipients(instance):
            self.manager.remove_activity(
                activity, [recipient.pk for recipient in recipients], feeds)

    def get_feeds_and_recipients(self, comment):
        result = []
        if hasattr(comment.content_object, 'followers'):
            author = comment.created_by
            followers = comment.content_object.followers.all().select_related(
                'follower')
            result.append(([PersonalFeed, NotificationFeed], [
                follow.follower for follow in followers
                if not follow.follower == author
            ]))

        if comment.created_by:
            result.append(([UserFeed], [comment.created_by]))
        return result


register_handler(CommentHandler)
Example #6
0
        followers = instance.user.followers\
            .exclude(follower_id=instance.user_id)\
            .values_list('follower_id', flat=True)

        self.manager.add_activity(activity, followers, [PersonalFeed])

    def get_activity(self, membership):
        return Activity(verb=GroupJoinVerb,
                        actor=membership.user,
                        target=membership.abakus_group,
                        object=membership,
                        time=membership.created_at,
                        extra_context={})


register_handler(MembershipHandler)


class PenaltyHandler(Handler):
    model = Penalty
    manager = feed_manager

    def get_activity(self, penalty):
        return Activity(actor=penalty.source_event,
                        verb=PenaltyVerb,
                        object=penalty,
                        target=penalty.user,
                        time=penalty.created_at,
                        extra_context={
                            'reason': penalty.reason,
                            'weight': penalty.weight,
Example #7
0
from lego.apps.notifications.notifications import AnnouncementNotification


class AnnouncementHandler(Handler):

    model = Announcement
    manager = feed_manager

    def handle_send(self, announcement):
        if not announcement.created_by:
            return

        activity = Activity(actor=announcement.created_by,
                            verb=AnnouncementVerb,
                            object=announcement,
                            time=announcement.created_at,
                            extra_context={})
        recipients = announcement.lookup_recipients()
        self.manager.add_activity(activity,
                                  [recipient.pk for recipient in recipients],
                                  [NotificationFeed, PersonalFeed])

        # Send notifications
        for recipient in recipients:
            notification = AnnouncementNotification(recipient,
                                                    announcement=announcement)
            notification.notify()


register_handler(AnnouncementHandler)