コード例 #1
0
ファイル: funcs.py プロジェクト: GeoRemindMe/GeoRemindMe_Web
def add_timeline_to_follower(user_key, follower_key, limit=10):
    from models_acc import UserTimeline, UserTimelineFollowersIndex
    from google.appengine.ext import db
    timeline = UserTimeline.all(keys_only=True).filter('user ='******'_vis =', 'public').order('-modified').fetch(limit)
    indexes_to_save = []
    for t in timeline:
        if UserTimelineFollowersIndex.all(keys_only=True).ancestor(t).filter('followers =', follower_key).get() is not None:
            continue # ya esta el usuario como seguidor del timeline
        index = UserTimelineFollowersIndex.all().ancestor(t).order('-created').get()
        if index is None:  # no existen indices o hemos alcanzado el maximo
            index = UserTimelineFollowersIndex(parent=t)
        index.followers.append(follower_key)
        indexes_to_save.append(index)
    db.put(indexes_to_save)
    return True
コード例 #2
0
def add_timeline_to_follower(user_key, follower_key, limit=10):
    from models_acc import UserTimeline, UserTimelineFollowersIndex
    from google.appengine.ext import db
    timeline = UserTimeline.all(keys_only=True).filter(
        'user ='******'_vis =',
                                   'public').order('-modified').fetch(limit)
    indexes_to_save = []
    for t in timeline:
        if UserTimelineFollowersIndex.all(keys_only=True).ancestor(t).filter(
                'followers =', follower_key).get() is not None:
            continue  # ya esta el usuario como seguidor del timeline
        index = UserTimelineFollowersIndex.all().ancestor(t).order(
            '-created').get()
        if index is None:  # no existen indices o hemos alcanzado el maximo
            index = UserTimelineFollowersIndex(parent=t)
        index.followers.append(follower_key)
        indexes_to_save.append(index)
    db.put(indexes_to_save)
    return True
コード例 #3
0
    def get_by_id(self, userid, query_id=None, querier=None):
        '''
        Obtiene la lista de ultimos timeline del usuario

            :param userid: id del usuario (user.id)
            :type userid: :class:`string`
            :param page: numero de pagina a mostrar
            :type param: int
            :param query_id: identificador de busqueda
            :type query_id: int
            :returns: lista de tuplas de la forma [query_id, [(id, username, avatar)]]
        '''
        try:
            userid = long(userid)
        except:
            return None
        from geovote.models import Vote, Comment
        from geoalert.models import Suggestion
        from geolist.models import List
        from models_acc import UserTimeline, UserTimelineSuggest
        query = UserTimeline.all().filter(
            'user ='******'-created')
        if query_id is not None:  # recuperamos los cursores anteriores
            query = query.with_cursor(start_cursor=query_id)
        timelines = query.fetch(10)
        query_id = query.cursor()
        from georemindme.funcs import prefetch_refprops
        timelines = prefetch_refprops(timelines, UserTimeline.user,
                                      UserTimeline.instance)
        instances = _load_ref_instances(timelines)
        if querier is None:
            return [
                query_id,
                [{
                    'id':
                    timeline.id,
                    'created':
                    timeline.created,
                    'modified':
                    timeline.modified,
                    'msg':
                    timeline.msg,
                    'username':
                    timeline.user.username,
                    'msg_id':
                    timeline.msg_id,
                    'instance':
                    instances.get(
                        UserTimeline.instance.get_value_for_datastore(
                            timeline), timeline.instance),
                    'list':
                    instances.get(
                        UserTimelineSuggest.list_id.get_value_for_datastore(
                            timeline), timeline.list_id) if isinstance(
                                timeline, UserTimelineSuggest) else None,
                    'has_voted':
                    Vote.objects.user_has_voted(
                        db.Key.from_path(User.kind(), userid),
                        timeline.instance.key())
                    if timeline.instance is not None else None,
                    'vote_counter':
                    Vote.objects.get_vote_counter(timeline.instance.key())
                    if timeline.instance is not None else None,
                    'comments':
                    Comment.objects.get_by_instance(timeline.instance),
                    'is_private':
                    False
                } for timeline in timelines]
            ]
        elif querier.is_authenticated() and querier.are_friends(
                db.Key.from_path(User.kind(), userid)):
            return [
                query_id,
                [{
                    'id':
                    timeline.id,
                    'created':
                    timeline.created,
                    'modified':
                    timeline.modified,
                    'msg':
                    timeline.msg,
                    'username':
                    timeline.user.username,
                    'msg_id':
                    timeline.msg_id,
                    'instance':
                    instances.get(
                        UserTimeline.instance.get_value_for_datastore(
                            timeline), timeline.instance),
                    'list':
                    instances.get(
                        UserTimelineSuggest.list_id.get_value_for_datastore(
                            timeline), timeline.list_id) if isinstance(
                                timeline, UserTimelineSuggest) else None,
                    'has_voted':
                    Vote.objects.user_has_voted(querier,
                                                timeline.instance.key())
                    if timeline.instance is not None else None,
                    'vote_counter':
                    Vote.objects.get_vote_counter(timeline.instance.key())
                    if timeline.instance is not None else None,
                    'comments':
                    Comment.objects.get_by_instance(timeline.instance,
                                                    querier=querier),
                    'user_follower':
                    timeline.instance.has_follower(querier)
                    if isinstance(timeline.instance, Suggestion)
                    and querier.is_authenticated() else None,
                    'is_private':
                    False,
                } for timeline in timelines
                 if timeline._is_shared() or timeline._is_public()]
            ]
        return [
            query_id,
            [{
                'id':
                timeline.id,
                'created':
                timeline.created,
                'modified':
                timeline.modified,
                'msg':
                timeline.msg,
                'username':
                timeline.user.username,
                'msg_id':
                timeline.msg_id,
                'instance':
                instances.get(
                    UserTimeline.instance.get_value_for_datastore(timeline),
                    timeline.instance),
                'list':
                instances.get(
                    UserTimelineSuggest.list_id.get_value_for_datastore(
                        timeline), timeline.list_id) if isinstance(
                            timeline, UserTimelineSuggest) else None,
                'has_voted':
                Vote.objects.user_has_voted(querier, timeline.instance.key())
                if timeline.instance is not None
                and querier.is_authenticated() else None,
                'vote_counter':
                Vote.objects.get_vote_counter(timeline.instance.key())
                if timeline.instance is not None else None,
                'comments':
                Comment.objects.get_by_instance(timeline.instance,
                                                querier=querier),
                'user_follower':
                timeline.instance.has_follower(querier)
                if isinstance(timeline.instance, Suggestion)
                and querier.is_authenticated() else None,
                'is_private':
                False,
            } for timeline in timelines if timeline._is_public()]
        ]
