def end_date(obj): """ Converte a data da AgendaDiaria para DateTime e coloca o horario como 23:59:59 """ end_date = IAgendaDiaria(obj).date # Final do dia end_date = DateTime('{0} 23:59:59 {1}'.format( end_date.strftime('%Y-%m-%d'), TZ)) return end_date
def _start_date(obj): """ Converte a data da AgendaDiaria para DateTime e coloca o horario como 00:00:00 """ start_date = IAgendaDiaria(obj).date # Comeco do dia start_date = DateTime('{0} 00:00:00 {1}'.format( start_date.strftime('%Y-%m-%d'), TZ)) return start_date
def end_date(obj): """ Converte a data da AgendaDiaria para DateTime e coloca o horario como 23:59:59 """ end_date = IAgendaDiaria(obj).date # Final do dia end_date = DateTime( '{0} 23:59:59 {1}'.format( end_date.strftime('%Y-%m-%d'), TZ ) ) return end_date
def _start_date(obj): """ Converte a data da AgendaDiaria para DateTime e coloca o horario como 00:00:00 """ start_date = IAgendaDiaria(obj).date # Comeco do dia start_date = DateTime( '{0} 00:00:00 {1}'.format( start_date.strftime('%Y-%m-%d'), TZ ) ) return start_date
def move_compromisso_para_agendadiaria(event, obj=None): """ Toda vez que um tipo compromisso for criado ou tiver sua data alterada ele sera movido para dentro de uma agenda diaria """ if not obj: obj = event.object if not ICompromisso.providedBy(obj): # nao eh um compromisso return start_date = getattr(obj, 'start_date', None) if not start_date: return formatted_date = start_date.strftime(AGENDADIARIAFMT) origin = aq_parent(obj) agenda = _get_agenda(origin) old_id = obj.getId() destination_id = formatted_date destination = _get_destination(agenda, obj, origin, destination_id) if not IAgendaDiaria.providedBy(destination): logger.warn('Objeto %s nao foi movido' % str(obj)) # Reindexamos o SearchableText de origin origin.reindexObject(idxs=[ 'SearchableText', ]) return None new_id = _generate_id(destination, old_id) # Prepare to move object notify(ObjectWillBeMovedEvent(obj, origin, old_id, destination, new_id)) obj.manage_changeOwnershipType(explicit=1) # Remove object from origin origin._delObject(old_id, suppress_events=True) obj = aq_base(obj) # Set new_id -- which is unique on destination obj._setId(new_id) # Persist object in destination destination._setObject(new_id, obj, set_owner=0, suppress_events=True) obj = destination._getOb(new_id) notify(ObjectMovedEvent(obj, origin, old_id, destination, new_id)) notifyContainerModified(origin) notifyContainerModified(destination) obj._postCopy(destination, op=1) # try to make ownership implicit if possible obj.manage_changeOwnershipType(explicit=0) # Reindexamos o SearchableText de destination destination.reindexObject(idxs=[ 'SearchableText', ])
def EffectiveDate(obj): """Retorna a data de inicio do evento ao invés da data de publicação para objetos publicados. """ state = api.content.get_state(obj=obj) if state == 'published': return _start_date(obj).ISO() effective_date = IAgendaDiaria(obj).effective_date.ISO() return effective_date
def default_start_date(context): if IAgendaDiaria.providedBy(context): date = context.date default_date = datetime.datetime( *[int(i) for i in date.strftime('%Y-%m-%d').split('-')]) else: # Estamos no tipo agenda, a data padrao e o dia seguinte a criacao # do compromisso default_date = datetime.datetime.today() + datetime.timedelta(1) return default_date
def ordenacao_agenda(event, obj=None): """ Ordenacao por id dentro de uma agenda """ if not obj: obj = event.object if not IAgendaDiaria.providedBy(obj): # nao eh uma agenda return parent = aq_parent(obj) parent.orderObjects('id', reverse=False)
def default_start_date(context): if IAgendaDiaria.providedBy(context): date = context.date default_date = datetime.datetime( *[int(i) for i in date.strftime('%Y-%m-%d').split('-')] ) else: # Estamos no tipo agenda, a data padrao e o dia seguinte a criacao # do compromisso default_date = datetime.datetime.today() + datetime.timedelta(1) return default_date
def move_compromisso_para_agendadiaria(event, obj=None): """ Toda vez que um tipo compromisso for criado ou tiver sua data alterada ele sera movido para dentro de uma agenda diaria """ if not obj: obj = event.object if not ICompromisso.providedBy(obj): # nao eh um compromisso return start_date = getattr(obj, 'start_date', None) if not start_date: return formatted_date = start_date.strftime(AGENDADIARIAFMT) origin = aq_parent(obj) agenda = _get_agenda(origin) old_id = obj.getId() destination_id = formatted_date destination = _get_destination(agenda, obj, origin, destination_id) if not IAgendaDiaria.providedBy(destination): logger.warn('Objeto %s nao foi movido' % str(obj)) # Reindexamos o SearchableText de origin origin.reindexObject(idxs=['SearchableText', ]) return None new_id = _generate_id(destination, old_id) # Prepare to move object notify(ObjectWillBeMovedEvent(obj, origin, old_id, destination, new_id)) obj.manage_changeOwnershipType(explicit=1) # Remove object from origin origin._delObject(old_id, suppress_events=True) obj = aq_base(obj) # Set new_id -- which is unique on destination obj._setId(new_id) # Persist object in destination destination._setObject(new_id, obj, set_owner=0, suppress_events=True) obj = destination._getOb(new_id) notify(ObjectMovedEvent(obj, origin, old_id, destination, new_id)) notifyContainerModified(origin) notifyContainerModified(destination) obj._postCopy(destination, op=1) # try to make ownership implicit if possible obj.manage_changeOwnershipType(explicit=0) # Reindexamos o SearchableText de destination destination.reindexObject(idxs=['SearchableText', ])
def ordenacao_agenda(event, obj=None): """ Ordenacao por id dentro de uma agenda """ if not obj: obj = event.object if not IAgendaDiaria.providedBy(obj): # nao eh uma agenda return # Forcamos a data manualmente pois quando nao alterada # ele mantem o default_factory como valor padrao (o que muda todos os dias) date = [int(p) for p in obj.getId().split('-')] obj.date = datetime.date(*date) # Ordena objetos parent = aq_parent(obj) parent.orderObjects('id', reverse=False)
def exclude_from_nav_default_value(data): # AgendaDiaria e Compromisso nao devem aparecer na navegacao context = data.context exclude = IAgenda.providedBy(context) or IAgendaDiaria.providedBy(context) return exclude
def test_factory(self): fti = queryUtility(IDexterityFTI, name='AgendaDiaria') factory = fti.factory new_object = createObject(factory) self.assertTrue(IAgendaDiaria.providedBy(new_object))
def test_adding(self): self.assertTrue(IAgendaDiaria.providedBy(self.agendadiaria))