示例#1
0
 def update_or_insert(cls, id = None, suggestion = None,
                      user = None, done = False, active = True):
     if not isinstance(user, User):
         raise TypeError()
     if suggestion is None:
         raise TypeError()
     if id is not None:  # como se ha pasado un id, queremos modificar una alerta existente
         alert = cls.objects.get_by_id_user(id, user)
         if alert is None:
             return None
         if alert.is_active() != active:
             alert.toggle_active()
         if alert.is_done() != done:
             alert.toggle_done()
         alert.put()
         return alert
     else:
         alert = AlertSuggestion(suggestion = suggestion, user = user)
         if done:
             alert.toggle_done()
         if not active:
             alert.toggle_active()
         alert.put()
         timeline = UserTimelineSystem(user = user, instance = alert, msg_id=200)
         timeline.put()
         return alert
示例#2
0
 def insert_list(cls, user, name, description=None, instances=None):
     '''
     Crea una nueva lista de usuarios, en el caso de que exista una con ese nombre,
     se añaden los usuarios
     
         :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:`geouser.models.User`
     '''
     list = user.listuser_set.filter('name =', name)
     if list is not None:
         if  description is not None:
             list.description = description
         keys = set(list.keys)
         keys |= set([instance.key() for instance in instances])
         list.keys = [k for k in keys]
     list = ListUser(name=name, user=user, description=description, keys=[k for k in keys])
     list.put()
     timeline = UserTimelineSystem(user=user.key(), msg_id=150, instance=list)
     timeline.put()
     return list
示例#3
0
 def insert_list(cls, user, name, description = None, instances=[]):
     '''
     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`
     '''
     list = user.listalert_set.filter('name =', name).get()
     if list is not None:  # la lista con ese nombre ya existe, la editamos
         if description is not None:
             list.description = description
         keys = set(list.keys)
         keys |= set([instance.key() for instance in instances])
         list.keys = [k for k in keys]
         list.put()
         return list
     # TODO: debe haber una forma mejor de quitar repetidos, estamos atados a python2.5 :(, los Sets
     keys= set([instance.key() for instance in instances])
     list = ListAlert(name=name, user=user, description=description, keys=[k for k in keys])
     list.put()
     timeline = UserTimelineSystem(user=user.key(), msg_id=250, instance=list)
     timeline.put()
     return list
示例#4
0
def done_alert(sender, **kwargs):
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=203)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=323, visible=False)
    else:
        return
    timeline.put()
示例#5
0
def modified_list(sender, **kwargs):
    if isinstance(sender, ListRequested):
        timeline = UserTimelineSystem(parent=kwargs['querier'], user=kwargs['querier'], msg=351, _vis=sender._get_visibility())
        from georemindme.tasks import NotificationHandler
        NotificationHandler().list_followers_notify(sender)
        timeline.put()
        if sender.user is not None:
            if kwargs['querier'].key() != sender.user.key():
                from geouser.models_utils import _Notification
                notification = _Notification(parent=sender.user, owner=sender.user, timeline=timeline)
                notification.put()
示例#6
0
def modified_alert(sender, **kwargs):
    '''
    Se modifica una alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user, user = sender.user, instance = sender, msg_id=201)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user, user = sender.user, instance = sender, msg_id=321, visible=False)
    else:
        return
    timeline.put()
示例#7
0
def deleted_alert(sender, **kwargs):
    '''
    Se borra una alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=202)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=322, visible=False)
    else:
        return
    timeline.put()
    sender.user.counters.set_alerts(value=-1)
示例#8
0
 def notify_followers(self):
     '''
     Crea un timelineSystem por cada usuario que sigue
     a esta lista
     '''
     if not self._is_private():
         if ListFollowersIndex.all().ancestor(self.key()).count() == 0:
             return True
         for list in ListFollowersIndex.all().ancestor(self.key()):
             for key in list.users:
                 timeline = UserTimelineSystem(user=key, msg_id=352, instance=self)
                 timeline.put()
         return True
