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,596 @@
1
+ # Generated by Django 2.2.16 on 2020-10-17 17:26
2
+
3
+ import uuid
4
+
5
+ import ckeditor_uploader.fields
6
+ import django.db.models.deletion
7
+ import tagulous.models.fields
8
+ import tagulous.models.models
9
+ from django.conf import settings
10
+ from django.db import migrations, models
11
+
12
+
13
+ class Migration(migrations.Migration):
14
+ initial = True
15
+
16
+ dependencies = [
17
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
18
+ ]
19
+
20
+ operations = [
21
+ migrations.CreateModel(
22
+ name='Tagulous_LocationModel_tags',
23
+ fields=[
24
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
25
+ ('name', models.CharField(max_length=255, unique=True)),
26
+ ('slug', models.SlugField()),
27
+ (
28
+ 'count',
29
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
30
+ ),
31
+ (
32
+ 'protected',
33
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
34
+ ),
35
+ ],
36
+ options={
37
+ 'ordering': ('name',),
38
+ 'abstract': False,
39
+ 'unique_together': {('slug',)},
40
+ },
41
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
42
+ ),
43
+ migrations.CreateModel(
44
+ name='Tagulous_ItemModel_tags',
45
+ fields=[
46
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
47
+ ('name', models.CharField(max_length=255, unique=True)),
48
+ ('slug', models.SlugField()),
49
+ (
50
+ 'count',
51
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
52
+ ),
53
+ (
54
+ 'protected',
55
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
56
+ ),
57
+ ],
58
+ options={
59
+ 'ordering': ('name',),
60
+ 'abstract': False,
61
+ 'unique_together': {('slug',)},
62
+ },
63
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
64
+ ),
65
+ migrations.CreateModel(
66
+ name='Tagulous_ItemModel_producer',
67
+ fields=[
68
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
69
+ ('name', models.CharField(max_length=255, unique=True)),
70
+ ('slug', models.SlugField()),
71
+ (
72
+ 'count',
73
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
74
+ ),
75
+ (
76
+ 'protected',
77
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
78
+ ),
79
+ ],
80
+ options={
81
+ 'ordering': ('name',),
82
+ 'abstract': False,
83
+ 'unique_together': {('slug',)},
84
+ },
85
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
86
+ ),
87
+ migrations.CreateModel(
88
+ name='Tagulous_ItemModel_kind',
89
+ fields=[
90
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
91
+ ('name', models.CharField(max_length=255, unique=True)),
92
+ ('slug', models.SlugField()),
93
+ (
94
+ 'count',
95
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
96
+ ),
97
+ (
98
+ 'protected',
99
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
100
+ ),
101
+ ],
102
+ options={
103
+ 'ordering': ('name',),
104
+ 'abstract': False,
105
+ 'unique_together': {('slug',)},
106
+ },
107
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
108
+ ),
109
+ migrations.CreateModel(
110
+ name='Tagulous_ItemLinkModel_tags',
111
+ fields=[
112
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
113
+ ('name', models.CharField(max_length=255, unique=True)),
114
+ ('slug', models.SlugField()),
115
+ (
116
+ 'count',
117
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
118
+ ),
119
+ (
120
+ 'protected',
121
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
122
+ ),
123
+ ],
124
+ options={
125
+ 'ordering': ('name',),
126
+ 'abstract': False,
127
+ 'unique_together': {('slug',)},
128
+ },
129
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
130
+ ),
131
+ migrations.CreateModel(
132
+ name='Tagulous_BaseModel_tags',
133
+ fields=[
134
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
135
+ ('name', models.CharField(max_length=255, unique=True)),
136
+ ('slug', models.SlugField()),
137
+ (
138
+ 'count',
139
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
140
+ ),
141
+ (
142
+ 'protected',
143
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
144
+ ),
145
+ ],
146
+ options={
147
+ 'ordering': ('name',),
148
+ 'abstract': False,
149
+ 'unique_together': {('slug',)},
150
+ },
151
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
152
+ ),
153
+ migrations.CreateModel(
154
+ name='Tagulous_BaseLink_tags',
155
+ fields=[
156
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
157
+ ('name', models.CharField(max_length=255, unique=True)),
158
+ ('slug', models.SlugField()),
159
+ (
160
+ 'count',
161
+ models.IntegerField(default=0, help_text='Internal counter of how many times this tag is in use'),
162
+ ),
163
+ (
164
+ 'protected',
165
+ models.BooleanField(default=False, help_text='Will not be deleted when the count reaches 0'),
166
+ ),
167
+ ],
168
+ options={
169
+ 'ordering': ('name',),
170
+ 'abstract': False,
171
+ 'unique_together': {('slug',)},
172
+ },
173
+ bases=(tagulous.models.models.BaseTagModel, models.Model),
174
+ ),
175
+ migrations.CreateModel(
176
+ name='LocationModel',
177
+ fields=[
178
+ (
179
+ 'create_dt',
180
+ models.DateTimeField(
181
+ blank=True,
182
+ editable=False,
183
+ help_text='ModelTimetrackingMixin.create_dt.help_text',
184
+ null=True,
185
+ verbose_name='ModelTimetrackingMixin.create_dt.verbose_name',
186
+ ),
187
+ ),
188
+ (
189
+ 'update_dt',
190
+ models.DateTimeField(
191
+ blank=True,
192
+ editable=False,
193
+ help_text='ModelTimetrackingMixin.update_dt.help_text',
194
+ null=True,
195
+ verbose_name='ModelTimetrackingMixin.update_dt.verbose_name',
196
+ ),
197
+ ),
198
+ (
199
+ 'id',
200
+ models.UUIDField(
201
+ default=uuid.uuid4,
202
+ editable=False,
203
+ help_text='BaseModel.id.help_text',
204
+ primary_key=True,
205
+ serialize=False,
206
+ verbose_name='BaseModel.id.verbose_name',
207
+ ),
208
+ ),
209
+ (
210
+ 'name',
211
+ models.CharField(
212
+ help_text='BaseModel.name.help_text',
213
+ max_length=255,
214
+ verbose_name='BaseModel.name.verbose_name',
215
+ ),
216
+ ),
217
+ (
218
+ 'description',
219
+ ckeditor_uploader.fields.RichTextUploadingField(
220
+ help_text='LocationModel.description.help_text',
221
+ verbose_name='LocationModel.description.verbose_name',
222
+ ),
223
+ ),
224
+ (
225
+ 'parent',
226
+ models.ForeignKey(
227
+ blank=True,
228
+ help_text='LocationModel.parent.help_text',
229
+ null=True,
230
+ on_delete=django.db.models.deletion.SET_NULL,
231
+ to='inventory.LocationModel',
232
+ verbose_name='LocationModel.parent.verbose_name',
233
+ ),
234
+ ),
235
+ (
236
+ 'tags',
237
+ tagulous.models.fields.TagField(
238
+ _set_tag_meta=True,
239
+ blank=True,
240
+ force_lowercase=False,
241
+ help_text='BaseModel.tags.help_text',
242
+ max_count=10,
243
+ to='inventory.Tagulous_LocationModel_tags',
244
+ verbose_name='BaseModel.tags.verbose_name',
245
+ ),
246
+ ),
247
+ (
248
+ 'user',
249
+ models.ForeignKey(
250
+ editable=False,
251
+ help_text='BaseModel.user.help_text',
252
+ on_delete=django.db.models.deletion.CASCADE,
253
+ related_name='+',
254
+ to=settings.AUTH_USER_MODEL,
255
+ verbose_name='BaseModel.user.verbose_name',
256
+ ),
257
+ ),
258
+ ],
259
+ options={
260
+ 'verbose_name': 'LocationModel.verbose_name',
261
+ 'verbose_name_plural': 'LocationModel.verbose_name_plural',
262
+ },
263
+ ),
264
+ migrations.CreateModel(
265
+ name='ItemModel',
266
+ fields=[
267
+ (
268
+ 'create_dt',
269
+ models.DateTimeField(
270
+ blank=True,
271
+ editable=False,
272
+ help_text='ModelTimetrackingMixin.create_dt.help_text',
273
+ null=True,
274
+ verbose_name='ModelTimetrackingMixin.create_dt.verbose_name',
275
+ ),
276
+ ),
277
+ (
278
+ 'update_dt',
279
+ models.DateTimeField(
280
+ blank=True,
281
+ editable=False,
282
+ help_text='ModelTimetrackingMixin.update_dt.help_text',
283
+ null=True,
284
+ verbose_name='ModelTimetrackingMixin.update_dt.verbose_name',
285
+ ),
286
+ ),
287
+ (
288
+ 'id',
289
+ models.UUIDField(
290
+ default=uuid.uuid4,
291
+ editable=False,
292
+ help_text='BaseModel.id.help_text',
293
+ primary_key=True,
294
+ serialize=False,
295
+ verbose_name='BaseModel.id.verbose_name',
296
+ ),
297
+ ),
298
+ (
299
+ 'name',
300
+ models.CharField(
301
+ help_text='BaseModel.name.help_text',
302
+ max_length=255,
303
+ verbose_name='BaseModel.name.verbose_name',
304
+ ),
305
+ ),
306
+ (
307
+ 'description',
308
+ ckeditor_uploader.fields.RichTextUploadingField(
309
+ blank=True,
310
+ help_text='ItemModel.description.help_text',
311
+ null=True,
312
+ verbose_name='ItemModel.description.verbose_name',
313
+ ),
314
+ ),
315
+ (
316
+ 'fcc_id',
317
+ models.CharField(
318
+ blank=True,
319
+ help_text='ItemModel.fcc_id.help_text',
320
+ max_length=20,
321
+ null=True,
322
+ verbose_name='ItemModel.fcc_id.verbose_name',
323
+ ),
324
+ ),
325
+ (
326
+ 'lent_to',
327
+ models.CharField(
328
+ blank=True,
329
+ help_text='ItemModel.lent_to.help_text',
330
+ max_length=64,
331
+ null=True,
332
+ verbose_name='ItemModel.lent_to.verbose_name',
333
+ ),
334
+ ),
335
+ (
336
+ 'lent_from_date',
337
+ models.DateField(
338
+ blank=True,
339
+ help_text='ItemModel.lent_from_date.help_text',
340
+ null=True,
341
+ verbose_name='ItemModel.lent_from_date.verbose_name',
342
+ ),
343
+ ),
344
+ (
345
+ 'lent_until_date',
346
+ models.DateField(
347
+ blank=True,
348
+ help_text='ItemModel.lent_until_date.help_text',
349
+ null=True,
350
+ verbose_name='ItemModel.lent_until_date.verbose_name',
351
+ ),
352
+ ),
353
+ (
354
+ 'received_from',
355
+ models.CharField(
356
+ blank=True,
357
+ help_text='ItemModel.received_from.help_text',
358
+ max_length=64,
359
+ null=True,
360
+ verbose_name='ItemModel.received_from.verbose_name',
361
+ ),
362
+ ),
363
+ (
364
+ 'received_date',
365
+ models.DateField(
366
+ blank=True,
367
+ help_text='ItemModel.received_date.help_text',
368
+ null=True,
369
+ verbose_name='ItemModel.received_date.verbose_name',
370
+ ),
371
+ ),
372
+ (
373
+ 'received_price',
374
+ models.DecimalField(
375
+ blank=True,
376
+ decimal_places=2,
377
+ help_text='ItemModel.received_price.help_text',
378
+ max_digits=6,
379
+ null=True,
380
+ verbose_name='ItemModel.received_price.verbose_name',
381
+ ),
382
+ ),
383
+ (
384
+ 'handed_over_to',
385
+ models.CharField(
386
+ blank=True,
387
+ help_text='ItemModel.handed_over_to.help_text',
388
+ max_length=64,
389
+ null=True,
390
+ verbose_name='ItemModel.handed_over_to.verbose_name',
391
+ ),
392
+ ),
393
+ (
394
+ 'handed_over_date',
395
+ models.DateField(
396
+ blank=True,
397
+ help_text='ItemModel.handed_over_date.help_text',
398
+ null=True,
399
+ verbose_name='ItemModel.handed_over_date.verbose_name',
400
+ ),
401
+ ),
402
+ (
403
+ 'handed_over_price',
404
+ models.DecimalField(
405
+ blank=True,
406
+ decimal_places=2,
407
+ help_text='ItemModel.handed_over_price.help_text',
408
+ max_digits=6,
409
+ null=True,
410
+ verbose_name='ItemModel.handed_over_price.verbose_name',
411
+ ),
412
+ ),
413
+ (
414
+ 'kind',
415
+ tagulous.models.fields.TagField(
416
+ _set_tag_meta=True,
417
+ force_lowercase=False,
418
+ help_text='ItemModel.kind.help_text',
419
+ max_count=3,
420
+ to='inventory.Tagulous_ItemModel_kind',
421
+ verbose_name='ItemModel.kind.verbose_name',
422
+ ),
423
+ ),
424
+ (
425
+ 'location',
426
+ models.ForeignKey(
427
+ blank=True,
428
+ help_text='ItemModel.location.help_text',
429
+ null=True,
430
+ on_delete=django.db.models.deletion.SET_NULL,
431
+ to='inventory.LocationModel',
432
+ verbose_name='ItemModel.location.verbose_name',
433
+ ),
434
+ ),
435
+ (
436
+ 'parent',
437
+ models.ForeignKey(
438
+ blank=True,
439
+ help_text='ItemModel.parent.help_text',
440
+ limit_choices_to={'parent_id': None},
441
+ null=True,
442
+ on_delete=django.db.models.deletion.SET_NULL,
443
+ to='inventory.ItemModel',
444
+ verbose_name='ItemModel.parent.verbose_name',
445
+ ),
446
+ ),
447
+ (
448
+ 'producer',
449
+ tagulous.models.fields.TagField(
450
+ _set_tag_meta=True,
451
+ blank=True,
452
+ force_lowercase=False,
453
+ help_text='ItemModel.producer.help_text',
454
+ max_count=1,
455
+ to='inventory.Tagulous_ItemModel_producer',
456
+ verbose_name='ItemModel.producer.verbose_name',
457
+ ),
458
+ ),
459
+ (
460
+ 'tags',
461
+ tagulous.models.fields.TagField(
462
+ _set_tag_meta=True,
463
+ blank=True,
464
+ force_lowercase=False,
465
+ help_text='BaseModel.tags.help_text',
466
+ max_count=10,
467
+ to='inventory.Tagulous_ItemModel_tags',
468
+ verbose_name='BaseModel.tags.verbose_name',
469
+ ),
470
+ ),
471
+ (
472
+ 'user',
473
+ models.ForeignKey(
474
+ editable=False,
475
+ help_text='BaseModel.user.help_text',
476
+ on_delete=django.db.models.deletion.CASCADE,
477
+ related_name='+',
478
+ to=settings.AUTH_USER_MODEL,
479
+ verbose_name='BaseModel.user.verbose_name',
480
+ ),
481
+ ),
482
+ ],
483
+ options={
484
+ 'verbose_name': 'ItemModel.verbose_name',
485
+ 'verbose_name_plural': 'ItemModel.verbose_name_plural',
486
+ },
487
+ ),
488
+ migrations.CreateModel(
489
+ name='ItemLinkModel',
490
+ fields=[
491
+ (
492
+ 'create_dt',
493
+ models.DateTimeField(
494
+ blank=True,
495
+ editable=False,
496
+ help_text='ModelTimetrackingMixin.create_dt.help_text',
497
+ null=True,
498
+ verbose_name='ModelTimetrackingMixin.create_dt.verbose_name',
499
+ ),
500
+ ),
501
+ (
502
+ 'update_dt',
503
+ models.DateTimeField(
504
+ blank=True,
505
+ editable=False,
506
+ help_text='ModelTimetrackingMixin.update_dt.help_text',
507
+ null=True,
508
+ verbose_name='ModelTimetrackingMixin.update_dt.verbose_name',
509
+ ),
510
+ ),
511
+ (
512
+ 'id',
513
+ models.UUIDField(
514
+ default=uuid.uuid4,
515
+ editable=False,
516
+ help_text='BaseModel.id.help_text',
517
+ primary_key=True,
518
+ serialize=False,
519
+ verbose_name='BaseModel.id.verbose_name',
520
+ ),
521
+ ),
522
+ (
523
+ 'name',
524
+ models.CharField(
525
+ blank=True,
526
+ help_text='BaseLink.name.help_text',
527
+ max_length=255,
528
+ null=True,
529
+ verbose_name='BaseLink.name.verbose_name',
530
+ ),
531
+ ),
532
+ ('url', models.URLField(help_text='Link.url.help_text', verbose_name='Link.url.verbose_name')),
533
+ (
534
+ 'last_check',
535
+ models.DateField(
536
+ blank=True,
537
+ editable=False,
538
+ help_text='Link.url.help_text',
539
+ null=True,
540
+ verbose_name='Link.url.verbose_name',
541
+ ),
542
+ ),
543
+ (
544
+ 'status_code',
545
+ models.PositiveSmallIntegerField(
546
+ blank=True,
547
+ editable=False,
548
+ help_text='Link.status_code.help_text',
549
+ null=True,
550
+ verbose_name='Link.status_code.verbose_name',
551
+ ),
552
+ ),
553
+ (
554
+ 'page_title',
555
+ models.CharField(
556
+ blank=True,
557
+ editable=False,
558
+ help_text='Link.page_title.help_text',
559
+ max_length=255,
560
+ null=True,
561
+ verbose_name='Link.page_title.verbose_name',
562
+ ),
563
+ ),
564
+ ('position', models.PositiveSmallIntegerField(default=0)),
565
+ ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.ItemModel')),
566
+ (
567
+ 'tags',
568
+ tagulous.models.fields.TagField(
569
+ _set_tag_meta=True,
570
+ blank=True,
571
+ force_lowercase=False,
572
+ help_text='BaseModel.tags.help_text',
573
+ max_count=10,
574
+ to='inventory.Tagulous_ItemLinkModel_tags',
575
+ verbose_name='BaseModel.tags.verbose_name',
576
+ ),
577
+ ),
578
+ (
579
+ 'user',
580
+ models.ForeignKey(
581
+ editable=False,
582
+ help_text='BaseModel.user.help_text',
583
+ on_delete=django.db.models.deletion.CASCADE,
584
+ related_name='+',
585
+ to=settings.AUTH_USER_MODEL,
586
+ verbose_name='BaseModel.user.verbose_name',
587
+ ),
588
+ ),
589
+ ],
590
+ options={
591
+ 'verbose_name': 'ItemLinkModel.verbose_name',
592
+ 'verbose_name_plural': 'ItemLinkModel.verbose_name_plural',
593
+ 'ordering': ('position',),
594
+ },
595
+ ),
596
+ ]
@@ -0,0 +1,87 @@
1
+ # Generated by Django 2.2.16 on 2020-10-17 20:11
2
+
3
+ import tagulous.models.fields
4
+ from django.db import migrations
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ('inventory', '0001_initial'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name='itemlinkmodel',
15
+ name='tags',
16
+ field=tagulous.models.fields.TagField(
17
+ _set_tag_meta=True,
18
+ blank=True,
19
+ case_sensitive=False,
20
+ force_lowercase=False,
21
+ help_text='BaseModel.tags.help_text',
22
+ max_count=10,
23
+ space_delimiter=False,
24
+ to='inventory.Tagulous_ItemLinkModel_tags',
25
+ verbose_name='BaseModel.tags.verbose_name',
26
+ ),
27
+ ),
28
+ migrations.AlterField(
29
+ model_name='itemmodel',
30
+ name='kind',
31
+ field=tagulous.models.fields.TagField(
32
+ _set_tag_meta=True,
33
+ case_sensitive=False,
34
+ force_lowercase=False,
35
+ help_text='ItemModel.kind.help_text',
36
+ max_count=3,
37
+ space_delimiter=False,
38
+ to='inventory.Tagulous_ItemModel_kind',
39
+ verbose_name='ItemModel.kind.verbose_name',
40
+ ),
41
+ ),
42
+ migrations.AlterField(
43
+ model_name='itemmodel',
44
+ name='producer',
45
+ field=tagulous.models.fields.TagField(
46
+ _set_tag_meta=True,
47
+ blank=True,
48
+ case_sensitive=False,
49
+ force_lowercase=False,
50
+ help_text='ItemModel.producer.help_text',
51
+ max_count=1,
52
+ space_delimiter=False,
53
+ to='inventory.Tagulous_ItemModel_producer',
54
+ verbose_name='ItemModel.producer.verbose_name',
55
+ ),
56
+ ),
57
+ migrations.AlterField(
58
+ model_name='itemmodel',
59
+ name='tags',
60
+ field=tagulous.models.fields.TagField(
61
+ _set_tag_meta=True,
62
+ blank=True,
63
+ case_sensitive=False,
64
+ force_lowercase=False,
65
+ help_text='BaseModel.tags.help_text',
66
+ max_count=10,
67
+ space_delimiter=False,
68
+ to='inventory.Tagulous_ItemModel_tags',
69
+ verbose_name='BaseModel.tags.verbose_name',
70
+ ),
71
+ ),
72
+ migrations.AlterField(
73
+ model_name='locationmodel',
74
+ name='tags',
75
+ field=tagulous.models.fields.TagField(
76
+ _set_tag_meta=True,
77
+ blank=True,
78
+ case_sensitive=False,
79
+ force_lowercase=False,
80
+ help_text='BaseModel.tags.help_text',
81
+ max_count=10,
82
+ space_delimiter=False,
83
+ to='inventory.Tagulous_LocationModel_tags',
84
+ verbose_name='BaseModel.tags.verbose_name',
85
+ ),
86
+ ),
87
+ ]