Skip to content

Commit

Permalink
Merge pull request #3765 from allegro/its
Browse files Browse the repository at this point in the history
HAL-2382 | ITS
  • Loading branch information
jetalone85 committed Mar 29, 2023
2 parents d3af949 + 0c4aec7 commit dcb162d
Show file tree
Hide file tree
Showing 8 changed files with 114 additions and 10 deletions.
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']

0 comments on commit dcb162d

Please sign in to comment.