Beispiel #1
0
 def _tx(list_key, user_key):
     # TODO : cambiar a contador con sharding
     from models_indexes import ListFollowersIndex
     if ListFollowersIndex.all().ancestor(list_key).filter('keys =', user_key).get() is not None:
         return False  # el usuario ya sigue la lista
     # indice con personas que siguen la sugerencia
     index = ListFollowersIndex.all().ancestor(list_key).filter('count <', 80).get()
     if index is None:
         index = ListFollowersIndex(parent=list_key)
     index.keys.append(user_key)
     index.count += 1
     index.put()
     return True
Beispiel #2
0
    def insert_list(cls, user, id=None, name=None, description = None, instances=[], instances_del=[], tags = None, vis='public'):
        """
        Crea una nueva lista, en el caso de que exista una con ese nombre,
        se añaden las alertas

            :param user: usuario
            :type user: :class:`geouser.models.User`
            :param name: nombre de la lista
            :type name: :class:`string`
            :param description: descripcion de la lista
            :type description: :class:`string`
            :param instances: objetos a añadir a la lista
            :type instances: :class:`geoalert.models.Alert`
            :param vis: Visibilidad de la lista
            :type vis: :class:`string`
        """
        list = None
        if id is not None:
            list = cls.objects.get_by_id_user(id, user)
            if list is None:
                list = user.listsuggestion_set.filter('name =', name).get()
            if list is not None:  # la lista con ese nombre ya existe, la editamos
                list.update(name=name, 
                            description=description,
                            instances=instances, 
                            instances_del=instances_del,
                            tags=tags, 
                            vis=vis
                            )
                return list
            return False
        keys= set([db.Key.from_path('Event', int(instance)) for instance in instances])
        list = ListSuggestion(name=name, 
                              user=user, 
                              description=description, 
                              keys=[k for k in keys], 
                              _vis=vis if vis is not None else 'public'
                              )
        if tags is not None:
            list._tags_setter(tags, commit=False)
        list.put()
        followers = ListFollowersIndex(parent=list.key(), keys=[list.user.key()])
        followers.put()
        return list