def connect(): flatpages = models.FlatPage.objects.all() for f in flatpages: roan.purge(f.url).on_save(models.FlatPage) palestras = pmodels.Palestra.objects.all() for p in palestras: roan.purge(p.get_absolute_url()).on_save(pmodels.Palestra) roan.purge(p.get_absolute_url()).on_delete(pmodels.Palestra) roan.purge(p.get_absolute_url()).on_save(pmodels.Palestrante) roan.purge(p.get_absolute_url()).on_delete(pmodels.Palestrante)
def test_when_the_model_is_saved_the_url_should_be_purged(self): purge_url = "http://localhost/purge/polls" p = roan.purge("/polls") p.requests = mocks.RequestsMock(200, purge_url) p.on_save(models.Poll) models.Poll.objects.create(title=u'Do you think Roan works well?') self.assertTrue(p.requests.done)
def test_should_be_able_to_purge_an_url_on_delete_a_model_instance(self): poll, created = models.Poll.objects.get_or_create(title=u'Do you think Roan should work?') purge_url = "http://localhost/purge/polls/%d" % poll.id p = roan.purge("/polls/%d" % poll.id) p.requests = mocks.RequestsMock(200, purge_url) p.on_delete(poll) poll.delete() self.assertTrue(p.requests.done)
def test_should_not_purge_on_saving_an_object_that_was_not_connected_to_the_url(self): poll, created = models.Poll.objects.get_or_create(title=u'Do you think Roan should work?') purge_url = "http://localhost/purge/polls/%d" % poll.id p = roan.purge("/polls/%d" % poll.id) p.requests = mocks.RequestsMock(200, purge_url) p.on_save(poll) models.Poll.objects.get_or_create(title=u'What is your favorite car?') self.assertFalse(p.requests.done)
class Meta: unique_together = ((u'email', u'status',),) class Checkout(models.Model): codigo = models.CharField(max_length=100) participante = models.ForeignKey(Participante) def __unicode__(self): return "%s (%s - %s)" % (self.codigo, self.participante.nome, self.participante.email) class Configuracao(models.Model): STATUS = ( (u"fechadas", u"Fechadas (inscrições ainda não abriram)"), (u"abertas", u"Inscrições abertas"), (u"encerradas", u"Inscrições encerradas"), ) valor_inscricao = models.FloatField(verbose_name=u"Valor da inscrição") status = models.CharField(max_length=10, choices=STATUS) def __unicode__(self): return u"Configuração das inscrições do Dev in Cachu 2012" class Meta: verbose_name = u"Configuração das inscrições" verbose_name_plural = verbose_name roan.purge("/inscricao/").on_save(Configuracao)
import roan from django.contrib.auth import models as auth_models from django.db import models class Destaque(models.Model): titulo = models.CharField(max_length=60) conteudo = models.CharField(max_length=500) autor = models.ForeignKey(auth_models.User) data = models.DateTimeField(auto_now=False, auto_now_add=True) def __repr__(self): return "<Destaque: %s>" % self.titulo def __unicode__(self): return self.titulo class Chamada(Destaque): titulo_veja_mais = models.CharField(max_length=40) url_link = models.CharField(max_length=255) def __repr__(self): return "<Chamada: %s>" % self.titulo roan.purge("/").on_save(Destaque) roan.purge("/").on_delete(Destaque) roan.purge("/").on_save(Chamada) roan.purge("/").on_delete(Chamada)
def test_purge_should_to_delete_sginal_without_a_weak_reference(self): uid = "purge_/_post_delete_%s" % models.Poll._meta.verbose_name roan.purge("/").on_delete(models.Poll) f = [r[1] for r in signals.post_delete.receivers if r[0][0] == uid][0] self.assertNotIsInstance(f, weakref.ref)
def test_purge_should_connect_to_delete_signal_of_a_model_with_unique_dispatch_uid(self): roan.purge("/").on_delete(models.Poll) expected_uid = "purge_/_post_delete_%s" % models.Poll._meta.verbose_name uuids = [r[0][0] for r in signals.post_delete.receivers] self.assertIn(expected_uid, uuids)
def test_purge_should_receive_and_store_url(self): p = roan.purge("/") self.assertEquals("/", p.url)
def test_should_use_default_purge_url_when_ROAN_PURGE_URL_is_not_present(self): p = roan.purge("/") self.assertEquals("http://localhost/purge", p.purge_url)
def test_should_remove_the_leading_slash_in_the_ROAN_PURGE_URL_if_its_present(self): settings.ROAN_PURGE_URL = "http://google.com.br/purge/" p = roan.purge("/") self.assertEquals("http://google.com.br/purge", p.purge_url)
def test_should_store_the_ROAN_PURGE_URL_setting_in_the_object(self): settings.ROAN_PURGE_URL = "http://google.com.br/purge" p = roan.purge("/") self.assertEquals("http://google.com.br/purge", p.purge_url)
def test_should_store_the_requests_module_in_the_local_object(self): p = roan.purge("/") self.assertEquals(requests, p.requests)
nomes = [p.nome for p in palestrantes] nomes = ", ".join(nomes) if "," in nomes: indice = nomes.rfind(",") nomes = "%s e %s" % (nomes[:indice], nomes[indice + 2:]) return nomes def __repr__(self): return u"<Palestra: %s>" % self.titulo def __unicode__(self): return self.titulo def get_absolute_url(self): palestrantes = self.palestrantes.order_by("nome") prefixo = "/".join([p.slug for p in palestrantes]) if prefixo: return "/programacao/%s/%s/" % (prefixo, self.slug) return "#" roan.purge("/palestrantes/").on_save(Palestrante) roan.purge("/palestrantes/").on_delete(Palestrante) roan.purge("/programacao/").on_save(Palestra) roan.purge("/programacao/").on_delete(Palestra)