forked from gergely/calendar-social
		
	[Refactor] Move notification creation to the Profile model
This commit is contained in:
		@@ -326,14 +326,37 @@ class Profile(db.Model):  # pylint: disable=too-few-public-methods
 | 
			
		||||
 | 
			
		||||
        user_follow = UserFollow(follower=follower, followed=self, accepted_at=datetime.utcnow())
 | 
			
		||||
        db.session.add(user_follow)
 | 
			
		||||
        notification = Notification(profile=self,
 | 
			
		||||
                                    actor=follower,
 | 
			
		||||
                                    item=self,
 | 
			
		||||
                                    action=NotificationAction.follow)
 | 
			
		||||
        notification = self.notify(follower, self, NotificationAction.follow)
 | 
			
		||||
 | 
			
		||||
        db.session.add(notification)
 | 
			
		||||
 | 
			
		||||
        return user_follow
 | 
			
		||||
 | 
			
		||||
    def notify(self, actor, item, action):
 | 
			
		||||
        """Notify this profile about ``action`` on ``item`` by ``actor``
 | 
			
		||||
 | 
			
		||||
        :param actor: the actor who generated the notification
 | 
			
		||||
        :type actor: Profile
 | 
			
		||||
        :param item: the item ``action`` was performed on
 | 
			
		||||
        :type item: any
 | 
			
		||||
        :param action: the type of the action
 | 
			
		||||
        :type action: NotificationAction, str
 | 
			
		||||
        :raises TypeError: if ``actor`` is not a `Profile` object
 | 
			
		||||
        :returns: the generated notification.  It is already added to the database session, but
 | 
			
		||||
            not committed
 | 
			
		||||
        :rtype: Notification
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        if not isinstance(actor, Profile):
 | 
			
		||||
            raise TypeError('actor must be a Profile instance')
 | 
			
		||||
 | 
			
		||||
        if isinstance(action, str):
 | 
			
		||||
            action = NotificationAction[action]
 | 
			
		||||
 | 
			
		||||
        notification = Notification(profile=self, actor=actor, item=item, action=action)
 | 
			
		||||
 | 
			
		||||
        return notification
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Event(db.Model):
 | 
			
		||||
    """Database model for events
 | 
			
		||||
@@ -426,10 +449,7 @@ class Event(db.Model):
 | 
			
		||||
        invite = Invitation(event=self, sender=inviter, invitee=invited)
 | 
			
		||||
        db.session.add(invite)
 | 
			
		||||
 | 
			
		||||
        notification = Notification(profile=invited,
 | 
			
		||||
                                    actor=inviter,
 | 
			
		||||
                                    item=self,
 | 
			
		||||
                                    action=NotificationAction.invite)
 | 
			
		||||
        notification = invited.notify(inviter, self, NotificationAction.invite)
 | 
			
		||||
        db.session.add(notification)
 | 
			
		||||
 | 
			
		||||
        return invite
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user