Changed the key in dictionary to plugin name

Removed the extra property from the plugin class and also changed the key to plugin name in the new sorted plugin dictionary to increase the stability.
This commit is contained in:
Sravan 2023-05-13 13:04:30 +05:30
parent 1eef94f77a
commit 599a215faa

View file

@ -270,20 +270,29 @@ class StartupTasks:
await asyncio.gather(*plugins_to_update) await asyncio.gather(*plugins_to_update)
async def get_new_plugins(self, new_plugin_count): async def get_new_plugins(self, new_plugin_count):
new_plugins = [] valid_new_plugins = []
plugin_dictionary = {} plugin_dictionary, sorted_plugins, new_plugins = {}, {}, {}
count = 0
await self.plugin_manager.setup_index() await self.plugin_manager.setup_index()
all_plugins = await self.plugin_manager.categories["All"].get_plugins() all_plugins = await self.plugin_manager.categories["All"].get_plugins()
for plugin in all_plugins: for plugin in all_plugins:
date, name = plugin.get_name_and_release_date plugin_dictionary[plugin.name] = plugin.info
plugin_dictionary[date] = name for key, value in plugin_dictionary.items():
sorted_dict = dict(sorted(plugin_dictionary.items(), latest_version = max(value['versions'].keys())
key=lambda x: datetime.strptime(x[0], '%d-%m-%Y'), reverse=True)) new_plugins[key] = {'released_on': value['versions'][latest_version]['released_on'],
for iterator, value in enumerate(sorted_dict.values()): 'api_version': value['versions'][latest_version]['api_version']}
if iterator < new_plugin_count: sorted_plugins = dict(sorted(new_plugins.items(),
new_plugins.append(value) key=lambda x: datetime.strptime(x[1]['released_on'], '%d-%m-%Y'),
new_plugin_names = ', '.join(new_plugins) reverse=True))
print_message = f"{new_plugin_count} new plugins ({new_plugin_names}) are available!"
for key, value in sorted_plugins.items():
if count < new_plugin_count:
valid_new_plugins.append(key)
count += 1
else:
break
valid_new_plugins = ', '.join(valid_new_plugins)
print_message = f"{new_plugin_count} new plugins ({valid_new_plugins}) are available!"
ba.screenmessage(print_message, color=(0, 1, 0)) ba.screenmessage(print_message, color=(0, 1, 0))
async def notify_new_plugins(self): async def notify_new_plugins(self):
@ -708,20 +717,10 @@ class Plugin:
self._versions = None self._versions = None
self._latest_version = None self._latest_version = None
self._latest_compatible_version = None self._latest_compatible_version = None
self._released_on = None
self._latest_plugin_key = None
def __repr__(self): def __repr__(self):
return f"<Plugin({self.name})>" return f"<Plugin({self.name})>"
@property
def get_name_and_release_date(self):
if self._released_on is None:
self._latest_plugin_key = list(self.info["versions"].keys())[0]
self._released_on = self.info["versions"][self._latest_plugin_key]
# self._released_on = sorted(self._released_on, key=self._released_on["released_on"])
return self._released_on["released_on"], self.name
@property @property
def view_url(self): def view_url(self):
if self.latest_compatible_version == self.latest_version: if self.latest_compatible_version == self.latest_version: