irie 0.0.27__py3-none-any.whl → 0.0.29__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.

Potentially problematic release.


This version of irie might be problematic. Click here for more details.

Files changed (41) hide show
  1. irie/apps/admin_dash/__init__.py +1 -0
  2. irie/apps/admin_dash/admin.py +0 -0
  3. irie/apps/admin_dash/apps.py +6 -0
  4. irie/apps/admin_dash/forms.py +67 -0
  5. irie/apps/admin_dash/models.py +1 -0
  6. irie/apps/admin_dash/templatetags/__init__.py +0 -0
  7. irie/apps/admin_dash/templatetags/admin_material.py +86 -0
  8. irie/apps/admin_dash/templatetags/replace_value.py +8 -0
  9. irie/apps/admin_dash/urls.py +36 -0
  10. irie/apps/admin_dash/utils.py +462 -0
  11. irie/apps/admin_dash/views.py +113 -0
  12. irie/apps/events/views.py +4 -5
  13. irie/apps/inventory/filters.py +1 -1
  14. irie/apps/inventory/migrations/0003_asset_notes.py +18 -0
  15. irie/apps/inventory/models.py +11 -5
  16. irie/apps/inventory/urls.py +1 -0
  17. irie/apps/inventory/views.py +72 -33
  18. irie/apps/static/assets/css/brace.css +22272 -14509
  19. irie/apps/static/assets/css/brace.css.map +1 -1
  20. irie/apps/static/assets/css/brace.min.css +32 -1
  21. irie/apps/static/assets/img/twin.png +0 -0
  22. irie/apps/static/assets/js/brace.js +858 -38
  23. irie/apps/templates/events/event-table.html +1 -2
  24. irie/apps/templates/includes/asset-event-table.html +1 -1
  25. irie/apps/templates/includes/navigation.html +1 -1
  26. irie/apps/templates/includes/sidebar.html +4 -4
  27. irie/apps/templates/inventory/asset-profile.html +6 -1
  28. irie/apps/templates/inventory/asset-table.html +12 -2
  29. irie/apps/templates/inventory/dashboard.html +0 -1
  30. irie/apps/templates/layouts/base.html +1 -0
  31. irie/apps/templates/site/index.html +10 -10
  32. irie/apps/templates/site/robots.txt +42 -1
  33. irie/core/settings.py +1 -0
  34. irie/init/calid.py +95 -95
  35. irie/init/management/commands/init_assets.py +1 -11
  36. irie/init/management/commands/init_cesmd.py +19 -8
  37. {irie-0.0.27.dist-info → irie-0.0.29.dist-info}/METADATA +3 -2
  38. {irie-0.0.27.dist-info → irie-0.0.29.dist-info}/RECORD +41 -28
  39. {irie-0.0.27.dist-info → irie-0.0.29.dist-info}/WHEEL +1 -1
  40. {irie-0.0.27.dist-info → irie-0.0.29.dist-info}/entry_points.txt +0 -0
  41. {irie-0.0.27.dist-info → irie-0.0.29.dist-info}/top_level.txt +0 -0
@@ -16,9 +16,8 @@
16
16
  <svg class="icon icon-xxs" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path></svg>
17
17
  </a>
18
18
  </li>
19
- <li class="breadcrumb-item"><a href="{% url 'dashboard' %}">BRACE2</a></li>
20
19
  <li class="breadcrumb-item">Events</li>
21
- <li class="breadcrumb-item active" aria-current="page">CGS</li>
20
+ <li class="breadcrumb-item" aria-current="page">CGS</li>
22
21
  </ol>
23
22
  </nav>
24
23
  <h2 class="h4">All Events</h2>
@@ -60,7 +60,7 @@
60
60
  </table>
61
61
 
62
62
  <div class="card-footer px-3 border-0 d-flex flex-column flex-lg-row align-items-center justify-content-between">
63
- <nav aria-label="Page navigation example">
63
+ <nav aria-label="Table page navigation">
64
64
  <ul class="pagination mb-0">
65
65
  <li class="page-item {% if not evaluations.has_previous %}disabled{% endif %}">
66
66
  {% if evaluations.has_previous %}
@@ -1,4 +1,4 @@
1
- <nav class="navbar navbar-top navbar-expand navbar-dashboard navbar-dark ps-0 pe-2 pb-0">
1
+ <nav class="navbar navbar-top navbar-expand navbar-dashboard navbar-dark ps-0 pe-2 pb-0">
2
2
  <div class="container-fluid px-0">
3
3
  <div class="d-flex justify-content-between w-100" id="navbarSupportedContent">
4
4
  <div class="d-flex align-items-center">
@@ -15,7 +15,7 @@
15
15
  </nav>
16
16
 
17
17
  <!-- <nav id="sidebarMenu" class="sidebar d-lg-block bg-gray-800 text-white collapse" data-simplebar> -->
18
- <nav id="sidebarMenu" class="sidebar d-lg-block collapse bg-gray-200" data-simplebar>
18
+ <aside id="sidebarMenu" class="sidebar d-lg-block collapse bg-white ms-2 my-2 navbar-vertical navbar-expand-xs" data-simplebar>
19
19
  <div class="sidebar-inner px-4 pt-3">
20
20
  <div class="user-card d-flex d-md-none align-items-center justify-content-between justify-content-md-center pb-4">
21
21
  <div class="d-flex align-items-center">
@@ -26,7 +26,6 @@
26
26
  </div>
27
27
  {% endcomment %}
28
28
  <div class="d-block">
29
- <h2 class="h5 mb-3">Hi</h2>
30
29
  <a href="/page-sign-in.html" class="btn btn-secondary btn-sm d-inline-flex align-items-center">
