Beispiel #1
0
def inbox5to6(old):
    """
    Copy over all attributes except C{scheduler}.
    """
    new = old.upgradeVersion(
        Inbox.typeName,
        5,
        6,
        privateApplication=old.privateApplication,
        messageSource=old.messageSource,
        quotientPrefs=old.quotientPrefs,
        messageDisplayPrefs=old.messageDisplayPrefs,
        deliveryAgent=old.deliveryAgent,
        uiComplexity=old.uiComplexity,
        showMoreDetail=old.showMoreDetail,
        filter=old.filter,
        focus=old.focus,
    )

    # If the old item was original schema version 5 in the database, focus and
    # filter have already been installed, because the 4 to 5 upgrader used to
    # install them.  However, now that 5 is not the newest version of Inbox, it
    # cannot do that.  Only the upgrader to the newest version can.  So do it
    # here, instead, if it is necessary (which is when the original schema
    # version was older than 5).
    if installedOn(new.filter) is None:
        installOn(new.filter, new.store)
    if installedOn(new.focus) is None:
        installOn(new.focus, new.store)
    return new
Beispiel #2
0
    def test_properOrphaning(self):
        """
        If two installed items both depend on a third, it should be
        removed as soon as both installed items are removed, but no
        sooner.
        """

        foo = Kitchen(store=self.store)
        e = Toaster(store=self.store)
        dependency.installOn(e, foo)
        ps = self.store.findUnique(PowerStrip)
        bb = self.store.findUnique(Breadbox)
        f = Blender(store=self.store)
        dependency.installOn(f, foo)

        self.assertEquals(list(self.store.query(PowerStrip)), [ps])
        #XXX does ordering matter?
        self.assertEquals(set(dependency.installedDependents(ps, foo)),
                          set([e, f]))
        self.assertEquals(set(dependency.installedRequirements(e, foo)),
                          set([bb, ps]))
        self.assertEquals(list(dependency.installedRequirements(f, foo)),
                          [ps])

        dependency.uninstallFrom(e, foo)
        self.assertEquals(dependency.installedOn(ps), foo)

        dependency.uninstallFrom(f, foo)
        self.assertEquals(dependency.installedOn(ps), None)
Beispiel #3
0
    def test_installOffering(self):
        """
        L{OfferingConfiguration.installOffering} should install the given
        offering on the Mantissa server.
        """
        conf = self.adminAccount.avatars.open().findUnique(
            offering.OfferingConfiguration)
        io = conf.installOffering(self.offering, None)

        # InstalledOffering should be returned, and installed on the site store
        foundIO = self.store.findUnique(offering.InstalledOffering,
                  offering.InstalledOffering.offeringName == self.offering.name)
        self.assertIdentical(io, foundIO)

        # Site store requirements should be on the site store
        tsr = self.store.findUnique(TestSiteRequirement)
        self.failUnless(installedOn(tsr), self.store)

        # App store should have been created
        appStore = self.userbase.accountByAddress(self.offering.name, None)
        self.assertNotEqual(appStore, None)

        # App store requirements should be on the app store
        ss = appStore.avatars.open()
        tap = ss.findUnique(TestAppPowerup)
        self.failUnless(installedOn(tap), ss)

        self.assertRaises(offering.OfferingAlreadyInstalled,
                          conf.installOffering, self.offering, None)
    def test_properOrphaning(self):
        """
        If two installed items both depend on a third, it should be
        removed as soon as both installed items are removed, but no
        sooner.
        """

        foo = Kitchen(store=self.store)
        e = Toaster(store=self.store)
        dependency.installOn(e, foo)
        ps = self.store.findUnique(PowerStrip)
        bb = self.store.findUnique(Breadbox)
        f = Blender(store=self.store)
        dependency.installOn(f, foo)

        self.assertEquals(list(self.store.query(PowerStrip)), [ps])
        #XXX does ordering matter?
        self.assertEquals(set(dependency.installedDependents(ps, foo)),
                          set([e, f]))
        self.assertEquals(set(dependency.installedRequirements(e, foo)),
                          set([bb, ps]))
        self.assertEquals(list(dependency.installedRequirements(f, foo)), [ps])

        dependency.uninstallFrom(e, foo)
        self.assertEquals(dependency.installedOn(ps), foo)

        dependency.uninstallFrom(f, foo)
        self.assertEquals(dependency.installedOn(ps), None)
