示例#1
0
    def testTagGetSet(self):
        """
        Test that the get and set methods for tags, work.
        Note that at this time, I assume that GenericForeignKeys and the caching API
        work as specified, and are invoked correctly on this class.
        """
        # Dump any existing Tag cache
        Tag.getTag.delete_all()

        self.failIf(bool(Tag.getTag("test")), "Retrieved a tag for key 'test' but we haven't set one yet!")
        self.failIf(Tag.getTag("test"), "getTag() created a retrievable value for key 'test'!")

        Tag.setTag("test", value="frobbed")
        self.assertEqual(Tag.getTag("test"), "frobbed", "Failed to set tag 'test' to value 'frobbed'!")
        self.assertEqual(Tag.getTag("test"), "frobbed", "Tag was created, but didn't stick!")

        Tag.unSetTag("test")

        self.failIf(Tag.getTag("test"), "Retrieved a tag for key 'test' but we just deleted it!")
        self.failIf(Tag.getTag("test"), "unSetTag() deletes don't appear to be persistent!")

        Tag.setTag("test")
        self.failUnless(Tag.getTag("test"), "Error:  Setting a tag with an unspecified value must yield a tag whose value evaluates to True!")

        user, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="")

        self.failIf(Tag.getTag("test", user), "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!" % (user))
        Tag.setTag("test", user, "frobbed again")
        self.assertEqual(Tag.getTag("test", user), "frobbed again")
        Tag.setTag("test", user)
        self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG)
        Tag.unSetTag("test", user)
        self.failIf(Tag.getTag("test", user), "unSetTag() didn't work for per-row tags!")
示例#2
0
    def testTagGetSet(self):
        """
        Test that the get and set methods for tags, work.
        Note that at this time, I assume that GenericForeignKeys work
        and are invoked correctly on this class.
        """
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        self.assertFalse(bool(Tag.getTag("test")), "Retrieved a tag for key 'test' but we haven't set one yet!")
        self.assertFalse(Tag.getTag("test"), "getTag() created a retrievable value for key 'test'!")
        self.assertEqual(Tag.getTag("test",default="the default"),"the default")
        self.assertEqual(Tag.getTag("test",default="the default"),"the default")

        Tag.setTag("test", value="frobbed")
        self.assertEqual(Tag.getTag("test"), "frobbed", "Failed to set tag 'test' to value 'frobbed'!")
        self.assertEqual(Tag.getTag("test"), "frobbed", "Tag was created, but didn't stick!")
        self.assertEqual(Tag.getTag("test",default="the default"), "frobbed", "Defaulting is borked!")
        self.assertEqual(Tag.getTag("test",default="the default"), "frobbed", "Defaulting is borked!")

        Tag.unSetTag("test")

        self.assertFalse(Tag.getTag("test"), "Retrieved a tag for key 'test' but we just deleted it!")
        self.assertFalse(Tag.getTag("test"), "unSetTag() deletes don't appear to be persistent!")
        self.assertEqual(Tag.getTag("test",default="the default"),"the default")
        self.assertEqual(Tag.getTag("test",default="the default"),"the default")

        Tag.setTag("test")
        self.assertTrue(Tag.getTag("test"), "Error:  Setting a tag with an unspecified value must yield a tag whose value evaluates to True!")
        self.assertNotEqual(Tag.getTag("test",default="the default"),"the default","If the tag is set, even to EMPTY_TAG, we shouldn't return the default.")
示例#3
0
    def testTagGetSet(self):
        """
        Test that the get and set methods for tags, work.
        Note that at this time, I assume that GenericForeignKeys work
        and are invoked correctly on this class.
        """
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        self.assertFalse(
            bool(Tag.getTag("test")),
            "Retrieved a tag for key 'test' but we haven't set one yet!")
        self.assertFalse(
            Tag.getTag("test"),
            "getTag() created a retrievable value for key 'test'!")
        self.assertEqual(Tag.getTag("test", default="the default"),
                         "the default")
        self.assertEqual(Tag.getTag("test", default="the default"),
                         "the default")

        Tag.setTag("test", value="frobbed")
        self.assertEqual(Tag.getTag("test"), "frobbed",
                         "Failed to set tag 'test' to value 'frobbed'!")
        self.assertEqual(Tag.getTag("test"), "frobbed",
                         "Tag was created, but didn't stick!")
        self.assertEqual(Tag.getTag("test", default="the default"), "frobbed",
                         "Defaulting is borked!")
        self.assertEqual(Tag.getTag("test", default="the default"), "frobbed",
                         "Defaulting is borked!")

        Tag.unSetTag("test")

        self.assertFalse(
            Tag.getTag("test"),
            "Retrieved a tag for key 'test' but we just deleted it!")
        self.assertFalse(Tag.getTag("test"),
                         "unSetTag() deletes don't appear to be persistent!")
        self.assertEqual(Tag.getTag("test", default="the default"),
                         "the default")
        self.assertEqual(Tag.getTag("test", default="the default"),
                         "the default")

        Tag.setTag("test")
        self.assertTrue(
            Tag.getTag("test"),
            "Error:  Setting a tag with an unspecified value must yield a tag whose value evaluates to True!"
        )
        self.assertNotEqual(
            Tag.getTag("test", default="the default"), "the default",
            "If the tag is set, even to EMPTY_TAG, we shouldn't return the default."
        )
