aa-intel-tool 0.0.1a9__py3-none-any.whl → 0.0.1a10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -50,3 +50,10 @@ class AppSettings: # pylint: disable=too-few-public-methods
50
50
  INTELTOOL_CHATSCAN_MAX_PILOTS = clean_setting(
51
51
  name="INTELTOOL_CHATSCAN_MAX_PILOTS", default_value=500, required_type=int
52
52
  )
53
+
54
+ # Set the grid size for D-Scans.
55
+ # This defines the size of teh grid in which ships and
56
+ # structure are considered to be "on grid"
57
+ INTELTOOL_DSCAN_GRID_SIZE = clean_setting(
58
+ name="INTELTOOL_DSCAN_GRID_SIZE", default_value=10000, required_type=int
59
+ )
@@ -18,6 +18,7 @@ from aa_intel_tool import __version__
18
18
  # All internal URLs need to start with this prefix
19
19
  INTERNAL_URL_PREFIX = "-"
20
20
 
21
+
21
22
  # Localised units
22
23
  distance_units_on_grid: str = """
23
24
  km|m # Latin (English, German and so on)
@@ -31,6 +32,7 @@ distance_units_off_grid: str = """
31
32
 
32
33
  distance_units = f"{distance_units_on_grid}|{distance_units_off_grid}"
33
34
 
35
+
34
36
  # Pre-compiled regex patterns used throughout the app
35
37
  REGEX_PATTERN = {
36
38
  # "chatlist": re.compile(pattern=r"(?im)^[a-zA-Z0-9\u0080-\uFFFF -_]{3,37}$"),
@@ -49,6 +51,8 @@ REGEX_PATTERN = {
49
51
  ),
50
52
  }
51
53
 
54
+
55
+ # Supported intel types and their parameters
52
56
  SUPPORTED_INTEL_TYPES = {
53
57
  # "chatlist": {
54
58
  # "name": _("Chat List"),
@@ -68,9 +72,8 @@ SUPPORTED_INTEL_TYPES = {
68
72
  }
69
73
 
70
74
 
75
+ # Building our user agent for ESI calls
71
76
  VERBOSE_NAME = "AA Intel Tool"
72
-
73
77
  verbose_name_slugified: str = slugify(VERBOSE_NAME, allow_unicode=True)
74
78
  github_url: str = "https://github.com/ppfeufer/aa-intel-tool"
75
-
76
79
  USER_AGENT = f"{verbose_name_slugified} v{__version__} {github_url}"
@@ -0,0 +1,17 @@
1
+ # Generated by Django 4.0.10 on 2023-08-22 18:41
2
+
3
+ # Django
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("aa_intel_tool", "0005_alter_scan_options_alter_scandata_options_and_more"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterUniqueTogether(
14
+ name="scandata",
15
+ unique_together={("scan", "section")},
16
+ ),
17
+ ]
aa_intel_tool/models.py CHANGED
@@ -147,3 +147,5 @@ class ScanData(models.Model):
147
147
  default_permissions = ()
148
148
  verbose_name = _("Scan data")
149
149
  verbose_name_plural = _("Scan data")
150
+
151
+ unique_together = ("scan", "section")
@@ -29,6 +29,33 @@ from aa_intel_tool.parser.helper.db import safe_scan_to_db
29
29
  logger = LoggerAddTag(my_logger=get_extension_logger(name=__name__), prefix=__title__)
30
30
 
31
31
 
32
+ def _is_on_grid(distance: str) -> bool:
33
+ """
34
+ Determine if something is "on grid" or not
35
+
36
+ :param distance:
37
+ :type distance:
38
+ :return:
39
+ :rtype:
40
+ """
41
+
42
+ # AA Intel Tool
43
+ from aa_intel_tool.constants import ( # pylint: disable=import-outside-toplevel
44
+ REGEX_PATTERN,
45
+ )
46
+
47
+ if re.search(pattern=REGEX_PATTERN["localised_on_grid"], string=distance):
48
+ # line = re.split(pattern=r" ", string=distance)
49
+ distance_sanitised = int(re.sub(r"[^0-9]", "", distance))
50
+
51
+ if distance_sanitised <= AppSettings.INTELTOOL_DSCAN_GRID_SIZE:
52
+ return True
53
+
54
+ return False
55
+
56
+ return False
57
+
58
+
32
59
  def _get_type_info_dict(eve_type: tuple) -> dict:
33
60
  """
34
61
  Get the eve_type info dict
@@ -53,9 +80,9 @@ def _get_type_info_dict(eve_type: tuple) -> dict:
53
80
  }
54
81
 
55
82
 
56
- def _parse_ships(eve_types: QuerySet, counter: dict) -> dict:
83
+ def _get_ships(eve_types: QuerySet, counter: dict) -> dict:
57
84
  """
58
- Parse ships
85
+ Get the ships
59
86
  This will be the content of the following tables in the D-Scan view:
60
87
  » All Ships
61
88
  » On Grid
@@ -103,6 +130,7 @@ def _parse_ships(eve_types: QuerySet, counter: dict) -> dict:
103
130
  "count": 0,
104
131
  }
