Index: assetpackager/templatetags/asset_include.py =================================================================== --- assetpackager/templatetags/asset_include.py (revision 6) +++ assetpackager/templatetags/asset_include.py (working copy) @@ -3,13 +3,11 @@ from django.conf import settings import time +from sha import sha -from apps.assetpackager.models import Javascript, CSS, Asset -from apps.assetpackager.jsmin import JavascriptMinify -from apps.assetpackager.csstidy import CSSTidy -#from assetpackager.models import Javascript, CSS, Asset -#from assetpackager.jsmin import JavascriptMinify -#from assetpackager.csstidy import CSSTidy +from assetpackager.models import Javascript, CSS, Asset +from assetpackager.jsmin import JavascriptMinify +from assetpackager.csstidy import CSSTidy register = Library() @@ -21,16 +19,16 @@ self.files = [] if self.filenames[0] == ":base": #Uncomment this if you are not using the Sites Application - #self.files = Javascript.objects.all() - self.files = Javascript.on_site.all() + self.files = Javascript.objects.all() + #self.files = Javascript.on_site.all() else: self.filenames = ["js/" + name for name in self.filenames] #Uncomment this if you are not using the Sites Application - #self.files = Javascript.objects.filter(javascript__in=self.filenames) - self.files = Javascript.on_site.filter(javascript__in=self.filenames) + self.files = Javascript.objects.filter(javascript__in=self.filenames).order_by('order') + #self.files = Javascript.on_site.filter(javascript__in=self.filenames) #Ok, we have the files we need to check - if settings.DEBUG: + if not settings.DEBUG: #This prints out each js file individualy return self.compute_individual() @@ -57,20 +55,25 @@ _hash = sha(data).hexdigest() #Uncomment this if you are not using the Sites Application - #asset = Asset.objects.get_or_create(name=name, asset_type="js")[0] - asset = Asset.on_site.get_or_create(name=name, asset_type="js")[0] - + asset = Asset.objects.get_or_create(name=name, asset_type="js")[0] + #asset = Asset.on_site.get_or_create(name=name, asset_type="js")[0] date = time.mktime(asset.created_on.timetuple()) #Check the Hash - if asset._hash == _hash: - #Oh, they are the same, great just give them the existing file - return '' + "\n" + #if asset._hash == _hash: + # #Oh, they are the same, great just give them the existing file + # return SafeUnicode('' + "\n") #The hash has changed so we need to create it. try: - os.remove(settings.MEDIA_ROOT + "js/base_" + date + '.js') - os.remove(settings.MEDIA_ROOT + "js/base.js") + try: + os.remove(settings.MEDIA_ROOT + "js/base_" + str(date) + '.js') + except: + pass + try: + os.remove(settings.MEDIA_ROOT + "js/base.js") + except: + pass f = open(settings.MEDIA_ROOT + "js/base.js", "w") f.write(data) f.close() @@ -82,8 +85,8 @@ #Compute the new date since we saved the asset, thus updated it's date date = time.mktime(asset.created_on.timetuple()) try: - inp = f.open(settings.MEDIA_ROOT + "js/base.js", "r") - outp = f.open(settings.MEDIA_ROOT + "js/base_" + date + '.js', "w") + inp = open(settings.MEDIA_ROOT + "js/base.js", "r") + outp = open(settings.MEDIA_ROOT + "js/base_" + str(date) + '.js', "w") jsm = JavascriptMinify() jsm.minify(inp, outp) @@ -91,7 +94,7 @@ inp.close() outp.close() #Ok, the file has beencreated and our hash has been updated, now return the JS code - return '' + "\n" + return SafeUnicode('' + "\n") def javascript_include_merged(parser, token): bits = token.contents.split() @@ -107,13 +110,13 @@ self.files = [] if self.filenames[0] == ":base": #Uncomment this if you are not using the Sites Application - #self.files = CSS.objects.all() - self.files = CSS.on_site.all() + self.files = CSS.objects.all() + #self.files = CSS.on_site.all() else: self.filenames = ["css/" + name for name in self.filenames] #Uncomment this if you are not using the Sites Application - #self.files = CSS.objects.filter(javascript__in=self.filenames) - self.files = CSS.on_site.filter(css__in=self.filenames) + self.files = CSS.objects.filter(css__in=self.filenames) + #self.files = CSS.on_site.filter(css__in=self.filenames) #Ok, we have the files we need to check if settings.DEBUG: @@ -142,15 +145,23 @@ f.close() _hash = sha(data).hexdigest() - asset = Asset.on_site.get_or_create(name=name, asset_type="css")[0] + #asset = Asset.on_site.get_or_create(name=name, asset_type="css")[0] + asset = Asset.objects.get_or_create(name=name, asset_type="css")[0] + date = time.mktime(asset.created_on.timetuple()) if asset._hash == _hash: - return '' + "\n" + return SafeUnicode('' + "\n") #The has has changed so we need to create it. try: - os.remove(settings.MEDIA_ROOT + "css/base_" + date + '.css') - os.remove(settings.MEDIA_ROOT + "css/base.css") + try: + os.remove(settings.MEDIA_ROOT + "css/base_" + str(date) + '.css') + except: + pass + try: + os.remove(settings.MEDIA_ROOT + "css/base.css") + except: + pass f = open(settings.MEDIA_ROOT + "css/base.css", "w") f.write(data) except: @@ -164,10 +175,10 @@ tidy = CSSTidy() tidy.parseFile(settings.MEDIA_ROOT + "css/base.css") - tidy.Output('file', settings.MEDIA_ROOT + "css/base_" + date + '.css') + tidy.Output('file', settings.MEDIA_ROOT + "css/base_" + str(date) + '.css') #Ok, the file has beencreated and our hash has been updated, now return the JS code - return '' + "\n" + return SafeUnicode('' + "\n") def css_include_merged(parser, token): bits = token.contents.split() Index: assetpackager/models.py =================================================================== --- assetpackager/models.py (revision 6) +++ assetpackager/models.py (working copy) @@ -3,8 +3,8 @@ from django.conf import settings #For People who want to use the Sites application -from django.contrib.sites.models import Site -from django.contrib.sites.managers import CurrentSiteManager +#from django.contrib.sites.models import Site +#from django.contrib.sites.managers import CurrentSiteManager from sha import sha @@ -14,56 +14,60 @@ asset_type = models.CharField(blank=True, max_length=3, choices=[('css','CSS'),('js', 'Javascript')]) created_on = models.DateTimeField(auto_now=True) #Comment this out if you dont want to use sites - site = models.ForeignKey(Site) + #site = models.ForeignKey(Site) #Site Manager - on_site = CurrentSiteManager() + #on_site = CurrentSiteManager() class Meta: unique_together = ( #Uncomment this and comment out the otherone if you are not using the Site Application - #('name', 'asset_type'), - ('name', 'asset_type', 'site'), + ('name', 'asset_type'), + #('name', 'asset_type', 'site'), ) class Javascript(models.Model): javascript = models.FileField(upload_to="js") order = models.IntegerField(default=0) #Comment this out if you dont want to use sites - site = models.ForeignKey(Site) + #site = models.ForeignKey(Site) #Site Manager - on_site = CurrentSiteManager() + #on_site = CurrentSiteManager() class Meta: ordering = ('order',) - + verbose_name_plural = _('Javascript') + class Admin: fields = ( (_("File"), {'fields': ('javascript','order')}), #Remove this if you are not using Sites Application - (_("Site"), {'fields': ('site',)}), + #(_("Site"), {'fields': ('site',)}), ) - list_display = ('javascript', 'order', 'site') - + #list_display = ('javascript', 'order', 'site') + list_display = ('javascript', 'order') + class CSS(models.Model): css = models.FileField(upload_to="css") order = models.IntegerField(default=0) #Comment this out if you dont want to use sites - site = models.ForeignKey(Site) + #site = models.ForeignKey(Site) #Site Manager - on_site = CurrentSiteManager() + #on_site = CurrentSiteManager() class Meta: ordering = ('order',) - + verbose_name_plural = _('CSS') + class Admin: fields = ( (_("File"), {'fields': ('css','order')}), #Remove this if you are not using Sites Application - (_("Site"), {'fields': ('site',)}), + #(_("Site"), {'fields': ('site',)}), ) - list_display = ('css', 'order', 'site') \ No newline at end of file + #list_display = ('css', 'order', 'site') + list_display = ('css', 'order')