Changeset 499 for trunk/djedna

Show
Ignore:
Timestamp:
07/10/08 14:37:01 (6 months ago)
Author:
thomas
Message:

Added active queries and tests

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/djedna/catalog2/forms.py

    r498 r499  
    9393            'title', 'slug', 'number', 'length', 'year', 'artist', 
    9494            'new_artist_name', 'album', 'new_album_title', 'trackfiles', 
    95             'image_override', 'publish', 'expire', 'is_active' 
     95            'image_override', 'publish', 'expire', 'active' 
    9696        ] 
    9797     
  • trunk/djedna/catalog2/models.py

    r498 r499  
    2424import time 
    2525import wave 
     26import zipfile 
    2627 
    2728from django.conf import settings 
     
    105106        return published_q & not_expired_q 
    106107     
    107     def get_unpublished_q(self, now=None): 
    108         if not now: 
    109             now = datetime.datetime.now() 
    110         published_q = self.get_published_q(now=now) 
    111         return ~published_q 
    112      
    113108    def get_active_q(self, now=None): 
    114         if not now: 
    115             now = datetime.datetime.now() 
    116         return models.Q(is_active=True) & self.get_published_q(now=now) 
    117      
    118     def get_inactive_q(self, now=None): 
    119         if not now: 
    120             now = datetime.datetime.now() 
    121         return models.Q(is_active=False) | self.get_unpublished_q(now=now) 
    122      
    123     def get_active_query_set(self, now=None): 
    124         if not now: 
    125             now = datetime.datetime.now() 
    126         return self.get_query_set().filter(self.get_active_q(now=now)) 
    127     active = property(get_active_query_set) 
    128      
    129     def get_inactive_query_set(self, now=None): 
    130         if not now: 
    131             now = datetime.datetime.now() 
    132         return self.get_query_set().filter(self.get_inactive_q(now=now)) 
    133     inactive = property(get_inactive_query_set) 
     109        return models.Q(active=True) & self.get_published_q(now=now) 
    134110     
    135111    def get_site_q(self, site_id=None): 
     
    138114        return models.Q(sites__id__exact=site_id) 
    139115     
     116    def get_active_site_q(self, now=None, site_id=None): 
     117        return self.get_active_q(now=now) & self.get_site_q(site_id=site_id) 
     118     
     119    def get_active_query_set(self, now=None): 
     120        return self.get_query_set().filter(self.get_active_q(now=now)) 
     121    active = property(get_active_query_set) 
     122     
     123    def get_inactive_query_set(self, now=None): 
     124        return self.get_query_set().exclude(self.get_active_q(now=now)) 
     125    inactive = property(get_inactive_query_set) 
     126     
    140127    def get_site_query_set(self, site_id=None): 
    141         if site_id == None: 
    142             site_id = settings.SITE_ID 
    143128        return self.get_query_set().filter(self.get_site_q(site_id=site_id)) 
    144129    on_site = property(get_site_query_set) 
    145130     
    146     def get_active_site_q(self, now=None, site_id=None): 
    147         if not now: 
    148             now = datetime.datetime.now() 
    149         if site_id == None: 
    150             site_id = settings.SITE_ID 
    151         return self.get_active_q(now=now) & self.get_site_q(site_id=site_id) 
    152      
    153     def get_inactive_site_q(self, now=None, site_id=None): 
    154         if not now: 
    155             now = datetime.datetime.now() 
    156         if site_id == None: 
    157             site_id = settings.SITE_ID 
    158         return self.get_inactive_q(now=now) & self.get_site_q(site_id=site_id) 
    159      
    160131    def get_active_site_query_set(self, now=None, site_id=None): 
    161         if not now: 
    162             now = datetime.datetime.now() 
    163         if site_id == None: 
    164             site_id = settings.SITE_ID 
    165132        return self.get_query_set().filter( 
    166133            self.get_active_site_q(now=now, site_id=site_id) 
     
    169136     
    170137    def get_inactive_site_query_set(self, now=None, site_id=None): 
    171         if not now: 
    172             now = datetime.datetime.now() 
    173         if site_id == None: 
    174             site_id = settings.SITE_ID 
    175         return self.get_query_set().filter( 
    176             self.get_inactive_site_q(now=now, site_id=site_id) 
     138        return self.get_query_set().exclude( 
     139            self.get_active_site_q(now=now, site_id=site_id) 
    177140        ) 
    178141    inactive_on_site = property(get_inactive_site_query_set) 
     142     
    179143 
    180144class Publishable(models.Model): 
    181     is_active = models.BooleanField(default=True, blank=True) 
     145    active = models.BooleanField(default=True, blank=True) 
    182146    publish = models.DateTimeField(null=True, blank=True) 
    183147    expire = models.DateTimeField(null=True, blank=True) 
     
    188152    class Meta: 
    189153        abstract = True 
     154     
     155    def is_active(self, now=None): 
     156        active = self.active 
     157        if active: 
     158            if not now: 
     159                now = datetime.datetime.now() 
     160            published = True 
     161            if self.publish and self.publish > now: 
     162                published = False 
     163            if published and self.expire and self.expire < now: 
     164                published = False 
     165            active = published 
     166        return active 
    190167     
    191168 
     
    291268    def update(self, group_hash=None, force_update=False): 
    292269        needs_update = force_update 
    293         if self.is_active and not self.file_exists(): 
     270        if self.active and not self.file_exists(): 
    294271            needs_update = True 
    295272        file_modified = self._get_file_modified_datetime() 
     
    308285        self.mimetype = self.file_mimetype or '' 
    309286        if not self.file_exists(): 
    310             self.is_active = False 
     287            self.active = False 
    311288        super(MediaFile, self).save() 
    312289        if create and not self.sites.count(): 
     
    788765                        self.relative_path, requested_size 
    789766                    ) 
    790                     relative_path = thumbnail.relative_dest 
    791767                    imagefile, created = \ 
    792768                        ImageFile.objects.get_or_create_from_path( 
    793                             relative_path
     769                            thumbnail.relative_dest
    794770                            master=self, 
    795771                            sites=self.sites.all() 
     
    865841    sender=ImageFileUpload 
    866842) 
     843 
     844 
     845class ArchiveFile(MediaFile): 
     846    trackfiles = models.ManyToManyField(TrackFile) 
     847    imagefiles = models.ManyToManyField(ImageFile) 
     848     
     849    def get_absolute_url(self): 
     850        return reverse( 
     851            'djedna_downloadfile_detail', 
     852            kwargs={'downloadfile_id' : self.id} 
     853        ) 
     854     
     855    def get_models(self): 
     856        tracks = [] 
     857        artists = [] 
     858        albums = [] 
     859        for trackfile in self.trackfiles.all(): 
     860            track = trackfile.track 
     861            artist = trackfile.track.artist 
     862            album = trackfile.track.album 
     863            if track and track not in tracks: 
     864                tracks.append(track) 
     865            if artist and artist not in artists: 
     866                artists.append(artist) 
     867            if album and album not in albums: 
     868                albums.append(album) 
     869        return tracks, albums, artists 
     870        trackfiles = self.trackfiles.filter(TrackFile.objects.get_active_q()) 
     871        tracks = Track.objects.filter( 
     872            id__in=[trackfile.track.id for trackfile in trackfiles] 
     873        ) 
     874     
     875    def remove_archive(self): 
     876        if self.file_exists(): 
     877            mediaserver.remove_media(self.relative_path) 
     878         
     879    def generate_archive(self): 
     880        self.remove_archive() 
     881        archive = None 
     882        try: 
     883            archive = zipfile.ZipFile(self.path, mode='w') 
     884            for imagefile in self.imagefiles.all(): 
     885                arcname = smart_str( 
     886                    os.path.join(u'images', imagefile.filename), 
     887                    errors='ignore' 
     888                ) 
     889                archive.write(imagefile.path, arcname=arcname) 
     890            tracks, albums, artists = self.get_models() 
     891            for trackfile in self.trackfiles.all(): 
     892                track = trackfile.track 
     893                filename = u"%s" % track.number 
     894                if len(albums) > 1 and track.album: 
     895                    filename = "%s-%s" % (filename, track.album.slug) 
     896                if len(artists) > 1: 
     897                    filename = "%s-%s" % (filename, track.artist.slug) 
     898                arcname = smart_str( 
     899                    os.path.join( 
     900                        u'tracks', '%s-%s' % (filename, trackfile.filename) 
     901                    ), 
     902                    errors='ignore' 
     903                ) 
     904                archive.write(trackfile.path, arcname=arcname) 
     905        finally: 
     906            if archive: 
     907                archive.close() 
     908     
     909    def get_media_url(self, user=None, query_auth=None, expires_in=None): 
     910        if not self.file_exists(): 
     911            self.generate_archive() 
     912        return super(DownloadFile, self).get_media_url( 
     913            user=user, query_auth=query_auth, expires_in=expires_in 
     914        ) 
     915     
    867916 
    868917 
     
    904953                album.add_artist(artist) 
    905954        return (track, track_created) 
     955     
     956    def get_active_q(self, now=None): 
     957        if not now: 
     958            now = datetime.datetime.now() 
     959        super_active_q = super(TrackManager, self).get_active_q(now=now) 
     960        artist_published_q = \ 
     961            models.Q(artist__publish__isnull=True) | \ 
     962            models.Q(artist__publish__lte=now) 
     963        artist_not_expired_q = \ 
     964            models.Q(artist__expire__isnull=True) | \ 
     965            models.Q(artist__expire__gte=now) 
     966        artist_active_q = \ 
     967            models.Q(artist__active=True) & \ 
     968            artist_published_q & \ 
     969            artist_not_expired_q 
     970        album_published_q = \ 
     971            models.Q(album=None) | \ 
     972            models.Q(album__publish__isnull=True) | \ 
     973            models.Q(album__publish__lte=now) 
     974        album_not_expired_q = \ 
     975            models.Q(album=None) | \ 
     976            models.Q(album__expire__isnull=True) | \ 
     977            models.Q(album__expire__gte=now) 
     978        album_active_q = \ 
     979            (models.Q(album=None) | models.Q(album__active=True)) & \ 
     980            album_published_q & \ 
     981            album_not_expired_q 
     982        return super_active_q & artist_active_q & album_active_q 
    906983     
    907984 
     
    9681045    calculated_slug = property(_get_calculated_slug) 
    9691046     
     1047    def is_active(self, now=None): 
     1048        active = super(Track, self).is_active(now=now) 
     1049        if active: 
     1050            active = self.artist.is_active(now=now) 
     1051            if active and self.album: 
     1052                active = self.album.is_active(now=now) 
     1053        return active 
     1054     
    9701055    def update(self): 
    9711056        needs_update = False 
     
    9891074class AlbumManager(PublishableManager): 
    9901075    pass 
    991  
     1076    # def get_artists_active_q(self, now=None): 
     1077    #     if not now: 
     1078    #         now = datetime.datetime.now() 
     1079    #     artists_active_q = \ 
     1080    #         models.Q( 
     1081    #             artists__active=True, 
     1082    #             artists__publish__isnull=True, 
     1083    #             artists__expire__isnull=True 
     1084    #         ) | \ 
     1085    #         models.Q( 
     1086    #             artists__active=True, 
     1087    #             artists__publish__lte=now, 
     1088    #             artists__expire__isnull=True 
     1089    #         ) | \ 
     1090    #         models.Q( 
     1091    #             artists__active=True, 
     1092    #             artists__publish__isnull=True, 
     1093    #             artists__expire__gte=now 
     1094    #         ) | \ 
     1095    #         models.Q( 
     1096    #             artists__active=True, 
     1097    #             artists__publish__lte=now, 
     1098    #             artists__expire__gte=now 
     1099    #         ) 
     1100    #     return artists_active_q 
     1101    #  
     1102    # def get_active_query_set(self, now=None): 
     1103    #     super_query_set = \ 
     1104    #         super(AlbumManager, self).get_active_query_set(now=now) 
     1105    #     return super_query_set.filter(self.get_artists_active_q(now=now)).distinct() 
     1106    # active = property(get_active_query_set) 
     1107    #  
     1108    # def get_inactive_query_set(self, now=None): 
     1109    #     super_query_set = \ 
     1110    #         super(AlbumManager, self).get_inactive_query_set(now=now).distinct() 
     1111    #     active_query_set = self.get_query_set().filter(self.get_artists_active_q(now=now)).distinct() 
     1112    #     inactive_query_set = self.get_query_set().exclude(self.get_artists_active_q(now=now)).distinct() 
     1113    #     for album in self.get_query_set(): 
     1114    #         log.info("ALL: %s" % album) 
     1115    #     for album in super_query_set: 
     1116    #         log.info("SUPER: %s" % album) 
     1117    #     for album in active_query_set: 
     1118    #         log.info("ACTIVE ARTISTS: %s" % album) 
     1119    #     for album in inactive_query_set: 
     1120    #         log.info("INACTIVE ARTISTS: %s" % album) 
     1121    #     return super_query_set | inactive_query_set 
     1122    # inactive = property(get_inactive_query_set) 
     1123    #  
     1124    # def get_active_site_query_set(self, now=None, site_id=None): 
     1125    #     super_query_set = \ 
     1126    #         super(AlbumManager, self).get_active_site_query_set( 
     1127    #             now=now, site_id=site_id 
     1128    #         ) 
     1129    #     return super_query_set.distinct() 
     1130    # active_on_site = property(get_active_site_query_set) 
     1131    #  
     1132    # def get_inactive_site_query_set(self, now=None, site_id=None): 
     1133    #     super_query_set = \ 
     1134    #         super(AlbumManager, self).get_inactive_site_query_set( 
     1135    #             now=now, site_id=site_id 
     1136    #         ) 
     1137    #     return super_query_set.distinct() 
     1138    # inactive_on_site = property(get_inactive_site_query_set) 
     1139    #  
     1140    #  
    9921141class AlbumCurrentSiteManager(CurrentSiteManager, AlbumManager): 
    9931142    pass 
     
    10801229            self.update() 
    10811230     
     1231    # def is_active(self, now=None): 
     1232    #     active = super(Album, self).is_active(now=now) 
     1233    #     if active: 
     1234    #         for artist in self.artists.all(): 
     1235    #             active = artist.is_active(now=now) 
     1236    #             if active: 
     1237    #                 break 
     1238    #     return active 
     1239    #  
    10821240    def update(self): 
    10831241        needs_update = False 
  • trunk/djedna/catalog2/tests.py

    r498 r499  
    250250        ) 
    251251        self.failUnless(trackfile) 
    252         self.failUnless(trackfile.is_active) 
     252        self.failUnless(trackfile.active) 
     253        self.failUnless(trackfile.is_active()) 
    253254        self.failUnlessEqual(trackfile.mimetype, 'audio/mpeg') 
    254255        self.failUnlessEqual(trackfile.path, FILE1_MP3) 
     
    305306        self.failUnlessEqual(track.year, u'2007') 
    306307        self.failUnlessEqual(track.length, 23) 
    307         self.failUnless(track.is_active) 
     308        self.failUnless(track.active) 
     309        self.failUnless(track.is_active()) 
    308310        self.failUnlessEqual(track.image, trackfile.image) 
    309311        # Album 
     
    320322            album.latest_track_modified_on_site, track.updated 
    321323        ) 
    322         self.failUnless(album.is_active) 
     324        self.failUnless(album.active) 
     325        self.failUnless(album.is_active()) 
    323326        self.failUnlessEqual(album.image, trackfile.image) 
    324327        # Artist 
     
    326329        self.failUnlessEqual(artist.name, u'Artist One') 
    327330        self.failUnlessEqual(artist.latest_track_modified, track.updated) 
    328         self.failUnless(album.is_active) 
     331        self.failUnless(album.active) 
     332        self.failUnless(album.is_active()) 
    329333        self.failUnlessEqual(artist.sort_name, u'artist one') 
    330334        self.failUnlessEqual(artist.track_count, 1) 
     
    340344            artist.latest_album_modified_on_site, album.updated 
    341345        ) 
    342         self.failUnless(artist.is_active) 
     346        self.failUnless(artist.active) 
     347        self.failUnless(artist.is_active()) 
    343348        self.failUnlessEqual(artist.image, trackfile.image) 
    344349     
     
    421426        trackfile, created = TrackFile.objects.get_or_create_from_path(relative_path) 
    422427        self.failUnless(trackfile) 
    423         self.failIf(trackfile.is_active) 
     428        self.failIf(trackfile.active) 
     429        self.failIf(trackfile.is_active()) 
    424430        self.failUnless(created) 
    425431        self.failUnlessEqual(trackfile.relative_dirpath, BOGUS_ALBUM_REL) 
     
    453459                          TrackFile.objects.get, 
    454460                          relative_path=relative_path, 
    455                           is_active=True) 
     461                          active=True) 
    456462     
    457463    def test_get_in_path(self): 
     
    487493            trackfiles = TrackFile.objects.filter( 
    488494                group_hash=group_hash, 
    489                 is_active=True 
     495                active=True 
    490496            ) 
    491497            self.failUnlessEqual( 
     
    515521            self.failUnlessEqual(trackfile, trackfiles[0]) 
    516522            trackfile = trackfiles[0] 
    517             self.failIf(trackfile.is_active) 
     523            self.failIf(trackfile.active) 
     524            self.failIf(trackfile.is_active()) 
    518525            # Touch a file 
    519526            trackfiles = TrackFile.objects.filter( 
    520                 is_active=True 
     527                active=True 
    521528            ) 
    522529            trackfile = trackfiles[0] 
     
    567574        self.failUnlessEqual(track.year, u'2007') 
    568575        self.failUnlessEqual(track.length, 23) 
    569         self.failUnless(track.is_active) 
     576        self.failUnless(track.active) 
     577        self.failUnless(track.is_active()) 
    570578        # Try to add the previous file again 
    571579        group_hash = TrackFile.objects.add_from_path(FILE1_MP3_REL) 
     
    595603                self.failUnless(added_track) 
    596604                self.failUnless(added_artist) 
    597                 self.failUnless(added_track.is_active) 
     605                self.failUnless(added_track.active) 
     606                self.failUnless(added_track.is_active()) 
    598607                self.failUnless(added_image) 
    599608                self.failUnlessEqual(added_artist, artist) 
     
    11251134        Artist.objects.get_or_create(name='Artist One* ') 
    11261135        artist, created = Artist.objects.get_or_create(name='Inactive Artist') 
    1127         artist.is_active = False 
     1136        artist.active = False 
    11281137        artist.save() 
    11291138     
     
    12031212        album.add_artist(artist1) 
    12041213        album.add_artist(artist2) 
     1214        album, created = Album.objects.get_or_create(title='Album Two') 
     1215        album.add_artist(artist2) 
    12051216        album, created = Album.objects.get_or_create(title='Inactive Album') 
    1206         album.is_active = False 
     1217        album.active = False 
    12071218        album.save() 
    12081219     
     
    12111222     
    12121223    def test_setup(self): 
    1213         self.failUnlessEqual(Album.objects.count(), 6
     1224        self.failUnlessEqual(Album.objects.count(), 7
    12141225        album, created = Album.objects.get_or_create(title='Album One') 
    12151226        self.failUnlessEqual(album.track_count, 0) 
     
    12191230     
    12201231    def test_active(self): 
    1221         self.failUnlessEqual(Album.objects.active.count(), 5
     1232        self.failUnlessEqual(Album.objects.active.count(), 6
    12221233     
    12231234    def test_inactive(self): 
     1235        self.failUnlessEqual(Album.objects.active.count(), 6) 
    12241236        self.failUnlessEqual(Album.objects.inactive.count(), 1) 
    12251237     
     1238    # def test_inactive_artist(self): 
     1239    #     artist = Artist.objects.get(name='Artist One') 
     1240    #     artist.active = False 
     1241    #     artist.save() 
     1242    #     self.failUnlessEqual(Album.objects.active.count(), 3) 
     1243    #     self.failUnlessEqual(Album.objects.inactive.count(), 4) 
     1244    #     count = 0 
     1245    #     for album in Album.objects.all(): 
     1246    #         if album.is_active(): 
     1247    #             count += 1 
     1248    #     self.failUnlessEqual(count, Album.objects.active.count()) 
     1249    #  
    12261250    def test_slug(self): 
    12271251        album1, created = Album.objects.get_or_create(title='Album One') 
     
    13131337        track1.trackfiles.add(trackfile1) 
    13141338        track1.trackfiles.add(trackfile2) 
    1315         track1.is_active = True 
     1339        track1.active = True 
    13161340        track1.save() 
    13171341        track2, created = Track.objects.get_or_create( 
     
    13191343        ) 
    13201344        track2.trackfiles.add(trackfile3) 
    1321         track2.is_active = True 
     1345        track2.active = True 
    13221346        track2.save() 
    13231347        track3, created = Track.objects.get_or_create( 
     
    13251349        ) 
    13261350        track3.trackfiles.add(trackfile4) 
    1327         track3.is_active = True 
     1351        track3.active = True 
    13281352        track3.save() 
    13291353        track4, created = Track.objects.get_or_create( 
    13301354            title='Inactive Track', artist=artist1 
    13311355        ) 
    1332         track4.is_active = False 
     1356        track4.active = False 
    13331357        track4.save() 
     1358        delta = datetime.timedelta(minutes=10) 
     1359        now = datetime.datetime.now() 
     1360        past = now - delta 
     1361        future = now + delta 
     1362        track, created = Track.objects.get_or_create( 
     1363            title='Unpublished Track', artist=artist1 
     1364        ) 
     1365        track.active = True 
     1366        track.publish = future 
     1367        track.expire = None 
     1368        track.save() 
     1369        track, created = Track.objects.get_or_create( 
     1370            title='Published Track1', artist=artist1 
     1371        ) 
     1372        track.active = True 
     1373        track.publish = past 
     1374        track.expire = None 
     1375        track.save() 
     1376        track, created = Track.objects.get_or_create( 
     1377            title='Published Track2', artist=artist1 
     1378        ) 
     1379        track.active = True 
     1380        track.publish = past 
     1381        track.expire = future 
     1382        track.save() 
     1383        track, created = Track.objects.get_or_create( 
     1384            title='Expired Track', artist=artist1 
     1385        ) 
     1386        track.active = True 
     1387        track.publish = None 
     1388        track.expire = past 
     1389        track.save() 
     1390        track, created = Track.objects.get_or_create( 
     1391            title='Unexpired Track', artist=artist1 
     1392        ) 
     1393        track.active = True 
     1394        track.publish = None 
     1395        track.expire = future 
     1396        track.save() 
    13341397     
    13351398    def tearDown(self): 
     
    13391402     
    13401403    def test_setup(self): 
    1341         self.failUnlessEqual(Track.objects.count(), 4
     1404        self.failUnlessEqual(Track.objects.count(), 9
    13421405        track = Track.objects.get(title='Track One') 
    13431406        self.failUnlessEqual(track.trackfiles.count(), 2) 
    13441407     
    13451408    def test_active(self): 
    1346         self.failUnlessEqual(Track.objects.active.count(), 3) 
     1409        self.failUnlessEqual(Track.objects.active.count(), 6) 
     1410        count = 0 
     1411        for track in Track.objects.all(): 
     1412            if track.is_active(): 
     1413                count += 1 
     1414        self.failUnlessEqual(count, Track.objects.active.count()) 
    13471415     
    13481416    def test_inactive(self): 
    1349         self.failUnlessEqual(Track.objects.inactive.count(), 1) 
     1417        self.failUnlessEqual(Track.objects.inactive.count(), 3) 
     1418        count = 0 
     1419        for track in Track.objects.all(): 
     1420            if not track.is_active(): 
     1421                count += 1 
     1422        self.failUnlessEqual(count, Track.objects.inactive.count()) 
     1423     
     1424    def test_inactive_artist(self): 
     1425        artist = Artist.objects.get(name='Artist Two') 
     1426        artist.active = False 
     1427        artist.save() 
     1428        self.failUnlessEqual(Track.objects.active.count(), 5) 
     1429        self.failUnlessEqual(Track.objects.inactive.count(), 4) 
     1430        count = 0 
     1431        for track in Track.objects.all(): 
     1432            if track.is_active(): 
     1433                count += 1 
     1434        self.failUnlessEqual(count, Track.objects.active.count()) 
     1435     
     1436    def test_inactive_album(self): 
     1437        album = Album.objects.get(title='Album One') 
     1438        album.active = False 
     1439        album.save() 
     1440        self.failUnlessEqual(Track.objects.active.count(), 5) 
     1441        self.failUnlessEqual(Track.objects.inactive.count(), 4) 
     1442        count = 0 
     1443        for track in Track.objects.all(): 
     1444            if track.is_active(): 
     1445                count += 1 
     1446        self.failUnlessEqual(count, Track.objects.active.count()) 
    13501447     
    13511448    def test_slug(self): 
     
    13781475        TrackFile.objects.add_from_path(ALBUM1_REL) 
    13791476        trackfile = TrackFile.objects.get(relative_path=FILE2_MP3_REL) 
    1380         trackfile.track.is_active = False 
     1477        trackfile.track.active = False 
    13811478        trackfile.track.save() 
    13821479     
     
    15601657        self.failIf(imagefile.is_jpg()) 
    15611658        self.failIf(imagefile.is_gif()) 
    1562         self.failIf(imagefile.is_active) 
     1659        self.failIf(imagefile.active) 
     1660        self.failIf(imagefile.is_active()) 
    15631661        self.failUnlessEqual(imagefile.get_absolute_url(), 
    15641662            reverse('djedna_imagefile_detail',