mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Adding feedback archiving for instant loads. Feedback is now on the dashboard.
This commit is contained in:
parent
54a10301b9
commit
504d7d94da
5 changed files with 87 additions and 14 deletions
|
@ -23,7 +23,7 @@ from apps.analyzer.models import get_classifiers_for_user
|
|||
from apps.reader.models import UserSubscription, UserSubscriptionFolders, MUserStory, Feature
|
||||
from apps.reader.forms import SignupForm, LoginForm, FeatureForm
|
||||
from apps.rss_feeds.models import MFeedIcon
|
||||
from apps.statistics.models import MStatistics
|
||||
from apps.statistics.models import MStatistics, MFeedback
|
||||
try:
|
||||
from apps.rss_feeds.models import Feed, MFeedPage, DuplicateFeed, MStory, MStarredStory, FeedLoadtime
|
||||
except:
|
||||
|
@ -72,6 +72,7 @@ def index(request):
|
|||
# recommended_feed_feedback = RecommendedFeedUserFeedback.objects.filter(recommendation=recommended_feed)
|
||||
|
||||
statistics = MStatistics.all()
|
||||
feedbacks = MFeedback.all()
|
||||
howitworks_page = 0 # random.randint(0, 5)
|
||||
return render_to_response('reader/feeds.xhtml', {
|
||||
'user_profile': user.profile,
|
||||
|
@ -87,6 +88,7 @@ def index(request):
|
|||
'account_images': range(1, 4),
|
||||
'recommended_feeds': recommended_feeds,
|
||||
'statistics': statistics,
|
||||
'feedbacks': feedbacks,
|
||||
# 'recommended_feed_feedback': recommended_feed_feedback,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
|
10
apps/statistics/management/commands/collect_feedback.py
Normal file
10
apps/statistics/management/commands/collect_feedback.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
from optparse import make_option
|
||||
from django.core.management.base import BaseCommand
|
||||
from apps.statistics.models import MFeedback
|
||||
|
||||
class Command(BaseCommand):
|
||||
option_list = BaseCommand.option_list + (
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
MFeedback.collect_feedback()
|
|
@ -1,5 +1,6 @@
|
|||
import datetime
|
||||
import mongoengine as mongo
|
||||
import urllib2
|
||||
from django.db.models import Avg, Count
|
||||
from apps.rss_feeds.models import MFeedFetchHistory, MPageFetchHistory, FeedLoadtime
|
||||
from apps.profile.models import Profile
|
||||
|
@ -109,4 +110,36 @@ class MStatistics(mongo.Document):
|
|||
)
|
||||
for key, value in values:
|
||||
cls.objects(key=key).update_one(upsert=True, key=key, value=value)
|
||||
|
||||
|
||||
class MFeedback(mongo.Document):
|
||||
date = mongo.StringField()
|
||||
summary = mongo.StringField()
|
||||
subject = mongo.StringField()
|
||||
url = mongo.StringField()
|
||||
style = mongo.StringField()
|
||||
|
||||
meta = {
|
||||
'collection': 'feedback',
|
||||
'allow_inheritance': False,
|
||||
'indexes': ['style'],
|
||||
}
|
||||
|
||||
def __unicode__(self):
|
||||
return "%s: (%s) %s" % (self.style, self.date, self.subject)
|
||||
|
||||
@classmethod
|
||||
def collect_feedback(cls):
|
||||
data = urllib2.urlopen('https://getsatisfaction.com/newsblur/topics.widget').read()
|
||||
data = json.decode(data[1:-1])
|
||||
if len(data):
|
||||
cls.objects.delete()
|
||||
for feedback in data:
|
||||
if 'about' in feedback['date']:
|
||||
feedback['date'] = feedback['date'].replace('about', '')
|
||||
[MFeedback.objects.create(**feedback) for feedback in data]
|
||||
|
||||
@classmethod
|
||||
def all(cls):
|
||||
feedbacks = cls.objects.all()[:5]
|
||||
|
||||
return feedbacks
|
|
@ -3689,6 +3689,31 @@ background: transparent;
|
|||
height: 16px;
|
||||
}
|
||||
|
||||
.NB-module-features .NB-module-feature .NB-module-feature-tag {
|
||||
font-size: 8px;
|
||||
padding: 0 4px;
|
||||
background-color: #DC8A13;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
margin-right: 4px;
|
||||
display: inline-block;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
.NB-module-features .NB-module-feature .NB-module-feature-tag.NB-tag-problem {
|
||||
background-color: #DC5C25;
|
||||
}
|
||||
.NB-module-features .NB-module-feature .NB-module-feature-tag.NB-tag-praise {
|
||||
background-color: #F4B156;
|
||||
color: white;
|
||||
}
|
||||
.NB-module-features .NB-module-feature .NB-module-feature-tag.NB-tag-idea {
|
||||
background-color: #9DDC5F;
|
||||
}
|
||||
.NB-module-features .NB-module-feature .NB-module-feature-tag.NB-tag-question {
|
||||
background-color: #6DAEDC;
|
||||
}
|
||||
|
||||
#add-feature-form {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -62,18 +62,21 @@ $(document).ready(function() {
|
|||
</form>
|
||||
{% endif %}
|
||||
|
||||
{# <h3 class="NB-module-content-header"> #}
|
||||
{# Community Feedback #}
|
||||
{# </h3> #}
|
||||
{# #}
|
||||
{# <table class="" cellpadding="0" cellspacing="0"> #}
|
||||
{# {% for feature in features %} #}
|
||||
{# <tr class="NB-module-feature {% if forloop.last %}last{% endif %} {% if feature.date > user.profile.last_seen_on %}NB-module-feature-new{% endif %}"> #}
|
||||
{# <td class="NB-module-feature-date">{{ feature.date|date:"M d, Y" }}</td> #}
|
||||
{# <td class="NB-module-feature-description">{{ feature.description|typogrify }}</td> #}
|
||||
{# </tr> #}
|
||||
{# {% endfor %} #}
|
||||
{# </table> #}
|
||||
<h3 class="NB-module-content-header">
|
||||
Community Feedback
|
||||
</h3>
|
||||
|
||||
<table class="" cellpadding="0" cellspacing="0">
|
||||
{% for feedback in feedbacks %}
|
||||
<tr class="NB-module-feature {% if forloop.last %}last{% endif %}">
|
||||
<td class="NB-module-feature-date">{{ feedback.date }}</td>
|
||||
<td class="NB-module-feature-description">
|
||||
<span class="NB-module-feature-tag NB-tag-{{ feedback.style }}">{{ feedback.style }}</span>
|
||||
<a href="{{ feedback.url }}">{{ feedback.subject|typogrify }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue