self.audio_timestamp = self.book.sync_elid(self.anchor)
if self.audio_timestamp:
self.mode = 'audio'
- self.anchor = self.book.sync_ts(self.audio_timestamp)
+ self.anchor = self.book.sync_ts(self.audio_timestamp) or ''
return super().save(*args, **kwargs)
@classmethod
}
-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)
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,
n = path.pop(0)
elem = list(child_nodes(elem))[n]
return elem
-
-
-