fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix likes showing on site
[wolnelektury.git]
/
src
/
social
/
models.py
diff --git
a/src/social/models.py
b/src/social/models.py
index
7f22f97
..
c8d0d10
100644
(file)
--- a/
src/social/models.py
+++ b/
src/social/models.py
@@
-4,7
+4,6
@@
from datetime import datetime
import uuid
from oauthlib.common import urlencode, generate_token
from datetime import datetime
import uuid
from oauthlib.common import urlencode, generate_token
-from pytz import utc
from random import randint
from django.db import models
from django.conf import settings
from random import randint
from django.db import models
from django.conf import settings
@@
-12,7
+11,7
@@
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.core.mail import send_mail
from django.urls import reverse
from django.core.exceptions import ValidationError
from django.core.mail import send_mail
from django.urls import reverse
-from django.utils.timezone import now
+from django.utils.timezone import now
, utc
from catalogue.models import Book
from catalogue.utils import get_random_hash
from wolnelektury.utils import cached_render, clear_cached_renders
from catalogue.models import Book
from catalogue.utils import get_random_hash
from wolnelektury.utils import cached_render, clear_cached_renders
@@
-278,6
+277,11
@@
class Progress(Syncable, models.Model):
return super().save(*args, **kwargs)
return super().save(*args, **kwargs)
+class ActiveManager(models.Manager):
+ def get_queryset(self):
+ return super().get_queryset().filter(deleted=False)
+
+
class UserList(Syncable, models.Model):
slug = models.SlugField(unique=True)
user = models.ForeignKey(User, models.CASCADE)
class UserList(Syncable, models.Model):
slug = models.SlugField(unique=True)
user = models.ForeignKey(User, models.CASCADE)
@@
-290,7
+294,10
@@
class UserList(Syncable, models.Model):
reported_timestamp = models.DateTimeField()
syncable_fields = ['name', 'public', 'deleted']
reported_timestamp = models.DateTimeField()
syncable_fields = ['name', 'public', 'deleted']
-
+
+ objects = ActiveManager()
+ all_objects = models.Manager()
+
def get_absolute_url(self):
return reverse(
'tagged_object_list',
def get_absolute_url(self):
return reverse(
'tagged_object_list',
@@
-352,7
+359,7
@@
class UserList(Syncable, models.Model):
# merge?
lists = list(cls.objects.filter(user=user, favorites=True))
for l in lists[1:]:
# merge?
lists = list(cls.objects.filter(user=user, favorites=True))
for l in lists[1:]:
-
t
.userlistitem_set.all().update(
+
l
.userlistitem_set.all().update(
list=lists[0]
)
l.delete()
list=lists[0]
)
l.delete()
@@
-366,14
+373,23
@@
class UserList(Syncable, models.Model):
return ls.userlistitem_set.filter(deleted=False, book=book).exists()
def append(self, book):
return ls.userlistitem_set.filter(deleted=False, book=book).exists()
def append(self, book):
- # TODO: check for duplicates?
n = now()
n = now()
- item
= self.userlistitem_set.create
(
+ item
s = self.userlistitem_set.filter
(
book=book,
book=book,
- order=(self.userlistitem_set.aggregate(m=models.Max('order'))['m'] or 0) + 1,
- updated_at=n,
- reported_timestamp=n,
)
)
+ if items.exists():
+ items.update(
+ deleted=False,
+ reported_timestamp=n,
+ )
+ item = items.first()
+ else:
+ item = self.userlistitem_set.create(
+ book=book,
+ order=(self.userlistitem_set.aggregate(m=models.Max('order'))['m'] or 0) + 1,
+ updated_at=n,
+ reported_timestamp=n,
+ )
book.update_popularity()
return item
book.update_popularity()
return item
@@
-417,6
+433,9
@@
class UserListItem(Syncable, models.Model):
syncable_fields = ['order', 'deleted', 'book', 'fragment', 'quote', 'bookmark', 'note']
syncable_fields = ['order', 'deleted', 'book', 'fragment', 'quote', 'bookmark', 'note']
+ objects = ActiveManager()
+ all_objects = models.Manager()
+
@classmethod
def create_from_data(cls, user, data):
if data.get('favorites'):
@classmethod
def create_from_data(cls, user, data):
if data.get('favorites'):