105
132
 
133
+ # Add the count to the ship types
106
134
  ships["types"][eve_type[3]]["count"] += counter["all"][eve_type[0]]
107
135
 
108
136
  # Leaving this here just in case the method in the first loop turns out to be faulty
@@ -130,6 +158,38 @@ def _parse_ships(eve_types: QuerySet, counter: dict) -> dict:
130
158
  }
131
159
 
132
160
 
161
+ def _get_upwell_structures_on_grid(eve_types: QuerySet, dscan_list: list) -> list:
162
+ """
163
+ Get all Upwell structures that are on grid
164
+
165
+ :param eve_types:
166
+ :type eve_types:
167
+ :param counter:
168
+ :type counter:
169
+ :return:
170
+ :rtype:
171
+ """
172
+
173
+ eve_types_structures = eve_types.filter(
174
+ eve_group__eve_category_id__exact=EveCategoryId.STRUCTURE
175
+ )
176
+
177
+ structures_on_grid = {}
178
+
179
+ for item in dscan_list:
180
+ if eve_types_structures.filter(id=item[0]).exists() and _is_on_grid(item[3]):
181
+ if item[0] not in structures_on_grid:
182
+ structures_on_grid[item[0]] = {
183
+ "id": item[0],
184
+ "type": item[2],
185
+ "count": 0,
186
+ }
187
+
188
+ structures_on_grid[item[0]]["count"] += 1
189
+
190
+ return dict_to_list(structures_on_grid)
191
+
192
+
133
193
  def parse(scan_data: list) -> Scan:
