Use dict in fakemobileclient for data, add default to BeaconMeasurementDataSchema (#206)

* Fakemobileclient should return a dict of wifi.data, instead of data, since we have bluetooth beacons too

* Use dict instead of list for beacon measurement in fakemobileclient and editor script

* Use distance directly

* BeaconMeasurementDataSchema add default
This commit is contained in:
Jenny Paxian 2024-12-23 18:01:03 +01:00 committed by GitHub
parent ac1650e3bc
commit 82b13e16a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 8 additions and 5 deletions

View file

@ -1599,6 +1599,7 @@ editor = {
editor._scancollector_data.wifi.push(data); editor._scancollector_data.wifi.push(data);
$collector.find('.wifi-count').text(editor._scancollector_data.wifi.length); $collector.find('.wifi-count').text(editor._scancollector_data.wifi.length);
$collector.siblings('[name=data]').val(JSON.stringify(editor._scancollector_data)); $collector.siblings('[name=data]').val(JSON.stringify(editor._scancollector_data));
$collector.siblings('[name=data]').text(JSON.stringify(editor._scancollector_data));
}, },
_scancollector_ibeacon_result: function (data) { _scancollector_ibeacon_result: function (data) {
var $collector = $('#sidebar').find('.scancollector.running'), var $collector = $('#sidebar').find('.scancollector.running'),
@ -1636,6 +1637,7 @@ editor = {
editor._scancollector_data.ibeacon.push(data); editor._scancollector_data.ibeacon.push(data);
$collector.find('.ibeacon-count').text(editor._scancollector_data.ibeacon.length); $collector.find('.ibeacon-count').text(editor._scancollector_data.ibeacon.length);
$collector.siblings('[name=data]').val(JSON.stringify(editor._scancollector_data)); $collector.siblings('[name=data]').val(JSON.stringify(editor._scancollector_data));
$collector.siblings('[name=data]').text(JSON.stringify(editor._scancollector_data));
}, },
_wifi_scan_waits: false, _wifi_scan_waits: false,
_scancollector_wifi_scan_perhaps: function () { _scancollector_wifi_scan_perhaps: function () {

View file

@ -433,7 +433,8 @@ class BeaconMeasurement(SpaceGeometryMixin, models.Model):
verbose_name=_('author')) verbose_name=_('author'))
comment = models.TextField(null=True, blank=True, verbose_name=_('comment')) comment = models.TextField(null=True, blank=True, verbose_name=_('comment'))
data: BeaconMeasurementDataSchema = SchemaField(BeaconMeasurementDataSchema, data: BeaconMeasurementDataSchema = SchemaField(BeaconMeasurementDataSchema,
verbose_name=_('Measurement list')) verbose_name=_('Measurement list'),
default=BeaconMeasurementDataSchema())
class Meta: class Meta:
verbose_name = _('Beacon Measurement') verbose_name = _('Beacon Measurement')

View file

@ -124,7 +124,7 @@ class Locator:
continue continue
peer_id = self.get_peer_id(scan_value.bssid, create=create_peers) peer_id = self.get_peer_id(scan_value.bssid, create=create_peers)
if peer_id is not None: if peer_id is not None:
result[peer_id] = ScanDataValue(rssi=scan_value.rssi, distance=scan_value.get("distance", None)) result[peer_id] = ScanDataValue(rssi=scan_value.rssi, distance=scan_value.distance)
return result return result
def convert_ibeacon_scan(self, scan_data: list[LocateIBeaconPeerSchema], create_peers=False) -> ScanData: def convert_ibeacon_scan(self, scan_data: list[LocateIBeaconPeerSchema], create_peers=False) -> ScanData:

View file

@ -13,8 +13,8 @@ mobileclient = {
console.log('mobileclient: scanNow'); console.log('mobileclient: scanNow');
if (mobileclient.wait) return; if (mobileclient.wait) return;
mobileclient.wait = true; mobileclient.wait = true;
$.getJSON('http://localhost:'+String(mobileclient.port)+'/scan', function(data) { $.getJSON('http://localhost:'+String(mobileclient.port)+'/scan', function(response) {
mobileclient.setNearbyStations(data.data); mobileclient.setNearbyStations(response.wifi);
}).always(function() { }).always(function() {
mobileclient.wait = false; mobileclient.wait = false;
}); });

View file

@ -46,7 +46,7 @@ class FakeMobileClientHandler(http.server.BaseHTTPRequestHandler):
self.send_header('Content-Type', 'application/json') self.send_header('Content-Type', 'application/json')
self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Origin', '*')
self.end_headers() self.end_headers()
self.wfile.write(json.dumps({'data': stations}).encode()) self.wfile.write(json.dumps({'wifi':stations}).encode())
return True return True