2009-06-16 03:08:55 +00:00
|
|
|
from django.db import models
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
import datetime
|
2010-01-05 16:07:11 +00:00
|
|
|
from apps.rss_feeds.models import Feed, Story, StoryAuthor, Tag
|
2009-11-03 03:52:03 +00:00
|
|
|
|
|
|
|
class FeatureCategory(models.Model):
|
|
|
|
|
|
|
|
user = models.ForeignKey(User)
|
|
|
|
feed = models.ForeignKey(Feed)
|
|
|
|
feature = models.CharField(max_length=255)
|
|
|
|
category = models.CharField(max_length=255)
|
|
|
|
count = models.IntegerField(default=0)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return '%s - %s (%s)' % (self.feature, self.category, self.count)
|
|
|
|
|
|
|
|
class Category(models.Model):
|
|
|
|
|
|
|
|
user = models.ForeignKey(User)
|
|
|
|
feed = models.ForeignKey(Feed)
|
|
|
|
category = models.CharField(max_length=255)
|
|
|
|
count = models.IntegerField(default=0)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return '%s (%s)' % (self.category, self.count)
|
2010-01-05 16:07:11 +00:00
|
|
|
|
2010-01-07 00:04:12 +00:00
|
|
|
|
2010-01-05 16:07:11 +00:00
|
|
|
class ClassifierTitle(models.Model):
|
|
|
|
user = models.ForeignKey(User)
|
2010-01-07 00:04:12 +00:00
|
|
|
score = models.SmallIntegerField()
|
2010-01-05 16:07:11 +00:00
|
|
|
title = models.CharField(max_length=255)
|
|
|
|
feed = models.ForeignKey(Feed)
|
2010-01-12 01:19:37 +00:00
|
|
|
original_story = models.ForeignKey(Story, null=True)
|
2010-01-05 16:07:11 +00:00
|
|
|
creation_date = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return '%s: %s (%s)' % (self.user, self.title, self.feed)
|
|
|
|
|
2010-01-21 13:12:29 -05:00
|
|
|
|
2010-01-05 16:07:11 +00:00
|
|
|
class ClassifierAuthor(models.Model):
|
|
|
|
user = models.ForeignKey(User)
|
2010-01-07 00:04:12 +00:00
|
|
|
score = models.SmallIntegerField()
|
2010-01-05 16:07:11 +00:00
|
|
|
author = models.ForeignKey(StoryAuthor)
|
|
|
|
feed = models.ForeignKey(Feed)
|
2010-01-12 01:19:37 +00:00
|
|
|
original_story = models.ForeignKey(Story, null=True)
|
2010-01-05 16:07:11 +00:00
|
|
|
creation_date = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return '%s: %s (%s)' % (self.user, self.author.author_name, self.feed)
|
2010-01-21 13:12:29 -05:00
|
|
|
|
|
|
|
def apply_classifier(self, story):
|
|
|
|
if story['author'] == self.author:
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
2010-01-05 16:07:11 +00:00
|
|
|
class ClassifierFeed(models.Model):
|
|
|
|
user = models.ForeignKey(User)
|
2010-01-07 00:04:12 +00:00
|
|
|
score = models.SmallIntegerField()
|
2010-01-05 16:07:11 +00:00
|
|
|
feed = models.ForeignKey(Feed)
|
2010-01-12 01:19:37 +00:00
|
|
|
original_story = models.ForeignKey(Story, null=True)
|
2010-01-05 16:07:11 +00:00
|
|
|
creation_date = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
|
|
|
return '%s: %s' % (self.user, self.feed)
|
|
|
|
|
2010-01-21 13:12:29 -05:00
|
|
|
def apply_classifier(self, story):
|
|
|
|
if self.feed == story.feed:
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
2010-01-05 16:07:11 +00:00
|
|
|
class ClassifierTag(models.Model):
|
|
|
|
user = models.ForeignKey(User)
|
2010-01-07 00:04:12 +00:00
|
|
|
score = models.SmallIntegerField()
|
2010-01-05 16:07:11 +00:00
|
|
|
tag = models.ForeignKey(Tag)
|
|
|
|
feed = models.ForeignKey(Feed)
|
2010-01-12 01:19:37 +00:00
|
|
|
original_story = models.ForeignKey(Story, null=True)
|
2010-01-05 16:07:11 +00:00
|
|
|
creation_date = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
|
|
def __unicode__(self):
|
2010-01-21 13:12:29 -05:00
|
|
|
return '%s: %s (%s)' % (self.user, self.tag.name, self.feed)
|
|
|
|
|
|
|
|
def apply_classifier_titles(classifiers, story):
|
|
|
|
for classifier in classifiers:
|
|
|
|
if classifier.title in story['story_title']:
|
|
|
|
# print 'Titles: (%s) %s -- %s' % (classifier.title in story['story_title'], classifier.title, story['story_title'])
|
|
|
|
return classifier.score
|
|
|
|
return 0
|
|
|
|
|
|
|
|
def apply_classifier_feeds(classifiers, feed):
|
|
|
|
for classifier in classifiers:
|
|
|
|
if classifier.feed == feed:
|
|
|
|
# print 'Feeds: %s -- %s' % (classifier.feed, feed)
|
|
|
|
return classifier.score
|
|
|
|
return 0
|
|
|
|
|
|
|
|
def apply_classifier_authors(classifiers, story):
|
|
|
|
for classifier in classifiers:
|
|
|
|
if classifier.author.id == story['story_author_id']:
|
|
|
|
# print 'Authors: %s -- %s' % (classifier.author.id, story['story_author_id'])
|
|
|
|
return classifier.score
|
|
|
|
return 0
|
|
|
|
|
|
|
|
def apply_classifier_tags(classifiers, story):
|
|
|
|
for classifier in classifiers:
|
|
|
|
if classifier.tag.name in story['story_tags']:
|
|
|
|
# print 'Tags: (%s) %s -- %s' % (classifier.tag.name in story['story_tags'], classifier.tag.name, story['story_tags'])
|
|
|
|
return classifier.score
|
|
|
|
return 0
|