Beispiel #5
0
    def test_installOffering(self):
        """
        L{OfferingConfiguration.installOffering} should install the given
        offering on the Mantissa server.
        """
        conf = self.adminAccount.avatars.open().findUnique(
            offering.OfferingConfiguration)
        io = conf.installOffering(self.offering, None)

        # InstalledOffering should be returned, and installed on the site store
        foundIO = self.store.findUnique(
            offering.InstalledOffering,
            offering.InstalledOffering.offeringName == self.offering.name)
        self.assertIdentical(io, foundIO)

        # Site store requirements should be on the site store
        tsr = self.store.findUnique(TestSiteRequirement)
        self.failUnless(installedOn(tsr), self.store)

        # App store should have been created
        appStore = self.userbase.accountByAddress(self.offering.name, None)
        self.assertNotEqual(appStore, None)

        # App store requirements should be on the app store
        ss = appStore.avatars.open()
        tap = ss.findUnique(TestAppPowerup)
        self.failUnless(installedOn(tap), ss)

        self.assertRaises(offering.OfferingAlreadyInstalled,
                          conf.installOffering, self.offering, None)
Beispiel #6
0
def inbox5to6(old):
    """
    Copy over all attributes except C{scheduler}.
    """
    new = old.upgradeVersion(
        Inbox.typeName, 5, 6,
        privateApplication=old.privateApplication,
        messageSource=old.messageSource,
        quotientPrefs=old.quotientPrefs,
        messageDisplayPrefs=old.messageDisplayPrefs,
        deliveryAgent=old.deliveryAgent,
        uiComplexity=old.uiComplexity,
        showMoreDetail=old.showMoreDetail,
        filter=old.filter,
        focus=old.focus)

    # If the old item was original schema version 5 in the database, focus and
    # filter have already been installed, because the 4 to 5 upgrader used to
    # install them.  However, now that 5 is not the newest version of Inbox, it
    # cannot do that.  Only the upgrader to the newest version can.  So do it
    # here, instead, if it is necessary (which is when the original schema
    # version was older than 5).
    if installedOn(new.filter) is None:
        installOn(new.filter, new.store)
    if installedOn(new.focus) is None:
        installOn(new.focus, new.store)
    return new
 def test_basicUninstall(self):
     """
     Ensure that uninstallation removes the adapter from the former
     install target and all orphaned dependencies.
     """
     foo = Kitchen(store=self.store)
     e = Toaster(store=self.store)
     dependency.installOn(e, foo)
     dependency.uninstallFrom(e, foo)
     self.assertEqual(dependency.installedOn(e), None)
     self.assertEqual(dependency.installedOn(e.powerStrip), None)
Beispiel #8
0
 def test_basicUninstall(self):
     """
     Ensure that uninstallation removes the adapter from the former
     install target and all orphaned dependencies.
     """
     foo = Kitchen(store=self.store)
     e = Toaster(store=self.store)
     dependency.installOn(e, foo)
     dependency.uninstallFrom(e, foo)
     self.assertEqual(dependency.installedOn(e), None)
     self.assertEqual(dependency.installedOn(e.powerStrip), None)
Beispiel #9
0
    def test_recursiveInstall(self):
        """
        Installing an item should install all of its dependencies, and
        all of its dependencies, and so forth.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        self.assertEquals(dependency.installedOn(blender), foo)
        self.assertEquals(dependency.installedOn(ps), foo)
        self.assertEquals(list(dependency.installedRequirements(ic, foo)),
                          [blender])
Beispiel #10
0
    def test_recursiveInstall(self):
        """
        Installing an item should install all of its dependencies, and
        all of its dependencies, and so forth.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        self.assertEquals(dependency.installedOn(blender), foo)
        self.assertEquals(dependency.installedOn(ps), foo)
        self.assertEquals(list(dependency.installedRequirements(ic, foo)),
                          [blender])