31
30
  <svg class="icon icon-xxs me-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"></path></svg>
32
31
  Log Out
@@ -47,9 +46,10 @@
47
46
  <span class="sidebar-icon">
48
47
  <img src="{{ ASSETS_ROOT }}/img/brace2-no_text.png" height="20" width="20" alt="BRACE2 Logo">
49
48
  </span>
50
- <span class="mt-1 ms-1 sidebar-text">BRACE<sup class="superscript">2</sup></span>
49
+ <span class="mt-1 ms-1 sidebar-text center">BRACE<sup class="superscript">2</sup></span>
51
50
  </a>
52
51
  </li>
52
+ <hr class="horizontal dark mt-0">
53
53
 
54
54
  <li role="separator" class="dropdown-divider mt-2 mb-2 border-gray-700"></li>
55
55
 
@@ -156,4 +156,4 @@
156
156
 
157
157
  </ul>
158
158
  </div>
159
- </nav>
159
+ </aside>
@@ -1,7 +1,7 @@
1
1
  {% extends "layouts/base.html" %}
2
2
  {% load get %}
3
3
  {% load nbi %}
4
- {% block title %} {{ asset.calid }} {% endblock %}
4
+ {% block title %} {{ asset.calid }} Digital Twin{% endblock %}
5
5
  {% block meta %}
6
6
  <meta name="description" content="{% if asset.id|divisibleby:2 %}Live-updating digital twin for health assessment of the {{ asset.name }} ({{ asset.calid }}).{% else %}Digital twin profile for real-time health monitoring of the {{ asset.name }} ({{ asset.calid }}) bridge{% endif %}">
7
7
  {% endblock %}
@@ -137,6 +137,7 @@
137
137
  </a>
138
138
  </div>
139
139
  </div>
140
+ {% if True %}
140
141
  <div class="col-10">
141
142
  <p>
142
143
  {% if asset.id|divisibleby:3 %}
@@ -177,6 +178,7 @@
177
178
  {% endif %}
178
179
  </p>
179
180
  </div>
181
+ {% endif %}
180
182
 
