App compatibility fix + some error handling.
[wolnelektury.git] / src / api / models.py
index cc71a06..d2716b9 100644 (file)
@@ -45,11 +45,15 @@ class BookUserData(models.Model):
     book = models.ForeignKey(Book)
     user = models.ForeignKey(User)
     complete = models.BooleanField(default=False)
+    last_changed = models.DateTimeField(auto_now=True)
 
-    def get_state(self):
+    @property
+    def state(self):
         return 'complete' if self.complete else 'reading'
 
-    def set_state(self, state):
-        self.complete = state == 'complete'
-
-    state = property(get_state, set_state)
+    @classmethod
+    def update(cls, book, user, state):
+        instance, created = cls.objects.get_or_create(book=book, user=user)
+        instance.complete = state == 'complete'
+        instance.save()
+        return instance