@@ -1120,46 +1120,47 @@ def update_moderators_on_listings(self, moderator_list):
11201120 try :
11211121 l = objects .Listings ()
11221122 l .ParseFromString (self .db .listings .get_proto ())
1123- for listing in l .listing :
1124- contract_hash = listing .contract_hash
1125- c = Contract (self .db , hash_value = contract_hash , testnet = self .protocol .multiplexer .testnet )
1126- contract_moderators = []
1127- if "moderators" in c .contract ["vendor_offer" ]["listing" ]:
1128- for m in c .contract ["vendor_offer" ]["listing" ]["moderators" ]:
1129- contract_moderators .append (m ["guid" ])
1130- mods_to_remove = list (set (contract_moderators ) - set (moderator_list ))
1131- mods_to_add = list (set (moderator_list ) - set (contract_moderators ))
1132- for mod in mods_to_add :
1133- mod_info = self .db .moderators .get_moderator (mod )
1134- if mod_info is not None :
1135- moderator_json = {
1136- "guid" : mod ,
1137- "name" : mod_info [5 ],
1138- "avatar" : mod_info [7 ].encode ("hex" ),
1139- "short_description" : mod_info [6 ],
1140- "fee" : str (mod_info [8 ]) + "%" ,
1141- "blockchain_id" : mod_info [4 ],
1142- "pubkeys" : {
1143- "guid" : mod_info [1 ].encode ("hex" ),
1144- "bitcoin" : {
1145- "key" : mod_info [2 ].encode ("hex" ),
1146- "signature" : base64 .b64encode (mod_info [3 ])
1147- }
1123+ except Exception :
1124+ return
1125+ for listing in l .listing :
1126+ contract_hash = listing .contract_hash
1127+ c = Contract (self .db , hash_value = contract_hash , testnet = self .protocol .multiplexer .testnet )
1128+ contract_moderators = []
1129+ if "moderators" in c .contract ["vendor_offer" ]["listing" ]:
1130+ for m in c .contract ["vendor_offer" ]["listing" ]["moderators" ]:
1131+ contract_moderators .append (m ["guid" ])
1132+ mods_to_remove = list (set (contract_moderators ) - set (moderator_list ))
1133+ mods_to_add = list (set (moderator_list ) - set (contract_moderators ))
1134+ for mod in mods_to_add :
1135+ mod_info = self .db .moderators .get_moderator (mod )
1136+ if mod_info is not None :
1137+ moderator_json = {
1138+ "guid" : mod ,
1139+ "name" : mod_info [5 ],
1140+ "avatar" : mod_info [7 ].encode ("hex" ),
1141+ "short_description" : mod_info [6 ],
1142+ "fee" : str (mod_info [8 ]) + "%" ,
1143+ "blockchain_id" : mod_info [4 ],
1144+ "pubkeys" : {
1145+ "guid" : mod_info [1 ].encode ("hex" ),
1146+ "bitcoin" : {
1147+ "key" : mod_info [2 ].encode ("hex" ),
1148+ "signature" : base64 .b64encode (mod_info [3 ])
11481149 }
11491150 }
1150- if "moderators" not in c . contract [ "vendor_offer" ][ "listing" ]:
1151- c .contract ["vendor_offer" ]["listing" ][ "moderators" ] = []
1152- c .contract ["vendor_offer" ]["listing" ]["moderators" ]. append ( moderator_json )
1153- for mod in mods_to_remove :
1154- for rem in c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ] :
1155- if rem [ "guid" ] == mod :
1156- c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ]. remove ( rem )
1157- if len ( c .contract ["vendor_offer" ]["listing" ]["moderators" ]) == 0 :
1158- del c .contract ["vendor_offer" ]["listing" ][ "moderators" ]
1159- c . previous_title = None
1160- c . save ()
1161- except Exception :
1162- pass
1151+ }
1152+ if "moderators" not in c .contract ["vendor_offer" ]["listing" ]:
1153+ c .contract ["vendor_offer" ]["listing" ]["moderators" ] = []
1154+ c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ]. append ( moderator_json )
1155+ for mod in mods_to_remove :
1156+ for rem in c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ] :
1157+ if rem [ "guid" ] == mod :
1158+ c .contract ["vendor_offer" ]["listing" ]["moderators" ]. remove ( rem )
1159+ if "moderators" in c .contract ["vendor_offer" ]["listing" ] and \
1160+ len ( c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ]) == 0 :
1161+ del c . contract [ "vendor_offer" ][ "listing" ][ "moderators" ]
1162+ c . previous_title = None
1163+ c . save ()
11631164
11641165 @staticmethod
11651166 def cache (file_to_save , filename ):
0 commit comments