def get_mentions( self, mentioned_by=None, mentioned_whom=None, mentioned_at=None, mentioned_in=None, reported=None, mentioned_at__lt=None, ): """extract mention-type activity objects todo: implement better rich field lookups """ kwargs = dict() kwargs['activity_type'] = const.TYPE_ACTIVITY_MENTION if mentioned_at: #todo: handle cases with rich lookups here like __lt, __gt and others kwargs['active_at'] = mentioned_at elif mentioned_at__lt: kwargs['active_at__lt'] = mentioned_at__lt if mentioned_by: kwargs['user'] = mentioned_by if mentioned_whom: if functions.is_iterable(mentioned_whom): kwargs['recipients__in'] = mentioned_whom else: kwargs['recipients__in'] = (mentioned_whom, ) if mentioned_in: if functions.is_iterable(mentioned_in): it = iter(mentioned_in) raise NotImplementedError( 'mentioned_in only works for single items') else: post_content_type = ContentType.objects.get_for_model( mentioned_in) kwargs['content_type'] = post_content_type kwargs['object_id'] = mentioned_in.id if reported == True: kwargs['is_auditted'] = True else: kwargs['is_auditted'] = False return self.filter(**kwargs)
def get_mentions( self, mentioned_by = None, mentioned_whom = None, mentioned_at = None, mentioned_in = None, reported = None, mentioned_at__lt = None, ): """extract mention-type activity objects todo: implement better rich field lookups """ kwargs = dict() kwargs['activity_type'] = const.TYPE_ACTIVITY_MENTION if mentioned_at: #todo: handle cases with rich lookups here like __lt, __gt and others kwargs['active_at'] = mentioned_at elif mentioned_at__lt: kwargs['active_at__lt'] = mentioned_at__lt if mentioned_by: kwargs['user'] = mentioned_by if mentioned_whom: if functions.is_iterable(mentioned_whom): kwargs['recipients__in'] = mentioned_whom else: kwargs['recipients__in'] = (mentioned_whom,) if mentioned_in: if functions.is_iterable(mentioned_in): it = iter(mentioned_in) raise NotImplementedError('mentioned_in only works for single items') else: post_content_type = ContentType.objects.get_for_model(mentioned_in) kwargs['content_type'] = post_content_type kwargs['object_id'] = mentioned_in.id if reported == True: kwargs['is_auditted'] = True else: kwargs['is_auditted'] = False return self.filter(**kwargs)
def create_new_mention(self, mentioned_by=None, mentioned_whom=None, mentioned_at=None, mentioned_in=None, reported=None): #todo: automate this using python inspect module kwargs = dict() kwargs['activity_type'] = const.TYPE_ACTIVITY_MENTION if mentioned_at: #todo: handle cases with rich lookups here like __lt kwargs['active_at'] = mentioned_at if mentioned_by: kwargs['user'] = mentioned_by if mentioned_in: if functions.is_iterable(mentioned_in): raise NotImplementedError( 'mentioned_in only works for single items') else: post_content_type = ContentType.objects.get_for_model( mentioned_in) kwargs['content_type'] = post_content_type kwargs['object_id'] = mentioned_in.id if reported == True: kwargs['is_auditted'] = True else: kwargs['is_auditted'] = False mention_activity = Activity(**kwargs) mention_activity.question = mentioned_in.get_origin_post() mention_activity.save() if mentioned_whom: assert (isinstance(mentioned_whom, User)) mention_activity.add_recipients([mentioned_whom]) mentioned_whom.increment_response_count() mentioned_whom.save() return mention_activity
def create_new_mention( self, mentioned_by = None, mentioned_whom = None, mentioned_at = None, mentioned_in = None, reported = None ): #todo: automate this using python inspect module kwargs = dict() kwargs['activity_type'] = const.TYPE_ACTIVITY_MENTION if mentioned_at: #todo: handle cases with rich lookups here like __lt kwargs['active_at'] = mentioned_at if mentioned_by: kwargs['user'] = mentioned_by if mentioned_in: if functions.is_iterable(mentioned_in): raise NotImplementedError('mentioned_in only works for single items') else: post_content_type = ContentType.objects.get_for_model(mentioned_in) kwargs['content_type'] = post_content_type kwargs['object_id'] = mentioned_in.id if reported == True: kwargs['is_auditted'] = True else: kwargs['is_auditted'] = False mention_activity = Activity(**kwargs) mention_activity.question = mentioned_in.get_origin_post() mention_activity.save() if mentioned_whom: assert(isinstance(mentioned_whom, User)) mention_activity.add_recipients([mentioned_whom]) mentioned_whom.increment_response_count() mentioned_whom.save() return mention_activity