mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-01 13:06:45 +00:00
Set Responsible User for a Part during creation or API (#4326)
* update dev reqs (#117) * Fix/docker build (#118) * update dev reqs * install git? * add responsible user to ui * add responsible to serializer * adapt helptexts * Revert "Fix/docker build (#118)" This reverts commit a91742842c79e6ebadee0a9ba601d8fc16408409. * add responsible user to UI
This commit is contained in:
parent
75c82f4db4
commit
2fbbce1550
20
InvenTree/build/migrations/0038_alter_build_responsible.py
Normal file
20
InvenTree/build/migrations/0038_alter_build_responsible.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Generated by Django 3.2.16 on 2023-02-09 23:52
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('users', '0005_owner_model'),
|
||||||
|
('build', '0037_build_priority'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='build',
|
||||||
|
name='responsible',
|
||||||
|
field=models.ForeignKey(blank=True, help_text='User or group responsible for this build order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='builds_responsible', to='users.owner', verbose_name='Responsible'),
|
||||||
|
),
|
||||||
|
]
|
@ -282,7 +282,7 @@ class Build(MPTTModel, ReferenceIndexingMixin):
|
|||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
blank=True, null=True,
|
blank=True, null=True,
|
||||||
verbose_name=_('Responsible'),
|
verbose_name=_('Responsible'),
|
||||||
help_text=_('User responsible for this build order'),
|
help_text=_('User or group responsible for this build order'),
|
||||||
related_name='builds_responsible',
|
related_name='builds_responsible',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
21
InvenTree/part/migrations/0095_alter_part_responsible.py
Normal file
21
InvenTree/part/migrations/0095_alter_part_responsible.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Generated by Django 3.2.16 on 2023-02-09 23:52
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('part', '0094_alter_part_units'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='part',
|
||||||
|
name='responsible',
|
||||||
|
field=models.ForeignKey(blank=True, help_text='User responsible for this part', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parts_responible', to=settings.AUTH_USER_MODEL, verbose_name='Responsible'),
|
||||||
|
),
|
||||||
|
]
|
@ -1003,7 +1003,7 @@ class Part(InvenTreeBarcodeMixin, MetadataMixin, MPTTModel):
|
|||||||
|
|
||||||
creation_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Creation User'), related_name='parts_created')
|
creation_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Creation User'), related_name='parts_created')
|
||||||
|
|
||||||
responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Responsible'), related_name='parts_responible')
|
responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Responsible'), help_text=_('User responsible for this part'), related_name='parts_responible')
|
||||||
|
|
||||||
last_stocktake = models.DateField(
|
last_stocktake = models.DateField(
|
||||||
blank=True, null=True,
|
blank=True, null=True,
|
||||||
|
@ -621,6 +621,7 @@ class PartSerializer(RemoteImageMixin, InvenTreeModelSerializer):
|
|||||||
'virtual',
|
'virtual',
|
||||||
'pricing_min',
|
'pricing_min',
|
||||||
'pricing_max',
|
'pricing_max',
|
||||||
|
'responsible',
|
||||||
|
|
||||||
# Fields only used for Part creation
|
# Fields only used for Part creation
|
||||||
'duplicate',
|
'duplicate',
|
||||||
|
@ -391,6 +391,13 @@
|
|||||||
<td><a href="{{ part.link }}">{{ part.link }}</a>{% include "clip.html"%}</td>
|
<td><a href="{{ part.link }}">{{ part.link }}</a>{% include "clip.html"%}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if part.responsible %}
|
||||||
|
<tr>
|
||||||
|
<td><span class='fas fa-user'></span></td>
|
||||||
|
<td>{% trans "Responsible" %}</td>
|
||||||
|
<td> <span class='badge badge-right rounded-pill bg-dark'>{{ part.responsible }}</span></td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -124,6 +124,9 @@ function partFields(options={}) {
|
|||||||
minimum_stock: {
|
minimum_stock: {
|
||||||
icon: 'fa-boxes',
|
icon: 'fa-boxes',
|
||||||
},
|
},
|
||||||
|
responsible: {
|
||||||
|
icon: 'fa-user',
|
||||||
|
},
|
||||||
component: {
|
component: {
|
||||||
default: global_settings.PART_COMPONENT,
|
default: global_settings.PART_COMPONENT,
|
||||||
group: 'attributes',
|
group: 'attributes',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user