PyInventory 0.19.0__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.
Files changed (101) hide show
  1. PyInventory-0.19.0.dist-info/AUTHORS +14 -0
  2. PyInventory-0.19.0.dist-info/LICENSE +674 -0
  3. PyInventory-0.19.0.dist-info/METADATA +347 -0
  4. PyInventory-0.19.0.dist-info/RECORD +101 -0
  5. PyInventory-0.19.0.dist-info/WHEEL +5 -0
  6. PyInventory-0.19.0.dist-info/entry_points.txt +2 -0
  7. PyInventory-0.19.0.dist-info/top_level.txt +2 -0
  8. inventory/__init__.py +7 -0
  9. inventory/admin/__init__.py +3 -0
  10. inventory/admin/base.py +104 -0
  11. inventory/admin/item.py +169 -0
  12. inventory/admin/location.py +78 -0
  13. inventory/admin/memo.py +76 -0
  14. inventory/admin/tagulous_fix.py +45 -0
  15. inventory/apps.py +18 -0
  16. inventory/ckeditor_upload.py +15 -0
  17. inventory/context_processors.py +5 -0
  18. inventory/forms.py +36 -0
  19. inventory/locale/ca/LC_MESSAGES/django.mo +0 -0
  20. inventory/locale/ca/LC_MESSAGES/django.po +297 -0
  21. inventory/locale/de/LC_MESSAGES/django.mo +0 -0
  22. inventory/locale/de/LC_MESSAGES/django.po +294 -0
  23. inventory/locale/en/LC_MESSAGES/django.mo +0 -0
  24. inventory/locale/en/LC_MESSAGES/django.po +294 -0
  25. inventory/locale/es/LC_MESSAGES/django.mo +0 -0
  26. inventory/locale/es/LC_MESSAGES/django.po +297 -0
  27. inventory/management/__init__.py +0 -0
  28. inventory/management/commands/__init__.py +0 -0
  29. inventory/management/commands/seed_data.py +135 -0
  30. inventory/management/commands/tree.py +62 -0
  31. inventory/middlewares.py +21 -0
  32. inventory/migrations/0001_initial.py +596 -0
  33. inventory/migrations/0002_auto_20201017_2211.py +87 -0
  34. inventory/migrations/0003_auto_20201024_1830.py +23 -0
  35. inventory/migrations/0004_item_user_images.py +129 -0
  36. inventory/migrations/0005_serve_uploads_by_django_tools.py +77 -0
  37. inventory/migrations/0006_refactor_image_model.py +46 -0
  38. inventory/migrations/0007_add_file_attachment.py +128 -0
  39. inventory/migrations/0008_last_check_datetime.py +23 -0
  40. inventory/migrations/0009_add_memo.py +517 -0
  41. inventory/migrations/0010_version_protect_models.py +37 -0
  42. inventory/migrations/0011_parent_tree1.py +97 -0
  43. inventory/migrations/0012_parent_tree2.py +20 -0
  44. inventory/migrations/0013_alter_itemmodel_location.py +26 -0
  45. inventory/migrations/__init__.py +0 -0
  46. inventory/models/__init__.py +3 -0
  47. inventory/models/base.py +239 -0
  48. inventory/models/item.py +228 -0
  49. inventory/models/links.py +104 -0
  50. inventory/models/location.py +24 -0
  51. inventory/models/memo.py +109 -0
  52. inventory/parent_tree.py +71 -0
  53. inventory/permissions.py +60 -0
  54. inventory/request_dict.py +16 -0
  55. inventory/signals.py +15 -0
  56. inventory/string_utils.py +15 -0
  57. inventory/templates/admin/item/related_items.html +18 -0
  58. inventory/templates/admin/location/items.html +18 -0
  59. inventory/tests/__init__.py +0 -0
  60. inventory/tests/fixtures/__init__.py +0 -0
  61. inventory/tests/fixtures/users.py +11 -0
  62. inventory/tests/test_admin_location.py +34 -0
  63. inventory/tests/test_admin_location_empty_change_list_1.snapshot.html +84 -0
  64. inventory/tests/test_item_images.py +76 -0
  65. inventory/tests/test_link_model.py +72 -0
  66. inventory/tests/test_management_command_seed_data.py +49 -0
  67. inventory/tests/test_management_command_tree.py +27 -0
  68. inventory/tests/test_parent_tree.py +40 -0
  69. inventory/tests/test_parent_tree_model.py +139 -0
  70. inventory_project/__init__.py +12 -0
  71. inventory_project/__main__.py +17 -0
  72. inventory_project/manage.py +41 -0
  73. inventory_project/middlewares.py +23 -0
  74. inventory_project/publish.py +21 -0
  75. inventory_project/settings/__init__.py +0 -0
  76. inventory_project/settings/local.py +74 -0
  77. inventory_project/settings/prod.py +393 -0
  78. inventory_project/settings/tests.py +45 -0
  79. inventory_project/templates/admin/base_site.html +22 -0
  80. inventory_project/templates/admin/login.html +32 -0
  81. inventory_project/tests/__init__.py +0 -0
  82. inventory_project/tests/fixtures.py +40 -0
  83. inventory_project/tests/mocks.py +15 -0
  84. inventory_project/tests/playwright_utils.py +22 -0
  85. inventory_project/tests/test_admin.py +15 -0
  86. inventory_project/tests/test_admin_item.py +240 -0
  87. inventory_project/tests/test_admin_item_auto_group_items_1.snapshot.html +349 -0
  88. inventory_project/tests/test_admin_item_auto_group_items_2.snapshot.html +232 -0
  89. inventory_project/tests/test_admin_item_login_1.snapshot.html +40 -0
  90. inventory_project/tests/test_admin_item_normal_user_create_minimal_item_1.snapshot.html +637 -0
  91. inventory_project/tests/test_admin_item_normal_user_create_minimal_item_2.snapshot.html +930 -0
  92. inventory_project/tests/test_admin_memo.py +153 -0
  93. inventory_project/tests/test_admin_memo_normal_user_create_minimal_item_1.snapshot.html +365 -0
  94. inventory_project/tests/test_command_shell_help_django4.2.3.snapshot.txt +60 -0
  95. inventory_project/tests/test_inventory_commands.py +26 -0
  96. inventory_project/tests/test_migrations.py +22 -0
  97. inventory_project/tests/test_models_item.py +24 -0
  98. inventory_project/tests/test_playwright_admin.py +157 -0
  99. inventory_project/tests/test_project_setup.py +102 -0
  100. inventory_project/urls.py +21 -0
  101. inventory_project/wsgi.py +9 -0
