From ae5a400b12745c8c54c968b9e992a9ee45b5a703 Mon Sep 17 00:00:00 2001
From: mtrela <mtrela@syncad.com>
Date: Wed, 5 Aug 2020 16:36:52 +0200
Subject: [PATCH] Votes are processed correctly

---
 hive/indexer/blocks.py |  2 +-
 hive/indexer/posts.py  |  4 ----
 hive/indexer/votes.py  | 15 ++++++++-------
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/hive/indexer/blocks.py b/hive/indexer/blocks.py
index 6085b27ef..ceb9c3e5f 100644
--- a/hive/indexer/blocks.py
+++ b/hive/indexer/blocks.py
@@ -207,7 +207,7 @@ class Blocks:
                     if not is_initial_sync:
                         Accounts.dirty(op['author']) # lite - rep
                         Accounts.dirty(op['voter']) # lite - stats
-                    Votes.vote_op(op)
+                    Votes.vote_op(op, cls._head_block_date)
 
                 # misc ops
                 elif op_type == 'transfer_operation':
diff --git a/hive/indexer/posts.py b/hive/indexer/posts.py
index 10b1da8dd..f3d29a051 100644
--- a/hive/indexer/posts.py
+++ b/hive/indexer/posts.py
@@ -161,7 +161,6 @@ class Posts:
                   payout                = COALESCE( CAST( data_source.payout as DECIMAL ),              ihp.payout ),
                   pending_payout        = COALESCE( CAST( data_source.pending_payout as DECIMAL ),      ihp.pending_payout ),
                   payout_at             = COALESCE( CAST( data_source.payout_at as TIMESTAMP ),         ihp.payout_at ),
-                  updated_at            = data_source.updated_at,
                   last_payout           = COALESCE( CAST( data_source.last_payout as TIMESTAMP ),       ihp.last_payout ),
                   cashout_time          = COALESCE( CAST( data_source.cashout_time as TIMESTAMP ),      ihp.cashout_time ),
                   is_paidout            = COALESCE( CAST( data_source.is_paidout as BOOLEAN ),          ihp.is_paidout )
@@ -177,7 +176,6 @@ class Posts:
                       t.payout,
                       t.pending_payout,
                       t.payout_at,
-                      t.updated_at,
                       t.last_payout,
                       t.cashout_time,
                       t.is_paidout
@@ -196,7 +194,6 @@ class Posts:
                       payout,
                       pending_payout,
                       payout_at,
-                      updated_at,
                       last_payout,
                       cashout_time,
                       is_paidout)
@@ -323,7 +320,6 @@ class Posts:
               "NULL" if ( pending_payout is None ) else pending_payout,
 
               "NULL" if ( payout_at is None ) else ( "'{}'::timestamp".format( payout_at ) ),
-              date,#updated_at
               "NULL" if ( last_payout is None ) else ( "'{}'::timestamp".format( last_payout ) ),
               "NULL" if ( cashout_time is None ) else ( "'{}'::timestamp".format( cashout_time ) ),
 
diff --git a/hive/indexer/votes.py b/hive/indexer/votes.py
index 63b7d019f..175c8ae1f 100644
--- a/hive/indexer/votes.py
+++ b/hive/indexer/votes.py
@@ -49,11 +49,12 @@ class Votes:
     inside_flush = False
 
     @classmethod
-    def vote_op(cls, vop):
+    def vote_op(cls, vote_operation, date):
         """ Process vote_operation """
-        voter = vop['voter']
-        author = vop['author']
-        permlink = vop['permlink']
+        voter     = vote_operation['voter']
+        author    = vote_operation['author']
+        permlink  = vote_operation['permlink']
+        weight    = vote_operation['weight']
 
         if(cls.inside_flush):
             log.info("Adding new vote-info into '_votes_data' dict")
@@ -64,10 +65,10 @@ class Votes:
         cls._votes_data[key] = dict(voter=voter,
                                     author=author,
                                     permlink=permlink,
-                                    vote_percent=0,
+                                    vote_percent=weight,
                                     weight=0,
                                     rshares=0,
-                                    last_update="1969-12-31T23:59:59")
+                                    last_update=date)
 
     @classmethod
     def effective_comment_vote_op(cls, key, vop, date):
@@ -79,7 +80,6 @@ class Votes:
 
         assert key in cls._votes_data
 
-        cls._votes_data[key]["vote_percent"]  = vop["vote_percent"]
         cls._votes_data[key]["weight"]        = vop["weight"]
         cls._votes_data[key]["rshares"]       = vop["rshares"]
         cls._votes_data[key]["last_update"]   = date
@@ -106,6 +106,7 @@ class Votes:
                     INNER JOIN hive_accounts ha_a ON ha_a.name = t.author
                     INNER JOIN hive_permlink_data hpd_p ON hpd_p.permlink = t.permlink
                     INNER JOIN hive_posts hp ON hp.author_id = ha_a.id AND hp.permlink_id = hpd_p.id
+                    WHERE NOT hp.is_paidout
                     ) as data_source(post_id, voter_id, author_id, permlink_id, weight, rshares, vote_percent, last_update)
                     ON CONFLICT ON CONSTRAINT hive_votes_ux1 DO
                       UPDATE
-- 
GitLab