Adding feedback archiving for instant loads. Feedback is now on the dashboard.

This commit is contained in:
Samuel Clay 2011-05-07 17:22:41 -04:00
parent 54a10301b9
commit 504d7d94da
5 changed files with 87 additions and 14 deletions

View file

@ -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))

View 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()

View file

@ -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

View file

@ -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;
}

View file

@ -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>