Beispiel #11
0
def inbox4to5(old):
    """
    Copy over all attributes and add a reference to a newly created Focus item.
    Focus did not exist prior to the addition of this dependency, so there is
    no way one could exist in the store of an existing Inbox.

    Additionally, find or create a spam.Filter.  See inbox3to4.
    """
    focus = Focus(store=old.store)

    new = old.upgradeVersion(
        Inbox.typeName,
        4,
        5,
        privateApplication=old.privateApplication,
        messageSource=old.messageSource,
        quotientPrefs=old.quotientPrefs,
        deliveryAgent=old.deliveryAgent,
        messageDisplayPrefs=old.messageDisplayPrefs,
        uiComplexity=old.uiComplexity,
        showMoreDetail=old.showMoreDetail,
    )

    src = old.store.findUnique(MessageSource)
    if installedOn(src) is None:
        # MessageSource was created in pre-dependency-system days
        _DependencyConnector(installee=src, target=old.store, explicitlyInstalled=True, store=old.store)
    filter = new.store.findFirst(spam.Filter, default=None)
    if filter is None:
        filter = spam.Filter(store=new.store)
    new.filter = filter

    new.focus = focus
    return new
Beispiel #12
0
def inbox4to5(old):
    """
    Copy over all attributes and add a reference to a newly created Focus item.
    Focus did not exist prior to the addition of this dependency, so there is
    no way one could exist in the store of an existing Inbox.

    Additionally, find or create a spam.Filter.  See inbox3to4.
    """
    focus = Focus(store=old.store)

    new = old.upgradeVersion(
        Inbox.typeName, 4, 5,
        privateApplication=old.privateApplication,
        messageSource=old.messageSource,
        quotientPrefs=old.quotientPrefs,
        deliveryAgent=old.deliveryAgent,
        messageDisplayPrefs=old.messageDisplayPrefs,
        uiComplexity=old.uiComplexity,
        showMoreDetail=old.showMoreDetail)

    src = old.store.findUnique(MessageSource)
    if installedOn(src) is None:
        #MessageSource was created in pre-dependency-system days
        _DependencyConnector(installee=src, target=old.store,
                             explicitlyInstalled=True,
                             store=old.store)
    filter = new.store.findFirst(spam.Filter, default=None)
    if filter is None:
        filter = spam.Filter(store=new.store)
    new.filter = filter

    new.focus = focus
    return new
Beispiel #13
0
    def test_recursiveUninstall(self):
        """
        Removal of items should recursively remove orphaned
        dependencies.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        dependency.uninstallFrom(ic, foo)

        self.failIf(dependency.installedOn(blender))
        self.failIf(dependency.installedOn(ps))
        self.failIf(dependency.installedOn(ic))
Beispiel #14
0
    def test_recursiveUninstall(self):
        """
        Removal of items should recursively remove orphaned
        dependencies.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        dependency.uninstallFrom(ic, foo)

        self.failIf(dependency.installedOn(blender))
        self.failIf(dependency.installedOn(ps))
        self.failIf(dependency.installedOn(ic))
Beispiel #15
0
 def test_anonymousSite(self):
     """
     An L{AnonymousSite} is created and installed on the site store.
     """
     resource = self.store.findUnique(AnonymousSite)
     self.assertEqual(list(self.store.interfacesFor(resource)),
                      [IResource, IMantissaSite, IWebViewer])
     self.assertIdentical(installedOn(resource), self.store)
     self.assertIdentical(resource.loginSystem, IRealm(self.store))
Beispiel #16
0
 def test_anonymousSite(self):
     """
     An L{AnonymousSite} is created and installed on the site store.
     """
     resource = self.store.findUnique(AnonymousSite)
     self.assertEqual(list(self.store.interfacesFor(resource)),
                      [IResource, IMantissaSite, IWebViewer])
     self.assertIdentical(installedOn(resource), self.store)
     self.assertIdentical(resource.loginSystem, IRealm(self.store))
Beispiel #17
0
 def test_portNumber(self):
     """
     Test that the MailTransferAgent's portNumber attribute is transformed
     into a TCPPort instance.
     """
     mta = self.store.findUnique(MailTransferAgent)
     ports = list(self.store.query(TCPPort, TCPPort.factory == mta))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 5025)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #18
0
 def test_portNumber(self):
     """
     Test that the WebSite's portNumber attribute is transformed into a
     TCPPort instance.
     """
     site = self.store.findUnique(SiteConfiguration)
     ports = list(self.store.query(TCPPort, TCPPort.factory == site))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 8088)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #19
0
 def test_portNumber(self):
     """
     Test that the MailTransferAgent's portNumber attribute is transformed
     into a TCPPort instance.
     """
     mta = self.store.findUnique(MailTransferAgent)
     ports = list(self.store.query(TCPPort, TCPPort.factory == mta))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 5025)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
 def test_portNumber(self):
     """
     Test that the POP3Listener's portNumber attribute is transformed into a
     TCPPort instance.
     """
     pop3 = self.store.findUnique(POP3Listener)
     ports = list(self.store.query(TCPPort, TCPPort.factory == pop3))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 2110)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #21
0
 def test_portNumber(self):
     """
     Test that the WebSite's portNumber attribute is transformed into a
     TCPPort instance.
     """
     site = self.store.findUnique(SiteConfiguration)
     ports = list(self.store.query(TCPPort, TCPPort.factory == site))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 8088)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #22
0
 def test_securePortNumber(self):
     """
     Test that the MailTransferAgent's securePortNumber attribute is
     transformed into an SSLPort instance.
     """
     mta = self.store.findUnique(MailTransferAgent)
     ports = list(self.store.query(SSLPort, SSLPort.factory == mta))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 5465)
     certPath = self.store.newFilePath('mta.pem')
     self.assertEqual(ports[0].certificatePath, certPath)
     self.assertEqual(certPath.getContent(), '--- PEM ---\n')
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
 def test_securePortNumber(self):
     """
     Test that the POP3Listener's securePortNumber attribute is transformed
     into an SSLPort instance.
     """
     pop3 = self.store.findUnique(POP3Listener)
     ports = list(self.store.query(SSLPort, SSLPort.factory == pop3))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 2995)
     certPath = self.store.newFilePath('pop3.pem')
     self.assertEqual(ports[0].certificatePath, certPath)
     self.assertEqual(certPath.getContent(), '--- PEM ---\n')
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #24
0
 def test_securePortNumber(self):
     """
     Test that the WebSite's securePortNumber attribute is transformed into
     an SSLPort instance.
     """
     site = self.store.findUnique(SiteConfiguration)
     ports = list(self.store.query(SSLPort, SSLPort.factory == site))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 6443)
     certPath = self.store.newFilePath('server.pem')
     self.assertEqual(ports[0].certificatePath, certPath)
     self.assertEqual(certPath.getContent(), cert)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #25
0
 def test_securePortNumber(self):
     """
     Test that the MailTransferAgent's securePortNumber attribute is
     transformed into an SSLPort instance.
     """
     mta = self.store.findUnique(MailTransferAgent)
     ports = list(self.store.query(SSLPort, SSLPort.factory == mta))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 5465)
     certPath = self.store.newFilePath('mta.pem')
     self.assertEqual(ports[0].certificatePath, certPath)
     self.assertEqual(certPath.getContent(), '--- PEM ---\n')
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #26
0
 def test_securePortNumber(self):
     """
     Test that the WebSite's securePortNumber attribute is transformed into
     an SSLPort instance.
     """
     site = self.store.findUnique(SiteConfiguration)
     ports = list(self.store.query(SSLPort, SSLPort.factory == site))
     self.assertEqual(len(ports), 1)
     self.assertEqual(ports[0].portNumber, 6443)
     certPath = self.store.newFilePath('server.pem')
     self.assertEqual(ports[0].certificatePath, certPath)
     self.assertEqual(certPath.getContent(), cert)
     self.assertEqual(installedOn(ports[0]), self.store)
     self.assertEqual(list(self.store.interfacesFor(ports[0])), [IService])
