@@ -1117,46 +1117,49 @@ def update_listings(self):
11171117 pass
11181118
11191119 def update_moderators_on_listings (self , moderator_list ):
1120- l = objects .Listings ()
1121- l .ParseFromString (self .db .listings .get_proto ())
1122- for listing in l .listing :
1123- contract_hash = listing .contract_hash
1124- c = Contract (self .db , hash_value = contract_hash , testnet = self .protocol .multiplexer .testnet )
1125- contract_moderators = []
1126- if "moderators" in c .contract ["vendor_offer" ]["listing" ]:
1127- for m in c .contract ["vendor_offer" ]["listing" ]["moderators" ]:
1128- contract_moderators .append (m ["guid" ])
1129- mods_to_remove = list (set (contract_moderators ) - set (moderator_list ))
1130- mods_to_add = list (set (moderator_list ) - set (contract_moderators ))
1131- for mod in mods_to_add :
1132- mod_info = self .db .moderators .get_moderator (mod )
1133- if mod_info is not None :
1134- moderator_json = {
1135- "guid" : mod ,
1136- "name" : mod_info [5 ],
1137- "avatar" : mod_info [7 ].encode ("hex" ),
1138- "short_description" : mod_info [6 ],
1139- "fee" : str (mod_info [8 ]) + "%" ,
1140- "blockchain_id" : mod_info [4 ],
1141- "pubkeys" : {
1142- "guid" : mod_info [1 ].encode ("hex" ),
1143- "bitcoin" : {
1144- "key" : mod_info [2 ].encode ("hex" ),
1145- "signature" : base64 .b64encode (mod_info [3 ])
1120+ try :
1121+ l = objects .Listings ()
1122+ 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+ }
11461148 }
11471149 }
1148- }
1149- if "moderators" not in c .contract ["vendor_offer" ]["listing" ]:
1150- c .contract ["vendor_offer" ]["listing" ]["moderators" ] = []
1151- c .contract ["vendor_offer" ]["listing" ]["moderators" ].append (moderator_json )
1152- for mod in mods_to_remove :
1153- for rem in c .contract ["vendor_offer" ]["listing" ]["moderators" ]:
1154- if rem ["guid" ] == mod :
1155- c .contract ["vendor_offer" ]["listing" ]["moderators" ].remove (rem )
1156- if len (c .contract ["vendor_offer" ]["listing" ]["moderators" ]) == 0 :
1157- del c .contract ["vendor_offer" ]["listing" ]["moderators" ]
1158- c .previous_title = None
1159- c .save ()
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
11601163
11611164 @staticmethod
11621165 def cache (file_to_save , filename ):
0 commit comments