示例#4
0
    def clear_theme(self, theme_name=None):
    
        if theme_name is None:
            theme_name = self.get_current_theme()
        
        #   Remove template overrides matching the theme name
        if themes_settings.THEME_DEBUG: print 'Clearing theme: %s' % theme_name
        for template_name in self.get_template_names(theme_name):
            TemplateOverride.objects.filter(name=template_name).delete()
            if themes_settings.THEME_DEBUG: print '-- Removed template override: %s' % template_name

        #   Clear template override cache
        TemplateOverrideLoader.get_template_hash.delete_all()

        #   Remove images and script files from the active theme directory
        if os.path.exists(settings.MEDIA_ROOT + 'images/theme'):
            distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'images/theme')
        if os.path.exists(settings.MEDIA_ROOT + 'scripts/theme'):
            distutils.dir_util.remove_tree(settings.MEDIA_ROOT + 'scripts/theme')

        #   Remove compiled CSS file
        if os.path.exists(self.css_filename):
            os.remove(self.css_filename)

        Tag.unSetTag('current_theme_name')
        Tag.unSetTag('current_theme_params')
        Tag.unSetTag('current_theme_palette')
        Tag.unSetTag('prev_theme_customization')
示例#5
0
    def load_theme(self, theme_name, **kwargs):

        #   Create template overrides using data provided (our models handle versioning)
        logger.debug('Loading theme: %s', theme_name)
        for template_name in self.get_template_names(theme_name):
            #   Read default template override contents provided by theme
            to = TemplateOverride(name=template_name)
            template_filename = os.path.join(self.base_dir(theme_name),
                                             'templates', template_name)
            template_file = open(template_filename, 'r')
            to.content = template_file.read()

            #   Add a Django template comment tag indicating theme type to the main.html override (for tests)
            if to.name == 'main.html':
                to.content += (
                    '\n{%% comment %%} Theme: %s {%% endcomment %%}\n' %
                    theme_name)

            to.save()
            logger.debug('-- Created template override: %s', template_name)

        #   Clear template override cache
        TemplateOverrideLoader.get_template_hash.delete_all()

        #   Collect LESS files from appropriate sources and compile CSS
        self.compile_css(theme_name, {}, self.css_filename)

        #   Copy images and script files to the active theme directory
        img_src_dir = os.path.join(self.base_dir(theme_name), 'images')
        if os.path.exists(img_src_dir):
            img_dest_dir = os.path.join(settings.MEDIA_ROOT, 'images', 'theme')
            distutils.dir_util.copy_tree(img_src_dir, img_dest_dir)
        script_src_dir = os.path.join(self.base_dir(theme_name), 'scripts')
        if os.path.exists(script_src_dir):
            script_dest_dir = os.path.join(settings.MEDIA_ROOT, 'scripts',
                                           'theme')
            distutils.dir_util.copy_tree(script_src_dir, script_dest_dir)

        #   If files need to be restored, copy them back to the desired locations.
        if kwargs.get('backup_info', None) is not None:
            self.restore_files(settings.MEDIA_ROOT, kwargs['backup_info'])

        Tag.setTag('current_theme_name', value=theme_name)
        Tag.setTag('current_theme_params', value='{}')
        Tag.unSetTag('current_theme_palette')
        self.unset_current_customization()

        #   Clear the Varnish cache
        varnish.purge_all()
示例#6
0
    def testTagWithTarget(self):
        '''Test getting and setting of tags with targets.'''
        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        user, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="")

        self.assertFalse(Tag.getTag("test", user), "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!" % (user))
        Tag.setTag("test", user, "frobbed again")
        self.assertEqual(Tag.getTag("test", user), "frobbed again")
        Tag.setTag("test", user)
        self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG)
        Tag.unSetTag("test", user)
        self.assertFalse(Tag.getTag("test", user), "unSetTag() didn't work for per-row tags!")