181
183
  {# BRIDGE RENDERING #}
182
184
  <details id="asset-sensors" open><summary><h3>Geometry</h3></summary>
@@ -207,6 +209,9 @@
207
209
  style="width: 100%; height: 400px;">
208
210
  </model-viewer>
209
211
  </div>
212
+ <div class="card-footer">
213
+ Powered by <a href="https://veux.stairlab.io">veux</a>
214
+ </div>
210
215
  </div>
211
216
  </div>
212
217
  </div>
@@ -37,12 +37,19 @@ table a[href^="https://"]::after
37
37
  </nav>
38
38
  <h2 class="h4">Inventory</h2>
39
39
  </div>
40
+ <div class="btn-toolbar mb-2 mb-md-0">
41
+ <form action="{% url 'asset_table_export_csv' %}" method="get">
42
+ {% for key, value in request.GET.items %}
43
+ <input type="hidden" name="{{ key }}" value="{{ value }}">
44
+ {% endfor %}
45
+ <button type="submit" class="btn btn-sm btn-outline-primary">Export</button>
46
+ </form>
47
+ </div>
40
48
  </div>
41
49
 
42
50
  {# Content #}
43
51
  <div class="row">
44
52
  <div class="col-xl-4">
45
- {# #}
46
53
  <div class="card border-0 shadow">
47
54
  <div class="card-header">
48
55
  <div class="row align-items-center">
@@ -61,6 +68,7 @@ table a[href^="https://"]::after
61
68
  <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"></path>
62
69
  </svg>
63
70
  </span>
71
+ {% if False %}
64
72
  <button type="button" class="btn input-group-text btn-outline dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
65
73
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-fill" viewBox="0 0 16 16">
66
74
  <path d="M7.247 11.14l-4.796-5.481C2.014 5.334 2.482 4.5 3.25 4.5h9.5c.768 0 1.236.835.799 1.159l-4.796 5.481a1 1 0 0 1-1.506 0z"/>
@@ -83,6 +91,7 @@ table a[href^="https://"]::after
83
91
  <label class="form-check-label" for="flexSwitchCheckDisabled">District</label>
84
92
  </div></li>
85
93
  </ul>
94
+ {% endif %}
86
95
  <input
87
96
  id="search"
88
97
  name="search"
@@ -100,6 +109,7 @@ table a[href^="https://"]::after
100
109
  <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd"></path>
101
110
  </svg>
102
111
  </span>
112
+ {% if False %}
103
113
  <button type="button" class="btn input-group-text btn-outline dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
104
114
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-caret-down-fill" viewBox="0 0 16 16">
105
115
  <path d="M7.247 11.14l-4.796-5.481C2.014 5.334 2.482 4.5 3.25 4.5h9.5c.768 0 1.236.835.799 1.159l-4.796 5.481a1 1 0 0 1-1.506 0z"/>
@@ -118,6 +128,7 @@ table a[href^="https://"]::after
118
128
  <label class="form-check-label" for="flexSwitchCheckChecked">Built</label>
119
129
  </div></li>
120
130
  </ul>
131
+ {% endif %}
121
132
  <input
122
133
  id="max_year"
123
134
  name="max_year"
@@ -130,7 +141,6 @@ table a[href^="https://"]::after
130
141
  >
131
142
  </div>
132
143
 
133
-
134
144
  <!-- CESMD Not Null Checkbox -->
135
145
  <div class="col-12">
136
146
  <div class="form-check">
@@ -15,7 +15,6 @@
15
15
  <svg class="icon icon-xxs" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path></svg>
16
16
  </a>
17
17
  </li>
18
- <li class="breadcrumb-item"><a href="{% url 'dashboard' %}">BRACE<sup>2</sup></a></li>
19
18
  <li class="breadcrumb-item active" aria-current="page">Dashboard</li>
20
19
  </ol>
21
20
  </nav>
@@ -39,6 +39,7 @@
39
39
 
40
40
  <link type="text/css" href="{{ ASSETS_ROOT }}/vendor/sweetalert2/dist/sweetalert2.min.css" rel="stylesheet">
41
41
  <link type="text/css" href="{{ ASSETS_ROOT }}/vendor/notyf/notyf.min.css" rel="stylesheet">
42
+ <!-- <link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.min.css" media="screen" rel="stylesheet"> -->
42
43
  <link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.css" media="screen" rel="stylesheet">
43
44
 
44
45
  {% block stylesheets %}{% endblock stylesheets %}
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
7
  <meta name="title" content="BRACE2 Platform">
8
8
  <meta name="author" content="Claudio M. Perez">
9
- <meta name="description" content="BRACE2 platform for structural health monitoring.">
9
+ <meta name="description" content="Bridge rapid assessment center for extreme events (BRACE2) platform for real-time structural health monitoring.">
10
10
 
11
11
  {# Open Graph and Facebook #}
12
12
  <meta property="og:type" content="website">
@@ -36,7 +36,7 @@
36
36
  {% endcomment %}
37
37
 
38
38
  {# BRACE CSS #}
39
- <link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.css" rel="stylesheet">
39
+ <link type="text/css" href="{{ ASSETS_ROOT }}/css/brace.min.css" rel="stylesheet">
40
40
 
41
41
  {# TODO: Use the _analytics.html partial to include production code specific code & trackers #}
42
42
  </head>
@@ -171,7 +171,7 @@ td.left-text{vertical-align:middle}
171
171
  </h2>
172
172
  {# Button Modal #}
173
173
  <div class="d-flex align-items-center justify-content-center mb-5">
174
- <a href="{% url 'dashboard' %}" class="btn btn-primary d-inline-flex align-items-center me-4">
174
+ <a href="{% url 'asset_table' %}" class="btn btn-primary d-inline-flex align-items-center me-4">
175
175
  <svg class="icon icon-xs me-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3 3a1 1 0 000 2v8a2 2 0 002 2h2.586l-1.293 1.293a1 1 0 101.414 1.414L10 15.414l2.293 2.293a1 1 0 001.414-1.414L12.414 15H15a2 2 0 002-2V5a1 1 0 100-2H3zm11 4a1 1 0 10-2 0v4a1 1 0 102 0V7zm-3 1a1 1 0 10-2 0v3a1 1 0 102 0V8zM8 9a1 1 0 00-2 0v2a1 1 0 102 0V9z" clip-rule="evenodd"></path></svg>
176
176
  Inventory
177
177
  </a>
@@ -219,9 +219,9 @@ td.left-text{vertical-align:middle}
219
219
  <div class="col-lg-5 order-lg-2 mb-5 mb-lg-0">
220
220
  <h2 class="h1">Digital Twins</h2>
221
221
  <p class="mb-4">The <em>IRiE</em> engine is used to realize high-fidelity digital twins that are backed by
222
- state-of-the-art analysis platforms like <a href="pypi.org/project/opensees">OpenSees</a> for nonlinear finite element analysis and <em><a href="chrystalchern.github.io/mdof">mdof</a></em> for system identification.</p>
222
+ state-of-the-art analysis platforms like <a href="https://pypi.org/project/opensees">OpenSees</a> for nonlinear finite element analysis and <em><a href="https://chrystalchern.github.io/mdof">mdof</a></em> for system identification.</p>
223
223
  </div>
224
- <div class="col-lg-4 order-lg-1 card shadow"><img src="{{ ASSETS_ROOT }}/img/metric.png"
224
+ <div class="col-lg-4 order-lg-1 card shadow"><img src="{{ ASSETS_ROOT }}/img/twin.png"
225
225
  alt="Digital twins"></div>
226
226
  </div>
227
227
  {% comment %}
@@ -229,7 +229,7 @@ td.left-text{vertical-align:middle}
229
229
  <h2 class="h1 d-flex align-items-center"> Corridors<span
230
230
  class="badge-md mb-0 fs-6 badge ms-3 rounded-pill text-dark bg-secondary">New</span></h2>
231
231
  <p class="mb-4">Corridor-level health analysis and recovery planning has been implemented through collaborations at UC Berkeley and
232
- the <a href="https://dot.ca.gov/">California department of transportation</a>.</p>
232
+ the <a href="https://dot.ca.gov/">California department of transportation</a> (Caltrans).</p>
233
233
  <a href="https://dot.ca.gov/-/media/dot-media/programs/research-innovation-system-information/documents/research-notes/task3798-rns-05-24-a11y.pdf"
234
234
  target="_blank" class="btn btn-outline-gray-600 d-inline-flex align-items-center"><svg
235
235
  class="icon icon-xs me-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
@@ -258,7 +258,7 @@ td.left-text{vertical-align:middle}
258
258
  <a href="https://stairlab.berkeley.edu/software/opensees/">
259
259
  <img class="first-column-layout"
260
260
  src="{{ ASSETS_ROOT }}/content_images/brace/opensees.jpg" alt="opensees"></a></td>
261
- <td class=full-center-text><a href="https://pypi.org/project/opensees" >opensees</a></td>
261
+ <td class=full-center-text><a href="https://pypi.org/project/opensees" >sees</a></td>
262
262
  <td class=left-text>Direct and idiomatic bindings to <a href="https://github.com/claudioperez/OpenSeesRT" >
263
263
  <samp>OpenSeesRT</samp></a> kernel for finite element analysis.</td>
264
264
  </tr>
@@ -282,9 +282,9 @@ td.left-text{vertical-align:middle}
282
282
  </tr>
283
283
  <tr>
284
284
  <td style="text-align:center"><img class="first-column-layout"
285
- src="{{ ASSETS_ROOT }}/content_images/brace/sees.png" alt="sees"></td>
286
- <td class=full-center-text><a href="https://pypi.org/project/sees">sees</a></td>
287
- <td class=left-text>A modern finite element post-processor renderer.</td>
285
+ src="{{ ASSETS_ROOT }}/content_images/brace/sees.png" alt="veux logo"></td>
286
+ <td class=full-center-text><a href="https://pypi.org/project/veux">veux</a></td>
287
+ <td class=left-text>A web-first visualization framework for structural simulation.</td>
288
288
  </tr>
289
289
  </table>
290
290
  </div>
@@ -1,8 +1,49 @@
1
1
  Sitemap: https://structures.live/sitemap.xml
2
2
 
3
3
  User-Agent: *
4
- Disallow: /inventory/*/*/
4
+ Disallow: /inventory/*/[ep]*/
5
5
 
6
+ User-agent: AI2Bot
7
+ User-agent: Ai2Bot-Dolma
8
+ User-agent: Amazonbot
9
+ User-agent: anthropic-ai
10
+ User-agent: Applebot
11
+ User-agent: Applebot-Extended
12
+ User-agent: Bytespider
13
+ User-agent: CCBot
14
+ User-agent: ChatGPT-User
15
+ User-agent: Claude-Web
16
+ User-agent: ClaudeBot
17
+ User-agent: cohere-ai
18
+ User-agent: Diffbot
19
+ User-agent: DuckAssistBot
20
+ User-agent: FacebookBot
21
+ User-agent: FriendlyCrawler
22
+ User-agent: Google-Extended
23
+ User-agent: GoogleOther
24
+ User-agent: GoogleOther-Image
25
+ User-agent: GoogleOther-Video
6
26
  User-agent: GPTBot
27
+ User-agent: iaskspider/2.0
28
+ User-agent: ICC-Crawler
29
+ User-agent: ImagesiftBot
30
+ User-agent: img2dataset
31
+ User-agent: ISSCyberRiskCrawler
32
+ User-agent: Kangaroo Bot
33
+ User-agent: Meta-ExternalAgent
34
+ User-agent: Meta-ExternalFetcher
35
+ User-agent: OAI-SearchBot
36
+ User-agent: omgili
37
+ User-agent: omgilibot
38
+ User-agent: PanguBot
39
+ User-agent: PerplexityBot
40
+ User-agent: PetalBot
41
+ User-agent: Scrapy
42
+ User-agent: Sidetrade indexer bot
43
+ User-agent: Timpibot
44
+ User-agent: VelenPublicWebCrawler
45
+ User-agent: Webzio-Extended
46
+ User-agent: YouBot
47
+ Disallow: /
7
48
  Disallow: /
8
49
 
irie/core/settings.py CHANGED
@@ -46,6 +46,7 @@ CSRF_TRUSTED_ORIGINS = [
46
46
  # Application definition
47
47
 
48
48
  INSTALLED_APPS = [
49
+ # "irie.apps.admin_dash", # TODO
49
50
  "django.contrib.admin",
50
51
  "django.contrib.auth",
51
52
  "django.contrib.contenttypes",
irie/init/calid.py CHANGED
@@ -4,112 +4,112 @@
4
4
  #
5
5
  #===----------------------------------------------------------------------===#
6
6
  CESMD = {
7
- "56-0586G": "CE13705", # "08-RIV-15-R41.57", "Corona - I15/Hwy91 Interchange Bridge"
8
- "53-1471": "CE14406", # "07-LA-47-0.86", "Vincent Thomas Bridge"
9
- "53-2791": "CE24704", # "07-LA-10-8.8", "La Cienega Bridge"
10
- "53-1794": "CE24706", # "07-LA-14-R57.37", "Palmdale - Hwy 14/Barrel Springs Bridge"
11
- "50-0271": "CE24775", # "06-KER-5-4.1", "Grapevine - I5/Lebec Rd Bridge"
12
- "43-0031E": "CE47315", # "05-SBT-156-0.00", "San Juan Bautista - Hwy 101/156 Overpass"
13
- "28-0352L": "CE68185", # "04-SOL-80-0.01", "Vallejo - Carquinez/I80 West Bridge"
14
- "23-0015R": "CE68184", # "04-SOL-80-12.8", "Vallejo - Carquinez/I80 East Bridge"
15
- "10-0299": "CE79421", # "01-MEN-101-160.03", "Confusion Hill Bridge (Leggett, Hwy 101)"
16
- "04-0170": "CE89708", # "01-HUM-101-R92.99", "Arcata - Hwy 101/Murray Road Bridge"
17
- "04-0229": "CE89735", # "01-HUM-255-0.7", "Eureka - Middle Channel Bridge"
18
- "04-0230": "CE89736", # "01-HUM-255-0.2", "Eureka - Eureka Channel Bridge"
19
- "04-0016R": "CE89973", # "01-HUM-101-53.9", "Rio Dell - Hwy 101/Eel River Bridge"
20
- "50-0340": "CE33742", # "09-KER-395-R25.08", "Ridgecrest - Hwy 395/Brown Road Bridge"
21
- "53-2795F": "CE24694", # "07-LA-5-24.5", "Sylmar - I5/14 Interchange Bridge"
22
- "55-0225": "CE13795", # "07-ORA-5-6.62", "Capistrano Beach - I5/Via Calif. Bridge"
23
-
24
- "58-0215": "CE01336", # "El Centro - Hwy8/Meloland Overpass [Abandoned]"
25
- "47-0048": "CE54730", # "Lake Crowley - Hwy 395 Bridge"
26
- "04-0228": "CE89686", # "Eureka - Samoa Channel Bridge"
27
- "04-0236": "CE89324", # "Rio Dell - Hwy 101/Painter St. Overpass"
28
- "54-0823G": "CE23631", # "San Bernardino - I10/215 Interchange Br"
29
- "33-0214L": "CE58658", # "Hayward - Hwy 580/238 Interchange Bridge"
7
+ "56-0586G": ("CE13705", "08-RIV-15-R41.57" , "Corona - I15/Hwy91 Interchange Bridge"),
8
+ "53-1471": ("CE14406", "07-LA-47-0.86" , "Vincent Thomas Bridge"),
9
+ "53-2791": ("CE24704", "07-LA-10-8.8" , "La Cienega Bridge"),
10
+ "53-1794": ("CE24706", "07-LA-14-R57.37" , "Palmdale - Hwy 14/Barrel Springs Bridge"),
11
+ "50-0271": ("CE24775", "06-KER-5-4.1" , "Grapevine - I5/Lebec Rd Bridge"),
12
+ "43-0031E": ("CE47315", "05-SBT-156-0.00" , "San Juan Bautista - Hwy 101/156 Overpass"),
13
+ "28-0352L": ("CE68185", "04-SOL-80-0.01" , "Vallejo - Carquinez/I80 West Bridge"),
14
+ "23-0015R": ("CE68184", "04-SOL-80-12.8" , "Vallejo - Carquinez/I80 East Bridge"),
15
+ "10-0299": ("CE79421", "01-MEN-101-160.03" , "Confusion Hill Bridge (Leggett, Hwy 101)"),
16
+ "04-0170": ("CE89708", "01-HUM-101-R92.99" , "Arcata - Hwy 101/Murray Road Bridge"),
17
+ "04-0229": ("CE89735", "01-HUM-255-0.7" , "Eureka - Middle Channel Bridge"),
18
+ "04-0230": ("CE89736", "01-HUM-255-0.2" , "Eureka - Eureka Channel Bridge"),
19
+ "04-0016R": ("CE89973", "01-HUM-101-53.9" , "Rio Dell - Hwy 101/Eel River Bridge"),
20
+ "50-0340": ("CE33742", "09-KER-395-R25.08" , "Ridgecrest - Hwy 395/Brown Road Bridge"),
21
+ "53-2795F": ("CE24694", "07-LA-5-24.5" , "Sylmar - I5/14 Interchange Bridge"),
22
+ "55-0225": ("CE13795", "07-ORA-5-6.62" , "Capistrano Beach - I5/Via Calif. Bridge"),
23
+
24
+ "58-0215": ("CE01336", None, "El Centro - Hwy8/Meloland Overpass [Abandoned]"),
25
+ "47-0048": ("CE54730", None, "Lake Crowley - Hwy 395 Bridge"),
26
+ "04-0228": ("CE89686", None, "Eureka - Samoa Channel Bridge"),
27
+ "04-0236": ("CE89324", None, "Rio Dell - Hwy 101/Painter St. Overpass"),
28
+ "54-0823G": ("CE23631", None, "San Bernardino - I10/215 Interchange Br"),
29
+ "33-0214L": ("CE58658", None, "Hayward - Hwy 580/238 Interchange Bridge"),
30
30
 
31
31
  #-------------------------------------
32
32
 
33
- "34-0006": "CE58600", # "Oakland - SF Bay Bridge/East: SAS"
34
- # "34-0006": "CE58601", # "04-SF-80-8.7", "Oakland - SF Bay Bridge/East: Skyway"
35
- # "34-0006": "CE58602", # "Oakland - SF Bay Bridge/East: YBITS"
36
- # "34-0006": "CE58603", # "Oakland - SF Bay Bridge/East: E Approach"
37
- "34-0003": "CE58632", # "04-SF-80-5.6", "San Francisco - Bay Bridge/West"
38
-
39
- "35-0054": "CE58677", # "San Mateo Bridge"
40
- # "35-0054": "CE58799", # "San Mateo Bridge Trestle"
41
- "53-3032": "CE14709", # "Long Beach - Schuyler Heim Bridge"
42
- "51-0104": "CE25749", # "Santa Barbara - San Roque Canyon Bridge"
43
- "44-0298": "CE47646", # "Big Sur - New Hwy 1/Pfeiffer Cnyn Bridge"
44
- "44-0060": "CE47729", # "Big Sur - Hwy 1/Pfeiffer Canyon Bridge [Demolished]"
45
- # "37-0470L": "CE57748", # "Santa Clara - Hwy 237/Alviso Overpass"
46
- # "37-0470K": "CE57748", # "Santa Clara - Hwy 237/Alviso Overpass"
47
- "27-0013": "CE68778", # "Novato - Hwy37/Petaluma River Bridge"
48
- "17-0058L": "CE76741", # "Truckee - I80/Truckee River Bridge"
49
- "06-0210": "CE88638", # "Shasta Lake - I5/Antlers Bridge"
50
- "54-0474F": "CE12666", # "North Palm Springs - I10/Hwy 62 Bridge"
51
- "53-1185": "CE14690", # "Los Angeles - I405/San Gabriel River Br"
52
- "50-0402R": "CE34715", # "Mojave - Hwy 14/Railroad Bridge"
53
- "33-0347S": "CE58656", # "Oakland - Hwy 580/13 Interchange Bridge"
54
- "33-0302H": "CE58657", # "Oakland - Hwy 580/24 Interchange Bridge"
55
- # "35-0285": "CE58678", # "Belmont - I280 Pedestrian Bridge"
56
-
57
- "01-0020": "CE99190", # "01-DN-101-36.06", "Crescent City - Hwy 101/Smith Rvr Bridge"
58
- "01-0028": "CE99710", # "01-DN-101-R4.04", "Klamath - Hwy 101/Klamath River Bridge"
59
- "10-0081": "CE69760", # "01-MEN-101-R9.53", "Hopland - Hwy 101/Railroad Bridge"
60
- "10-0134": "CE79683", # "01-MEN-1-43.00", "Albion - Hwy 1/Salmon Creek Bridge"
61
- "10-0031": "CE79757", # "01-MEN-271-5.2", "Leggett - Cedar Creek Bridge"
62
- "10-0030": "CE79761", # "01-MEN-271-4.9", "Leggett - Big Dann Bridge"
63
- "10-0176": "CE79296", # "01-MEN-1-96.9", "Fort Bragg - Hwy 1/Noyo River Bridge"
64
-
65
- "06-0021": "CE88194", # "02-SHA-5-R28.14", "Redding - I5/Shasta Lake Bridge"
66
-
67
- "24-0045": "CE67972", # "03-YOL-80-7.25", "West Sacramento - I80/Yolo Causeway"
68
-
69
- "35-0038": "CE58596", # "04-SM-84-29.0", "Dumbarton Bridge"
70
- "35-0130": "CE58536", # "04-SM-101-23.7", "South San Francisco - Sierra Pt Overpass"
71
- "35-0031": "CE58754", # "04-SM-1-20.82", "Half Moon Bay - Hwy 1/Tunitas Cr. Bridge"
72
- "28-0009": "CE67771", # "04-CC-160-0.82", "Antioch - San Joaquin River Bridge"
73
- "28-0153": "CE68682", # "04-CC-68-25.04", "Benicia - Martinez"
74
- "28-0153R": "CE68322", # "04-CC,Sol-680-L0.0", "Benicia - Martinez/I680 East Bridge"
75
- "28-0100": "CE58258", # "04-CC,MRN-580-6.1/7.8,0.0/2.6", "Richmond - San Rafael Bridge"
76
- "36-0088R": "CE47707", # "04-SCR-1-R1.59", "Watsonville - Hwy1/Struve Slough Bridge"
77
- "20-0195": "CE69671", # "04-SON-1-19.72", "Jenner - Hwy 1/Russian River Bridge"
78
- "20-0235": "CE68717", # "04-SON-101-13.88", "Rohnert Park - Hwy 101 Bridge"
79
-
80
- "51-0090": "CE26917", # "05-SB-01-R6.78", "Lompoc - Hwy 1/El Jaro Creek Bridge"
81
- "49-0036": "CE36668", # "05-SLO-46-54.77", "Parkfield - Hwy 46/Cholame Creek Bridge"
82
- "49-0046": "CE37728", # "05-SLO-52.92", "San Simeon - Hwy 1/San Simeon Crk Bridge"
83
- "51-0066": "CE25758", # "05-SB-166-R69.94", "Cuyama - Hwy 166/Cuyama River Bridge"
84
-
85
- "53-1630G": "CE24670", # "07-LS-405-29.43", "Los Angeles - I10/405 Interchange Bridge"
86
- "53-2318G": "CE24689", # "07-LA-134-R13.25", "Pasadena - I210/Hwy134 Interchnge Bridge"
87
- "52-0449": "CE25324", # "07-VEN-101-37.21", "Oxnard - Hwy 101/Santa Clara Rvr Bridge"
88
- "52-0331L": "CE24738", # "07-VEN-023/118-21.0", "Moorpark - Hwy 23/118 Bridge"
89
- "52-0214L": "CE25725", # "07-VEN-101-R26", "Ventura - Hwy101/Telephone Rd. Bridge"
90
-
91
- "54-1177": "CE22503", # "08-SBd-18,38-44.4", "Big Bear Lake - Hwys 18 & 38 Bridge"
92
- "56-0452F": "CE12649", # "08-RIV-10-6.67", "Beaumont - I10/60 Interchange Bridge"
93
- "54-0783R": "CE23650", # "08-SBD-15-16.35", "Devore - I15/215 Interchange Bridge"
94
-
95
- "23-0064": "CE68065", # "10-SOL-37-R7.39", "Vallejo - Hwy 37/Napa River Bridge"
96
-
97
- "57-0520L": "CE03731", # "11-SD-5-25.91", "San Diego - I5/Hwy 52 Interchange Bridge"
98
- "57-0857": "CE03679", # "11-SD-75-R20.49", "San Diego - Coronado Bridge"
99
- "27-0052": "CE58700", # "", "San Francisco - Golden Gate Bridge",
33
+ "34-0006": ("CE58600", None, "Oakland - SF Bay Bridge/East: SAS"),
34
+ # "34-0006": ("CE58601", "04-SF-80-8.7" , "Oakland - SF Bay Bridge/East: Skyway"),
35
+ # "34-0006": ("CE58602", None, "Oakland - SF Bay Bridge/East: YBITS"),
36
+ # "34-0006": ("CE58603", None, "Oakland - SF Bay Bridge/East: E Approach"),
37
+ "34-0003": ("CE58632", "04-SF-80-5.6" , "San Francisco - Bay Bridge/West"),
38
+
39
+ "35-0054": ("CE58677", None, "San Mateo Bridge"),
40
+ # "35-0054": ("CE58799", None, "San Mateo Bridge Trestle"),
41
+ "53-3032": ("CE14709", None, "Long Beach - Schuyler Heim Bridge"),
42
+ "51-0104": ("CE25749", None, "Santa Barbara - San Roque Canyon Bridge"),
43
+ "44-0298": ("CE47646", None, "Big Sur - New Hwy 1/Pfeiffer Cnyn Bridge"),
44
+ "44-0060": ("CE47729", None, "Big Sur - Hwy 1/Pfeiffer Canyon Bridge [Demolished]"),
45
+ # "37-0470L": ("CE57748", None, "Santa Clara - Hwy 237/Alviso Overpass"),
46
+ # "37-0470K": ("CE57748", None, "Santa Clara - Hwy 237/Alviso Overpass"),
47
+ "27-0013": ("CE68778", None, "Novato - Hwy37/Petaluma River Bridge"),
48
+ "17-0058L": ("CE76741", None, "Truckee - I80/Truckee River Bridge"),
49
+ "06-0210": ("CE88638", None, "Shasta Lake - I5/Antlers Bridge"),
50
+ "54-0474F": ("CE12666", None, "North Palm Springs - I10/Hwy 62 Bridge"),
51
+ "53-1185": ("CE14690", None, "Los Angeles - I405/San Gabriel River Br"),
52
+ "50-0402R": ("CE34715", None, "Mojave - Hwy 14/Railroad Bridge"),
53
+ "33-0347S": ("CE58656", None, "Oakland - Hwy 580/13 Interchange Bridge"),
54
+ "33-0302H": ("CE58657", None, "Oakland - Hwy 580/24 Interchange Bridge"),
55
+ # "35-0285": ("CE58678", None, "Belmont - I280 Pedestrian Bridge"),
56
+
57
+ "01-0020": ("CE99190", "01-DN-101-36.06" , "Crescent City - Hwy 101/Smith Rvr Bridge"),
58
+ "01-0028": ("CE99710", "01-DN-101-R4.04" , "Klamath - Hwy 101/Klamath River Bridge"),
59
+ "10-0081": ("CE69760", "01-MEN-101-R9.53" , "Hopland - Hwy 101/Railroad Bridge"),
60
+ "10-0134": ("CE79683", "01-MEN-1-43.00" , "Albion - Hwy 1/Salmon Creek Bridge"),
61
+ "10-0031": ("CE79757", "01-MEN-271-5.2" , "Leggett - Cedar Creek Bridge"),
62
+ "10-0030": ("CE79761", "01-MEN-271-4.9" , "Leggett - Big Dann Bridge"),
63
+ "10-0176": ("CE79296", "01-MEN-1-96.9" , "Fort Bragg - Hwy 1/Noyo River Bridge"),
64
+
65
+ "06-0021": ("CE88194", "02-SHA-5-R28.14" , "Redding - I5/Shasta Lake Bridge"),
66
+
67
+ "24-0045": ("CE67972", "03-YOL-80-7.25" , "West Sacramento - I80/Yolo Causeway"),
68
+
69
+ "35-0038": ("CE58596", "04-SM-84-29.0" , "Dumbarton Bridge"),
70
+ "35-0130": ("CE58536", "04-SM-101-23.7" , "South San Francisco - Sierra Pt Overpass"),
71
+ "35-0031": ("CE58754", "04-SM-1-20.82" , "Half Moon Bay - Hwy 1/Tunitas Cr. Bridge"),
72
+ "28-0009": ("CE67771", "04-CC-160-0.82" , "Antioch - San Joaquin River Bridge"),
73
+ "28-0153": ("CE68682", "04-CC-68-25.04" , "Benicia - Martinez"),
74
+ "28-0153R": ("CE68322", "04-CC,Sol-680-L0.0" , "Benicia - Martinez/I680 East Bridge"),
75
+ "28-0100": ("CE58258", "04-CC,MRN-580-6.1/7.8,0.0/2.6" , "Richmond - San Rafael Bridge"),
76
+ "36-0088R": ("CE47707", "04-SCR-1-R1.59" , "Watsonville - Hwy1/Struve Slough Bridge"),
77
+ "20-0195": ("CE69671", "04-SON-1-19.72" , "Jenner - Hwy 1/Russian River Bridge"),
78
+ "20-0235": ("CE68717", "04-SON-101-13.88" , "Rohnert Park - Hwy 101 Bridge"),
79
+
80
+ "51-0090": ("CE26917", "05-SB-01-R6.78" , "Lompoc - Hwy 1/El Jaro Creek Bridge"),
81
+ "49-0036": ("CE36668", "05-SLO-46-54.77" , "Parkfield - Hwy 46/Cholame Creek Bridge"),
82
+ "49-0046": ("CE37728", "05-SLO-52.92" , "San Simeon - Hwy 1/San Simeon Crk Bridge"),
83
+ "51-0066": ("CE25758", "05-SB-166-R69.94" , "Cuyama - Hwy 166/Cuyama River Bridge"),
84
+
85
+ "53-1630G": ("CE24670", "07-LS-405-29.43" , "Los Angeles - I10/405 Interchange Bridge"),
86
+ "53-2318G": ("CE24689", "07-LA-134-R13.25" , "Pasadena - I210/Hwy134 Interchnge Bridge"),
87
+ "52-0449": ("CE25324", "07-VEN-101-37.21" , "Oxnard - Hwy 101/Santa Clara Rvr Bridge"),
88
+ "52-0331L": ("CE24738", "07-VEN-023/118-21.0" , "Moorpark - Hwy 23/118 Bridge"),
89
+ "52-0214L": ("CE25725", "07-VEN-101-R26" , "Ventura - Hwy101/Telephone Rd. Bridge"),
90
+
91
+ "54-1177": ("CE22503", "08-SBd-18,38-44.4" , "Big Bear Lake - Hwys 18 & 38 Bridge"),
92
+ "56-0452F": ("CE12649", "08-RIV-10-6.67" , "Beaumont - I10/60 Interchange Bridge"),
93
+ "54-0783R": ("CE23650", "08-SBD-15-16.35" , "Devore - I15/215 Interchange Bridge"),
94
+
95
+ "23-0064": ("CE68065", "10-SOL-37-R7.39" , "Vallejo - Hwy 37/Napa River Bridge"),
96
+
97
+ "57-0520L": ("CE03731", "11-SD-5-25.91" , "San Diego - I5/Hwy 52 Interchange Bridge"),
98
+ "57-0857": ("CE03679", "11-SD-75-R20.49" , "San Diego - Coronado Bridge"),
99
+ "27-0052": ("CE58700", "" , "San Francisco - Golden Gate Bridge"),
100
100
  }
101
101
 
102
102
  """
103
- "": "CE24714", # "San Fernando - I210/Hwy 118 Bridge [Abandoned]"
104
- "": "CE25697", # "Cuyama Valley - Hwy 33/Quatal Cyn Bridge [Abandoned]"
103
+ "": ("CE24714", None, "San Fernando - I210/Hwy 118 Bridge [Abandoned]"),
104
+ "": ("CE25697", None, "Cuyama Valley - Hwy 33/Quatal Cyn Bridge [Abandoned]"),
105
105
  "": "NP5235", # "Riverside; Santa Ana River Bridge"
106
106
  "": "NP1571", # "San Jose; Interchange 101/280/680"
107
107
 
108
- "": "CE58414", # "Pacifica - Hwy1/Devils Slide Bridge"
109
- "": "CE57595", # "Fremont - Channel B Bridge"
108
+ "": ("CE58414", None, "Pacifica - Hwy1/Devils Slide Bridge"),
109
+ "": ("CE57595", None, "Fremont - Channel B Bridge"),
110
110
  "": "CE14703", # "Long Beach - Gerald Desmond Bridge",
111
111
  "": "CE58501", # "Hayward - BART Elevated Section",
112
112
  "": "CE58633", # "San Francisco - Bay Bridge/East [Abandoned]",
113
113
  """
114
114
 
115
- CALID = {v: k for k, v in CESMD.items()}
115
+ CALID = {v[0]: k for k, v in CESMD.items()}
@@ -111,7 +111,6 @@ def load_assets(NBI_DATA):
111
111
  calid = item.replace(" ", "-")
112
112
  nbi = get_nbi(item)
113
113
  config = find_bridge(BRIDGES, calid)
114
- cesmd = CESMD.get(calid, None)
115
114
  try:
116
115
  if skip(nbi, ROUTES) or item == "33 0726L":
117
116
  continue
@@ -125,13 +124,9 @@ def load_assets(NBI_DATA):
125
124
  try:
126
125
  asset = Asset.objects.get(calid=calid)
127
126
  if UPDATE_ASSETS:
128
- if cesmd is not None:
129
- asset.cesmd = cesmd
130
- asset.cgs_data = CGS_DATA.get(cesmd, {})
131
127
  asset.nbi_data = nbi
132
128
  asset.save()
133
129
 
134
- # print(">> Saved ", calid, f"({cesmd = })")
135
130
 
136
131
  except Asset.DoesNotExist:
137
132
  if nbi is None:
@@ -139,13 +134,10 @@ def load_assets(NBI_DATA):
139
134
  continue
140
135
 
141
136
  name = config.get("name", nbi["NBI_BRIDGE"]["Location"])
142
- asset = Asset(cesmd=cesmd,
143
- calid=calid,
137
+ asset = Asset(calid=calid,
144
138
  name = name,
145
- cgs_data = CGS_DATA.get(cesmd, {}),
146
139
  nbi_data = nbi,
147
140
  is_complete=False)
148
- print(asset)
149
141
 
150
142
  count += 1
151
143
 
@@ -194,5 +186,3 @@ class Command(BaseCommand):
194
186
 
195
187
  except orjson.JSONDecodeError as e:
196
188
  print(f"Failed to parse JSON in {member.name}: {e}")
197
-
198
-
@@ -1,25 +1,36 @@
1
1
  import irie
2
2
  import numpy as np
3
3
  from irie.apps.inventory.models import Asset
4
+ from irie.init.calid import CALID, CESMD
4
5
  from pathlib import Path
5
6
  from django.core.management.base import BaseCommand
6
7
  import json
7
8
 
8
9
  DATA = Path(irie.__file__).parents[0]/"init"/"data"
9
10
 
11
+ with open(DATA/"cgs_data.json") as f:
12
+ CGS_DATA = json.loads(f.read())
13
+
10
14
  class Command(BaseCommand):
11
15
  def handle(self, *args, **kwargs):
12
16
  with open(DATA/"cgs-stations.json") as f:
13
17
  stations = json.load(f)
14
18
 
15
- for station in stations["features"]:
16
- loc = station["geometry"]["coordinates"]
17
- loc = [loc[1], loc[0]]
19
+ count = 0
20
+ try:
18
21
  for asset in Asset.objects.all():
19
- if np.allclose(loc, list(asset.coordinates), rtol=1e-8, atol=1e-03):
20
- props = station["properties"]
21
- cesmd = f"{props['network']}{props['code']}"
22
+ if asset.calid not in CESMD:
23
+ continue
22
24
 
23
- print(asset, cesmd)
24
- continue
25
+ cesmd = CESMD[asset.calid][0]
26
+ asset.cesmd = CESMD[asset.calid][0]
27
+ asset.name = CESMD[asset.calid][2]
28
+ asset.cgs_data = CGS_DATA.get(cesmd, {})
29
+ asset.save()
30
+ print(asset)
31
+ count += 1
25
32
 
33
+ except Exception as e:
34
+ print(f"Updated {count} assets")
35
+ raise e
36
+ print(f"Updated {count} assets")