]> git.0d.be Git - django-panik-nonstop.git/commitdiff
add an error message when trying to double book a diffusion
authorFrédéric Péters <fpeters@0d.be>
Tue, 6 Aug 2019 15:48:27 +0000 (17:48 +0200)
committerFrédéric Péters <fpeters@0d.be>
Tue, 6 Aug 2019 15:48:27 +0000 (17:48 +0200)
nonstop/utils.py
nonstop/views.py

index 5d8ebce6ce13d590fde6eb56685714e9d2ef824a..6df34c1352281ff09f40df6a703cee8b5d2f33fb 100644 (file)
@@ -53,12 +53,17 @@ def is_already_in_soma(diffusion):
         return True
     return os.path.exists(os.path.join(LOCAL_BASE_PATH, get_diffusion_file_path(diffusion)))
 
+class DuplicateDiffusionSlot(Exception):
+    pass
+
 def add_diffusion(diffusion):
     soundfile = diffusion.episode.soundfile_set.filter(fragment=False)[0]
     diffusion_path = get_diffusion_file_path(diffusion)
 
     # copy file
     if os.path.exists(LOCAL_BASE_PATH):
+        if os.path.exists(os.path.join(LOCAL_BASE_PATH, diffusion_path)):
+            raise DuplicateDiffusionSlot()
         os.mkdir(os.path.join(LOCAL_BASE_PATH, diffusion_path))
         shutil.copyfile(soundfile.file.path,
             os.path.join(LOCAL_BASE_PATH, diffusion_path, os.path.basename(soundfile.file.path)))
index f68f827802427d3ce84004ea975fa84347c5869e..5c565194d5abe87d3be006e1e5e313b25c1a83a3 100644 (file)
@@ -351,9 +351,13 @@ class AddDiffusionView(DetailView):
 
     def get(self, request, *args, **kwargs):
         diffusion = self.get_object()
-        utils.add_diffusion(diffusion)
         episode = diffusion.episode
-        messages.info(self.request, _('%s added to soma') % episode.emission.title)
+        try:
+            utils.add_diffusion(diffusion)
+        except utils.DuplicateDiffusionSlot:
+            messages.error(self.request, _('soma slot already in use, the diffusion could not be added.'))
+        else:
+            messages.info(self.request, _('%s added to soma') % episode.emission.title)
         return HttpResponseRedirect(reverse('episode-view', kwargs={
             'emission_slug': episode.emission.slug,
             'slug': episode.slug}))