use directories and allow filetypes other than FLAC
[audio.git] / apps / archive / forms.py
index 772ec0a..cdc416e 100755 (executable)
@@ -1,20 +1,24 @@
+from datetime import datetime
 import os
 import os.path
-from datetime import datetime
 
 from django import forms
 from django.utils.translation import ugettext_lazy as _
 import mutagen
 
 from archive.models import Audiobook
-from archive.settings import FILES_PATH
-from archive.utils import ExistingFile
+from archive.settings import FILES_PATH, NEW_PATH
+from archive.utils import ExistingFile, sha1_file
 
 class AudiobookForm(forms.ModelForm):
     class Meta:
         model = Audiobook
 
     def save(self, commit=True, path=None):
+        """ Performs normal save, with given file as an source audiobook.
+
+            `path' is relative to NEW_PATH.
+        """
         m = super(AudiobookForm, self).save(commit=False)
         m.modified = datetime.now()
 
@@ -23,8 +27,15 @@ class AudiobookForm(forms.ModelForm):
             if not os.path.isdir(FILES_PATH):
                 os.makedirs(FILES_PATH)
             # save the file in model
-            m.source_file.save(os.path.basename(path), ExistingFile(path))
+
+            abs_path = os.path.join(NEW_PATH, path)
+            m.source_file.save(
+                path,
+                ExistingFile(abs_path))
+
+            f = open(m.source_file.path)
+            m.source_sha1 = sha1_file(f)
+            f.close()
 
         if commit:
             m.save()
-