134
194
  """
135
195
  Parse D-Scan
@@ -150,6 +210,8 @@ def parse(scan_data: list) -> Scan:
150
210
 
151
211
  counter = {"all": {}, "ongrid": {}, "offgrid": {}, "type": {}}
152
212
  eve_ids = {"all": [], "ongrid": [], "offgrid": []}
213
+ dscan_lines = []
214
+ parsed_data = {}
153
215
 
154
216
  # Let's split this list up
155
217
  #
@@ -179,32 +241,52 @@ def parse(scan_data: list) -> Scan:
179
241
 
180
242
  counter["all"][entry_id] += 1
181
243
  eve_ids["all"].append(entry_id)
244
+ dscan_lines.append([entry_id, line[1], line[2], line[3]])
182
245
 
183
246
  eve_types = EveType.objects.bulk_get_or_create_esi(
184
247
  ids=set(eve_ids["all"]), include_children=True
185
- ).values_list("id", "name", "eve_group__id", "eve_group__name")
248
+ ).values_list("id", "name", "eve_group__id", "eve_group__name", named=True)
186
249
 
187
250
  # Parse the data
188
- ships = _parse_ships(eve_types=eve_types, counter=counter)
251
+ ships = _get_ships(eve_types=eve_types, counter=counter)
252
+ upwell_structures = _get_upwell_structures_on_grid(
253
+ eve_types=eve_types, dscan_list=dscan_lines
254
+ )
189
255
 
190
- parsed_data = {
191
- "shiptypes": {
256
+ # Add "ship types" to parsed data when available
257
+ if len(ships["types"]):
258
+ parsed_data["shiptypes"] = {
192
259
  "section": ScanData.Section.SHIPTYPES,
193
260
  "data": ships["types"],
194
- },
195
- "all": {
261
+ }
262
+
263
+ # Add "ships all" to parsed data when available
264
+ if len(ships["all"]):
265
+ parsed_data["all"] = {
196
266
  "section": ScanData.Section.SHIPLIST,
197
267
  "data": ships["all"],
198
- },
199
- "ongrid": {
268
+ }
269
+
270
+ # Add "ships on grid" to parsed data when available
271
+ if len(ships["ongrid"]):
272
+ parsed_data["ongrid"] = {
200
273
  "section": ScanData.Section.SHIPLIST_ON_GRID,
201
274
  "data": ships["ongrid"],
202
- },
203
- "offgrid": {
275
+ }
276
+
277
+ # Add "ships off grid" to parsed data when available
278
+ if len(ships["offgrid"]):
279
+ parsed_data["offgrid"] = {
204
280
  "section": ScanData.Section.SHIPLIST_OFF_GRID,
205
281
  "data": ships["offgrid"],
206
- },
207
- }
282
+ }
283
+
284
+ # Add "Upwell structures on grid" to parsed data when available
285
+ if len(upwell_structures):
286
+ parsed_data["sructures_on_grid"] = {
287
+ "section": ScanData.Section.STRUCTURES_ON_GRID,
288
+ "data": upwell_structures,
289
+ }
208
290
 
209
291
  return safe_scan_to_db(scan_type=Scan.Type.DSCAN, parsed_data=parsed_data)
210
292
 
@@ -1,20 +1,13 @@
1
1
  35835 UC3H-Y - Harvester 1 Athanor* 444 141 км
2
- 35835 UC3H-Y - Wasser Athanor* 420 226 км
3
2
  35827 UC3H-Y - Factory 56 Sotiyo* 4 236 км
4
3
  670 ledu derhauer's Capsule Capsule* 1 943 км
5
4
  11963 cyno up Rapier* 1 903 км
6
5
  11129 ttjzj Gallente Shuttle* 1 898 км
7
6
  16 RD-G2R* Stargate (Caldari System)* 1 799 км
8
7
  35841 UC3H-Y » U-INPD - Way to the Light Ansiblex Jump Gate* 1 042 км
9
- 35833 UC3H-Y - Restart Fortizar* 603 км
10
8
  35840 UC3H-Y - The Bacon is Lit Pharolux Cyno Beacon* 594 км
11
- 35836 UC3H-Y - Refinery Tatara* 407 км
12
9
  28665 Vargur I Vargur* -
13
- 35835 UC3H-Y - Harvester 1 Athanor* 2,4 а.е.
14
- 35827 UC3H-Y - Factory 56 Sotiyo* 2,4 а.е.
15
- 35841 UC3H-Y » U-INPD - Way to the Light Ansiblex Jump Gate* 2,4 а.е.
16
10
  35833 UC3H-Y - Restart Fortizar* 2,4 а.е.
17
- 35840 UC3H-Y - The Bacon is Lit Pharolux Cyno Beacon* 2,4 а.е.
18
11
  35836 UC3H-Y - Refinery Tatara* 2,4 а.е.
19
12
  35835 UC3H-Y - Wasser Athanor* 2,4 а.е.
20
13
  11963 cyno up Rapier* -
@@ -7,7 +7,7 @@
7
7
  1529 Perimeter II - Moon 1 - Caldari Navy Assembly Plant Caldari Administrative Station 14.0 AU
8
8
  4023 Perimeter VII - Poksu Mineral Group Mineral Reserve Caldari Mining Station 12.1 AU
9
9
  35833 Perimeter - Tranquility Trading Tower Fortizar 3,808 km
10
- 35833 Perimeter - TEST War Headquarters Fortizar 5,209 km
10
+ 35833 Perimeter - TEST War Headquarters Fortizar 50,209 km
11
11
  12236 Gallente Control Tower Gallente Control Tower -
12
12
  20064 P7 M2 Blocker Gallente Control Tower Small -
13
13
  20064 P7 M1 Blocker Gallente Control Tower Small -
@@ -72,3 +72,30 @@ class TestAppSettings(TestCase):
72
72
  expected_max_pilots = 1000
73
73
 
74
74
  self.assertEqual(first=max_pilots, second=expected_max_pilots)
75
+
76
+ def test_dscan_grid_size(self):
77
+ """
78
+ Test for the default INTELTOOL_DSCAN_GRID_SIZE
79
+
80
+ :return:
81
+ :rtype:
82
+ """
83
+
84
+ grid_size = AppSettings.INTELTOOL_DSCAN_GRID_SIZE
85
+ expected_grid_size = 10000
86
+
87
+ self.assertEqual(first=grid_size, second=expected_grid_size)
88
+
89
+ @mock.patch(SETTINGS_PATH + ".AppSettings.INTELTOOL_DSCAN_GRID_SIZE", 1000)
90
+ def test_dscan_grid_size_custom(self):
91
+ """
92
+ Test for a custom INTELTOOL_DSCAN_GRID_SIZE
93
+
94
+ :return:
95
+ :rtype:
96
+ """
97
+
98
+ grid_size = AppSettings.INTELTOOL_DSCAN_GRID_SIZE
99
+ expected_grid_size = 1000
100
+
101
+ self.assertEqual(first=grid_size, second=expected_grid_size)
@@ -29,16 +29,11 @@ def get_scan_data(
29
29
  """
