예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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',
    ])
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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)
예제 #9
0
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
예제 #10
0
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', ])
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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))
 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))