示例#7
0
    def load_theme(self, theme_name, **kwargs):

        #   Create template overrides using data provided (our models handle versioning)
        if themes_settings.THEME_DEBUG: print 'Loading theme: %s' % theme_name
        for template_name in self.get_template_names(theme_name):
            #   Read default template override contents provided by theme
            to = TemplateOverride(name=template_name)
            template_filename = os.path.join(self.base_dir(theme_name),
                                             'templates', template_name)
            template_file = open(template_filename, 'r')
            to.content = template_file.read()

            #   Add a Django template comment tag indicating theme type to the main.html override (for tests)
            if to.name == 'main.html':
                to.content += (
                    '\n{%% comment %%} Theme: %s {%% endcomment %%}\n' %
                    theme_name)

            #   print 'Template override %s contents: \n%s' % (to.name, to.content)
            to.save()
            if themes_settings.THEME_DEBUG:
                print '-- Created template override: %s' % template_name

        #   Clear template override cache
        TemplateOverrideLoader.get_template_hash.delete_all()

        #   Collect LESS files from appropriate sources and compile CSS
        self.compile_css(theme_name, {}, self.css_filename)

        #   Copy images and script files to the active theme directory
        img_src_dir = os.path.join(self.base_dir(theme_name), 'images')
        if os.path.exists(img_src_dir):
            img_dest_dir = os.path.join(settings.MEDIA_ROOT, 'images', 'theme')
            distutils.dir_util.copy_tree(img_src_dir, img_dest_dir)
        script_src_dir = os.path.join(self.base_dir(theme_name), 'scripts')
        if os.path.exists(script_src_dir):
            script_dest_dir = os.path.join(settings.MEDIA_ROOT, 'scripts',
                                           'theme')
            distutils.dir_util.copy_tree(script_src_dir, script_dest_dir)

        Tag.setTag('current_theme_name', value=theme_name)
        Tag.setTag('current_theme_params', value='{}')
        Tag.unSetTag('current_theme_palette')
        self.unset_current_customization()
示例#8
0
    def testTagWithTarget(self):
        '''Test getting and setting of tags with targets.'''
        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        user, created = User.objects.get_or_create(username="******",
                                                   email="*****@*****.**",
                                                   password="")

        self.assertFalse(
            Tag.getTag("test", user),
            "Retrieved a tag for key 'test' target '%s', but we haven't set one yet!"
            % (user))
        Tag.setTag("test", user, "frobbed again")
        self.assertEqual(Tag.getTag("test", user), "frobbed again")
        Tag.setTag("test", user)
        self.assertEqual(Tag.getTag("test", user), Tag.EMPTY_TAG)
        Tag.unSetTag("test", user)
        self.assertFalse(Tag.getTag("test", user),
                         "unSetTag() didn't work for per-row tags!")
示例#9
0
    def clear_theme(self, theme_name=None, keep_files=None):

        if theme_name is None:
            theme_name = self.get_current_theme()

        #   Remove template overrides matching the theme name
        logger.debug('Clearing theme: %s', theme_name)
        for template_name in self.get_template_names(theme_name):
            TemplateOverride.objects.filter(name=template_name).delete()
            logger.debug('-- Removed template override: %s', template_name)

        #   Clear template override cache
        TemplateOverrideLoader.get_template_hash.delete_all()

        #   If files are to be preserved, copy them to temporary locations
        #   and return a record of those locations (backup_info).
        #   This is much easier than writing new functions for removing and
        #   copying directory trees.
        backup_info = self.backup_files(settings.MEDIA_ROOT, keep_files)
        if os.path.exists(settings.MEDIA_ROOT + 'images/theme'):
            distutils.dir_util.remove_tree(settings.MEDIA_ROOT +
                                           'images/theme')
        if os.path.exists(settings.MEDIA_ROOT + 'scripts/theme'):
            distutils.dir_util.remove_tree(settings.MEDIA_ROOT +
                                           'scripts/theme')

        #   Remove compiled CSS file
        if os.path.exists(self.css_filename):
            os.remove(self.css_filename)

        Tag.unSetTag('current_theme_name')
        Tag.unSetTag('current_theme_params')
        Tag.unSetTag('current_theme_palette')
        self.unset_current_customization()

        #   Clear the Varnish cache
        varnish.purge_all()

        return backup_info