@@ -0,0 +1,930 @@
1
+ <!DOCTYPE html>
2
+ <html dir="ltr" lang="en">
3
+ <head>
4
+ <title>
5
+ Change Item | PyInventory vMockedVersionString
6
+ </title>
7
+ <link href="/static/admin/css/base.css" rel="stylesheet"/>
8
+ <link href="/static/admin/css/dark_mode.css" rel="stylesheet"/>
9
+ <script defer="" src="/static/admin/js/theme.js">
10
+ </script>
11
+ <link href="/static/admin/css/nav_sidebar.css" rel="stylesheet"/>
12
+ <script defer="" src="/static/admin/js/nav_sidebar.js">
13
+ </script>
14
+ <link href="/static/admin/css/forms.css" rel="stylesheet"/>
15
+ <meta content="notranslate" name="google"/>
16
+ <meta content="noindex,nofollow" name="robots">
17
+ <link href="/static/inventory.css" rel="stylesheet" type="text/css"/>
18
+ <script src="/admin/jsi18n/">
19
+ </script>
20
+ <link href="/static/adminsortable2/css/sortable.css" media="all" rel="stylesheet"/>
21
+ <link href="/static/ckeditor/ckeditor.css" media="all" rel="stylesheet"/>
22
+ <link href="/static/admin/css/vendor/select2/select2.min.css" media="screen" rel="stylesheet"/>
23
+ <link href="/static/admin/css/autocomplete.css" media="screen" rel="stylesheet"/>
24
+ <script src="/static/admin/js/vendor/jquery/jquery.min.js">
25
+ </script>
26
+ <script src="/static/adminsortable2/js/adminsortable2.min.js">
27
+ </script>
28
+ <script src="/static/tagulous/tagulous.js">
29
+ </script>
30
+ <script data-ckeditor-basepath="/static/ckeditor/ckeditor/" id="ckeditor-init-script" src="/static/ckeditor/ckeditor-init.js">
31
+ </script>
32
+ <script src="/static/admin/js/calendar.js">
33
+ </script>
34
+ <script src="/static/admin/js/collapse.js">
35
+ </script>
36
+ <script src="/static/admin/js/vendor/select2/select2.full.min.js">
37
+ </script>
38
+ <script src="/static/tagulous/adaptor/select2-4.js">
39
+ </script>
40
+ <script src="/static/ckeditor/ckeditor/ckeditor.js">
41
+ </script>
42
+ <script src="/static/admin/js/admin/DateTimeShortcuts.js">
43
+ </script>
44
+ <script src="/static/admin/js/vendor/select2/i18n/en.js">
45
+ </script>
46
+ <script src="/static/admin/js/jquery.init.js">
47
+ </script>
48
+ <script src="/static/admin/js/core.js">
49
+ </script>
50
+ <script src="/static/admin/js/autocomplete.js">
51
+ </script>
52
+ <script src="/static/admin/js/inlines.js">
53
+ </script>
54
+ <script src="/static/admin/js/admin/RelatedObjectLookups.js">
55
+ </script>
56
+ <script src="/static/admin/js/actions.js">
57
+ </script>
58
+ <script src="/static/admin/js/urlify.js">
59
+ </script>
60
+ <script src="/static/admin/js/prepopulate.js">
61
+ </script>
62
+ <script src="/static/admin/js/vendor/xregexp/xregexp.min.js">
63
+ </script>
64
+ <meta content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport"/>
65
+ <link href="/static/admin/css/responsive.css" rel="stylesheet"/>
66
+ <meta content="NONE,NOARCHIVE" name="robots"/>
67
+ </meta>
68
+ </head>
69
+ <body class="app-inventory model-itemmodel change-form" data-admin-utc-offset="MockedNowNode">
70
+ <a class="skip-to-content-link" href="#content-start">
71
+ Skip to main content
72
+ </a>
73
+ <!-- Container -->
74
+ <div id="container">
75
+ <!-- Header -->
76
+ <div id="header">
77
+ <div id="branding">
78
+ <h1 id="site-name">
79
+ <a href="/admin/">
80
+ PyInventory vMockedVersionString
81
+ </a>
82
+ </h1>
83
+ </div>
84
+ <div id="user-tools">
85
+ Welcome,
86
+ <strong>
87
+ NormalUser
88
+ </strong>
89
+ .
90
+ <a href="/">
91
+ View site
92
+ </a>
93
+ /
94
+ <a href="/admin/password_change/">
95
+ Change password
96
+ </a>
97
+ /
98
+ <form action="/admin/logout/" id="logout-form" method="post">
99
+ MockedCsrfTokenNode
100
+ <button type="submit">
101
+ Log out
102
+ </button>
103
+ </form>
104
+ <button class="theme-toggle">
105
+ <div class="visually-hidden theme-label-when-auto">
106
+ Toggle theme (current theme: auto)
107
+ </div>
108
+ <div class="visually-hidden theme-label-when-light">
109
+ Toggle theme (current theme: light)
110
+ </div>
111
+ <div class="visually-hidden theme-label-when-dark">
112
+ Toggle theme (current theme: dark)
113
+ </div>
114
+ <svg aria-hidden="true" class="theme-icon-when-auto">
115
+ <use xlink:href="#icon-auto">
116
+ </use>
117
+ </svg>
118
+ <svg aria-hidden="true" class="theme-icon-when-dark">
119
+ <use xlink:href="#icon-moon">
120
+ </use>
121
+ </svg>
122
+ <svg aria-hidden="true" class="theme-icon-when-light">
123
+ <use xlink:href="#icon-sun">
124
+ </use>
125
+ </svg>
126
+ </button>
127
+ </div>
128
+ </div>
129
+ <!-- END Header -->
130
+ <nav aria-label="Breadcrumbs">
131
+ <div class="breadcrumbs">
132
+ <a href="/admin/">
133
+ Home
134
+ </a>
135
+
136
+ <a href="/admin/inventory/">
137
+ Inventory
138
+ </a>
139
+
140
+ <a href="/admin/inventory/itemmodel/">
141
+ Items
142
+ </a>
143
+ › name
144
+ </div>
145
+ </nav>
146
+ <div class="main" id="main">
147
+ <button aria-label="Toggle navigation" class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar">
148
+ </button>
149
+ <nav aria-label="Sidebar" class="sticky" id="nav-sidebar">
150
+ <input aria-label="Filter navigation items" id="nav-filter" placeholder="Start typing to filter…" type="search"/>
151
+ <div class="app-inventory module current-app">
152
+ <table>
153
+ <caption>
154
+ <a class="section" href="/admin/inventory/" title="Models in the Inventory application">
155
+ Inventory
156
+ </a>
157
+ </caption>
158
+ <tr class="model-itemmodel current-model">
159
+ <th scope="row">
160
+ <a aria-current="page" href="/admin/inventory/itemmodel/">
161
+ Items
162
+ </a>
163
+ </th>
164
+ <td>
165
+ <a class="addlink" href="/admin/inventory/itemmodel/add/">
166
+ Add
167
+ </a>
168
+ </td>
169
+ </tr>
170
+ <tr class="model-locationmodel">
171
+ <th scope="row">
172
+ <a href="/admin/inventory/locationmodel/">
173
+ Locations
174
+ </a>
175
+ </th>
176
+ <td>
177
+ <a class="addlink" href="/admin/inventory/locationmodel/add/">
178
+ Add
179
+ </a>
180
+ </td>
181
+ </tr>
182
+ <tr class="model-memomodel">
183
+ <th scope="row">
184
+ <a href="/admin/inventory/memomodel/">
185
+ Memos
186
+ </a>
187
+ </th>
188
+ <td>
189
+ <a class="addlink" href="/admin/inventory/memomodel/add/">
190
+ Add
191
+ </a>
192
+ </td>
193
+ </tr>
194
+ </table>
195
+ </div>
196
+ </nav>
197
+ <div class="content" id="content-start" tabindex="-1">
198
+ <!-- Content -->
199
+ <div class="colM" id="content">
200
+ <h1>
201
+ Change Item
202
+ </h1>
203
+ <h2>
204
+ name
205
+ </h2>
206
+ <div id="content-main">
207
+ <ul class="object-tools">
208
+ <li>
209
+ <a class="historylink" href="/admin/inventory/itemmodel/&lt;removed-UUID&gt;/history/">
210
+ History
211
+ </a>
212
+ </li>
213
+ </ul>
214
+ <form enctype="multipart/form-data" id="itemmodel_form" method="post" novalidate="">
215
+ MockedCsrfTokenNode
216
+ <div>
217
+ <p class="errornote">
218
+ Please correct the errors below.
219
+ </p>
220
+ <ul class="errorlist nonfield">
221
+ <li>
222
+ Version error: Overwrite version 2 with 1 is forbidden!
223
+ </li>
224
+ </ul>
225
+ <fieldset class="module aligned collapse">
226
+ <h2>
227
+ Internals
228
+ </h2>
229
+ <div class="form-row field-id field-version">
230
+ <div class="flex-container form-multiline">
231
+ <div>
232
+ <div class="flex-container fieldBox field-id">
233
+ <label>
234
+ ID:
235
+ </label>
236
+ <div class="readonly">
237
+ <removed-uuid>
238
+ </removed-uuid>
239
+ </div>
240
+ </div>
241
+ <div class="help">
242
+ <div>
243
+ ID
244
+ </div>
245
+ </div>
246
+ </div>
247
+ <div>
248
+ <ul class="errorlist">
249
+ <li>
250
+ Version changed:
251
+ <pre>- 2
252
+ + 1</pre>
253
+ </li>
254
+ </ul>
255
+ <div class="flex-container fieldBox field-version errors">
256
+ <label class="required inline" for="id_version">
257
+ Version:
258
+ </label>
259
+ <input id="id_version" name="version" required="" type="hidden" value="1"/>
260
+ 1
261
+ </div>
262
+ <div class="help" id="id_version_helptext">
263
+ <div>
264
+ Internal version number of this entry. Used to protect the overwriting of an older entry.
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+ <div class="form-row field-user">
271
+ <div>
272
+ <div class="flex-container">
273
+ <label>
274
+ User:
275
+ </label>
276
+ <div class="readonly">
277
+ <a href="/admin/auth/user/1/change/">
278
+ NormalUser
279
+ </a>
280
+ </div>
281
+ </div>
282
+ <div class="help">
283
+ <div>
284
+ The user who is the owner of this entry and can manage it (will be set automatically)
285
+ </div>
286
+ </div>
287
+ </div>
288
+ </div>
289
+ </fieldset>
290
+ <fieldset class="module aligned collapse">
291
+ <h2>
292
+ Meta
293
+ </h2>
294
+ <div class="form-row field-create_dt">
295
+ <div>
296
+ <div class="flex-container">
297
+ <label>
298
+ Create date:
299
+ </label>
300
+ <div class="readonly">
301
+ Jan. 1, 2000, 1:10 a.m.
302
+ </div>
303
+ </div>
304
+ <div class="help">
305
+ <div>
306
+ (will be set automatically)
307
+ </div>
308
+ </div>
309
+ </div>
310
+ </div>
311
+ <div class="form-row field-update_dt">
312
+ <div>
313
+ <div class="flex-container">
314
+ <label>
315
+ Last update:
316
+ </label>
317
+ <div class="readonly">
318
+ Jan. 1, 2000, 1:11 a.m.
319
+ </div>
320
+ </div>
321
+ <div class="help">
322
+ <div>
323
+ (will be set automatically)
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </fieldset>
329
+ <fieldset class="module aligned">
330
+ <h2>
331
+ Basic
332
+ </h2>
333
+ <div class="form-row field-kind">
334
+ <div>
335
+ <div class="flex-container">
336
+ <label class="required" for="id_kind">
337
+ Kind:
338
+ </label>
339
+ <div class="related-widget-wrapper" data-model-ref="Item Kind">
340
+ <input autocomplete="off" data-tag-list='["kind"]' data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 3, "space_delimiter": false, "required": true}' data-tagulous="true" data-theme="admin-autocomplete" id="id_kind" name="kind" required="" type="text" value="kind"/>
341
+ </div>
342
+ </div>
343
+ <div class="help" id="id_kind_helptext">
344
+ <div>
345
+ </div>
346
+ </div>
347
+ </div>
348
+ </div>
349
+ <div class="form-row field-producer field-name">
350
+ <div class="flex-container form-multiline">
351
+ <div>
352
+ <div class="flex-container fieldBox field-producer">
353
+ <label for="id_producer">
354
+ Producer:
355
+ </label>
356
+ <div class="related-widget-wrapper" data-model-ref="Item Producer">
357
+ <input autocomplete="off" data-tag-list="[]" data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 1, "space_delimiter": false, "required": false}' data-tagulous="true" data-theme="admin-autocomplete" id="id_producer" name="producer" type="text"/>
358
+ </div>
359
+ </div>
360
+ <div class="help" id="id_producer_helptext">
361
+ <div>
362
+ </div>
363
+ </div>
364
+ </div>
365
+ <div>
366
+ <ul class="errorlist">
367
+ <li>
368
+ changes between version 2 and 1:
369
+ <pre>- "name"
370
+ + "A new Name!"</pre>
371
+ </li>
372
+ </ul>
373
+ <div class="flex-container fieldBox field-name errors">
374
+ <label class="required inline" for="id_name">
375
+ Name:
376
+ </label>
377
+ <input class="vTextField" id="id_name" maxlength="255" name="name" required="" type="text" value="A new Name!"/>
378
+ </div>
379
+ <div class="help" id="id_name_helptext">
380
+ <div>
381
+ Name
382
+ </div>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ <div class="form-row field-description">
388
+ <div>
389
+ <div class="flex-container">
390
+ <label for="id_description">
391
+ Description:
392
+ </label>
393
+ <div class="django-ckeditor-widget" data-field-id="id_description" style="display: inline-block;">
394
+ <textarea cols="40" data-config='{"skin": "moono-lisa", "toolbar_Basic": [["Source", "-", "Bold", "Italic"]], "toolbar_Full": [["Styles", "Format", "Bold", "Italic", "Underline", "Strike", "SpellChecker", "Undo", "Redo"], ["Link", "Unlink", "Anchor"], ["Image", "Flash", "Table", "HorizontalRule"], ["TextColor", "BGColor"], ["Smiley", "SpecialChar"], ["Source"]], "toolbar": "PyInventoryToolbarConfig", "height": "25em", "width": "100%", "filebrowserWindowWidth": 940, "filebrowserWindowHeight": 725, "removeButtons": "Language,Cut,Copy,Paste,Undo,Redo,Anchor", "removePlugins": ["a11yhelp", "adobeair", "ajax", "autoembed", "autolink", "bbcode", "bidi", "clipboard", "codesnippet", "codesnippetgeshi", "contextmenu", "copyformatting", "devtools", "dialog", "dialogadvtab", "div", "divarea", "docprops", "embed", "embedbase", "embedsemantic", "enterkey", "exportpdf", "find", "flash", "forms", "htmlwriter", "iframe", "iframedialog", "language", "magicline", "mathjax", "newpage", "notification", "notificationaggregator", "pagebreak", "pastefromgdocs", "pastefromword", "pastetext", "pastetools", "placeholder", "preview", "print", "save", "scayt", "selectall", "sharedspace", "smiley", "sourcedialog", "specialchar", "stylescombo", "stylesheetparser", "tab", "templates", "uicolor", "widget", "wsc", "xml"], "toolbar_PyInventoryToolbarConfig": [{"name": "basicstyles", "items": ["Bold", "Italic", "Underline", "Strike", "-", "RemoveFormat"]}, {"name": "paragraph", "items": ["NumberedList", "BulletedList", "-", "Outdent", "Indent", "-", "Blockquote", "-", "JustifyLeft", "JustifyCenter", "JustifyRight", "JustifyBlock"]}, {"name": "links", "items": ["Link", "Unlink", "Anchor"]}, {"name": "insert", "items": ["Image", "Table", "HorizontalRule"]}, "/", {"name": "styles", "items": ["Styles", "Format", "Font", "FontSize"]}, {"name": "colors", "items": ["TextColor", "BGColor"]}, {"name": "tools", "items": ["Maximize", "ShowBlocks", "Source"]}, {"name": "about", "items": ["About"]}], "filebrowserUploadUrl": "/ckeditor/upload/", "filebrowserBrowseUrl": "/ckeditor/browse/", "language": "en"}' data-external-plugin-resources="[]" data-id="id_description" data-processed="0" data-type="ckeditortype" id="id_description" name="description" rows="10"></textarea>
395
+ </div>
396
+ </div>
397
+ <div class="help" id="id_description_helptext">
398
+ <div>
399
+ </div>
400
+ </div>
401
+ </div>
402
+ </div>
403
+ <div class="form-row field-tags">
404
+ <div>
405
+ <div class="flex-container">
406
+ <label for="id_tags">
407
+ Tags:
408
+ </label>
409
+ <div class="related-widget-wrapper" data-model-ref="Item Tags">
410
+ <input autocomplete="off" data-tag-list="[]" data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 10, "space_delimiter": false, "required": false}' data-tagulous="true" data-theme="admin-autocomplete" id="id_tags" name="tags" type="text"/>
411
+ </div>
412
+ </div>
413
+ <div class="help" id="id_tags_helptext">
414
+ <div>
415
+ </div>
416
+ </div>
417
+ </div>
418
+ </div>
419
+ <div class="form-row field-fcc_id">
420
+ <div>
421
+ <div class="flex-container">
422
+ <label for="id_fcc_id">
423
+ FCC ID:
424
+ </label>
425
+ <input class="vTextField" id="id_fcc_id" maxlength="20" name="fcc_id" type="text"/>
426
+ </div>
427
+ <div class="help" id="id_fcc_id_helptext">
428
+ <div>
429
+ Unique number from the FCC
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ <div class="form-row field-parent">
435
+ <div>
436
+ <div class="flex-container">
437
+ <label for="id_parent">
438
+ Parent:
439
+ </label>
440
+ <div class="related-widget-wrapper" data-model-ref="Item">
441
+ <select class="admin-autocomplete" data-ajax--cache="true" data-ajax--delay="250" data-ajax--type="GET" data-ajax--url="/admin/autocomplete/" data-allow-clear="true" data-app-label="inventory" data-field-name="parent" data-model-name="itemmodel" data-placeholder="" data-theme="admin-autocomplete" id="id_parent" lang="en" name="parent">
442
+ <option value="">
443
+ </option>
444
+ </select>
445
+ <a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id&amp;_popup=1" data-popup="yes" id="change_id_parent" title="Change selected Item">
446
+ <img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
447
+ </a>
448
+ <a class="related-widget-wrapper-link add-related" data-popup="yes" href="/admin/inventory/itemmodel/add/?_to_field=id&amp;_popup=1" id="add_id_parent" title="Add another Item">
449
+ <img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
450
+ </a>
451
+ <a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/itemmodel/__fk__/delete/?_to_field=id&amp;_popup=1" data-popup="yes" id="delete_id_parent" title="Delete selected Item">
452
+ <img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
453
+ </a>
454
+ <a class="related-widget-wrapper-link view-related" data-href-template="/admin/inventory/itemmodel/__fk__/change/?_to_field=id" id="view_id_parent" title="View selected Item">
455
+ <img alt="View" src="/static/admin/img/icon-viewlink.svg"/>
456
+ </a>
457
+ </div>
458
+ </div>
459
+ <div class="help" id="id_parent_helptext">
460
+ <div>
461
+ Locations can be nested. Example: The box 12 in cupboard 3
462
+ </div>
463
+ </div>
464
+ </div>
465
+ </div>
466
+ <div class="form-row field-location">
467
+ <div>
468
+ <div class="flex-container">
469
+ <label for="id_location">
470
+ Location:
471
+ </label>
472
+ <div class="related-widget-wrapper" data-model-ref="Location">
473
+ <select class="admin-autocomplete" data-ajax--cache="true" data-ajax--delay="250" data-ajax--type="GET" data-ajax--url="/admin/autocomplete/" data-allow-clear="true" data-app-label="inventory" data-field-name="location" data-model-name="itemmodel" data-placeholder="" data-theme="admin-autocomplete" id="id_location" lang="en" name="location">
474
+ <option value="">
475
+ </option>
476
+ </select>
477
+ <a class="related-widget-wrapper-link change-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id&amp;_popup=1" data-popup="yes" id="change_id_location" title="Change selected Location">
478
+ <img alt="Change" src="/static/admin/img/icon-changelink.svg"/>
479
+ </a>
480
+ <a class="related-widget-wrapper-link add-related" data-popup="yes" href="/admin/inventory/locationmodel/add/?_to_field=id&amp;_popup=1" id="add_id_location" title="Add another Location">
481
+ <img alt="Add" src="/static/admin/img/icon-addlink.svg"/>
482
+ </a>
483
+ <a class="related-widget-wrapper-link delete-related" data-href-template="/admin/inventory/locationmodel/__fk__/delete/?_to_field=id&amp;_popup=1" data-popup="yes" id="delete_id_location" title="Delete selected Location">
484
+ <img alt="Delete" src="/static/admin/img/icon-deletelink.svg"/>
485
+ </a>
486
+ <a class="related-widget-wrapper-link view-related" data-href-template="/admin/inventory/locationmodel/__fk__/change/?_to_field=id" id="view_id_location" title="View selected Location">
487
+ <img alt="View" src="/static/admin/img/icon-viewlink.svg"/>
488
+ </a>
489
+ </div>
490
+ </div>
491
+ <div class="help" id="id_location_helptext">
492
+ <div>
493
+ </div>
494
+ </div>
495
+ </div>
496
+ </div>
497
+ </fieldset>
498
+ <fieldset class="module aligned collapse">
499
+ <h2>
500
+ Related items
501
+ </h2>
502
+ <div class="form-row field-related_items">
503
+ <div>
504
+ <div class="flex-container">
505
+ <label>
506
+ Related items:
507
+ </label>
508
+ <div class="readonly">
509
+ <table>
510
+ <thead>
511
+ <tr>
512
+ <th>
513
+ No.
514
+ </th>
515
+ <th>
516
+ Items
517
+ </th>
518
+ </tr>
519
+ </thead>
520
+ <tbody>
521
+ <tr>
522
+ <td>
523
+ 1
524
+ </td>
525
+ <td>
526
+ <a href="/admin/inventory/itemmodel/&lt;removed-UUID&gt;/change/">
527
+ name
528
+ </a>
529
+ </td>
530
+ </tr>
531
+ </tbody>
532
+ </table>
533
+ </div>
534
+ </div>
535
+ </div>
536
+ </div>
537
+ </fieldset>
538
+ <fieldset class="module aligned collapse">
539
+ <h2>
540
+ Lent
541
+ </h2>
542
+ <div class="form-row field-lent_to">
543
+ <div>
544
+ <div class="flex-container">
545
+ <label for="id_lent_to">
546
+ Lent to:
547
+ </label>
548
+ <input class="vTextField" id="id_lent_to" maxlength="64" name="lent_to" type="text"/>
549
+ </div>
550
+ <div class="help" id="id_lent_to_helptext">
551
+ <div>
552
+ </div>
553
+ </div>
554
+ </div>
555
+ </div>
556
+ <div class="form-row field-lent_from_date field-lent_until_date">
557
+ <div class="flex-container form-multiline">
558
+ <div>
559
+ <div class="flex-container fieldBox field-lent_from_date">
560
+ <label for="id_lent_from_date">
561
+ Lent from date:
562
+ </label>
563
+ <p class="date">
564
+ <input class="vDateField" id="id_lent_from_date" name="lent_from_date" size="10" type="text"/>
565
+ </p>
566
+ </div>
567
+ <div class="help" id="id_lent_from_date_helptext">
568
+ <div>
569
+ </div>
570
+ </div>
571
+ </div>
572
+ <div>
573
+ <div class="flex-container fieldBox field-lent_until_date">
574
+ <label class="inline" for="id_lent_until_date">
575
+ Lent until date:
576
+ </label>
577
+ <p class="date">
578
+ <input class="vDateField" id="id_lent_until_date" name="lent_until_date" size="10" type="text"/>
579
+ </p>
580
+ </div>
581
+ <div class="help" id="id_lent_until_date_helptext">
582
+ <div>
583
+ </div>
584
+ </div>
585
+ </div>
586
+ </div>
587
+ </div>
588
+ </fieldset>
589
+ <fieldset class="module aligned collapse">
590
+ <h2>
591
+ Received
592
+ </h2>
593
+ <div class="form-row field-received_from field-received_date field-received_price">
594
+ <div class="flex-container form-multiline">
595
+ <div>
596
+ <div class="flex-container fieldBox field-received_from">
597
+ <label for="id_received_from">
598
+ Received from:
599
+ </label>
600
+ <input class="vTextField" id="id_received_from" maxlength="64" name="received_from" type="text"/>
601
+ </div>
602
+ <div class="help" id="id_received_from_helptext">
603
+ <div>
604
+ </div>
605
+ </div>
606
+ </div>
607
+ <div>
608
+ <div class="flex-container fieldBox field-received_date">
609
+ <label class="inline" for="id_received_date">
610
+ Received date:
611
+ </label>
612
+ <p class="date">
613
+ <input class="vDateField" id="id_received_date" name="received_date" size="10" type="text"/>
614
+ </p>
615
+ </div>
616
+ <div class="help" id="id_received_date_helptext">
617
+ <div>
618
+ </div>
619
+ </div>
620
+ </div>
621
+ <div>
622
+ <div class="flex-container fieldBox field-received_price">
623
+ <label class="inline" for="id_received_price">
624
+ Received price:
625
+ </label>
626
+ <input id="id_received_price" name="received_price" step="0.01" type="number"/>
627
+ </div>
628
+ <div class="help" id="id_received_price_helptext">
629
+ <div>
630
+ </div>
631
+ </div>
632
+ </div>
633
+ </div>
634
+ </div>
635
+ </fieldset>
636
+ <fieldset class="module aligned collapse">
637
+ <h2>
638
+ Handed over
639
+ </h2>
640
+ <div class="form-row field-handed_over_to field-handed_over_date field-handed_over_price">
641
+ <div class="flex-container form-multiline">
642
+ <div>
643
+ <div class="flex-container fieldBox field-handed_over_to">
644
+ <label for="id_handed_over_to">
645
+ Handed over to:
646
+ </label>
647
+ <input class="vTextField" id="id_handed_over_to" maxlength="64" name="handed_over_to" type="text"/>
648
+ </div>
649
+ <div class="help" id="id_handed_over_to_helptext">
650
+ <div>
651
+ </div>
652
+ </div>
653
+ </div>
654
+ <div>
655
+ <div class="flex-container fieldBox field-handed_over_date">
656
+ <label class="inline" for="id_handed_over_date">
657
+ Handed over date:
658
+ </label>
659
+ <p class="date">
660
+ <input class="vDateField" id="id_handed_over_date" name="handed_over_date" size="10" type="text"/>
661
+ </p>
662
+ </div>
663
+ <div class="help" id="id_handed_over_date_helptext">
664
+ <div>
665
+ </div>
666
+ </div>
667
+ </div>
668
+ <div>
669
+ <div class="flex-container fieldBox field-handed_over_price">
670
+ <label class="inline" for="id_handed_over_price">
671
+ Handed over price:
672
+ </label>
673
+ <input id="id_handed_over_price" name="handed_over_price" step="0.01" type="number"/>
674
+ </div>
675
+ <div class="help" id="id_handed_over_price_helptext">
676
+ <div>
677
+ </div>
678
+ </div>
679
+ </div>
680
+ </div>
681
+ </div>
682
+ </fieldset>
683
+ <div class="js-inline-admin-formset inline-group" data-inline-formset='{"name": "#itemimagemodel_set", "options": {"prefix": "itemimagemodel_set", "addText": "Add another Image", "deleteText": "Remove"}}' data-inline-type="tabular" id="itemimagemodel_set-group">
684
+ <div class="tabular inline-related">
685
+ <input id="id_itemimagemodel_set-TOTAL_FORMS" name="itemimagemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
686
+ <input id="id_itemimagemodel_set-INITIAL_FORMS" name="itemimagemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
687
+ <input id="id_itemimagemodel_set-MIN_NUM_FORMS" name="itemimagemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
688
+ <input id="id_itemimagemodel_set-MAX_NUM_FORMS" name="itemimagemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
689
+ <fieldset class="module sortable">
690
+ <h2>
691
+ Images
692
+ </h2>
693
+ <table>
694
+ <thead>
695
+ <tr>
696
+ <th class="original">
697
+ </th>
698
+ <th class="column-position hidden">
699
+ Position
700
+ </th>
701
+ <th class="column-preview">
702
+ Preview
703
+ </th>
704
+ <th class="column-image required">
705
+ Image
706
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
707
+ </th>
708
+ <th class="column-name">
709
+ Name
710
+ <img alt="(BaseItemAttachmentModel.name.help_text)" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title="BaseItemAttachmentModel.name.help_text" width="10"/>
711
+ </th>
712
+ <th class="column-tags">
713
+ Tags
714
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
715
+ </th>
716
+ <th>
717
+ Delete?
718
+ </th>
719
+ </tr>
720
+ </thead>
721
+ <tbody>
722
+ <tr class="form-row empty-form" id="itemimagemodel_set-empty">
723
+ <td class="original">
724
+ <input id="id_itemimagemodel_set-__prefix__-id" name="itemimagemodel_set-__prefix__-id" type="hidden"/>
725
+ <input id="id_itemimagemodel_set-__prefix__-item" name="itemimagemodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
726
+ </td>
727
+ <td class="field-position hidden">
728
+ <input class="_reorder_" id="id_itemimagemodel_set-__prefix__-position" name="itemimagemodel_set-__prefix__-position" type="hidden" value="0"/>
729
+ </td>
730
+ <td class="field-preview">
731
+ <p>
732
+ -
733
+ </p>
734
+ </td>
735
+ <td class="field-image">
736
+ <input accept="image/*" id="id_itemimagemodel_set-__prefix__-image" name="itemimagemodel_set-__prefix__-image" type="file"/>
737
+ </td>
738
+ <td class="field-name">
739
+ <input class="vTextField" id="id_itemimagemodel_set-__prefix__-name" maxlength="255" name="itemimagemodel_set-__prefix__-name" type="text"/>
740
+ </td>
741
+ <td class="field-tags">
742
+ <div class="related-widget-wrapper" data-model-ref="Image Tags">
743
+ <input autocomplete="off" data-tag-list="[]" data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 10, "space_delimiter": false, "required": false}' data-tagulous="true" data-theme="admin-autocomplete" id="id_itemimagemodel_set-__prefix__-tags" name="itemimagemodel_set-__prefix__-tags" type="text"/>
744
+ </div>
745
+ </td>
746
+ <td class="delete">
747
+ </td>
748
+ </tr>
749
+ </tbody>
750
+ </table>
751
+ </fieldset>
752
+ </div>
753
+ </div>
754
+ <div class="js-inline-admin-formset inline-group" data-inline-formset='{"name": "#itemfilemodel_set", "options": {"prefix": "itemfilemodel_set", "addText": "Add another File", "deleteText": "Remove"}}' data-inline-type="tabular" id="itemfilemodel_set-group">
755
+ <div class="tabular inline-related">
756
+ <input id="id_itemfilemodel_set-TOTAL_FORMS" name="itemfilemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
757
+ <input id="id_itemfilemodel_set-INITIAL_FORMS" name="itemfilemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
758
+ <input id="id_itemfilemodel_set-MIN_NUM_FORMS" name="itemfilemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
759
+ <input id="id_itemfilemodel_set-MAX_NUM_FORMS" name="itemfilemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
760
+ <fieldset class="module sortable">
761
+ <h2>
762
+ Files
763
+ </h2>
764
+ <table>
765
+ <thead>
766
+ <tr>
767
+ <th class="original">
768
+ </th>
769
+ <th class="column-position hidden">
770
+ Position
771
+ </th>
772
+ <th class="column-file required">
773
+ File
774
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
775
+ </th>
776
+ <th class="column-name">
777
+ Name
778
+ <img alt="(BaseItemAttachmentModel.name.help_text)" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title="BaseItemAttachmentModel.name.help_text" width="10"/>
779
+ </th>
780
+ <th class="column-tags">
781
+ Tags
782
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
783
+ </th>
784
+ <th>
785
+ Delete?
786
+ </th>
787
+ </tr>
788
+ </thead>
789
+ <tbody>
790
+ <tr class="form-row empty-form" id="itemfilemodel_set-empty">
791
+ <td class="original">
792
+ <input id="id_itemfilemodel_set-__prefix__-id" name="itemfilemodel_set-__prefix__-id" type="hidden"/>
793
+ <input id="id_itemfilemodel_set-__prefix__-item" name="itemfilemodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
794
+ </td>
795
+ <td class="field-position hidden">
796
+ <input class="_reorder_" id="id_itemfilemodel_set-__prefix__-position" name="itemfilemodel_set-__prefix__-position" type="hidden" value="0"/>
797
+ </td>
798
+ <td class="field-file">
799
+ <input id="id_itemfilemodel_set-__prefix__-file" name="itemfilemodel_set-__prefix__-file" type="file"/>
800
+ </td>
801
+ <td class="field-name">
802
+ <input class="vTextField" id="id_itemfilemodel_set-__prefix__-name" maxlength="255" name="itemfilemodel_set-__prefix__-name" type="text"/>
803
+ </td>
804
+ <td class="field-tags">
805
+ <div class="related-widget-wrapper" data-model-ref="File Tags">
806
+ <input autocomplete="off" data-tag-list="[]" data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 10, "space_delimiter": false, "required": false}' data-tagulous="true" data-theme="admin-autocomplete" id="id_itemfilemodel_set-__prefix__-tags" name="itemfilemodel_set-__prefix__-tags" type="text"/>
807
+ </div>
808
+ </td>
809
+ <td class="delete">
810
+ </td>
811
+ </tr>
812
+ </tbody>
813
+ </table>
814
+ </fieldset>
815
+ </div>
816
+ </div>
817
+ <div class="js-inline-admin-formset inline-group" data-inline-formset='{"name": "#itemlinkmodel_set", "options": {"prefix": "itemlinkmodel_set", "addText": "Add another Link", "deleteText": "Remove"}}' data-inline-type="tabular" id="itemlinkmodel_set-group">
818
+ <div class="tabular inline-related last-related">
819
+ <input id="id_itemlinkmodel_set-TOTAL_FORMS" name="itemlinkmodel_set-TOTAL_FORMS" type="hidden" value="0"/>
820
+ <input id="id_itemlinkmodel_set-INITIAL_FORMS" name="itemlinkmodel_set-INITIAL_FORMS" type="hidden" value="0"/>
821
+ <input id="id_itemlinkmodel_set-MIN_NUM_FORMS" name="itemlinkmodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
822
+ <input id="id_itemlinkmodel_set-MAX_NUM_FORMS" name="itemlinkmodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
823
+ <fieldset class="module sortable">
824
+ <h2>
825
+ Links
826
+ </h2>
827
+ <table>
828
+ <thead>
829
+ <tr>
830
+ <th class="original">
831
+ </th>
832
+ <th class="column-tags">
833
+ Tags
834
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
835
+ </th>
836
+ <th class="column-name">
837
+ Name
838
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
839
+ </th>
840
+ <th class="column-url required">
841
+ URL
842
+ <img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
843
+ </th>
844
+ <th class="column-position hidden">
845
+ Position
846
+ </th>
847
+ <th>
848
+ Delete?
849
+ </th>
850
+ </tr>
851
+ </thead>
852
+ <tbody>
853
+ <tr class="form-row empty-form" id="itemlinkmodel_set-empty">
854
+ <td class="original">
855
+ <input id="id_itemlinkmodel_set-__prefix__-id" name="itemlinkmodel_set-__prefix__-id" type="hidden"/>
856
+ <input id="id_itemlinkmodel_set-__prefix__-item" name="itemlinkmodel_set-__prefix__-item" type="hidden" value="&lt;removed-UUID&gt;"/>
857
+ </td>
858
+ <td class="field-tags">
859
+ <div class="related-widget-wrapper" data-model-ref="Link Tags">
860
+ <input autocomplete="off" data-tag-list="[]" data-tag-options='{"case_sensitive": false, "force_lowercase": false, "max_count": 10, "space_delimiter": false, "required": false}' data-tagulous="true" data-theme="admin-autocomplete" id="id_itemlinkmodel_set-__prefix__-tags" name="itemlinkmodel_set-__prefix__-tags" type="text"/>
861
+ </div>
862
+ </td>
863
+ <td class="field-name">
864
+ <input class="vTextField" id="id_itemlinkmodel_set-__prefix__-name" maxlength="255" name="itemlinkmodel_set-__prefix__-name" type="text"/>
865
+ </td>
866
+ <td class="field-url">
867
+ <input class="vURLField" id="id_itemlinkmodel_set-__prefix__-url" maxlength="200" name="itemlinkmodel_set-__prefix__-url" type="url"/>
868
+ </td>
869
+ <td class="field-position hidden">
870
+ <input class="_reorder_" id="id_itemlinkmodel_set-__prefix__-position" name="itemlinkmodel_set-__prefix__-position" type="hidden" value="0"/>
871
+ </td>
872
+ <td class="delete">
873
+ </td>
874
+ </tr>
875
+ </tbody>
876
+ </table>
877
+ </fieldset>
878
+ </div>
879
+ </div>
880
+ <div class="submit-row">
881
+ <input class="default" name="_save" type="submit" value="Save"/>
882
+ <input name="_addanother" type="submit" value="Save and add another"/>
883
+ <input name="_continue" type="submit" value="Save and continue editing"/>
884
+ <a class="deletelink" href="/admin/inventory/itemmodel/&lt;removed-UUID&gt;/delete/">
885
+ Delete
886
+ </a>
887
+ </div>
888
+ <script async="" id="django-admin-form-add-constants" src="/static/admin/js/change_form.js">
889
+ </script>
890
+ <script data-prepopulated-fields="[]" id="django-admin-prepopulated-fields-constants" src="/static/admin/js/prepopulate_init.js">
891
+ </script>
892
+ </div>
893
+ </form>
894
+ </div>
895
+ <br class="clear"/>
896
+ </div>
897
+ <!-- END Content -->
898
+ <div id="footer">
899
+ <a href="https://github.com/jedie/PyInventory">
900
+ https://github.com/jedie/PyInventory
901
+ </a>
902
+ </div>
903
+ </div>
904
+ </div>
905
+ </div>
906
+ <!-- END Container -->
907
+ <!-- SVGs -->
908
+ <svg class="base-svgs" xmlns="http://www.w3.org/2000/svg">
909
+ <symbol height="1rem" id="icon-auto" viewbox="0 0 24 24" width="1rem">
910
+ <path d="M0 0h24v24H0z" fill="currentColor">
911
+ </path>
912
+ <path d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2V4a8 8 0 1 0 0 16z">
913
+ </path>
914
+ </symbol>
915
+ <symbol height="1rem" id="icon-moon" viewbox="0 0 24 24" width="1rem">
916
+ <path d="M0 0h24v24H0z" fill="currentColor">
917
+ </path>
918
+ <path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z">
919
+ </path>
920
+ </symbol>
921
+ <symbol height="1rem" id="icon-sun" viewbox="0 0 24 24" width="1rem">
922
+ <path d="M0 0h24v24H0z" fill="currentColor">
923
+ </path>
924
+ <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z">
925
+ </path>
926
+ </symbol>
927
+ </svg>
928
+ <!-- END SVGs -->
929
+ </body>
930
+ </html>