Beispiel #27
0
 def test_explicitInstall(self):
     """
     If an item is explicitly installed, it should not be
     implicitly uninstalled. Also, dependsOn attributes should be
     filled in properly even if a dependent item is not installed
     automatically.
     """
     foo = Kitchen(store=self.store)
     ps = PowerStrip(store=self.store)
     dependency.installOn(ps, foo)
     e = Toaster(store=self.store)
     dependency.installOn(e, foo)
     self.assertEqual(e.powerStrip, ps)
     dependency.uninstallFrom(e, foo)
     self.assertEquals(dependency.installedOn(ps), foo)
Beispiel #28
0
 def test_explicitInstall(self):
     """
     If an item is explicitly installed, it should not be
     implicitly uninstalled. Also, dependsOn attributes should be
     filled in properly even if a dependent item is not installed
     automatically.
     """
     foo = Kitchen(store=self.store)
     ps = PowerStrip(store=self.store)
     dependency.installOn(ps, foo)
     e = Toaster(store=self.store)
     dependency.installOn(e, foo)
     self.assertEqual(e.powerStrip, ps)
     dependency.uninstallFrom(e, foo)
     self.assertEquals(dependency.installedOn(ps), foo)
Beispiel #29
0
 def locateChild(self, context, segments):
     store = IStore(context)
     if segments:
         content = store.findFirst(Content, AND(Content.type == self.contentType))
         return AdminContentEditPage(dependency.installedOn(content)), segments[1:]
Beispiel #30
0
def _makeSiteConfiguration(currentVersion, oldSite, couldHavePorts):
    from xmantissa.publicweb import AnonymousSite

    newSite = oldSite.upgradeVersion(
        'mantissa_web_powerup', currentVersion, 6,
        hitCount=oldSite.hitCount)

    if newSite.store.parent is not None:
        return newSite

    # SiteConfiguration dependsOn LoginSystem.  LoginSystem was probably
    # installed by the mantissa axiomatic command.  During the dependency
    # system conversion, that command was changed to use installOn on the
    # LoginSystem.  However, no upgrader was supplied to create the new
    # dependency state.  Consequently, there may be none.  Consequently, a new
    # LoginSystem will be created if an item which dependsOn LoginSystem is
    # installed.  This would be bad.  So, set up the necessary dependency state
    # here, before instantiating SiteConfiguration. -exarkun

    # Addendum: it is almost certainly the case that there are not legitimate
    # configurations which lack a LoginSystem.  However, a large number of
    # database upgrade tests construct unrealistic databases.  One aspect of
    # the unrealism is that they lack a LoginSystem.  Therefore, rather than
    # changing all the bogus stubs and regenerating the stubs, I will just
    # support the case where LoginSystem is missing.  However, note that a
    # LoginSystem upgrader may invalidate this check and result in a duplicate
    # being created anyway. -exarkun
    loginSystem = oldSite.store.findUnique(LoginSystem, default=None)
    if loginSystem is not None and installedOn(loginSystem) is None:
        installOn(loginSystem, oldSite.store)

    uninstallFrom(oldSite.store, oldSite)

    site = SiteConfiguration(
        store=oldSite.store,
        httpLog=oldSite.store.filesdir.child('httpd.log'),
        hostname=getattr(oldSite, "hostname", None) or u"localhost")
    installOn(site, site.store)

    anonymousAvatar = AnonymousSite(store=oldSite.store)
    installOn(anonymousAvatar, oldSite.store)

    if couldHavePorts:
        for tcp in site.store.query(TCPPort, TCPPort.factory == oldSite):
            tcp.factory = site
        for ssl in site.store.query(SSLPort, SSLPort.factory == oldSite):
            ssl.factory = site
    else:
        if oldSite.portNumber is not None:
            port = TCPPort(
                store=oldSite.store,
                portNumber=oldSite.portNumber,
                factory=site)
            installOn(port, oldSite.store)

        securePortNumber = oldSite.securePortNumber
        certificateFile = oldSite.certificateFile
        if securePortNumber is not None and certificateFile:
            oldCertPath = site.store.dbdir.preauthChild(certificateFile)
            newCertPath = site.store.newFilePath('server.pem')
            oldCertPath.moveTo(newCertPath)
            port = SSLPort(
                store=site.store,
                portNumber=oldSite.securePortNumber,
                certificatePath=newCertPath,
                factory=site)
            installOn(port, site.store)

    newSite.deleteFromStore()
