Merge pull request #93 from jedie/req_update_20220516

Update requirements
pull/95/head
Jens Diemer 2022-05-16 17:44:47 +02:00 zatwierdzone przez GitHub
commit ad300a1592
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
11 zmienionych plików z 1811 dodań i 2507 usunięć

876
poetry.lock wygenerowano

Plik diff jest za duży Load Diff

Wyświetl plik

@ -36,8 +36,10 @@ readme='README.rst'
[tool.poetry.urls]
"Bug Tracker" = "https://github.com/jedie/PyInventory/issues"
license = "GPL"
[tool.poetry.dependencies]
# Keep Python 3.7 until Yunohost contains a newer Python Version ;)
python = ">=3.7,<4.0.0"
django = "*"
colorlog = "*" # https://github.com/borntyping/python-colorlog
@ -103,8 +105,8 @@ run_testserver = 'inventory_project.manage:start_test_server'
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.darker]
@ -158,7 +160,6 @@ norecursedirs = ".* .git __pycache__ coverage* dist htmlcov volumes"
# --full-trace
# -p no:warnings
addopts = """
--import-mode=importlib
--ignore-glob=deployment/django/*
--reuse-db
--nomigrations

Wyświetl plik

@ -1,25 +0,0 @@
from pathlib import Path
from bx_py_utils.test_utils.snapshot import assert_html_snapshot
from django.http import HttpResponse
def assert_html_response_snapshot(
response: HttpResponse,
status_code: int = 200,
validate: bool = True,
):
"""
TODO: Move to bx_django_utils
"""
data = response.content.decode('utf-8')
assert response.status_code == status_code, (
f'Status code is {response.status_code} but excepted {status_code}'
)
assert_html_snapshot(
got=data,
self_file_path=Path(__file__),
validate=validate
)

Wyświetl plik

@ -3,7 +3,10 @@ import logging
from unittest import mock
from bx_django_utils.test_utils.datetime import MockDatetimeGenerator
from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin
from bx_django_utils.test_utils.html_assertion import (
HtmlAssertionMixin,
assert_html_response_snapshot,
)
from bx_py_utils.test_utils.snapshot import assert_html_snapshot
from django.contrib.auth.models import User
from django.template.defaulttags import CsrfTokenNode, NowNode
@ -15,7 +18,6 @@ from model_bakery import baker
from inventory import __version__
from inventory.models import ItemImageModel, ItemModel
from inventory.permissions import get_or_create_normal_user_group
from inventory_project.tests.temp_utils import assert_html_response_snapshot
ITEM_FORM_DEFAULTS = {

Wyświetl plik

@ -1,399 +1,256 @@
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<title>
Select Item to change | PyInventory v0.13.0
</title>
<link href="/static/admin/css/base.css" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/nav_sidebar.css" rel="stylesheet" type="text/css"/>
<script defer="" src="/static/admin/js/nav_sidebar.js">
</script>
<link href="/static/admin/css/changelists.css" rel="stylesheet" type="text/css"/>
<script src="/admin/jsi18n/">
</script>
<meta content="notranslate" name="google"/>
<meta content="noindex,nofollow" name="robots">
<link href="/static/inventory.css" rel="stylesheet" type="text/css"/>
<script src="/static/admin/js/vendor/jquery/jquery.min.js">
</script>
<script src="/static/admin/js/jquery.init.js">
</script>
<script src="/static/admin/js/core.js">
</script>
<script src="/static/admin/js/admin/RelatedObjectLookups.js">
</script>
<script src="/static/admin/js/actions.js">
</script>
<script src="/static/admin/js/urlify.js">
</script>
<script src="/static/admin/js/prepopulate.js">
</script>
<script src="/static/admin/js/vendor/xregexp/xregexp.min.js">
</script>
<meta content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport"/>
<link href="/static/admin/css/responsive.css" rel="stylesheet" type="text/css"/>
<meta content="NONE,NOARCHIVE" name="robots"/>
</meta>
</head>
<body class="app-inventory model-itemmodel change-list" data-admin-utc-offset="MockedNowNode">
<!-- Container -->
<div id="container">
<!-- Header -->
<div id="header">
<div id="branding">
<h1 id="site-name">
<a href="/admin/">
PyInventory v0.13.0
</a>
</h1>
</div>
<div id="user-tools">
Welcome,
<strong>
NormalUser
</strong>
.
<a href="/">
View site
</a>
/
<a href="/admin/password_change/">
Change password
</a>
/
<a href="/admin/logout/">
Log out
</a>
</div>
</div>
<!-- END Header -->
<div class="breadcrumbs">
<a href="/admin/">
Home
<div class="" id="content">
<h1>
Select Item to change
</h1>
<div id="content-main">
<ul class="object-tools">
<li>
<a class="import_link" href="/admin/inventory/itemmodel/import/">
Import
</a>
<a href="/admin/inventory/">
Inventory
</li>
<li>
<a class="export_link" href="/admin/inventory/itemmodel/export/?">
Export
</a>
Items
</div>
<div class="main shifted" id="main">
<button aria-label="Toggle navigation" class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar">
</button>
<nav class="sticky" id="nav-sidebar">
<div class="app-inventory module current-app">
<table>
<caption>
<a class="section" href="/admin/inventory/" title="Models in the Inventory application">
Inventory
</li>
<li>
<a class="addlink" href="/admin/inventory/itemmodel/add/">
Add Item
</a>
</li>
</ul>
<div class="module filtered" id="changelist">
<div class="changelist-form-container">
<div id="toolbar">
<form id="changelist-search" method="get">
<div>
<!-- DIV needed for valid HTML -->
<label for="searchbar">
<img alt="Search" src="/static/admin/img/search.svg"/>
</label>
<input autofocus="" id="searchbar" name="q" size="40" type="text" value=""/>
<input type="submit" value="Search"/>
<span class="small quiet">
2 results (
<a href="?">
6 total
</a>
</caption>
<tr class="model-itemmodel current-model">
<th scope="row">
<a aria-current="page" href="/admin/inventory/itemmodel/">
Items
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/itemmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-locationmodel">
<th scope="row">
<a href="/admin/inventory/locationmodel/">
Locations
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/locationmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-memomodel">
<th scope="row">
<a href="/admin/inventory/memomodel/">
Memos
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/memomodel/add/">
Add
</a>
</td>
</tr>
</table>
)
</span>
</div>
</form>
</div>
<div class="xfull">
<ul class="toplinks">
<li class="date-back">
<a href="?create_dt__year=2000">
2000
</a>
</li>
<li>
<a href="?create_dt__day=1&create_dt__month=1&create_dt__year=2000">
January 1
</a>
</li>
</ul>
<br class="clear"/>
</div>
<form id="changelist-form" method="post" novalidate="">
MockedCsrfTokenNode
<div class="actions">
<label>
Action:
<select name="action" required="">
<option selected="" value="">
---------
</option>
<option value="delete_selected">
Delete selected Items
</option>
</select>
</label>
<input class="select-across" name="select_across" type="hidden" value="0"/>
<button class="button" name="index" title="Run the selected action" type="submit" value="0">
Go
</button>
<span class="action-counter" data-actions-icnt="2">
0 of 2 selected
</span>
</div>
</nav>
<div class="content">
<!-- Content -->
<div class="" id="content">
<h1>
Select Item to change
</h1>
<div id="content-main">
<ul class="object-tools">
<li>
<a class="import_link" href="/admin/inventory/itemmodel/import/">
Import
</a>
</li>
<li>
<a class="export_link" href="/admin/inventory/itemmodel/export/?">
Export
</a>
</li>
<li>
<a class="addlink" href="/admin/inventory/itemmodel/add/">
Add Item
</a>
</li>
</ul>
<div class="module filtered" id="changelist">
<div class="changelist-form-container">
<div id="toolbar">
<form id="changelist-search" method="get">
<div>
<!-- DIV needed for valid HTML -->
<label for="searchbar">
<img alt="Search" src="/static/admin/img/search.svg"/>
</label>
<input autofocus="" id="searchbar" name="q" size="40" type="text" value=""/>
<input type="submit" value="Search"/>
<span class="small quiet">
2 results (
<a href="?">
6 total
</a>
)
</span>
</div>
</form>
</div>
<div class="xfull">
<ul class="toplinks">
<li class="date-back">
<a href="?create_dt__year=2000">
2000
<div class="results">
<table id="result_list">
<thead>
<tr>
<th class="action-checkbox-column" scope="col">
<div class="text">
<span>
<input id="action-toggle" type="checkbox"/>
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_kind" scope="col">
<div class="text">
<span>
Kind
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_producer" scope="col">
<div class="text">
<span>
Producer
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-column_item" scope="col">
<div class="text">
<span>
Items
</span>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-location" scope="col">
<div class="text">
<a href="?o=4">
Location
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-received_date" scope="col">
<div class="text">
<a href="?o=5">
Received date
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-update_dt" scope="col">
<div class="text">
<a href="?o=6">
Last update
</a>
</div>
<div class="clear">
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0001-0000-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0001-0000-0000-000000000000/change/">
main item 1
</a>
</strong>
<ul>
<li>
<a href="/admin/inventory/itemmodel/00000000-0001-0001-0000-000000000000/change/">
sub item 1.1
</a>
</li>
<li>
<a href="?create_dt__day=1&create_dt__month=1&create_dt__year=2000">
January 1
<a href="/admin/inventory/itemmodel/00000000-0001-0002-0000-000000000000/change/">
sub item 1.2
</a>
</li>
</ul>
<br class="clear"/>
</div>
<form id="changelist-form" method="post" novalidate="">
MockedCsrfTokenNode
<div class="actions">
<label>
Action:
<select name="action" required="">
<option selected="" value="">
---------
</option>
<option value="delete_selected">
Delete selected Items
</option>
</select>
</label>
<input class="select-across" name="select_across" type="hidden" value="0"/>
<button class="button" name="index" title="Run the selected action" type="submit" value="0">
Go
</button>
<span class="action-counter" data-actions-icnt="2">
0 of 2 selected
</span>
</div>
<div class="results">
<table id="result_list">
<thead>
<tr>
<th class="action-checkbox-column" scope="col">
<div class="text">
<span>
<input id="action-toggle" type="checkbox"/>
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_kind" scope="col">
<div class="text">
<span>
Kind
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_producer" scope="col">
<div class="text">
<span>
Producer
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-column_item" scope="col">
<div class="text">
<span>
Items
</span>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-location" scope="col">
<div class="text">
<a href="?o=4">
Location
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-received_date" scope="col">
<div class="text">
<a href="?o=5">
Received date
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-update_dt" scope="col">
<div class="text">
<a href="?o=6">
Last update
</a>
</div>
<div class="clear">
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0001-0000-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0001-0000-0000-000000000000/change/">
main item 1
</a>
</strong>
<ul>
<li>
<a href="/admin/inventory/itemmodel/00000000-0001-0001-0000-000000000000/change/">
sub item 1.1
</a>
</li>
<li>
<a href="/admin/inventory/itemmodel/00000000-0001-0002-0000-000000000000/change/">
sub item 1.2
</a>
</li>
</ul>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:01 a.m.
</td>
</tr>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0000-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0000-0000-000000000000/change/">
main item 2
</a>
</strong>
<ul>
<li>
<a href="/admin/inventory/itemmodel/00000000-0002-0001-0000-000000000000/change/">
sub item 2.1
</a>
</li>
<li>
<a href="/admin/inventory/itemmodel/00000000-0002-0002-0000-000000000000/change/">
sub item 2.2
</a>
</li>
</ul>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:04 a.m.
</td>
</tr>
</tbody>
</table>
</div>
<p class="paginator">
2 Items
</p>
</form>
</div>
<div id="changelist-filter">
<h2>
Filter
</h2>
<h3>
By Group Items
</h3>
<ul>
<li class="selected">
<a href="?" title="Automatic">
Automatic
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:01 a.m.
</td>
</tr>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0000-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0000-0000-000000000000/change/">
main item 2
</a>
</li>
<li>
<a href="?grouping=no" title="No">
No
</a>
</li>
</ul>
</div>
</div>
</div>
<br class="clear"/>
</strong>
<ul>
<li>
<a href="/admin/inventory/itemmodel/00000000-0002-0001-0000-000000000000/change/">
sub item 2.1
</a>
</li>
<li>
<a href="/admin/inventory/itemmodel/00000000-0002-0002-0000-000000000000/change/">
sub item 2.2
</a>
</li>
</ul>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:04 a.m.
</td>
</tr>
</tbody>
</table>
</div>
<!-- END Content -->
<div id="footer">
<a href="https://github.com/jedie/PyInventory">
https://github.com/jedie/PyInventory
<p class="paginator">
2 Items
</p>
</form>
</div>
<div id="changelist-filter">
<h2>
Filter
</h2>
<h3>
By Group Items
</h3>
<ul>
<li class="selected">
<a href="?" title="Automatic">
Automatic
</a>
</div>
</div>
</li>
<li>
<a href="?grouping=no" title="No">
No
</a>
</li>
</ul>
</div>
</div>
<!-- END Container -->
</body>
</html>
</div>
<br class="clear"/>
</div>

Wyświetl plik

@ -1,375 +1,232 @@
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<title>
Select Item to change | PyInventory v0.13.0
</title>
<link href="/static/admin/css/base.css" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/nav_sidebar.css" rel="stylesheet" type="text/css"/>
<script defer="" src="/static/admin/js/nav_sidebar.js">
</script>
<link href="/static/admin/css/changelists.css" rel="stylesheet" type="text/css"/>
<script src="/admin/jsi18n/">
</script>
<meta content="notranslate" name="google"/>
<meta content="noindex,nofollow" name="robots">
<link href="/static/inventory.css" rel="stylesheet" type="text/css"/>
<script src="/static/admin/js/vendor/jquery/jquery.min.js">
</script>
<script src="/static/admin/js/jquery.init.js">
</script>
<script src="/static/admin/js/core.js">
</script>
<script src="/static/admin/js/admin/RelatedObjectLookups.js">
</script>
<script src="/static/admin/js/actions.js">
</script>
<script src="/static/admin/js/urlify.js">
</script>
<script src="/static/admin/js/prepopulate.js">
</script>
<script src="/static/admin/js/vendor/xregexp/xregexp.min.js">
</script>
<meta content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport"/>
<link href="/static/admin/css/responsive.css" rel="stylesheet" type="text/css"/>
<meta content="NONE,NOARCHIVE" name="robots"/>
</meta>
</head>
<body class="app-inventory model-itemmodel change-list" data-admin-utc-offset="MockedNowNode">
<!-- Container -->
<div id="container">
<!-- Header -->
<div id="header">
<div id="branding">
<h1 id="site-name">
<a href="/admin/">
PyInventory v0.13.0
</a>
</h1>
</div>
<div id="user-tools">
Welcome,
<strong>
NormalUser
</strong>
.
<a href="/">
View site
</a>
/
<a href="/admin/password_change/">
Change password
</a>
/
<a href="/admin/logout/">
Log out
</a>
</div>
</div>
<!-- END Header -->
<div class="breadcrumbs">
<a href="/admin/">
Home
<div class="" id="content">
<h1>
Select Item to change
</h1>
<div id="content-main">
<ul class="object-tools">
<li>
<a class="import_link" href="/admin/inventory/itemmodel/import/">
Import
</a>
<a href="/admin/inventory/">
Inventory
</li>
<li>
<a class="export_link" href="/admin/inventory/itemmodel/export/?q=sub+item+2.">
Export
</a>
Items
</div>
<div class="main shifted" id="main">
<button aria-label="Toggle navigation" class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar">
</button>
<nav class="sticky" id="nav-sidebar">
<div class="app-inventory module current-app">
<table>
<caption>
<a class="section" href="/admin/inventory/" title="Models in the Inventory application">
Inventory
</li>
<li>
<a class="addlink" href="/admin/inventory/itemmodel/add/?_changelist_filters=q%3Dsub%2Bitem%2B2.">
Add Item
</a>
</li>
</ul>
<div class="module filtered" id="changelist">
<div class="changelist-form-container">
<div id="toolbar">
<form id="changelist-search" method="get">
<div>
<!-- DIV needed for valid HTML -->
<label for="searchbar">
<img alt="Search" src="/static/admin/img/search.svg"/>
</label>
<input autofocus="" id="searchbar" name="q" size="40" type="text" value="sub item 2."/>
<input type="submit" value="Search"/>
<span class="small quiet">
2 results (
<a href="?">
6 total
</a>
</caption>
<tr class="model-itemmodel current-model">
<th scope="row">
<a aria-current="page" href="/admin/inventory/itemmodel/">
Items
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/itemmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-locationmodel">
<th scope="row">
<a href="/admin/inventory/locationmodel/">
Locations
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/locationmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-memomodel">
<th scope="row">
<a href="/admin/inventory/memomodel/">
Memos
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/memomodel/add/">
Add
</a>
</td>
</tr>
</table>
)
</span>
</div>
</form>
</div>
<div class="xfull">
<ul class="toplinks">
<li class="date-back">
<a href="?create_dt__year=2000&q=sub+item+2.">
2000
</a>
</li>
<li>
<a href="?create_dt__day=1&create_dt__month=1&create_dt__year=2000&q=sub+item+2.">
January 1
</a>
</li>
</ul>
<br class="clear"/>
</div>
<form id="changelist-form" method="post" novalidate="">
MockedCsrfTokenNode
<div class="actions">
<label>
Action:
<select name="action" required="">
<option selected="" value="">
---------
</option>
<option value="delete_selected">
Delete selected Items
</option>
</select>
</label>
<input class="select-across" name="select_across" type="hidden" value="0"/>
<button class="button" name="index" title="Run the selected action" type="submit" value="0">
Go
</button>
<span class="action-counter" data-actions-icnt="2">
0 of 2 selected
</span>
</div>
</nav>
<div class="content">
<!-- Content -->
<div class="" id="content">
<h1>
Select Item to change
</h1>
<div id="content-main">
<ul class="object-tools">
<li>
<a class="import_link" href="/admin/inventory/itemmodel/import/">
Import
</a>
</li>
<li>
<a class="export_link" href="/admin/inventory/itemmodel/export/?q=sub+item+2.">
Export
</a>
</li>
<li>
<a class="addlink" href="/admin/inventory/itemmodel/add/?_changelist_filters=q%3Dsub%2Bitem%2B2.">
Add Item
</a>
</li>
</ul>
<div class="module filtered" id="changelist">
<div class="changelist-form-container">
<div id="toolbar">
<form id="changelist-search" method="get">
<div>
<!-- DIV needed for valid HTML -->
<label for="searchbar">
<img alt="Search" src="/static/admin/img/search.svg"/>
</label>
<input autofocus="" id="searchbar" name="q" size="40" type="text" value="sub item 2."/>
<input type="submit" value="Search"/>
<span class="small quiet">
2 results (
<a href="?">
6 total
</a>
)
</span>
</div>
</form>
</div>
<div class="xfull">
<ul class="toplinks">
<li class="date-back">
<a href="?create_dt__year=2000&q=sub+item+2.">
2000
</a>
</li>
<li>
<a href="?create_dt__day=1&create_dt__month=1&create_dt__year=2000&q=sub+item+2.">
January 1
</a>
</li>
</ul>
<br class="clear"/>
</div>
<form id="changelist-form" method="post" novalidate="">
MockedCsrfTokenNode
<div class="actions">
<label>
Action:
<select name="action" required="">
<option selected="" value="">
---------
</option>
<option value="delete_selected">
Delete selected Items
</option>
</select>
</label>
<input class="select-across" name="select_across" type="hidden" value="0"/>
<button class="button" name="index" title="Run the selected action" type="submit" value="0">
Go
</button>
<span class="action-counter" data-actions-icnt="2">
0 of 2 selected
<div class="results">
<table id="result_list">
<thead>
<tr>
<th class="action-checkbox-column" scope="col">
<div class="text">
<span>
<input id="action-toggle" type="checkbox"/>
</span>
</div>
<div class="results">
<table id="result_list">
<thead>
<tr>
<th class="action-checkbox-column" scope="col">
<div class="text">
<span>
<input id="action-toggle" type="checkbox"/>
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_kind" scope="col">
<div class="text">
<span>
Kind
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_producer" scope="col">
<div class="text">
<span>
Producer
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-column_item" scope="col">
<div class="text">
<span>
Items
</span>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-location" scope="col">
<div class="text">
<a href="?o=4&q=sub+item+2.">
Location
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-received_date" scope="col">
<div class="text">
<a href="?o=5&q=sub+item+2.">
Received date
</a>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-update_dt" scope="col">
<div class="text">
<a href="?o=6&q=sub+item+2.">
Last update
</a>
</div>
<div class="clear">
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0001-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0001-0000-000000000000/change/">
sub item 2.1
</a>
</strong>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:05 a.m.
</td>
</tr>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0002-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0002-0000-000000000000/change/">
sub item 2.2
</a>
</strong>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:06 a.m.
</td>
</tr>
</tbody>
</table>
<div class="clear">
</div>
<p class="paginator">
2 Items
</p>
</form>
</div>
<div id="changelist-filter">
<h2>
Filter
</h2>
<h3>
By Group Items
</h3>
<ul>
<li class="selected">
<a href="?q=sub+item+2." title="Automatic">
Automatic
</th>
<th class="column-_tagulous_display_kind" scope="col">
<div class="text">
<span>
Kind
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-_tagulous_display_producer" scope="col">
<div class="text">
<span>
Producer
</span>
</div>
<div class="clear">
</div>
</th>
<th class="column-column_item" scope="col">
<div class="text">
<span>
Items
</span>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-location" scope="col">
<div class="text">
<a href="?o=4&q=sub+item+2.">
Location
</a>
</li>
<li>
<a href="?grouping=no&q=sub+item+2." title="No">
No
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-received_date" scope="col">
<div class="text">
<a href="?o=5&q=sub+item+2.">
Received date
</a>
</li>
</ul>
</div>
</div>
</div>
<br class="clear"/>
</div>
<div class="clear">
</div>
</th>
<th class="sortable column-update_dt" scope="col">
<div class="text">
<a href="?o=6&q=sub+item+2.">
Last update
</a>
</div>
<div class="clear">
</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0001-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0001-0000-000000000000/change/">
sub item 2.1
</a>
</strong>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:05 a.m.
</td>
</tr>
<tr>
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="00000000-0002-0002-0000-000000000000"/>
</td>
<td class="field-_tagulous_display_kind">
</td>
<td class="field-_tagulous_display_producer">
</td>
<td class="field-column_item">
<strong>
<a href="/admin/inventory/itemmodel/00000000-0002-0002-0000-000000000000/change/">
sub item 2.2
</a>
</strong>
</td>
<td class="field-location nowrap">
-
</td>
<td class="field-received_date nowrap">
-
</td>
<td class="field-update_dt nowrap">
Jan. 1, 2000, 1:06 a.m.
</td>
</tr>
</tbody>
</table>
</div>
<!-- END Content -->
<div id="footer">
<a href="https://github.com/jedie/PyInventory">
https://github.com/jedie/PyInventory
<p class="paginator">
2 Items
</p>
</form>
</div>
<div id="changelist-filter">
<h2>
Filter
</h2>
<h3>
By Group Items
</h3>
<ul>
<li class="selected">
<a href="?q=sub+item+2." title="Automatic">
Automatic
</a>
</div>
</div>
</li>
<li>
<a href="?grouping=no&q=sub+item+2." title="No">
No
</a>
</li>
</ul>
</div>
</div>
<!-- END Container -->
</body>
</html>
</div>
<br class="clear"/>
</div>

Wyświetl plik

@ -1,81 +1,40 @@
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<title>
Log in | PyInventory v0.13.0
</title>
<link href="/static/admin/css/base.css" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/nav_sidebar.css" rel="stylesheet" type="text/css"/>
<script defer="" src="/static/admin/js/nav_sidebar.js">
<div class="colM" id="content">
<script>
document.write('<fo'+'rm act'+'ion="/admin/login/" met'+'hod="po'+'st" id="lo'+'gin-fo'+'rm">');
</script>
MockedCsrfTokenNode
<div class="form-row">
<p class="required">
<label class="required" for="id_username">
Username:
</label>
<input autocapitalize="none" autocomplete="username" autofocus="" id="id_username" maxlength="150" name="username" required="" type="text"/>
</p>
<p class="required">
<label class="required" for="id_password">
Password:
</label>
<input autocomplete="current-password" id="id_password" name="password" required="" type="password"/>
</p>
</div>
<div class="submit-row">
<noscript>
Please enable JavaScript ;)
</noscript>
<label>
</label>
<script>
document.write('<in'+'put type="sub'+'mit" val'+'ue="Log in">');
</script>
<link href="/static/admin/css/login.css" rel="stylesheet" type="text/css"/>
<style>
.form-row {display: none;}
</style>
<meta content="notranslate" name="google"/>
<meta content="noindex,nofollow" name="robots">
<link href="/static/inventory.css" rel="stylesheet" type="text/css"/>
<meta content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport"/>
<link href="/static/admin/css/responsive.css" rel="stylesheet" type="text/css"/>
<meta content="NONE,NOARCHIVE" name="robots"/>
</meta>
</head>
<body class="login" data-admin-utc-offset="3600">
<!-- Container -->
<div id="container">
<!-- Header -->
<div id="header">
<div id="branding">
</div>
</div>
<!-- END Header -->
<div class="main shifted" id="main">
<div class="content">
<!-- Content -->
<div class="colM" id="content">
<script>
document.write('<fo'+'rm act'+'ion="/admin/login/" met'+'hod="po'+'st" id="lo'+'gin-fo'+'rm">');
</script>
MockedCsrfTokenNode
<div class="form-row">
<p class="required">
<label class="required" for="id_username">
Username:
</label>
<input autocapitalize="none" autocomplete="username" autofocus="" id="id_username" maxlength="150" name="username" required="" type="text"/>
</p>
<p class="required">
<label class="required" for="id_password">
Password:
</label>
<input autocomplete="current-password" id="id_password" name="password" required="" type="password"/>
</p>
</div>
<div class="submit-row">
<noscript>
Please enable JavaScript ;)
</noscript>
<label>
</label>
<script>
document.write('<in'+'put type="sub'+'mit" val'+'ue="Log in">');
</script>
</div>
<script>
'use strict';
</div>
<script>
'use strict';
document.write('</fo'+'rm>');
document.addEventListener('DOMContentLoaded', () => {
for (const object of document.querySelectorAll('.form-row')) {
object.style.display = "block";
}
});
</script>
<br class="clear"/>
</div>
<!-- END Content -->
</div>
</div>
</div>
<!-- END Container -->
</body>
</html>
</script>
<br class="clear"/>
</div>

Wyświetl plik

@ -21,8 +21,6 @@
</script>
<script src="/static/tagulous/tagulous.js">
</script>
<script data-ckeditor-basepath="/static/ckeditor/ckeditor/" id="ckeditor-init-script" src="/static/ckeditor/ckeditor-init.js">
</script>
<script src="/static/admin/js/calendar.js">
</script>
<script src="/static/admin/js/collapse.js">
@ -31,8 +29,6 @@
</script>
<script src="/static/tagulous/adaptor/select2-4.js">
</script>
<script src="/static/ckeditor/ckeditor/ckeditor.js">
</script>
<script src="/static/admin/js/admin/DateTimeShortcuts.js">
</script>
<script src="/static/admin/js/vendor/select2/i18n/en.js">
@ -331,9 +327,8 @@
<label for="id_description">
Description:
</label>
<div class="django-ckeditor-widget" data-field-id="id_description" style="display: inline-block;">
<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>
</div>
<textarea class="vLargeTextField" cols="40" id="id_description" name="description" rows="10">
</textarea>
<div class="help">
</div>
</div>

Wyświetl plik

@ -1,6 +1,9 @@
from unittest import mock
from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin
from bx_django_utils.test_utils.html_assertion import (
HtmlAssertionMixin,
assert_html_response_snapshot,
)
from django.contrib.auth.models import User
from django.template.defaulttags import CsrfTokenNode, NowNode
from django.test import TestCase, override_settings
@ -10,7 +13,6 @@ from model_bakery import baker
from inventory import __version__
from inventory.models import MemoImageModel, MemoModel
from inventory.permissions import get_or_create_normal_user_group
from inventory_project.tests.temp_utils import assert_html_response_snapshot
class AdminAnonymousTests(TestCase):

Wyświetl plik

@ -1,536 +1,351 @@
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<title>
Add Memo | PyInventory v0.13.0
</title>
<link href="/static/admin/css/base.css" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/nav_sidebar.css" rel="stylesheet" type="text/css"/>
<script defer="" src="/static/admin/js/nav_sidebar.js">
</script>
<link href="/static/admin/css/forms.css" rel="stylesheet" type="text/css"/>
<meta content="notranslate" name="google"/>
<meta content="noindex,nofollow" name="robots">
<link href="/static/inventory.css" rel="stylesheet" type="text/css"/>
<script src="/admin/jsi18n/">
</script>
<link href="/static/adminsortable2/css/sortable.css" media="all" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/vendor/select2/select2.min.css" media="screen" rel="stylesheet" type="text/css"/>
<link href="/static/admin/css/autocomplete.css" media="screen" rel="stylesheet" type="text/css"/>
<script src="/static/admin/js/vendor/jquery/jquery.min.js">
</script>
<script data-ckeditor-basepath="/static/ckeditor/ckeditor/" id="ckeditor-init-script" src="/static/ckeditor/ckeditor-init.js">
</script>
<script src="/static/tagulous/tagulous.js">
</script>
<script src="/static/admin/js/collapse.js">
</script>
<script src="/static/ckeditor/ckeditor/ckeditor.js">
</script>
<script src="/static/admin/js/vendor/select2/select2.full.min.js">
</script>
<script src="/static/tagulous/adaptor/select2-4.js">
</script>
<script src="/static/admin/js/vendor/select2/i18n/en.js">
</script>
<script src="/static/admin/js/jquery.init.js">
</script>
<script src="/static/admin/js/core.js">
</script>
<script src="/static/admin/js/autocomplete.js">
</script>
<script src="/static/admin/js/inlines.js">
</script>
<script src="/static/adminsortable2/js/plugins/admincompat.js">
</script>
<script src="/static/admin/js/admin/RelatedObjectLookups.js">
</script>
<script src="/static/adminsortable2/js/libs/jquery.ui.core-1.11.4.js">
</script>
<script src="/static/admin/js/actions.js">
</script>
<script src="/static/adminsortable2/js/libs/jquery.ui.widget-1.11.4.js">
</script>
<script src="/static/admin/js/urlify.js">
</script>
<script src="/static/adminsortable2/js/libs/jquery.ui.mouse-1.11.4.js">
</script>
<script src="/static/admin/js/prepopulate.js">
</script>
<script src="/static/adminsortable2/js/libs/jquery.ui.touch-punch-0.2.3.js">
</script>
<script src="/static/admin/js/vendor/xregexp/xregexp.min.js">
</script>
<script src="/static/adminsortable2/js/libs/jquery.ui.sortable-1.11.4.js">
</script>
<script src="/static/adminsortable2/js/inline-sortable.js">
</script>
<script src="/static/adminsortable2/js/inline-tabular.js">
</script>
<meta content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0" name="viewport"/>
<link href="/static/admin/css/responsive.css" rel="stylesheet" type="text/css"/>
<meta content="NONE,NOARCHIVE" name="robots"/>
</meta>
</head>
<body class="app-inventory model-memomodel change-form" data-admin-utc-offset="MockedNowNode">
<!-- Container -->
<div id="container">
<!-- Header -->
<div id="header">
<div id="branding">
<h1 id="site-name">
<a href="/admin/">
PyInventory v0.13.0
</a>
</h1>
</div>
<div id="user-tools">
Welcome,
<strong>
NormalUser
</strong>
.
<a href="/">
View site
</a>
/
<a href="/admin/password_change/">
Change password
</a>
/
<a href="/admin/logout/">
Log out
</a>
</div>
</div>
<!-- END Header -->
<div class="breadcrumbs">
<a href="/admin/">
Home
</a>
<a href="/admin/inventory/">
Inventory
</a>
<a href="/admin/inventory/memomodel/">
Memos
</a>
Add Memo
</div>
<div class="main shifted" id="main">
<button aria-label="Toggle navigation" class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar">
</button>
<nav class="sticky" id="nav-sidebar">
<div class="app-inventory module current-app">
<table>
<caption>
<a class="section" href="/admin/inventory/" title="Models in the Inventory application">
Inventory
</a>
</caption>
<tr class="model-itemmodel">
<th scope="row">
<a href="/admin/inventory/itemmodel/">
Items
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/itemmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-locationmodel">
<th scope="row">
<a href="/admin/inventory/locationmodel/">
Locations
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/locationmodel/add/">
Add
</a>
</td>
</tr>
<tr class="model-memomodel current-model">
<th scope="row">
<a aria-current="page" href="/admin/inventory/memomodel/">
Memos
</a>
</th>
<td>
<a class="addlink" href="/admin/inventory/memomodel/add/">
Add
</a>
</td>
</tr>
</table>
<div class="colM" id="content">
<h1>
Add Memo
</h1>
<div id="content-main">
<form enctype="multipart/form-data" id="memomodel_form" method="post" novalidate="">
MockedCsrfTokenNode
<div>
<fieldset class="module aligned collapse">
<h2>
Internals
</h2>
<div class="form-row field-id field-version">
<div class="fieldBox field-id">
<label>
ID:
</label>
<div class="readonly">
-
</div>
<div class="help">
ID
</div>
</div>
<div class="fieldBox field-version">
<label class="required inline" for="id_version">
Version:
</label>
<input id="id_version" name="version" required="" type="hidden" value="0"/>
0
<div class="help">
Internal version number of this entry. Used to protect the overwriting of an older entry.
</div>
</div>
</div>
</nav>
<div class="content">
<!-- Content -->
<div class="colM" id="content">
<h1>
Add Memo
</h1>
<div id="content-main">
<form enctype="multipart/form-data" id="memomodel_form" method="post" novalidate="">
MockedCsrfTokenNode
<div>
<fieldset class="module aligned collapse">
<h2>
Internals
</h2>
<div class="form-row field-id field-version">
<div class="fieldBox field-id">
<label>
ID:
</label>
<div class="readonly">
-
</div>
<div class="help">
ID
</div>
<div class="form-row field-user">
<div>
<label>
User:
</label>
<div class="readonly">
-
</div>
<div class="help">
The user who is the owner of this entry and can manage it (will be set automatically)
</div>
</div>
</div>
</fieldset>
<fieldset class="module aligned collapse">
<h2>
Meta
</h2>
<div class="form-row field-create_dt">
<div>
<label>
Create date:
</label>
<div class="readonly">
-
</div>
<div class="help">
(will be set automatically)
</div>
</div>
</div>
<div class="form-row field-update_dt">
<div>
<label>
Last update:
</label>
<div class="readonly">
-
</div>
<div class="help">
(will be set automatically)
</div>
</div>
</div>
</fieldset>
<fieldset class="module aligned">
<h2>
Basic
</h2>
<div class="form-row field-name">
<div>
<label class="required" for="id_name">
Name:
</label>
<input class="vTextField" id="id_name" maxlength="255" name="name" required="" type="text"/>
<div class="help">
Name
</div>
</div>
</div>
<div class="form-row field-memo">
<div>
<label for="id_memo">
Description:
</label>
<textarea class="vLargeTextField" cols="40" id="id_memo" name="memo" rows="10">
</textarea>
<div class="help">
</div>
</div>
</div>
<div class="form-row field-tags">
<div>
<label for="id_tags">
Tags:
</label>
<div class="related-widget-wrapper">
<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"/>
</div>
<div class="help">
</div>
</div>
</div>
</fieldset>
<div class="inline-group sortable" id="memoimagemodel_set-group">
<div class="tabular inline-related">
<input id="id_memoimagemodel_set-TOTAL_FORMS" name="memoimagemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-INITIAL_FORMS" name="memoimagemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-MIN_NUM_FORMS" name="memoimagemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-MAX_NUM_FORMS" name="memoimagemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Images
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th colspan="2">
Preview
</th>
<th class="required">
Image
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<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"/>
</th>
<th>
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memoimagemodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memoimagemodel_set-__prefix__-id" name="memoimagemodel_set-__prefix__-id" type="hidden"/>
<input id="id_memoimagemodel_set-__prefix__-memo" name="memoimagemodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memoimagemodel_set-__prefix__-position" name="memoimagemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-preview">
<p>
-
</p>
</td>
<td class="field-image">
<input accept="image/*" id="id_memoimagemodel_set-__prefix__-image" name="memoimagemodel_set-__prefix__-image" type="file"/>
</td>
<td class="field-name">
<input class="vTextField" id="id_memoimagemodel_set-__prefix__-name" maxlength="255" name="memoimagemodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memoimagemodel_set-__prefix__-tags" name="memoimagemodel_set-__prefix__-tags" type="text"/>
</div>
<div class="fieldBox field-version">
<label class="required inline" for="id_version">
Version:
</label>
<input id="id_version" name="version" required="" type="hidden" value="0"/>
0
<div class="help">
Internal version number of this entry. Used to protect the overwriting of an older entry.
</div>
</div>
</div>
<div class="form-row field-user">
<div>
<label>
User:
</label>
<div class="readonly">
-
</div>
<div class="help">
The user who is the owner of this entry and can manage it (will be set automatically)
</div>
</div>
</div>
</fieldset>
<fieldset class="module aligned collapse">
<h2>
Meta
</h2>
<div class="form-row field-create_dt">
<div>
<label>
Create date:
</label>
<div class="readonly">
-
</div>
<div class="help">
(will be set automatically)
</div>
</div>
</div>
<div class="form-row field-update_dt">
<div>
<label>
Last update:
</label>
<div class="readonly">
-
</div>
<div class="help">
(will be set automatically)
</div>
</div>
</div>
</fieldset>
<fieldset class="module aligned">
<h2>
Basic
</h2>
<div class="form-row field-name">
<div>
<label class="required" for="id_name">
Name:
</label>
<input class="vTextField" id="id_name" maxlength="255" name="name" required="" type="text"/>
<div class="help">
Name
</div>
</div>
</div>
<div class="form-row field-memo">
<div>
<label for="id_memo">
Description:
</label>
<div class="django-ckeditor-widget" data-field-id="id_memo" style="display: inline-block;">
<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_memo" data-processed="0" data-type="ckeditortype" id="id_memo" name="memo" rows="10"></textarea>
</div>
<div class="help">
</div>
</div>
</div>
<div class="form-row field-tags">
<div>
<label for="id_tags">
Tags:
</label>
<div class="related-widget-wrapper">
<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"/>
</div>
<div class="help">
</div>
</div>
</div>
</fieldset>
<div class="inline-group sortable" id="memoimagemodel_set-group">
<div class="tabular inline-related">
<input id="id_memoimagemodel_set-TOTAL_FORMS" name="memoimagemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-INITIAL_FORMS" name="memoimagemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-MIN_NUM_FORMS" name="memoimagemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memoimagemodel_set-MAX_NUM_FORMS" name="memoimagemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Images
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th colspan="2">
Preview
</th>
<th class="required">
Image
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<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"/>
</th>
<th>
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memoimagemodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memoimagemodel_set-__prefix__-id" name="memoimagemodel_set-__prefix__-id" type="hidden"/>
<input id="id_memoimagemodel_set-__prefix__-memo" name="memoimagemodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memoimagemodel_set-__prefix__-position" name="memoimagemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-preview">
<p>
-
</p>
</td>
<td class="field-image">
<input accept="image/*" id="id_memoimagemodel_set-__prefix__-image" name="memoimagemodel_set-__prefix__-image" type="file"/>
</td>
<td class="field-name">
<input class="vTextField" id="id_memoimagemodel_set-__prefix__-name" maxlength="255" name="memoimagemodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memoimagemodel_set-__prefix__-tags" name="memoimagemodel_set-__prefix__-tags" type="text"/>
</div>
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
"prefix": "memoimagemodel_set",
"addText": "Add another Image",
"deleteText": "Remove"
}
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="inline-group sortable" id="memofilemodel_set-group">
<div class="tabular inline-related">
<input id="id_memofilemodel_set-TOTAL_FORMS" name="memofilemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-INITIAL_FORMS" name="memofilemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-MIN_NUM_FORMS" name="memofilemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-MAX_NUM_FORMS" name="memofilemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Files
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th class="required" colspan="2">
File
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<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"/>
</th>
<th>
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memofilemodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memofilemodel_set-__prefix__-id" name="memofilemodel_set-__prefix__-id" type="hidden"/>
<input id="id_memofilemodel_set-__prefix__-memo" name="memofilemodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memofilemodel_set-__prefix__-position" name="memofilemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-file">
<input id="id_memofilemodel_set-__prefix__-file" name="memofilemodel_set-__prefix__-file" type="file"/>
</td>
<td class="field-name">
<input class="vTextField" id="id_memofilemodel_set-__prefix__-name" maxlength="255" name="memofilemodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memofilemodel_set-__prefix__-tags" name="memofilemodel_set-__prefix__-tags" type="text"/>
</div>
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="inline-group sortable" id="memofilemodel_set-group">
<div class="tabular inline-related">
<input id="id_memofilemodel_set-TOTAL_FORMS" name="memofilemodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-INITIAL_FORMS" name="memofilemodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-MIN_NUM_FORMS" name="memofilemodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memofilemodel_set-MAX_NUM_FORMS" name="memofilemodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Files
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th class="required" colspan="2">
File
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<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"/>
</th>
<th>
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memofilemodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memofilemodel_set-__prefix__-id" name="memofilemodel_set-__prefix__-id" type="hidden"/>
<input id="id_memofilemodel_set-__prefix__-memo" name="memofilemodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memofilemodel_set-__prefix__-position" name="memofilemodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-file">
<input id="id_memofilemodel_set-__prefix__-file" name="memofilemodel_set-__prefix__-file" type="file"/>
</td>
<td class="field-name">
<input class="vTextField" id="id_memofilemodel_set-__prefix__-name" maxlength="255" name="memofilemodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memofilemodel_set-__prefix__-tags" name="memofilemodel_set-__prefix__-tags" type="text"/>
</div>
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
"prefix": "memofilemodel_set",
"addText": "Add another File",
"deleteText": "Remove"
}
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="inline-group sortable" id="memolinkmodel_set-group">
<div class="tabular inline-related last-related">
<input id="id_memolinkmodel_set-TOTAL_FORMS" name="memolinkmodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-INITIAL_FORMS" name="memolinkmodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-MIN_NUM_FORMS" name="memolinkmodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-MAX_NUM_FORMS" name="memolinkmodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Links
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th colspan="2">
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th class="required">
URL
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memolinkmodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memolinkmodel_set-__prefix__-id" name="memolinkmodel_set-__prefix__-id" type="hidden"/>
<input id="id_memolinkmodel_set-__prefix__-memo" name="memolinkmodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memolinkmodel_set-__prefix__-position" name="memolinkmodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memolinkmodel_set-__prefix__-tags" name="memolinkmodel_set-__prefix__-tags" type="text"/>
</div>
</td>
<td class="field-name">
<input class="vTextField" id="id_memolinkmodel_set-__prefix__-name" maxlength="255" name="memolinkmodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-url">
<input class="vURLField" id="id_memolinkmodel_set-__prefix__-url" maxlength="200" name="memolinkmodel_set-__prefix__-url" type="url"/>
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="inline-group sortable" id="memolinkmodel_set-group">
<div class="tabular inline-related last-related">
<input id="id_memolinkmodel_set-TOTAL_FORMS" name="memolinkmodel_set-TOTAL_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-INITIAL_FORMS" name="memolinkmodel_set-INITIAL_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-MIN_NUM_FORMS" name="memolinkmodel_set-MIN_NUM_FORMS" type="hidden" value="0"/>
<input id="id_memolinkmodel_set-MAX_NUM_FORMS" name="memolinkmodel_set-MAX_NUM_FORMS" type="hidden" value="1000"/>
<fieldset class="module">
<h2>
Links
</h2>
<table>
<thead>
<tr>
<th>
Sort
</th>
<th colspan="2">
Tags
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Name
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th class="required">
URL
<img alt="( )" class="help help-tooltip" height="10" src="/static/admin/img/icon-unknown.svg" title=" " width="10"/>
</th>
<th>
Delete?
</th>
</tr>
</thead>
<tbody>
<tr class="form-row row1 empty-form" id="memolinkmodel_set-empty">
<td class="drag">
</td>
<td class="original">
<input id="id_memolinkmodel_set-__prefix__-id" name="memolinkmodel_set-__prefix__-id" type="hidden"/>
<input id="id_memolinkmodel_set-__prefix__-memo" name="memolinkmodel_set-__prefix__-memo" type="hidden"/>
<input id="id_memolinkmodel_set-__prefix__-position" name="memolinkmodel_set-__prefix__-position" type="hidden" value="0"/>
</td>
<td class="field-tags">
<div class="related-widget-wrapper">
<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_memolinkmodel_set-__prefix__-tags" name="memolinkmodel_set-__prefix__-tags" type="text"/>
</div>
</td>
<td class="field-name">
<input class="vTextField" id="id_memolinkmodel_set-__prefix__-name" maxlength="255" name="memolinkmodel_set-__prefix__-name" type="text"/>
</td>
<td class="field-url">
<input class="vURLField" id="id_memolinkmodel_set-__prefix__-url" maxlength="200" name="memolinkmodel_set-__prefix__-url" type="url"/>
</td>
<td class="delete">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</div>
<script class="inline-tabular-config" type="application/json">
{
"prefix": "memolinkmodel_set",
"addText": "Add another Link",
"deleteText": "Remove"
}
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="submit-row">
<input class="default" name="_save" type="submit" value="Save"/>
<input name="_addanother" type="submit" value="Save and add another"/>
<input name="_continue" type="submit" value="Save and continue editing"/>
</div>
<script async="" data-model-name="memomodel" id="django-admin-form-add-constants" src="/static/admin/js/change_form.js">
</script>
<script data-prepopulated-fields="[]" id="django-admin-prepopulated-fields-constants" src="/static/admin/js/prepopulate_init.js">
</script>
</div>
</form>
</div>
<br class="clear"/>
</div>
<!-- END Content -->
<div id="footer">
<a href="https://github.com/jedie/PyInventory">
https://github.com/jedie/PyInventory
</a>
</div>
</script>
<div class="default_order_field" default_order_direction="" default_order_field="position">
</div>
<div class="submit-row">
<input class="default" name="_save" type="submit" value="Save"/>
<input name="_addanother" type="submit" value="Save and add another"/>
<input name="_continue" type="submit" value="Save and continue editing"/>
</div>
<script async="" data-model-name="memomodel" id="django-admin-form-add-constants" src="/static/admin/js/change_form.js">
</script>
<script data-prepopulated-fields="[]" id="django-admin-prepopulated-fields-constants" src="/static/admin/js/prepopulate_init.js">
</script>
</div>
</div>
<!-- END Container -->
</body>
</html>
</form>
</div>
<br class="clear"/>
</div>