示例#10
0
 def unset_current_customization(self):
     Tag.unSetTag('prev_theme_customization')
示例#11
0
    def testTagCaching(self):
        '''Test that tag values are being cached.'''
        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        user1, created = User.objects.get_or_create(username="******",
                                                    email="*****@*****.**",
                                                    password="")
        user2, created = User.objects.get_or_create(username="******",
                                                    email="*****@*****.**",
                                                    password="")

        for target in [None, user1, user2]:
            self.assertFalse(Tag.getTag("test", target=target))
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test", target=target))
                self.assertFalse(Tag.getTag("test", target=target))

        Tag.setTag("test", value="tag value")

        for target in [user1, user2]:
            self.assertFalse(Tag.getTag(
                "test", target=target))  #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test", target=target))
                self.assertFalse(Tag.getTag("test", target=target))

        self.assertEqual(Tag.getTag("test"), "tag value")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"), "tag value")
            self.assertEqual(Tag.getTag("test"), "tag value")

        for target in [user1, user2]:
            self.assertFalse(Tag.getTag(
                "test", target=target))  #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test", target=target))
                self.assertFalse(Tag.getTag("test", target=target))

        Tag.setTag("test", value="tag value 2")

        for target in [user1, user2]:
            self.assertFalse(Tag.getTag(
                "test", target=target))  #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test", target=target))
                self.assertFalse(Tag.getTag("test", target=target))

        self.assertEqual(Tag.getTag("test"), "tag value 2")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"), "tag value 2")
            self.assertEqual(Tag.getTag("test"), "tag value 2")

        for target in [user1, user2]:
            self.assertFalse(Tag.getTag(
                "test", target=target))  #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test", target=target))
                self.assertFalse(Tag.getTag("test", target=target))

        Tag.setTag("test", target=user1, value="tag value user1")

        self.assertFalse(Tag.getTag(
            "test", target=user2))  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test", target=user2))
            self.assertFalse(Tag.getTag("test", target=user2))

        self.assertEqual(Tag.getTag("test"),
                         "tag value 2")  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"), "tag value 2")
            self.assertEqual(Tag.getTag("test"), "tag value 2")

        self.assertEqual(Tag.getTag("test", target=user1), "tag value user1")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")

        self.assertEqual(Tag.getTag("test"),
                         "tag value 2")  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"), "tag value 2")
            self.assertEqual(Tag.getTag("test"), "tag value 2")

        self.assertFalse(Tag.getTag(
            "test", target=user2))  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test", target=user2))
            self.assertFalse(Tag.getTag("test", target=user2))

        Tag.unSetTag("test")

        self.assertEqual(Tag.getTag("test", target=user1),
                         "tag value user1")  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")

        self.assertFalse(Tag.getTag(
            "test", target=user2))  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test", target=user2))
            self.assertFalse(Tag.getTag("test", target=user2))

        self.assertFalse(Tag.getTag("test"))
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test"))
            self.assertFalse(Tag.getTag("test"))

        self.assertEqual(Tag.getTag("test", target=user1),
                         "tag value user1")  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")
            self.assertEqual(Tag.getTag("test", target=user1),
                             "tag value user1")

        self.assertFalse(Tag.getTag(
            "test", target=user2))  #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test", target=user2))
            self.assertFalse(Tag.getTag("test", target=user2))
