refactor/fix: Fix module name collision
This commit is contained in:
parent
3fcf5d52b3
commit
e953486494
0
papatutuwawa/__init__.py
Normal file
0
papatutuwawa/__init__.py
Normal file
0
papatutuwawa/mira/__init__.py
Normal file
0
papatutuwawa/mira/__init__.py
Normal file
0
papatutuwawa/mira/modules/__init__.py
Normal file
0
papatutuwawa/mira/modules/__init__.py
Normal file
@ -14,7 +14,6 @@ GNU General Public License for more details.
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
'''
|
'''
|
||||||
# TODO: Prevent subscriptions when subscribed to 'Alle'
|
|
||||||
# TODO: remove Alle sollte jede subscription entfernen
|
# TODO: remove Alle sollte jede subscription entfernen
|
||||||
# TODO: Deal with weird casing and typos
|
# TODO: Deal with weird casing and typos
|
||||||
# TODO: pollen hilfe <CMD> should print help per command
|
# TODO: pollen hilfe <CMD> should print help per command
|
||||||
@ -63,8 +62,8 @@ class PollenModule(BaseModule):
|
|||||||
super().__init__(base, **kwargs)
|
super().__init__(base, **kwargs)
|
||||||
PollenModule.__instance = self
|
PollenModule.__instance = self
|
||||||
self._subcommand_table = {
|
self._subcommand_table = {
|
||||||
'add': self._subscribe,
|
'subscribe': self._subscribe,
|
||||||
'remove': self._unsubscribe,
|
'unsubscribe': self._unsubscribe,
|
||||||
'hilfe': self._help
|
'hilfe': self._help
|
||||||
}
|
}
|
||||||
self._sleep_duration = self.get_option('sleep_duration', 12 * 3600)
|
self._sleep_duration = self.get_option('sleep_duration', 12 * 3600)
|
||||||
@ -84,11 +83,18 @@ class PollenModule(BaseModule):
|
|||||||
'''
|
'''
|
||||||
msg = '{} (*{}*)\n'.format(date, plz)
|
msg = '{} (*{}*)\n'.format(date, plz)
|
||||||
|
|
||||||
if allergies == ['Alle']:
|
if 'Alle' in [x['type'] for x in allergies]:
|
||||||
allergies = list(self._pollen_data[plz][date].keys)
|
allergies = list(self._pollen_data[plz][date].keys)
|
||||||
|
|
||||||
|
count = 0
|
||||||
for allergy in allergies:
|
for allergy in allergies:
|
||||||
msg += '{}: {}'.format(allergy, intensity_str(self._pollen_data[plz][date][allergy]))
|
intensity = self._pollen_data[plz][date][allergy['type']]
|
||||||
|
if intensity >= allergy['level']:
|
||||||
|
msg += '{}: {}'.format(allergy['type'], intensity_str(intensity))
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
if count == 0:
|
||||||
|
return ''
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
def _is_notified(self, jid, date):
|
def _is_notified(self, jid, date):
|
||||||
@ -121,7 +127,10 @@ class PollenModule(BaseModule):
|
|||||||
only the data for the pollen types in filter_allergies will be sent.
|
only the data for the pollen types in filter_allergies will be sent.
|
||||||
'''
|
'''
|
||||||
for plz, data in self._sum.get_subscriptions_for(jid).items():
|
for plz, data in self._sum.get_subscriptions_for(jid).items():
|
||||||
allergies = data['data'] if not filter_allergies else filter_allergies
|
if filter_allergies:
|
||||||
|
allergies = filter_allergies
|
||||||
|
else:
|
||||||
|
allergies = data['data']
|
||||||
notified = []
|
notified = []
|
||||||
|
|
||||||
for date in self._pollen_data[plz]:
|
for date in self._pollen_data[plz]:
|
||||||
@ -129,10 +138,12 @@ class PollenModule(BaseModule):
|
|||||||
continue
|
continue
|
||||||
notified.append(date)
|
notified.append(date)
|
||||||
|
|
||||||
self.send_message(aioxmpp.JID.fromstr(jid),
|
msg = self.notification_body(plz,
|
||||||
self.notification_body(plz,
|
date,
|
||||||
date,
|
allergies)
|
||||||
allergies))
|
if msg:
|
||||||
|
self.send_message(aioxmpp.JID.fromstr(jid),
|
||||||
|
msg)
|
||||||
|
|
||||||
if notified:
|
if notified:
|
||||||
self._set_dates_notified(jid, notified)
|
self._set_dates_notified(jid, notified)
|
||||||
@ -182,25 +193,40 @@ class PollenModule(BaseModule):
|
|||||||
await asyncio.sleep(self._sleep_duration)
|
await asyncio.sleep(self._sleep_duration)
|
||||||
|
|
||||||
async def _subscribe(self, cmd, msg):
|
async def _subscribe(self, cmd, msg):
|
||||||
if len(cmd) != 3:
|
if len(cmd) < 3 or len(cmd) > 4:
|
||||||
self.send_message(msg.from_, 'Verwendung: pollen add <PLZ> <Allergen>')
|
self.send_message(msg.from_, 'Verwendung: pollen add <PLZ> <Allergen> [<Level>]')
|
||||||
return
|
return
|
||||||
|
|
||||||
plz = cmd[1]
|
plz = cmd[1]
|
||||||
allergy = cmd[2]
|
allergy = cmd[2]
|
||||||
jid = str(msg.from_.bare())
|
jid = str(msg.from_.bare())
|
||||||
|
level = int(cmd[3]) if len(cmd) == 4 else 0
|
||||||
|
|
||||||
if self._sum.is_subscribed_to_data(jid, plz, allergy):
|
if self._sum.is_subscribed_to_data(jid, plz, 'Alle'):
|
||||||
self.send_message(msg.from_, 'Du hast das schon aboniert')
|
self.send_message(msg.from_, 'Du hast schon alle Allergene abonniert')
|
||||||
return
|
return
|
||||||
|
|
||||||
self._sum.append_data_for_subscription(jid, plz, allergy)
|
if self._sum.is_subscribed_to_data(jid, plz, allergy):
|
||||||
self.send_message(msg.from_, 'OK')
|
self.send_message(msg.from_, 'Du hast das schon abonniert')
|
||||||
|
return
|
||||||
|
|
||||||
|
if level < 0 or level > 3:
|
||||||
|
self.send_message(msg.from_, 'Das Level muss zwischen 0 und 3 liegen')
|
||||||
|
return
|
||||||
|
|
||||||
|
self._sum.append_data_for_subscription(jid, plz, {
|
||||||
|
'type': allergy,
|
||||||
|
'level': level
|
||||||
|
})
|
||||||
|
self.send_message(msg.from_, 'Du erhälst nun Pollenmeldungen zu %s' % allergy)
|
||||||
|
|
||||||
# Just some bandwidth saving measure
|
# Just some bandwidth saving measure
|
||||||
if plz not in self._pollen_data:
|
if plz not in self._pollen_data:
|
||||||
await self._request_pollen_data(False)
|
await self._request_pollen_data(False)
|
||||||
self._broadcast_jid(jid, [allergy])
|
self._broadcast_jid(jid, [{
|
||||||
|
'type': allergy,
|
||||||
|
'level': level
|
||||||
|
}])
|
||||||
|
|
||||||
async def _unsubscribe(self, cmd, msg):
|
async def _unsubscribe(self, cmd, msg):
|
||||||
if len(cmd) != 3:
|
if len(cmd) != 3:
|
||||||
@ -211,20 +237,28 @@ class PollenModule(BaseModule):
|
|||||||
allergy = cmd[2]
|
allergy = cmd[2]
|
||||||
jid = str(msg.from_.bare())
|
jid = str(msg.from_.bare())
|
||||||
|
|
||||||
if not self._sum.is_subscribed_to_data(jid, plz, allergy):
|
if allergy == 'Alle':
|
||||||
self.send_message(msg.from_, 'Du hast das nicht aboniert')
|
self._sum.filter_items_for_subscriptions(jid, plz, lambda x: False)
|
||||||
|
self.send_message(msg.from_, 'Du erhälst keine Pollenmeldungen mehr')
|
||||||
return
|
return
|
||||||
|
|
||||||
self._sum.remove_data_for_subscription(str(msg.from_.bare()), plz, allergy)
|
if not self._sum.is_subscribed_to_data_one(jid, plz, lambda x: x['type'] == allergy):
|
||||||
self.send_message(msg.from_, 'OK')
|
self.send_message(msg.from_, 'Du hast %s nicht abonniert' % (allergy))
|
||||||
|
return
|
||||||
|
|
||||||
|
self._sum.filter_items_for_subscription(str(msg.from_.bare()),
|
||||||
|
plz,
|
||||||
|
lambda x: x['type'] != allergy)
|
||||||
|
self.send_message(msg.from_, 'Du erhälst nun keine Pollenmeldungen zu %s mehr' % (allergy))
|
||||||
|
|
||||||
async def _help(self, cmd, msg):
|
async def _help(self, cmd, msg):
|
||||||
body = '''Verfügbare Befehle:
|
body = '''Verfügbare Befehle:
|
||||||
pollen add <PLZ> <Typ>
|
pollen subscribe <PLZ> <Typ> [<Min. Level>]
|
||||||
pollen remove <PLZ> <Typ>
|
pollen unsubscribe <PLZ> <Typ>
|
||||||
pollen hilfe
|
pollen hilfe
|
||||||
|
|
||||||
Pollentypen: Ambrosia, Ampfer, Beifuß, Birke, Buche, Eiche, Erle, Esche, Gräser, Hasel, Pappel, Roggen, Ulme, Wegerich, Weide, Alle
|
Pollentypen: Ambrosia, Ampfer, Beifuß, Birke, Buche, Eiche, Erle, Esche, Gräser, Hasel, Pappel, Roggen, Ulme, Wegerich, Weide, Alle (Alias für alle Pollentypen)
|
||||||
|
Level: 0 (Kein Pollenflug) - 3 (Starker Pollenflug)
|
||||||
'''
|
'''
|
||||||
self.send_message(msg.from_, body)
|
self.send_message(msg.from_, body)
|
||||||
|
|
17
setup.py
Normal file
17
setup.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name = 'mira-modules',
|
||||||
|
version = '0.1.0',
|
||||||
|
description = 'Various modules for mira',
|
||||||
|
url = 'https://git.polynom.me/PapaTutuWawa/mira-modules',
|
||||||
|
author = 'Alexander "PapaTutuWawa"',
|
||||||
|
author_email = 'papatutuwawa <at> polynom.me',
|
||||||
|
license = 'GPLv3',
|
||||||
|
packages = find_packages(),
|
||||||
|
install_requires = [
|
||||||
|
'mira>=0.1.0',
|
||||||
|
'requests>=2.23.0'
|
||||||
|
],
|
||||||
|
zip_safe=True
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user