Example #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
Example #2
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
Example #3
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
Example #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()
Example #5
0
def deleted_following_suggestion(sender, **kwargs):
    from models import AlertSuggestion
    timeline = UserTimelineSystem(parent = kwargs['user'], user = kwargs['user'], instance = sender, msg_id=304, visible=False)
    p = timeline.put_async()
    alertsuggestion = AlertSuggestion.objects.get_by_sugid_user(sender.id, kwargs['user'])
    if alertsuggestion is not None:
        alertsuggestion.delete()
    sender.counters.set_followers(-1)
    p.get_result()
Example #6
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()
Example #7
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()
Example #8
0
def new_following_suggestion(sender, **kwargs):
    timeline = UserTimelineSystem(parent = kwargs['user'], user = kwargs['user'], instance = sender, msg_id=303, visible=False)
    p = timeline.put_async()
    sender.counters.set_followers(+1)
    p.get_result()
    from google.appengine.ext.deferred import defer
    defer(sender.user.settings.notify_suggestion_follower, sender.key(), kwargs['user'].key())
    if sender.user is not None:
        if kwargs['user'].key() != sender.user.key():
            from geouser.models_utils import _Notification
            notification = _Notification(parent=sender.user, owner=sender.user, timeline=timeline)
            notification.put()
Example #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)
Example #10
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
Example #11
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)
Example #12
0
def deleted_following_suggestion(sender, **kwargs):
    from models import AlertSuggestion
    timeline = UserTimelineSystem(parent=kwargs['user'],
                                  user=kwargs['user'],
                                  instance=sender,
                                  msg_id=304,
                                  visible=False)
    p = timeline.put_async()
    alertsuggestion = AlertSuggestion.objects.get_by_sugid_user(
        sender.id, kwargs['user'])
    if alertsuggestion is not None:
        alertsuggestion.delete()
    sender.counters.set_followers(-1)
    p.get_result()
Example #13
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()
Example #14
0
def new_suggestion(sender, **kwargs):
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=300)
    timelinePublic = UserTimeline(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=300,
                                  _vis=sender._get_visibility())
    p = db.put_async([timeline])
    sender.user.counters.set_suggested()
    if sender._is_public():
        from google.appengine.ext.deferred import defer
        try:
            defer(sender.insert_ft, _queue="fusiontables")
        except:
            from georemindme.models_utils import _Do_later_ft
            later = _Do_later_ft(instance_key=sender.key())
            later.put()
        from libs.oauth2 import Token
        from geoauth.clients.twitter import TwitterClient
        try:
            tc = TwitterClient(token=Token(
                key=settings.OAUTH['twitter']['geosuggest_key'],
                secret=settings.OAUTH['twitter']['geosuggest_secret']))
            msg = "%(name)s %(url)s #grm" % {
                'name': sender.name[:105],
                'url': sender.short_url,
            }
            tc.send_tweet(msg, sender.poi.location)
        except Exception, e:
            logging.error('ERROR AUTOCOMPARTIENDO TWITTER sugerencia %s: %s' %
                          (sender.id, e.message))
Example #15
0
def deleted_following_list(sender, **kwargs):
    timeline = UserTimelineSystem(parent=kwargs['user'],
                                  user=kwargs['user'],
                                  instance=sender,
                                  msg_id=354,
                                  visible=False)
    put = db.put_async(timeline)
    sender.counters.set_followers(-1)
    put.get_result()
Example #16
0
def new_following_suggestion(sender, **kwargs):
    timeline = UserTimelineSystem(parent=kwargs['user'],
                                  user=kwargs['user'],
                                  instance=sender,
                                  msg_id=303,
                                  visible=False)
    p = timeline.put_async()
    sender.counters.set_followers(+1)
    p.get_result()
    from google.appengine.ext.deferred import defer
    defer(sender.user.settings.notify_suggestion_follower, sender.key(),
          kwargs['user'].key())
    if sender.user is not None:
        if kwargs['user'].key() != sender.user.key():
            from geouser.models_utils import _Notification
            notification = _Notification(parent=sender.user,
                                         owner=sender.user,
                                         timeline=timeline)
            notification.put()
Example #17
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
Example #18
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()
Example #19
0
def new_following_list(sender, **kwargs):
    timeline = UserTimelineSystem(parent=kwargs['user'],
                                  user=kwargs['user'],
                                  instance=sender,
                                  msg_id=353,
                                  visible=False)
    put = db.put_async(timeline)
    sender.counters.set_followers(+1)
    put.get_result()
    if sender.user is not None:
        if kwargs['user'].key() != sender.user.key():
            from geouser.models_utils import _Notification
            notification = _Notification(parent=sender.user,
                                         owner=sender.user,
                                         timeline=timeline)
            notification.put()
Example #20
0
 def put(self):
     if self.sender.key() == self.to.key():
         return
     if not self.is_saved():
         super(Invitation, self).put()
         from geouser.models_acc import UserTimelineSystem
         timeline = UserTimelineSystem(parent=self.sender, user=self.sender, msg_id=110, instance=self)
         from geouser.models_utils import _Notification
         notification = _Notification(parent=self.to, owner=self.to, timeline=timeline)
         put = db.put_async([timeline, notification])            
         if self.to.settings.notification_invitation:
             from geomail import send_notification_invitation
             send_notification_invitation(self.to.email, self.sender, self)
         put.get_result()
     else:
         super(Invitation, self).put()
Example #21
0
def new_comment(sender, **kwargs):
    from google.appengine.ext.deferred import defer
    from geoalert.models import Suggestion
    from geolist.models import ListSuggestion
    from geouser.models_acc import UserTimeline, UserTimelineSystem
    sender.instance.put(from_comment=True)
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=120,
                                  visible=False)
    from google.appengine.ext import db
    p = db.put_async([timeline])
    if hasattr(sender.instance, '_vis'):
        if isinstance(sender.instance, Suggestion):
            timelinePublic = UserTimeline(
                parent=sender.user,
                user=sender.user,
                instance=sender,
                msg_id=120,
                _vis=sender.instance._get_visibility())
            timelinePublic.put()
        if isinstance(sender.instance, ListSuggestion):
            timelinePublic = UserTimeline(
                parent=sender.user,
                user=sender.user,
                instance=sender,
                msg_id=121,
                _vis=sender.instance._get_visibility())
            timelinePublic.put()
    if isinstance(sender.instance, Suggestion) or isinstance(
            sender.instance, ListSuggestion):
        defer(sender.user.settings.notify_suggestion_comment, sender.key())
        sender.instance.counters.set_comments()
    p.get_result()
    if sender.instance.user is not None:
        if sender.user.key() != sender.instance.user.key():
            from geouser.models_utils import _Notification
            notification = _Notification(parent=sender.instance.user.key(),
                                         owner=sender.instance.user.key(),
                                         timeline=timeline)
            notification.put()
Example #22
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()
Example #23
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()
Example #24
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()
Example #25
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)
Example #26
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)
Example #27
0
def deleted_place(sender, **kwargs):
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=452)
    timeline.put()
Example #28
0
def modified_privateplace(sender, **kwargs):
    timeline = UserTimelineSystem(parent=sender.user,
                                  user=sender.user,
                                  instance=sender,
                                  msg_id=401)
    timeline.put()
Example #29
0
def modified_privateplace(sender, **kwargs):    
    timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=401)
    timeline.put()
Example #30
0
def deleted_place(sender, **kwargs):
    timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=452)
    timeline.put()