2 from django.db import models
5 class Bookmark(models.Model):
6 uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
7 user = models.ForeignKey('auth.User', models.CASCADE)
8 book = models.ForeignKey('catalogue.Book', models.CASCADE)
9 anchor = models.CharField(max_length=100, blank=True)
10 created_at = models.DateTimeField(auto_now_add=True)
11 note = models.TextField(blank=True)
18 return self.created_at.timestamp()
21 return f'{self.book.slug}/{self.anchor}'
23 def get_for_json(self):
26 'anchor': self.anchor,
28 'created_at': self.created_at,
32 class Quote(models.Model):
33 uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
34 user = models.ForeignKey('auth.User', models.CASCADE)
35 book = models.ForeignKey('catalogue.Book', models.CASCADE)
36 created_at = models.DateTimeField(auto_now_add=True)
37 start_elem = models.CharField(max_length=100, blank=True)
38 end_elem = models.CharField(max_length=100, blank=True)
39 start_offset = models.IntegerField(null=True, blank=True)
40 end_offset = models.IntegerField(null=True, blank=True)
41 text = models.TextField(blank=True)
46 def get_for_json(self):
49 'startElem': self.start_elem,
50 'endElem': self.end_elem,
51 'startOffset': self.start_offset,
52 'startOffset': self.end_offset,
53 'created_at': self.created_at,
56 def from_path(elem, path):
58 if e.text: yield (e, 'text')
60 if child.attrib.get('id') != 'toc':
66 elem = list(child_nodes(elem))[n]