Stopgap solution for lack of timezone support. Marking a feed as read uses the timestamp of the latest story OR current time, whichever is later.

This commit is contained in:
Samuel Clay 2010-04-09 16:10:23 -04:00
parent d18ee60599
commit 6be96b05d3
5 changed files with 34 additions and 68 deletions

View file

@ -31,12 +31,14 @@ class UserSubscription(models.Model):
super(UserSubscription, self).save(force_insert, force_update, *args, **kwargs)
def mark_feed_read(self):
self.last_read_date = datetime.datetime.now()
self.mark_read_date = datetime.datetime.now()
latest_story = self.feed.stories.order_by('-story_date')[0]
now = datetime.datetime.now()
self.last_read_date = max(now, latest_story.story_date)
self.mark_read_date = max(now, latest_story.story_date)
self.unread_count_negative = 0
self.unread_count_positive = 0
self.unread_count_neutral = 0
self.unread_count_updated = datetime.datetime.now()
self.unread_count_updated = max(now, latest_story.story_date)
self.needs_unread_relcalc = False
self.save()

View file

@ -1,18 +1,4 @@
[
{
"pk": 1,
"model": "reader.usersubscriptionfolders",
"fields": {
"feed": 1,
"user_sub": 1,
"folder": "Blogs",
"user": 1
}
},
{
"pk": 1,
"model": "reader.usersubscription",
@ -20,18 +6,18 @@
"feed": 1,
"unread_count_updated": "2009-08-01 00:23:42",
"mark_read_date": "2009-07-28 23:17:27",
"unread_count": 0,
"unread_count_neutral": 0,
"unread_count_positive": 0,
"unread_count_negative": 0,
"user": 1,
"last_read_date": "2009-07-28 23:17:27"
}
},
{
"pk": 2,
"pk": 1,
"model": "reader.usersubscriptionfolders",
"fields": {
"feed": 2,
"user_sub": 2,
"folder": "Blogs",
"folders": "[{\"Tech\": [4, 5]}, 1, 2, 3]",
"user": 1
}
},
@ -43,22 +29,13 @@
"feed": 2,
"unread_count_updated": "2009-08-01 00:23:42",
"mark_read_date": "2009-07-28 23:17:27",
"unread_count": 0,
"unread_count_neutral": 0,
"unread_count_positive": 0,
"unread_count_negative": 0,
"user": 1,
"last_read_date": "2009-07-28 23:17:27"
}
},
{
"pk": 3,
"model": "reader.usersubscriptionfolders",
"fields": {
"feed": 3,
"user_sub": 3,
"folder": "Blogs",
"user": 1
}
},
{
"pk": 3,
"model": "reader.usersubscription",
@ -66,22 +43,13 @@
"feed": 3,
"unread_count_updated": "2009-08-01 00:23:42",
"mark_read_date": "2009-07-28 23:17:27",
"unread_count": 0,
"unread_count_neutral": 0,
"unread_count_positive": 0,
"unread_count_negative": 0,
"user": 1,
"last_read_date": "2009-07-28 23:17:27"
}
},
{
"pk": 4,
"model": "reader.usersubscriptionfolders",
"fields": {
"feed": 4,
"user_sub": 4,
"folder": "Blogs",
"user": 1
}
},
{
"pk": 4,
"model": "reader.usersubscription",
@ -89,25 +57,13 @@
"feed": 4,
"unread_count_updated": "2009-08-01 00:23:42",
"mark_read_date": "2009-07-28 23:17:27",
"unread_count": 0,
"unread_count_neutral": 0,
"unread_count_positive": 0,
"unread_count_negative": 0,
"user": 1,
"last_read_date": "2009-07-28 23:17:27"
}
},
{
"pk": 5,
"model": "reader.usersubscriptionfolders",
"fields": {
"feed": 5,
"user_sub": 5,
"folder": "Blogs",
"user": 1
}
},
{
"pk": 5,
"model": "reader.usersubscription",
@ -115,7 +71,9 @@
"feed": 5,
"unread_count_updated": "2009-08-01 00:23:42",
"mark_read_date": "2009-07-28 23:17:27",
"unread_count": 0,
"unread_count_neutral": 0,
"unread_count_positive": 0,
"unread_count_negative": 0,
"user": 1,
"last_read_date": "2009-07-28 23:17:27"
}

View file

@ -317,7 +317,7 @@ class StoryAuthor(models.Model):
class Story(models.Model):
'''A feed item'''
story_feed = models.ForeignKey(Feed)
story_feed = models.ForeignKey(Feed, related_name="stories")
story_date = models.DateTimeField()
story_title = models.CharField(max_length=255)
story_content = StoryField(null=True, blank=True)

View file

@ -14,10 +14,10 @@ class FeedTest(TestCase):
self.client.login(username='conesus', password='test')
management.call_command('loaddata', 'gawker1.json', verbosity=0)
response = self.client.get('/reader/refresh_feed', { "feed_id": 1, "force": True })
management.call_command('refresh_feed', force=1, feed=1, daemonize=False)
management.call_command('loaddata', 'gawker2.json', verbosity=0)
response = self.client.get('/reader/refresh_feed', { "feed_id": 1, "force": True })
management.call_command('refresh_feed', force=1, feed=1, daemonize=False)
response = self.client.get('/reader/load_single_feed', { "feed_id": 1 })

View file

@ -1,7 +1,13 @@
from settings import *
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = ':memory:'
DATABASES = {
'default': {
'NAME': ':memory:',
'ENGINE': 'django.db.backends.sqlite3',
'USER': 'newsblur',
'PASSWORD': '',
'HOST': '127.0.0.1',
}
}
TEST_DATABASE_NAME = ":memory:"
# from django.db import connection