示例#12
0
    def testProgramTag(self):
        '''Test the logic of getProgramTag in a bunch of different conditions.'''

        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        #Caching is hard, so what the hell, let's run every assertion twice.
        self.assertFalse(Tag.getProgramTag("test", program=self.program))
        self.assertFalse(Tag.getProgramTag("test", program=self.program))
        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "the default")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "the default")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")

        # Set the program-specific tag
        Tag.setTag("test", target=self.program, value="program tag value")

        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "program tag value")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "program tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "program tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "program tag value")

        # Now set the general tag
        Tag.setTag("test", target=None, value="general tag value")

        self.assertEqual(Tag.getProgramTag("test", program=None),
                         "general tag value")
        self.assertEqual(Tag.getProgramTag("test", program=None),
                         "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "general tag value")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "program tag value")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "program tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "program tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "program tag value")

        # Now unset the program-specific tag
        Tag.unSetTag("test", target=self.program)

        self.assertEqual(Tag.getProgramTag("test", program=None),
                         "general tag value")
        self.assertEqual(Tag.getProgramTag("test", program=None),
                         "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "general tag value")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "general tag value")
        self.assertEqual(Tag.getProgramTag("test", program=self.program),
                         "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "general tag value")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "general tag value")

        #just to clean up
        Tag.unSetTag("test", target=None)

        self.assertFalse(Tag.getProgramTag("test", program=self.program))
        self.assertFalse(Tag.getProgramTag("test", program=self.program))
        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertFalse(Tag.getProgramTag("test", program=None))
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "the default")
        self.assertEqual(
            Tag.getProgramTag("test",
                              program=self.program,
                              default="the default"), "the default")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")
        self.assertEqual(
            Tag.getProgramTag("test", program=None, default="the default"),
            "the default")
示例#13
0
    def testTagCaching(self):
        '''Test that tag values are being cached.'''
        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        user1, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="")
        user2, created = User.objects.get_or_create(username="******", email="*****@*****.**", password="")

        for target in [None,user1,user2]:
            self.assertFalse(Tag.getTag("test",target=target))
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test",target=target))
                self.assertFalse(Tag.getTag("test",target=target))





        Tag.setTag("test",value="tag value")

        for target in [user1,user2]:
            self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test",target=target))
                self.assertFalse(Tag.getTag("test",target=target))

        self.assertEqual(Tag.getTag("test"),"tag value")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"),"tag value")
            self.assertEqual(Tag.getTag("test"),"tag value")

        for target in [user1,user2]:
            self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test",target=target))
                self.assertFalse(Tag.getTag("test",target=target))




        Tag.setTag("test",value="tag value 2")

        for target in [user1,user2]:
            self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test",target=target))
                self.assertFalse(Tag.getTag("test",target=target))

        self.assertEqual(Tag.getTag("test"),"tag value 2")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"),"tag value 2")
            self.assertEqual(Tag.getTag("test"),"tag value 2")

        for target in [user1,user2]:
            self.assertFalse(Tag.getTag("test",target=target)) #remove after Issue #866 is fixed
            with self.assertNumQueries(0):
                self.assertFalse(Tag.getTag("test",target=target))
                self.assertFalse(Tag.getTag("test",target=target))



        Tag.setTag("test",target=user1,value="tag value user1")

        self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test",target=user2))
            self.assertFalse(Tag.getTag("test",target=user2))

        self.assertEqual(Tag.getTag("test"),"tag value 2") #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"),"tag value 2")
            self.assertEqual(Tag.getTag("test"),"tag value 2")

        self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")

        self.assertEqual(Tag.getTag("test"),"tag value 2") #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test"),"tag value 2")
            self.assertEqual(Tag.getTag("test"),"tag value 2")

        self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test",target=user2))
            self.assertFalse(Tag.getTag("test",target=user2))



        Tag.unSetTag("test")

        self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")

        self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test",target=user2))
            self.assertFalse(Tag.getTag("test",target=user2))

        self.assertFalse(Tag.getTag("test"))
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test"))
            self.assertFalse(Tag.getTag("test"))

        self.assertEqual(Tag.getTag("test",target=user1),"tag value user1") #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")
            self.assertEqual(Tag.getTag("test",target=user1),"tag value user1")

        self.assertFalse(Tag.getTag("test",target=user2)) #remove after Issue #866 is fixed
        with self.assertNumQueries(0):
            self.assertFalse(Tag.getTag("test",target=user2))
            self.assertFalse(Tag.getTag("test",target=user2))
示例#14
0
    def testProgramTag(self):
        '''Test the logic of getProgramTag in a bunch of different conditions.'''

        # Delete any existing tags that might interfere
        Tag.objects.filter(key="test").delete()
        # Dump any existing Tag cache
        Tag._getTag.delete_all()

        #Caching is hard, so what the hell, let's run every assertion twice.
        self.assertFalse(Tag.getProgramTag("test",program=self.program))
        self.assertFalse(Tag.getProgramTag("test",program=self.program))
        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")


        # Set the program-specific tag
        Tag.setTag("test",target=self.program,value="program tag value")

        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value")


        # Now set the general tag
        Tag.setTag("test",target=None,value="general tag value")

        self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"program tag value")


        # Now unset the program-specific tag
        Tag.unSetTag("test",target=self.program)

        self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"general tag value")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"general tag value")

        #just to clean up
        Tag.unSetTag("test",target=None)

        self.assertFalse(Tag.getProgramTag("test",program=self.program))
        self.assertFalse(Tag.getProgramTag("test",program=self.program))
        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertFalse(Tag.getProgramTag("test",program=None))
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=self.program,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")
        self.assertEqual(Tag.getProgramTag("test",program=None,default="the default"),"the default")