示例#9
0
def new_alert(sender, **kwargs):
    '''
    Se registra una nueva alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user, user = sender.user, instance = sender, msg_id=200)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user, user = sender.user, instance = sender, msg_id=320, visible=False)
    else:
        return
    timeline.put()
    sender.user.counters.set_alerts(value=+1)
示例#10
0
def modified_list(sender, **kwargs):
    if isinstance(sender, ListRequested):
        timeline = UserTimelineSystem(parent=kwargs['querier'],
                                      user=kwargs['querier'],
                                      msg=351,
                                      _vis=sender._get_visibility())
        from georemindme.tasks import NotificationHandler
        NotificationHandler().list_followers_notify(sender)
        timeline.put()
        if sender.user is not None:
            if kwargs['querier'].key() != sender.user.key():
                from geouser.models_utils import _Notification
                notification = _Notification(parent=sender.user,
                                             owner=sender.user,
                                             timeline=timeline)
                notification.put()
示例#11
0
def done_alert(sender, **kwargs):
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=203)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=323,
                                      visible=False)
    else:
        return
    timeline.put()
示例#12
0
def new_list(sender, **kwargs):
    if isinstance(sender, ListAlert):
        timeline = UserTimelineSystem(parent=sender.user.key(), user=sender.user.key(), msg_id=250, instance=sender)
    elif isinstance(sender, ListUser):
        timeline = UserTimelineSystem(parent=sender.user.key(), user=sender.user.key(), msg_id=150, instance=sender)
    elif isinstance(sender, ListSuggestion):
        timelinePublic = UserTimeline(parent=sender.user, user = sender.user, instance = sender, msg_id=350, _vis=sender._get_visibility())
        timelinePublic.put()
        timeline = UserTimelineSystem(parent=sender.user, user=sender.user.key(), msg_id=350, instance=sender)
    elif isinstance(sender, ListRequested):
        timelinePublic = UserTimeline(parent=sender.user, user = sender.user, instance = sender, msg_id=360, _vis=sender._get_visibility())
        timelinePublic.put()
        timeline = UserTimelineSystem(parent=sender.user, user=sender.user.key(), msg_id=360, instance=sender)
    else:
        return
    timeline.put()
示例#13
0
def modified_alert(sender, **kwargs):
    '''
    Se modifica una alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=201)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=321,
                                      visible=False)
    else:
        return
    timeline.put()
示例#14
0
def deleted_alert(sender, **kwargs):
    '''
    Se borra una alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=202)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=322,
                                      visible=False)
    else:
        return
    timeline.put()
    sender.user.counters.set_alerts(value=-1)
示例#15
0
def new_alert(sender, **kwargs):
    '''
    Se registra una nueva alerta
    '''
    from models import Alert, AlertSuggestion
    if isinstance(sender, Alert):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=200)
    elif isinstance(sender, AlertSuggestion):
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=320,
                                      visible=False)
    else:
        return
    timeline.put()
    sender.user.counters.set_alerts(value=+1)
示例#16
0
 def update_or_insert(cls, id = None, name = None, description = None,
                      date_starts = None, date_ends = None, poi = None,
                      user = None, done = False, active = True):
     '''
         Crea una alerta nueva, si recibe un id, la busca y actualiza.
         
         :returns: :class:`geoalert.models.Alert`
         :raises: :class:`geoalert.exceptions.ForbiddenAccess`, :class:`TypeError`
     '''
     if not isinstance(user, User):
         raise TypeError()
     if poi is None:
         raise TypeError()
     if id is not None:  # como se ha pasado un id, queremos modificar una alerta existente
         alert = cls.objects.get_by_id_user(id, user)
         if alert is None:
             return None
         alert.name = name
         alert.description = description
         alert.date_starts = date_starts
         alert.date_ends = date_ends
         alert.poi = poi
         if alert.is_active() != active:
             alert.toggle_active()
         if alert.is_done() != done:
             alert.toggle_done()
         alert.put()
         return alert
     else:
         alert = Alert(name = name, description = description, date_starts = date_starts,
                       date_ends = date_ends, poi = poi, user = user)
         if done:
             alert.toggle_done()
         if not active:
             alert.toggle_active()
         alert.put()
         timeline = UserTimelineSystem(user = user, instance = alert, msg_id=200)
         timeline.put()
         return alert
示例#17
0
def new_list(sender, **kwargs):
    if isinstance(sender, ListAlert):
        timeline = UserTimelineSystem(parent=sender.user.key(),
                                      user=sender.user.key(),
                                      msg_id=250,
                                      instance=sender)
    elif isinstance(sender, ListUser):
        timeline = UserTimelineSystem(parent=sender.user.key(),
                                      user=sender.user.key(),
                                      msg_id=150,
                                      instance=sender)
    elif isinstance(sender, ListSuggestion):
        timelinePublic = UserTimeline(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=350,
                                      _vis=sender._get_visibility())
        timelinePublic.put()
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user.key(),
                                      msg_id=350,
                                      instance=sender)
    elif isinstance(sender, ListRequested):
        timelinePublic = UserTimeline(parent=sender.user,
                                      user=sender.user,
                                      instance=sender,
                                      msg_id=360,
                                      _vis=sender._get_visibility())
        timelinePublic.put()
        timeline = UserTimelineSystem(parent=sender.user,
                                      user=sender.user.key(),
                                      msg_id=360,
                                      instance=sender)
    else:
        return
    timeline.put()
示例#18
0
def deleted_place(sender, **kwargs):
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=452)
    timeline.put()
示例#19
0
def modified_privateplace(sender, **kwargs):
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=401)
    timeline.put()
示例#20
0
def modified_privateplace(sender, **kwargs):    
    timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=401)
    timeline.put()
示例#21
0
def deleted_place(sender, **kwargs):
    timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=452)
    timeline.put()