Quotes API
[wolnelektury.git] / src / bookmarks / models.py
index 8747ffb..ca53cd6 100644 (file)
@@ -34,16 +34,13 @@ class Bookmark(Syncable, models.Model):
             audio_l = self.book.get_audio_length()
         except:
             audio_l = 60
+
         if self.anchor:
             self.mode = 'text'
-            if audio_l:
-                self.audio_timestamp = audio_l * .4
+            self.audio_timestamp = self.book.sync_elid(self.anchor)
         if self.audio_timestamp:
             self.mode = 'audio'
-            if self.audio_timestamp > audio_l:
-                self.audio_timestamp = audio_l
-            if audio_l:
-                self.anchor = 'f20'
+            self.anchor = self.book.sync_ts(self.audio_timestamp) or ''
         return super().save(*args, **kwargs)
 
     @classmethod
@@ -118,7 +115,7 @@ class Bookmark(Syncable, models.Model):
         }
 
 
-class Quote(models.Model):
+class Quote(Syncable, models.Model):
     uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
     user = models.ForeignKey('auth.User', models.CASCADE)
     book = models.ForeignKey('catalogue.Book', models.CASCADE)
@@ -128,10 +125,21 @@ class Quote(models.Model):
     start_offset = models.IntegerField(null=True, blank=True)
     end_offset = models.IntegerField(null=True, blank=True)
     text = models.TextField(blank=True)
+    updated_at = models.DateTimeField(auto_now=True)
+    reported_timestamp = models.DateTimeField(default=now)
+    deleted = models.BooleanField(default=False)
+
+    syncable_fields = [
+        'deleted',
+    ]
 
     def __str__(self):
         return str(self.uuid)
 
+    @property
+    def timestamp(self):
+        return self.updated_at.timestamp()
+
     def get_for_json(self):
         return {
             'uuid': self.uuid,
@@ -154,6 +162,3 @@ def from_path(elem, path):
         n = path.pop(0)
         elem = list(child_nodes(elem))[n]
     return elem
-            
-            
-