From 4edee08546e165107d221886c6f23ead2c6e91c9 Mon Sep 17 00:00:00 2001 From: bsimpson63 Date: Wed, 31 Oct 2012 13:03:07 -0400 Subject: [PATCH] Move PromotionLog to r2.models.promo from r2.lib.promote. --- r2/r2/controllers/promotecontroller.py | 2 +- r2/r2/lib/pages/pages.py | 3 ++- r2/r2/lib/promote.py | 4 +-- r2/r2/models/promo.py | 35 +++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/r2/r2/controllers/promotecontroller.py b/r2/r2/controllers/promotecontroller.py index 1875d45cf..4ed712875 100644 --- a/r2/r2/controllers/promotecontroller.py +++ b/r2/r2/controllers/promotecontroller.py @@ -144,7 +144,7 @@ class PromoteController(ListingController): note = nop("note")) def POST_promote_note(self, form, jquery, link, note): if promote.is_promo(link): - text = promote.PromotionLog.add(link, note) + text = PromotionLog.add(link, note) form.find(".notes").children(":last").after( "

" + text + "

") diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index e00c17792..912a82f28 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -27,6 +27,7 @@ from r2.models import Friends, All, Sub, NotFound, DomainSR, Random, Mod, Random from r2.models import Link, Printable, Trophy, bidding, PromoCampaign, PromotionWeights, Comment from r2.models import Flair, FlairTemplate, FlairTemplateBySubredditIndex from r2.models import USER_FLAIR, LINK_FLAIR +from r2.models.promo import PromotionLog from r2.models.token import OAuth2Client, OAuth2AccessToken from r2.models import traffic from r2.models import ModAction @@ -3149,7 +3150,7 @@ class PromoteLinkForm(Templated): self.link = promote.wrap_promoted(link) campaigns = PromoCampaign._by_link(link._id) self.campaigns = promote.get_renderable_campaigns(link, campaigns) - self.promotion_log = promote.PromotionLog.get(link) + self.promotion_log = PromotionLog.get(link) if not c.user_is_sponsor: self.now = promote.promo_datetime_now().date() diff --git a/r2/r2/lib/promote.py b/r2/r2/lib/promote.py index 2822c5f7d..99b3c259f 100644 --- a/r2/r2/lib/promote.py +++ b/r2/r2/lib/promote.py @@ -30,7 +30,7 @@ from r2.models.bidding import SponsorBoxWeightings, WeightingRef from r2.models.keyvalue import NamedGlobals from r2.lib.wrapped import Wrapped from r2.lib import authorize -from r2.lib import emailer, filters +from r2.lib import emailer from r2.lib.template_helpers import get_domain from r2.lib.utils import Enum, UniqueIterator, tup from r2.lib.organic import keep_fresh_links @@ -41,7 +41,6 @@ from r2.lib.db.queries import set_promote_status import itertools import random -from uuid import uuid1 UPDATE_QUEUE = 'update_promos_q' @@ -897,6 +896,7 @@ def get_total_run(link): return earliest, latest +<<<<<<< HEAD class PromotionLog(tdb_cassandra.View): _use_db = True _connection_pool = 'main' diff --git a/r2/r2/models/promo.py b/r2/r2/models/promo.py index 7c7fd2809..bf60fe21a 100644 --- a/r2/r2/models/promo.py +++ b/r2/r2/models/promo.py @@ -21,9 +21,12 @@ ############################################################################### from datetime import datetime +from uuid import uuid1 -from pylons import g +from pylons import g, c +from r2.lib import filters +from r2.lib.db import tdb_cassandra from r2.lib.db.thing import Thing, NotFound from r2.lib.memoize import memoize from r2.lib.utils import Enum @@ -102,3 +105,33 @@ class PromoCampaign(Thing): self._deleted = True self._commit() +class PromotionLog(tdb_cassandra.View): + _use_db = True + _connection_pool = 'main' + _compare_with = tdb_cassandra.TIME_UUID_TYPE + + @classmethod + def _rowkey(cls, link): + return link._fullname + + @classmethod + def add(cls, link, text): + name = c.user.name if c.user_is_loggedin else "" + now = datetime.now(g.tz).strftime("%Y-%m-%d %H:%M:%S") + text = "[%s: %s] %s" % (name, now, text) + rowkey = cls._rowkey(link) + column = {uuid1(): filters._force_utf8(text)} + cls._set_values(rowkey, column) + return text + + @classmethod + def get(cls, link): + rowkey = cls._rowkey(link) + try: + row = cls._byID(rowkey) + except tdb_cassandra.NotFound: + return [] + tuples = sorted(row._values().items(), key=lambda t: t[0].time) + return [t[1] for t in tuples] + +