update librarian
[redakcja.git] / apps / catalogue / helpers.py
index a97a040..e88c7e2 100644 (file)
@@ -1,14 +1,17 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of MIL/PEER, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 from datetime import date
 from functools import wraps
 from os.path import join
-from os import listdir, stat
+from os import listdir
 from shutil import move, rmtree
 from django.conf import settings
 import re
 import filecmp
 
-from django.db.models import Count
-
 
 def active_tab(tab):
     """
@@ -46,8 +49,6 @@ def parse_isodate(isodate):
 
 class GalleryMerger(object):
     def __init__(self, dest_gallery, src_gallery):
-        assert isinstance(dest_gallery, str)
-        assert isinstance(src_gallery, str)
         self.dest = dest_gallery
         self.src = src_gallery
         self.dest_size = None
@@ -70,6 +71,11 @@ class GalleryMerger(object):
         m = not always and re.match(r"^([0-9])-", name)
         return "%1d-%s" % (prefix, m and name[2:] or name)
 
+    @property
+    def was_merged(self):
+        """Check if we have gallery size recorded"""
+        return self.dest_size is not None
+
     def merge(self):
         if not self.dest:
             return self.src
@@ -77,12 +83,13 @@ class GalleryMerger(object):
             return self.dest
 
         files = listdir(self.path(self.dest))
+        files.sort()
         self.dest_size = len(files)
         files_other = listdir(self.path(self.src))
+        files_other.sort()
         self.src_size = len(files_other)
 
         if files and files_other:
-            print "compare %s with %s" % (files[-1], files_other[0])
             if filecmp.cmp(
                     join(self.path(self.dest), files[-1]),
                     join(self.path(self.src), files_other[0]),
@@ -101,7 +108,8 @@ class GalleryMerger(object):
         for f in files:
             p = self.get_prefix(f)
             if p:
-                if p > last_pfx: last_pfx = p
+                if p > last_pfx:
+                    last_pfx = p
             else:
                 files_prefixed = False
                 break
@@ -117,7 +125,7 @@ class GalleryMerger(object):
         for f in files_other:
             pfx = self.get_prefix(f)
             if pfx is not None:
-                if not pfx in prefixes:
+                if pfx not in prefixes:
                     last_pfx += 1
                     prefixes[pfx] = last_pfx
                 renamed_files_other[f] = self.set_prefix(f, prefixes[pfx])
@@ -132,14 +140,21 @@ class GalleryMerger(object):
                 renamed_files_other[f] = self.set_prefix(f, 1, True)
 
         # finally, move / rename files.
-        from nose.tools import set_trace
-        #        set_trace()
         for frm, to in renamed_files.items():
             move(join(self.path(self.dest), frm),
-                        join(self.path(self.dest), to))
+                 join(self.path(self.dest), to))
         for frm, to in renamed_files_other.items():
             move(join(self.path(self.src), frm),
-                        join(self.path(self.dest), to))            
+                 join(self.path(self.dest), to))
 
         rmtree(join(self.path(self.src)))
         return self.dest
+
+
+# Maybe subclass?
+def sstdocument(text):
+    from librarian.document import Document
+
+    return Document.from_string(
+        text,
+        )