Commit f56a247c authored by Gladys Forte's avatar Gladys Forte

Merge pull request #426 in RMS/api-main-service from RMSv2 to staging

* commit '857fceef':
  history fix
  updated postman
  asset group
  temp serializer approver
  template approver serializer
  try cron
parents 86955acb 857fceef
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class AssetGroupSerializer(serializers.ModelSerializer):
class Meta:
model = models.AssetGroup
fields = '__all__'
read_only_fields = ['created', 'code']
\ No newline at end of file
from django_filters import rest_framework as filters
from app.entities.models import AssetGroup
class AssetGroupFilter(filters.FilterSet):
class Meta:
model = AssetGroup
fields = '__all__'
\ No newline at end of file
from app.entities import models
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.asset_group.table_filters import AssetGroupFilter
from app.applicationlayer.ams.asset_group import serializers
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from app.helper import decorators
from django.db import transaction
class AssetGroupViewset(viewsets.ModelViewSet):
queryset = models.AssetGroup.objects.all()
serializer_class = serializers.AssetGroupSerializer
pagination_class = CustomPagination
lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__'
search_fields = (
'code', 'name', 'asset_group'
)
@transaction.atomic
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Asset Group created', serializer.data
)
return Response(
message
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'List of Asset Groups found!',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(self.queryset, many=True)
return Response(
serializer.data,
status=status.HTTP_200_OK
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
\ No newline at end of file
from django.urls import path, include
from rest_framework import routers
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from app.applicationlayer.ams.asset_group import views as assetgroup
router = routers.DefaultRouter()
router.register(r'asset-group', assetgroup.AssetGroupViewset)
urlpatterns = [
path('', include(router.urls)),
]
\ No newline at end of file
......@@ -1304,7 +1304,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
).values().order_by('-created')
for data in history:
data = data['toValue'].replace("'", '"').replace('None', '""').replace('True', '""')
data = data['toValue'].replace("'", '"').replace('None', '""').replace('True', '""').replace('False', '""')
convert = json.loads(data)
history_dict = {
......
......@@ -9,59 +9,59 @@ class ChangeRequestTemplateApproversSerializer(
def to_representation(self, instance):
try:
ret = super().to_representation(instance)
user_object = {
"id": instance.user.id,
"name": instance.user.name,
"username": instance.user.username,
"code": instance.user.code,
"email": instance.user.email,
"contact_no": instance.user.contact_no
}
ret['company'] = model_to_dict(instance.user.department.company)
ret['department'] = model_to_dict(instance.user.department)
ret['user'] = user_object
if instance.user or instance.delegation.lower() == 'requestor':
ret['editable_user'] = False
else:
ret['editable_user'] = True
if instance.company or instance.delegation.lower() == 'requestor':
if instance.company:
ret['company'] = {
"id": instance.company.id,
"code": instance.company.code,
"name": instance.company.name
}
ret['editable_comp'] = False
else:
ret['editable_comp'] = True
if instance.department or instance.delegation.lower() == 'requestor':
if instance.department:
ret['department'] = {
"id": instance.department.id,
"code": instance.department.code,
"name": instance.department.name
}
ret['editable_dept'] = False
else:
ret['editable_dept'] = True
return ret
except Exception as e:
if instance.user or instance.delegation.lower() == 'requestor':
if instance.user:
user_object = {
"id": instance.user.id,
"name": instance.user.name,
"username": instance.user.username,
"code": instance.user.code,
"email": instance.user.email,
"contact_no": instance.user.contact_no
}
ret['user'] = user_object
ret['editable_user'] = False
else:
ret['user'] = None
ret['editable_user'] = True
if instance.company or instance.delegation.lower() == 'requestor':
ret['company'] = model_to_dict(
instance.company)
ret['editable_comp'] = False
else:
ret['company'] = None
ret['editable_comp'] = True
if instance.delegation.lower() == 'requestor':
if instance.department or instance.delegation.lower() == 'requestor':
ret['department'] = model_to_dict(
instance.department)
ret['editable_user'] = False
ret['editable_comp'] = False
ret['editable_dept'] = False
else:
ret['department'] = None
ret['editable_dept'] = True
return ret
except Exception as e:
ret['editable_user'] = True
ret['editable_comp'] = True
ret['editable_dept'] = True
return ret
class Meta:
model = models.ChangeRequestTemplateApprovers
......
......@@ -46,8 +46,16 @@ class ChangeRequestTemplatesSerializer(
"contact_no": instance.requested_to_user.contact_no
}
ret['requested_to_company'] = model_to_dict(instance.requested_to_company)
ret['requested_to_department'] = model_to_dict(instance.requested_to_department)
ret['requested_to_company'] = {
"id": instance.requested_to_company.id,
"code": instance.requested_to_company.code,
"name": instance.requested_to_company.name
}
ret['requested_to_department'] = {
"id": instance.requested_to_department.id,
"code": instance.requested_to_department.code,
"name": instance.requested_to_department.name
}
ret['requested_to_user'] = requested_to_user_object
ret['company'] = instance.requested_to_company.name
......@@ -72,7 +80,6 @@ class ChangeRequestTemplatesSerializer(
class Meta:
model = models.ChangeRequestTemplateHeader
# fields = '__all__'
fields = ('template_no', 'requested_to_template_name',
'requested_to_objective', 'requested_to_target_date',
'requested_to_priority', 'description', 'created',
......@@ -83,53 +90,6 @@ class ChangeRequestTemplatesSerializer(
'tmp_details')
read_only_fields = ['created', 'template_no']
# extra_kwargs = {
# "requested_to_template_id": {
# "error_messages": {
# "unique": "ssCR prefix should be unique"
# }
# }
# }
# def is_valid(self, raise_exception=False):
# assert not hasattr(self, 'restore_object'), (
# 'Serializer `%s.%s` has old-style version 2 `.restore_object()` '
# 'that is no longer compatible with REST framework 3. '
# 'Use the new-style `.create()` and `.update()` methods instead.' %
# (self.__class__.__module__, self.__class__.__name__)
# )
# assert hasattr(self, 'initial_data'), (
# 'Cannot call `.is_valid()` as no `data=` keyword argument was '
# 'passed when instantiating the serializer instance.'
# )
# if not hasattr(self, '_validated_data'):
# try:
# self._validated_data = self.run_validation(self.initial_data)
# except ValidationError as exc:
# self._validated_data = {}
# self._errors = exc.detail
# else:
# self._errors = {}
# # if validation failed
# if self._errors and raise_exception:
# error_message = {}
# message = str(self.errors)
# for k, v in self.errors.items():
# message = str(v)
# start = message.find('string=') + 8
# end = message.find(', code=') - 1
# message = message[start:end]
# error_message[str(k)] = message
# raise BadRequestException(error_message)
# return not bool(self._errors)
class ChangeRequestTemplatesSerializerList(
......
......@@ -41,7 +41,8 @@ class GenerateCode(Enum):
FORM_ATTACH = 'FRMATCH'
FORM_DETAIL = 'FRMDETAIL'
ASSET_GROUP = 'AMSGRP'
'''
*********
LOG ENUMS
......
# Generated by Django 2.2 on 2019-10-24 18:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0026_auto_20191022_1726'),
]
operations = [
migrations.CreateModel(
name='AssetGroup',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('code', models.CharField(max_length=255, unique=True)),
('name', models.CharField(max_length=255, unique=True)),
('asset_group', models.CharField(max_length=255, unique=True)),
('created', models.DateTimeField(blank=True, null=True)),
],
options={
'db_table': 'asset_groups',
},
),
]
......@@ -1091,4 +1091,40 @@ class OverdueTrigger(models.Model):
default=False)
class Meta:
db_table = 'overdue_trigger'
\ No newline at end of file
db_table = 'overdue_trigger'
"""
**********************
*** AMS TABLES ***
**********************
"""
class AssetGroup(models.Model):
code = models.CharField(
unique=True,
max_length=255)
name = models.CharField(
unique=True,
max_length=255)
asset_group = models.CharField(
unique=True,
max_length=255)
created = models.DateTimeField(
blank=True,
null=True)
class Meta:
db_table = 'asset_groups'
def __str__(self):
return f'{self.code}'
def save(self, *args, **kwargs):
super(AssetGroup, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.ASSET_GROUP.value, self.id)
if self.code == '':
self.code = code
self.created = datetime.now()
self.save()
\ No newline at end of file
......@@ -70,7 +70,7 @@ def cronjob(args):
subject='Resource Management System: Welcome!',
message='',
from_email=settings.EMAIL_DEFAULT_SENDER,
recipient_list=('red@tirsolutions.com',),
recipient_list=('gladys@tirsolutions.com',),
html_message="FC",
fail_silently=False
)
......
......@@ -37,6 +37,7 @@ urlpatterns = [
re_path(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
re_path(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
path('api/v1/asset-management/', include('app.applicationlayer.ams.urls_ams')),
]
if settings.DEBUG:
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment