passive api name collecting from users that have consented to it

This commit is contained in:
Laura Klünder 2024-12-28 22:16:25 +01:00
parent 183a7ec4c9
commit 6dafb009fc
3 changed files with 36 additions and 1 deletions

View file

@ -54,3 +54,27 @@ def delete_map_cache_key(self, cache_key):
if hasattr(cache, 'keys'):
for key in cache.keys(f'*{cache_key}*'):
cache.delete(key)
@app.task(bind=True, max_retries=10)
def update_ap_names_bssid_mapping(self, map_name, user):
from c3nav.mapdata.models.geometry.space import RangingBeacon
todo = []
for beacon in RangingBeacon.objects.filter(ap_name__in=map_name.keys(),
beacon_type=RangingBeacon.BeaconType.EVENT_WIFI):
print(beacon, "add ssids", set(map_name[beacon.ap_name]))
if set(map_name[beacon.ap_name]) - set(beacon.addresses):
todo.append((beacon, list(set(beacon.addresses) | set(map_name[beacon.ap_name]))))
if todo:
from c3nav.editor.models import ChangeSet
from c3nav.editor.views.base import within_changeset
changeset = ChangeSet()
changeset.author = user
with within_changeset(changeset=changeset, user=user) as locked_changeset:
for beacon, addresses in todo:
beacon.addresses = addresses
beacon.save()
with changeset.lock_to_edit() as locked_changeset:
locked_changeset.title = 'passive update bssids'
locked_changeset.apply(user)