30
30
 
31
31
  try:
32
- scan_data = (
33
- ScanData.objects.filter( # pylint: disable=no-member
34
- scan_id__exact=scan_hash,
35
- section__exact=scan_section,
36
- )
37
- .exclude(section=ScanData.Section.INVALID)
38
- .get()
39
- )
32
+ scan_data = ScanData.objects.filter( # pylint: disable=no-member
33
+ scan_id__exact=scan_hash, section__exact=scan_section
34
+ ).get()
40
35
  processed_data = scan_data.processed_data
41
36
  except ScanData.DoesNotExist: # pylint: disable=no-member
42
- processed_data = None
37
+ processed_data = {}
43
38
 
44
39
  return JsonResponse(data=processed_data, safe=False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aa-intel-tool
3
- Version: 0.0.1a9
3
+ Version: 0.0.1a10
4
4
  Summary: A simple parser for D-Scans and more for Alliance Auth
5
5
  Project-URL: Changelog, https://github.com/ppfeufer/aa-intel-tool/blob/master/CHANGELOG.md
6
6
  Project-URL: Documentation, https://github.com/ppfeufer/aa-intel-tool/blob/master/README.md
@@ -254,13 +254,15 @@ Restart your Nginx service.
254
254
  To customize the app, the following settings are available and can be made in
255
255
  your `local.py`.
256
256
 
257
- | Name | Description | Default |
258
- |:----------------------------------|:-----------------------------------------------------------------------------------------------------------------|:--------|
259
- | INTELTOOL_ENABLE_MODULE_CHATSCAN | Enable or disable the chat scan module. | False |
260
- | INTELTOOL_ENABLE_MODULE_DSCAN | Enable or disable the d-scan module. | True |
261
- | INTELTOOL_ENABLE_MODULE_FLEETCOMP | Enable or disable the fleet composition module. | True |
262
- | INTELTOOL_SCAN_RETENTION_TIME | Sets the time in days for how long the scans will be kept in the database. Set to 0 to keep scans indefinitely. | 30 |
263
- | INTELTOOL_CHATSCAN_MAX_PILOTS | Sets the limit of pilots for chat scans, since these can take quite a long time to process. Set to 0 to disable. | 500 |
257
+ | Name | Description | Default |
258
+ |:----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------|:--------|
259
+ | INTELTOOL_ENABLE_MODULE_CHATSCAN | Enable or disable the chat scan module. | False |
260
+ | INTELTOOL_ENABLE_MODULE_DSCAN | Enable or disable the d-scan module. | True |
261
+ | INTELTOOL_ENABLE_MODULE_FLEETCOMP | Enable or disable the fleet composition module. | True |
262
+ | INTELTOOL_SCAN_RETENTION_TIME | Set the time in days for how long the scans will be kept in the database. Set to 0 to keep scans indefinitely. | 30 |
263
+ | INTELTOOL_CHATSCAN_MAX_PILOTS | Set the limit of pilots for chat scans, since these can take quite a long time to process. Set to 0 to disable. | 500 |
264
+ | INTELTOOL_DSCAN_GRID_SIZE | Set the grid size for D-Scans. This defines <br/>the size of the grid in km in which ships and structures are considered to be "on grid" | 10000 |
265
+
264
266
 
265
267
  > **Note**
266
268
  >
@@ -1,12 +1,12 @@
1
1
  aa_intel_tool/__init__.py,sha256=u6zbS8cbdtUvtSfC1nRmGMXJHAnt4vTQmD6EAjhN_-U,174
2
2
  aa_intel_tool/admin.py,sha256=7ULgwNZS7ak6Ob1vYf9V8TuiO-UnmQ_1v43vJt_J-Cg,2440
3
- aa_intel_tool/app_settings.py,sha256=V-FAaFHijpoOAvT5fpYj6V51YInb32wtPEjTj_kMu3c,1868
3
+ aa_intel_tool/app_settings.py,sha256=bZc-2__TI1Ok6XOZAeNrjRQvKCALN6pwULFUUCmjwd0,2146
4
4
  aa_intel_tool/apps.py,sha256=0LcoWtasZy27ywjmV-rC6yJSKUTic_yscf1yyXtMQKg,450
5
5
  aa_intel_tool/auth_hooks.py,sha256=hqLLe3I0nvvth1K1MNfItzp4OUiftwL7RyACDOgaTDI,1538
6
- aa_intel_tool/constants.py,sha256=nfIvxiMszpLNhjLf6a8J8zLj3TXYMCdrcfsh7LqF-5g,2200
6
+ aa_intel_tool/constants.py,sha256=W_5XJsqxFRjE6OsvU5K-2UQGgMQ8L2ekiuUSKRaZeQ0,2286
7
7
  aa_intel_tool/exceptions.py,sha256=1uEreioXqnWR8trgU5RSvj7CZ6GdkaWG-wI5G1pfvqs,693
8
8
  aa_intel_tool/form.py,sha256=zpIigT8Q0XxpS4_izUX7XXxMlcBIuKWWlZcpkNJn4LE,503
9
- aa_intel_tool/models.py,sha256=y5YaRwOFXnBP0lDWk-VYJlaitiTdKhG77qeNQVzVoGA,3693
9
+ aa_intel_tool/models.py,sha256=Bkc6KvsTybE1ZHUGjvKHQ7TvMo101naNH1iMUElyk0M,3740
10
10
  aa_intel_tool/providers.py,sha256=jIo3ErUfshRhwqALHV5I7toZ9p0PWn3ZRQFof_DXnh4,198
11
11
  aa_intel_tool/tasks.py,sha256=lkW1kDJzU8iOINp_tKEL5rG9DM5icvEkyYQUhGrW_hU,1088
12
12
  aa_intel_tool/urls.py,sha256=cncBfnPbJErN9w0qM83ZmtlnMJEolDHLQllU8bvxUa0,720
@@ -31,12 +31,13 @@ aa_intel_tool/migrations/0002_remove_scan_processed_data_scandata.py,sha256=3L5e
31
31
  aa_intel_tool/migrations/0003_alter_scandata_scan.py,sha256=AX_9prazV-ewLB9l6Eekjjc4N2o5hfcM7yQ8QV2yGwQ,718
32
32
  aa_intel_tool/migrations/0004_alter_scandata_section.py,sha256=tmOTfA3_gX0mn4C78yGg-Y9nyVYTuQFuoNudBBrdK9w,1150
33
33
  aa_intel_tool/migrations/0005_alter_scan_options_alter_scandata_options_and_more.py,sha256=sCHsJPxPjHGkkGK_5oE6_DKkrqzup_PtH52poBKTa0o,3106
34
+ aa_intel_tool/migrations/0006_alter_scandata_unique_together.py,sha256=Gamg7fEG0qsKYpoa8EtlURkQa8x-L47Gr6cWd91Qouw,403
34
35
  aa_intel_tool/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
36
  aa_intel_tool/parser/__init__.py,sha256=BAFdCEaeC0cmv74ZuZGZJCgJOiliMVBpgdQI63ABJ2U,30
36
37
  aa_intel_tool/parser/general.py,sha256=9iqbq7TP5yr9gwkXMj9h3ontdBL0nm0t9qll914RzkI,1952
37
38
  aa_intel_tool/parser/helper/db.py,sha256=tL74iGc7Rt6XsULWvYQgO_5K0TE05YbYhDJmH3LV12c,706
38
39
  aa_intel_tool/parser/module/chatlist.py,sha256=sn7JdpMJS-BfQFNJng_ptLK44cJuHbYHEYw728b1-dE,10395
39
- aa_intel_tool/parser/module/dscan.py,sha256=uUmlK3zfP7IElO4PVyw8_6AD8BKfS1cRVf9y_uRbb5o,6696
40
+ aa_intel_tool/parser/module/dscan.py,sha256=FjGjJsuqCNCnrxWNloCe-Hdb7fSm5YVUZeFA7cnBBps,9141
40
41
  aa_intel_tool/parser/module/fleetcomp.py,sha256=26wcMKFr4Ut4NgrVC1CoXrdaH9QarnTcf_1hr9XMCKI,2524
41
42
  aa_intel_tool/static/aa_intel_tool/css/aa-bootstrap-fix.css,sha256=823I67Ghwq-uAC8jZfFHwugzuOUIMvxhmGBULOQi_Jo,324
42
43
  aa_intel_tool/static/aa_intel_tool/css/aa-bootstrap-fix.min.css,sha256=7aKlgAk1BZzjvHUAm-CPIMgXLFp97TW3eCoSiHEVajw,124
@@ -77,7 +78,7 @@ aa_intel_tool/templatetags/__init__.py,sha256=sP2D1ovt2gGAPLcGQkByRgXYhvUJ6C52mZ
77
78
  aa_intel_tool/templatetags/inteltool_versioned_static.py,sha256=Jed97jkX8PBQI8KXUjOKLEqR9v29ApwC65ndOFRiZ4w,520
78
79
  aa_intel_tool/tests/__init__.py,sha256=NLuMBNDHYOXDmPgpyG-g_kDaATVQWv1iC-dJ8BA1kZc,29
79
80
  aa_intel_tool/tests/test_access.py,sha256=OLIP07bBkUvVNrDoSiAGHfIJOvEmvIiymF-lDim2U24,2215
80
- aa_intel_tool/tests/test_app_settings.py,sha256=RBVylQhDCy_9BlI8GMehFAKLxKPdmJF1kidEndVtSTs,1856
81
+ aa_intel_tool/tests/test_app_settings.py,sha256=xcmNfyjJco3ED-csBkYSgrzeEr3Y5KzZo8ZY3BvtvXw,2567
81
82
  aa_intel_tool/tests/test_auth_hooks.py,sha256=UbTft9DtukQFO3mWHYnYwMD0Xt50oezVfS1a7IfjNUE,2130
82
83
  aa_intel_tool/tests/test_models.py,sha256=rtwWDO251OoU6mHo-6u0LS0X7qb7uHtDIPoY3iEvhS0,817
83
84
  aa_intel_tool/tests/test_parser.py,sha256=01Ngo-Ff5KBtZz_fYTvGuVDzzG1GbxfISHneEBEACSc,3937
@@ -86,13 +87,13 @@ aa_intel_tool/tests/utils.py,sha256=tGkKJAbUVS2T9_xBN_0W6JHqKDs6iifjUZdUP-expIU,
86
87
  aa_intel_tool/tests/test-data/chatscan-faulty.txt,sha256=E1kv5BaZGagLP9VTaac8sVt0PMUMNpyMMqkx3dCZ8cg,40
87
88
  aa_intel_tool/tests/test-data/chatscan.txt,sha256=QkZER0l6-iw7uwTiDIpp2PUQ4NecaHWX83rZSrLp_LI,40
88
89
  aa_intel_tool/tests/test-data/dscan-german-client.txt,sha256=GKMfjZUYWW7ZSwhcAeElBv6Au53cHY_PlPJAvCpN1Aw,9082
89
- aa_intel_tool/tests/test-data/dscan-russian-client.txt,sha256=0aB16YDtsY-owrqbewLGkHQS4Y3tn8LxK14F9_njAyY,936
90
- aa_intel_tool/tests/test-data/dscan.txt,sha256=LZxUZdDdOHomtQ8m26yOVwWdP9gObR4yY26w5BhnVAc,3051
90
+ aa_intel_tool/tests/test-data/dscan-russian-client.txt,sha256=ngKOlyCaxrV3NiewfTRxcGoRMOCGHfY0j9TG7vPnMTk,579
91
+ aa_intel_tool/tests/test-data/dscan.txt,sha256=AhLhu3hbR-XHZQI34_xBqhNnDwnt9Z_z3B_BYjoSfhg,3052
91
92
  aa_intel_tool/tests/test-data/fleetcomp.txt,sha256=-ofpfNyKeeWjQIG02ED-FE3sQQhtZjumvSxcZ-uxgCQ,154
92
93
  aa_intel_tool/views/__init__.py,sha256=zf5e30BdJ772oDJkQnBfFIi5a7-HEJByUIkv0iz3Kr8,29
93
- aa_intel_tool/views/ajax.py,sha256=0X2TIU51jrO6sw7DBlZyjhcX-_HCdP9YErpwiFI4EaM,1030
94
+ aa_intel_tool/views/ajax.py,sha256=7xBsd0Eg6enDl7JeI9vNJXaF66lWjhStLfYdJGAobvM,911
94
95
  aa_intel_tool/views/general.py,sha256=lftJbTxVlW-cZFg8dQAvtFPP-LDBgORHj9ElXGSGBus,3649
95
- aa_intel_tool-0.0.1a9.dist-info/METADATA,sha256=4qxvtUbWUCZcZ7U2iyEJERzgWaj8VaRPG4pXlOygBTU,12431
96
- aa_intel_tool-0.0.1a9.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
97
- aa_intel_tool-0.0.1a9.dist-info/licenses/LICENSE,sha256=UTib95uJWe2NQIG3TzU8-Hm-eaEZFqv9fqsjNT_xKWU,35151
98
- aa_intel_tool-0.0.1a9.dist-info/RECORD,,
96
+ aa_intel_tool-0.0.1a10.dist-info/METADATA,sha256=nFTG2r5chISk2WY-jZ_mXWpIsyPNQThTtEH-P24JB_w,12788
97
+ aa_intel_tool-0.0.1a10.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
98
+ aa_intel_tool-0.0.1a10.dist-info/licenses/LICENSE,sha256=UTib95uJWe2NQIG3TzU8-Hm-eaEZFqv9fqsjNT_xKWU,35151
99
+ aa_intel_tool-0.0.1a10.dist-info/RECORD,,