Beispiel #31
0
def _makeSiteConfiguration(currentVersion, oldSite, couldHavePorts):
    from xmantissa.publicweb import AnonymousSite

    newSite = oldSite.upgradeVersion(
        'mantissa_web_powerup', currentVersion, 6,
        hitCount=oldSite.hitCount)

    if newSite.store.parent is not None:
        return newSite

    # SiteConfiguration dependsOn LoginSystem.  LoginSystem was probably
    # installed by the mantissa axiomatic command.  During the dependency
    # system conversion, that command was changed to use installOn on the
    # LoginSystem.  However, no upgrader was supplied to create the new
    # dependency state.  Consequently, there may be none.  Consequently, a new
    # LoginSystem will be created if an item which dependsOn LoginSystem is
    # installed.  This would be bad.  So, set up the necessary dependency state
    # here, before instantiating SiteConfiguration. -exarkun

    # Addendum: it is almost certainly the case that there are not legitimate
    # configurations which lack a LoginSystem.  However, a large number of
    # database upgrade tests construct unrealistic databases.  One aspect of
    # the unrealism is that they lack a LoginSystem.  Therefore, rather than
    # changing all the bogus stubs and regenerating the stubs, I will just
    # support the case where LoginSystem is missing.  However, note that a
    # LoginSystem upgrader may invalidate this check and result in a duplicate
    # being created anyway. -exarkun
    loginSystem = oldSite.store.findUnique(LoginSystem, default=None)
    if loginSystem is not None and installedOn(loginSystem) is None:
        installOn(loginSystem, oldSite.store)

    uninstallFrom(oldSite.store, oldSite)

    site = SiteConfiguration(
        store=oldSite.store,
        httpLog=oldSite.store.filesdir.child('httpd.log'),
        hostname=getattr(oldSite, "hostname", None) or u"localhost")
    installOn(site, site.store)

    anonymousAvatar = AnonymousSite(store=oldSite.store)
    installOn(anonymousAvatar, oldSite.store)

    if couldHavePorts:
        for tcp in site.store.query(TCPPort, TCPPort.factory == oldSite):
            tcp.factory = site
        for ssl in site.store.query(SSLPort, SSLPort.factory == oldSite):
            ssl.factory = site
    else:
        if oldSite.portNumber is not None:
            port = TCPPort(
                store=oldSite.store,
                portNumber=oldSite.portNumber,
                factory=site)
            installOn(port, oldSite.store)

        securePortNumber = oldSite.securePortNumber
        certificateFile = oldSite.certificateFile
        if securePortNumber is not None and certificateFile:
            oldCertPath = site.store.dbdir.preauthChild(certificateFile)
            newCertPath = site.store.newFilePath('server.pem')
            oldCertPath.moveTo(newCertPath)
            port = SSLPort(
                store=site.store,
                portNumber=oldSite.securePortNumber,
                certificatePath=newCertPath,
                factory=site)
            installOn(port, site.store)

    newSite.deleteFromStore()
Beispiel #32
0
 def getContentForType(self, contentType):
     return [dependency.installedOn(content) for content in self.store.query(Content, AND(Content.type == contentType, ContentType.site == self)).distinct()]