22c426e436bf93bf9cf23b2aca409deb88337a5e
[audio.git] / src / archive / forms.py
1 from datetime import datetime
2 import os
3 import os.path
4
5 from django import forms
6 from django.utils.translation import gettext_lazy as _
7 import mutagen
8 from django.utils.encoding import force_bytes
9
10 from archive.models import Audiobook
11 from archive.settings import FILES_PATH, NEW_PATH
12 from archive.utils import ExistingFile, sha1_file
13
14 class AudiobookForm(forms.ModelForm):
15     class Meta:
16         model = Audiobook
17         exclude = []
18
19     def save(self, commit=True, path=None):
20         """ Performs normal save, with given file as an source audiobook.
21
22             `path' is relative to NEW_PATH.
23         """
24         m = super(AudiobookForm, self).save(commit=False)
25         m.modified = datetime.now()
26
27         if path:
28             # adding a new audiobook
29             if not os.path.isdir(FILES_PATH):
30                 os.makedirs(FILES_PATH)
31             # save the file in model
32
33             abs_path = os.path.join(NEW_PATH, path)
34             m.source_file.save(
35                 path,
36                 ExistingFile(abs_path))
37
38 #            f = open(force_bytes(m.source_file.path))
39 #            m.source_sha1 = sha1_file(f)
40 #            f.close()
41
42         if commit:
43             m.save()