Example #1
0
    def test_meeting_invitation_activity(self):
        meeting = Meeting.objects.get(id=1)
        meeting2 = Meeting.objects.get(id=2)
        user = User.objects.get(id=1)
        meeting_invitation, _ = meeting.invite_user(user)
        meeting_invitation2, _ = meeting2.invite_user(user)

        # Add first activity
        activity = Activity(actor=user,
                            verb=MeetingInvitationVerb,
                            object=meeting_invitation,
                            target=meeting_invitation.user,
                            time=meeting_invitation.created_at)
        self.manager.add_activity(activity, [user.id], [NotificationFeed])
        self.assertEqual(1, NotificationFeed.objects.count())

        # Add second activity in the same group
        activity1 = Activity(actor=user,
                             verb=MeetingInvitationVerb,
                             object=meeting_invitation2,
                             target=meeting_invitation.user,
                             time=meeting_invitation.created_at)
        self.manager.add_activity(activity1, [user.id], [NotificationFeed])
        self.assertEqual(1, NotificationFeed.objects.count())

        # Remove fist activity
        self.manager.remove_activity(activity, [], [NotificationFeed])
        self.assertEqual(1, NotificationFeed.objects.count())

        # Remove the second activity and mage sure the aggregated activity is removed
        self.manager.remove_activity(activity1, [], [NotificationFeed])
        self.assertEqual(0, NotificationFeed.objects.count())
Example #2
0
    def handle_create(self, instance, **kwargs):

        activity = Activity(
            actor=instance,
            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",
        )
Example #3
0
 def get_activity(self, comment, reply=False):
     return Activity(actor=comment.created_by,
                     verb=CommentReplyVerb if reply else CommentVerb,
                     object=comment,
                     target=comment.content_object,
                     time=comment.created_at,
                     extra_context={'content': comment.text})
Example #4
0
 def get_activity(self, membership):
     return Activity(verb=GroupJoinVerb,
                     actor=membership.user,
                     target=membership.abakus_group,
                     object=membership,
                     time=membership.created_at,
                     extra_context={})
Example #5
0
 def get_activity(self, registration):
     return Activity(verb=EventRegisterVerb,
                     actor=registration.user,
                     target=registration.event,
                     object=registration,
                     time=registration.created_at,
                     extra_context={})
Example #6
0
 def get_activity(self, event):
     return Activity(
         actor=event.company,
         verb=EventCreateVerb,
         object=event,
         time=event.created_at,
         extra_context={"title": event.title},
     )
Example #7
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,
     )
Example #8
0
 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 #9
0
    def handle_bump(self, registration):
        activity = Activity(actor=registration.event,
                            verb=RegistrationBumpVerb,
                            object=registration,
                            target=registration.user)
        self.manager.add_activity(activity, [registration.user_id],
                                  [NotificationFeed])

        # Send Notification
        notification = EventBumpNotification(registration.user,
                                             event=registration.event)
        notification.notify()
Example #10
0
    def handle_admin_registration(self, registration):
        activity = Activity(actor=registration.event,
                            verb=AdminRegistrationVerb,
                            object=registration,
                            target=registration.user)
        self.manager.add_activity(activity, [registration.user_id],
                                  [NotificationFeed])

        # Send Notification
        notification = EventAdminRegistrationNotification(
            registration.user,
            event=registration.event,
            reason=registration.admin_registration_reason)
        notification.notify()
Example #11
0
def fanout(operation, activity, recipients, feed):
    """
    Fanout is called in celery task and is responsible for distributing the actions into the
    destination feeds.
    """
    activity = Activity.deserialize(activity)
    feed = apps.get_model("feeds", feed)

    if operation == ADD:
        return add_to_feed(activity, feed, recipients)

    elif operation == REMOVE:
        return remove_from_feed(activity, feed, recipients)

    raise ValueError("Invalid feed operation")
Example #12
0
    def handle_sent(self, instance):
        """
        A restricted mail is successfully processed by the system.
        """
        if not instance.created_by:
            return

        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()
Example #13
0
    def handle_payment_overdue(self, registration):
        """
        Notify about payment overdue, called from a celery task run by beat.
        """
        activity = Activity(
            actor=registration.event,
            verb=PaymentOverdueVerb,
            object=registration,
            target=registration.user,
        )
        self.manager.add_activity(activity, [registration.user_id],
                                  [NotificationFeed])

        # Send notification
        notification = EventPaymentOverdueNotification(
            registration.user, event=registration.event)
        notification.notify()
Example #14
0
    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()
Example #15
0
 def activities(self):
     return [
         Activity.deserialize(activity) for activity in self.activity_store
     ]