Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HAL-2382 | ITS #3765

Merged
merged 11 commits into from
Mar 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/ralph/accounts/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,7 @@ def user_licence(self, item):
def buyout_ticket(self, item):
if not item.model.category.show_buyout_date:
return ''
if item.status in [
BackOfficeAssetStatus.in_use_team.id,
BackOfficeAssetStatus.in_use_test.id
]:
if item.status is not BackOfficeAssetStatus.used.id:
return ''
else:
get_params = {
Expand Down
6 changes: 3 additions & 3 deletions src/ralph/back_office/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ class BackOfficeAssetAdmin(
(_('Basic info'), {
'fields': (
'hostname', 'model', 'barcode', 'sn', 'imei', 'imei2', 'niw',
'status', 'warehouse', 'location', 'region', 'loan_end_date',
'remarks', 'tags', 'property_of', 'task_url', 'service_env',
'office_infrastructure'
'status', 'last_status_change', 'warehouse', 'location',
'region', 'loan_end_date', 'remarks', 'tags', 'property_of',
'task_url', 'service_env', 'office_infrastructure'
)
}),
(_('User Info'), {
Expand Down
20 changes: 20 additions & 0 deletions src/ralph/back_office/migrations/0018_auto_20230206_1020.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models
import ralph.lib.transitions.fields


class Migration(migrations.Migration):

dependencies = [
('back_office', '0017_auto_20230112_0949'),
]

operations = [
migrations.AlterField(
model_name='backofficeasset',
name='status',
field=ralph.lib.transitions.fields.TransitionField(default=1, choices=[(1, 'new'), (2, 'in progress'), (3, 'waiting for release'), (4, 'in use'), (5, 'loan'), (6, 'damaged'), (7, 'liquidated'), (8, 'in service'), (9, 'installed'), (10, 'free'), (11, 'reserved'), (12, 'sale'), (13, 'loan in progress'), (14, 'return in progress'), (15, 'to find'), (16, 'sent'), (17, 'to buyout'), (18, 'in use team'), (19, 'in use test'), (20, 'in progress team'), (21, 'in progress test'), (22, 'quarantine')]),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('back_office', '0018_auto_20230206_1020'),
]

operations = [
migrations.AddField(
model_name='backofficeasset',
name='last_status_change',
field=models.DateField(verbose_name='Last status change', blank=True, null=True, default=None),
),
]
21 changes: 20 additions & 1 deletion src/ralph/back_office/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,9 @@ class BackOfficeAssetStatus(Choices):
to_buyout = _("to buyout")
in_use_team = _("in use team")
in_use_test = _("in use test")
in_progress_team = _("in_progress team")
in_progress_team = _("in progress team")
in_progress_test = _("in progress test")
quarantine = _("quarantine")


class OfficeInfrastructure(
Expand Down Expand Up @@ -205,6 +206,12 @@ class BackOfficeAsset(Regionalizable, Asset):
office_infrastructure = models.ForeignKey(
OfficeInfrastructure, null=True, blank=True
)
last_status_change = models.DateField(
null=True,
blank=True,
default=None,
verbose_name=_('Last status change')
)

class Meta:
verbose_name = _('Back Office Asset')
Expand Down Expand Up @@ -704,3 +711,15 @@ def assign_hostname_if_empty_or_country_not_match(
if settings.BACK_OFFICE_ASSET_AUTO_ASSIGN_HOSTNAME:
for instance in instances:
instance._try_assign_hostname(commit=False, force=False)

@classmethod
@transition_action()
def last_status(cls, instances, **kwargs):
for instance in instances:
instance.last_status_change = datetime.date.today()

@classmethod
@transition_action()
def hardware_replacement(cls, instances, **kwargs):
for instance in instances:
instance.loan_end_date = datetime.date.today() + datetime.timedelta(days=10) # noqa
2 changes: 1 addition & 1 deletion src/ralph/data_importer/tests/test_demo_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ class DemoDataTestCase(TestCase):
def test_demo_data_command(self):
management.call_command('demodata')
self.assertEqual(DataCenterAsset.objects.count(), 422)
self.assertEqual(BackOfficeAsset.objects.count(), 264)
self.assertEqual(BackOfficeAsset.objects.count(), 268)
self.assertEqual(get_user_model().objects.count(), 33)
12 changes: 11 additions & 1 deletion src/ralph/sim_cards/admin.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
from django.utils.translation import ugettext_lazy as _

from ralph.admin import RalphAdmin, register
from ralph.admin.mixins import BulkEditChangeListMixin, RalphAdminMixin
from ralph.admin.views.multiadd import MulitiAddAdminMixin
from ralph.lib.transitions.admin import TransitionAdminMixin
from ralph.sim_cards.forms import SIMCardForm
from ralph.sim_cards.models import CellularCarrier, SIMCard, SIMCardFeatures


@register(SIMCard)
class SIMCardAdmin(MulitiAddAdminMixin, TransitionAdminMixin, RalphAdmin):
class SIMCardAdmin(
MulitiAddAdminMixin,
TransitionAdminMixin,
RalphAdmin,
BulkEditChangeListMixin,
RalphAdminMixin
):
# NOTE(Anna Gabler): list_display - list on top page
# raw_id_fields - fancy autocomplete
# list_select_related - join to database (DJANGO)
# list_filter - list of filters on simcard list
# fieldsets - configuration of editor layout
form = SIMCardForm
actions = ['bulk_edit_action']
show_transition_history = True
list_display = ['status', 'card_number', 'phone_number', 'pin1', 'puk1',
'user', 'owner', 'warehouse', 'carrier',
Expand All @@ -28,6 +36,8 @@ class SIMCardAdmin(MulitiAddAdminMixin, TransitionAdminMixin, RalphAdmin):
search_fields = ['card_number', 'phone_number', 'user__first_name',
'user__last_name', 'user__username']

bulk_edit_list = ['status', 'warehouse']

list_filter = [
'status', 'features', 'phone_number', 'card_number', 'warehouse',
'user', 'owner', 'user__segment', 'user__company', 'user__department',
Expand Down
39 changes: 39 additions & 0 deletions src/ralph/sim_cards/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import datetime

from functools import partial

from dj.choices import Choices
Expand Down Expand Up @@ -315,3 +317,40 @@ def unassign_user(cls, instances, **kwargs):
def assign_task_url(cls, instances, **kwargs):
for instance in instances:
instance.task_url = kwargs['task_url']

@classmethod
@transition_action()
def quarantine_date(cls, instances, **kwargs):
for instance in instances:
instance.quarantine_until = datetime.date.today() + datetime.timedelta(days=30) # noqa

@classmethod
@transition_action(
form_fields={
'pin1': {
'field': forms.CharField(label=_('pin1')),
},
'puk1': {
'field': forms.CharField(label=_('puk1')),
}
}
)
def change_pin_and_puk(cls, instances, **kwargs):
for instance in instances:
instance.pin1 = kwargs['pin1']
instance.puk1 = kwargs['puk1']

@classmethod
@transition_action(
form_fields={
'card number': {
'field': forms.CharField(label=_('card number')),
}
}
)
def card_number_to_notes(cls, instances, **kwargs):
for instance in instances:
instance.remarks = '{}\n{}'.format(
instance.remarks, instance.card_number
)
instance.card_number = kwargs['card number']