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
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
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
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()
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()
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()
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)
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
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)
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()
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()
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()
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)
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)
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
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()
def deleted_place(sender, **kwargs): timeline = UserTimelineSystem(parent=sender.user, user=sender.user, instance=sender, msg_id=452) timeline.put()
def modified_privateplace(sender, **kwargs): timeline = UserTimelineSystem(parent=sender.user, user=sender.user, instance=sender, msg_id=401) timeline.put()
def modified_privateplace(sender, **kwargs): timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=401) timeline.put()
def deleted_place(sender, **kwargs): timeline = UserTimelineSystem(parent = sender.user, user = sender.user, instance = sender, msg_id=452) timeline.put()