コード例 #4
0
    def get_by_id(self, userid, query_id = None, querier=None):
        '''
        Obtiene la lista de ultimos timeline del usuario

            :param userid: id del usuario (user.id)
            :type userid: :class:`string`
            :param page: numero de pagina a mostrar
            :type param: int
            :param query_id: identificador de busqueda
            :type query_id: int
            :returns: lista de tuplas de la forma [query_id, [(id, username, avatar)]]
        '''
        try:
            userid = long(userid)
        except:
            return None
        from geovote.models import Vote, Comment
        from geoalert.models import Suggestion
        from geolist.models import List
        from models_acc import UserTimeline, UserTimelineSuggest
        query = UserTimeline.all().filter('user ='******'-created')
        if query_id is not None:  # recuperamos los cursores anteriores
            query = query.with_cursor(start_cursor=query_id)
        timelines = query.fetch(10)
        query_id = query.cursor()
        from georemindme.funcs import prefetch_refprops
        timelines = prefetch_refprops(timelines, UserTimeline.user, UserTimeline.instance)
        instances = _load_ref_instances(timelines)
        if querier is None:
                return [query_id, [{'id': timeline.id, 'created': timeline.created, 
                        'modified': timeline.modified,
                        'msg': timeline.msg, 'username':timeline.user.username, 
                        'msg_id': timeline.msg_id,
                        'instance': instances.get(UserTimeline.instance.get_value_for_datastore(timeline), timeline.instance),
                        'list': instances.get(UserTimelineSuggest.list_id.get_value_for_datastore(timeline), timeline.list_id) 
                                    if isinstance(timeline, UserTimelineSuggest) else None,
                        'has_voted':  Vote.objects.user_has_voted(db.Key.from_path(User.kind(), userid), timeline.instance.key()) if timeline.instance is not None else None,
                        'vote_counter': Vote.objects.get_vote_counter(timeline.instance.key()) if timeline.instance is not None else None,
                        'comments': Comment.objects.get_by_instance(timeline.instance),
                        'is_private': False
                        } 
                       for timeline in timelines]]
        elif querier.is_authenticated() and querier.are_friends(db.Key.from_path(User.kind(), userid)):
            return [query_id, [{'id': timeline.id, 'created': timeline.created, 
                        'modified': timeline.modified,
                        'msg': timeline.msg, 'username':timeline.user.username, 
                        'msg_id': timeline.msg_id,
                        'instance': instances.get(UserTimeline.instance.get_value_for_datastore(timeline), timeline.instance),
                        'list': instances.get(UserTimelineSuggest.list_id.get_value_for_datastore(timeline), timeline.list_id) 
                                    if isinstance(timeline, UserTimelineSuggest) else None,
                        'has_voted':  Vote.objects.user_has_voted(querier, timeline.instance.key()) if timeline.instance is not None else None,
                        'vote_counter': Vote.objects.get_vote_counter(timeline.instance.key()) if timeline.instance is not None else None,
                        'comments': Comment.objects.get_by_instance(timeline.instance, querier=querier),
                        'user_follower': timeline.instance.has_follower(querier) if isinstance(timeline.instance, Suggestion) and querier.is_authenticated() else None,
                        'is_private': False,
                        }
                        for timeline in timelines if timeline._is_shared() or timeline._is_public()]]
        return [query_id, [{'id': timeline.id, 'created': timeline.created, 
                        'modified': timeline.modified,
                        'msg': timeline.msg, 'username':timeline.user.username, 
                        'msg_id': timeline.msg_id,
                        'instance': instances.get(UserTimeline.instance.get_value_for_datastore(timeline), timeline.instance),
                        'list': instances.get(UserTimelineSuggest.list_id.get_value_for_datastore(timeline), timeline.list_id) 
                                    if isinstance(timeline, UserTimelineSuggest) else None,
                        'has_voted':  Vote.objects.user_has_voted(querier, timeline.instance.key()) if timeline.instance is not None and querier.is_authenticated()else None,
                        'vote_counter': Vote.objects.get_vote_counter(timeline.instance.key()) if timeline.instance is not None else None,
                        'comments': Comment.objects.get_by_instance(timeline.instance, querier=querier),
                        'user_follower': timeline.instance.has_follower(querier) if isinstance(timeline.instance, Suggestion) and querier.is_authenticated() else None,
                        'is_private': False,
                        }
                       for timeline in timelines if timeline._is_public()]]