X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/6b9d2a8ea0a58826f0f30f135a3f7d065b3bb435..eee35e00bf0d0eb3d2a9f08f72c7052962fecbf6:/src/archive/forms.py diff --git a/src/archive/forms.py b/src/archive/forms.py new file mode 100644 index 0000000..81568c6 --- /dev/null +++ b/src/archive/forms.py @@ -0,0 +1,42 @@ +from datetime import datetime +import os +import os.path + +from django import forms +from django.utils.translation import ugettext_lazy as _ +import mutagen +from django.utils.encoding import force_bytes + +from archive.models import Audiobook +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() + + if path: + # adding a new audiobook + if not os.path.isdir(FILES_PATH): + os.makedirs(FILES_PATH) + # save the file in model + + abs_path = os.path.join(NEW_PATH, path) + m.source_file.save( + path, + ExistingFile(abs_path)) + +# f = open(force_bytes(m.source_file.path)) +# m.source_sha1 = sha1_file(f) +# f.close() + + if commit: + m.save()