Commit 7f6e49b0 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #424 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit '3e788d82':
  updated postman
  asset group
parents 33302d46 3e788d82
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
......@@ -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',
},
),
]
......@@ -1098,4 +1098,33 @@ class OverdueTrigger(models.Model):
**********************
*** AMS TABLES ***
**********************
"""
\ No newline at end of file
"""
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
......@@ -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:
......
......@@ -1158,7 +1158,7 @@
"formdata": [
{
"key": "username",
"value": "superuser",
"value": "ryu",
"type": "text"
},
{
......@@ -1185,16 +1185,6 @@
{
"name": "Forgot Password",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "5e70782675fa4979afe8fd17112aaf8cd565cecb3",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
......@@ -1206,7 +1196,7 @@
],
"body": {
"mode": "raw",
"raw": "{\n\t\"email\": \"red@tirsolutions.com\"\n}"
"raw": "{\n\t\"email\": \"gladys@tirsolutions.com\",\n\t\"username\": \"kath\"\n}"
},
"url": {
"raw": "{{baseurl}}/auth/forgot-password/",
......@@ -1236,18 +1226,14 @@
],
"body": {
"mode": "raw",
"raw": "{\n\t\"token\": \"31290f51d6ea2d476b02942d1d53b7200ed13a89\"\n}"
"raw": "{\n\t\"token\": \"12df1fce0bcb6f5c553d29d3e332552cb557f6f9\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/auth/reset-password-link/",
"protocol": "http",
"raw": "{{baseurl}}/auth/reset-password-link/",
"host": [
"localhost"
"{{baseurl}}"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"reset-password-link",
""
......@@ -1270,18 +1256,14 @@
],
"body": {
"mode": "raw",
"raw": "{\n \"username\": \"213\",\n \"password\": \"password123\",\n \"password_confirm\": \"password123\",\n \"passcode\": \"9676\",\n \"token\": \"c90b0833d83b97cdbfd181f8685e06c2ab646e35\"\n}"
"raw": "{\n \"username\": \"superuser\",\n \"password\": \"password123\",\n \"password_confirm\": \"password123\",\n \"passcode\": \"2591\",\n \"token\": \"1f8297b107eb21d17ad33b92be6d65aa83187800\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/auth/forgot-password-reset/",
"protocol": "http",
"raw": "{{baseurl}}/auth/forgot-password-reset/",
"host": [
"localhost"
"{{baseurl}}"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"forgot-password-reset",
""
......@@ -1430,7 +1412,7 @@
"raw": ""
},
"url": {
"raw": "{{baseurl}}/change-request/form/status/?status=pending&ordering=created&page_size=1",
"raw": "{{baseurl}}/change-request/form/status/?status=pending",
"host": [
"{{baseurl}}"
],
......@@ -1444,14 +1426,6 @@
{
"key": "status",
"value": "pending"
},
{
"key": "ordering",
"value": "created"
},
{
"key": "page_size",
"value": "1"
}
]
}
......@@ -1692,14 +1666,14 @@
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/change-request/form/FRM-20191004-0000072/",
"raw": "{{baseurl}}/change-request/form/FRM-20191021-0000148/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"form",
"FRM-20191004-0000072",
"FRM-20191021-0000148",
""
]
}
......@@ -1762,7 +1736,7 @@
],
"body": {
"mode": "raw",
"raw": "{\r\n \"id\": 294,\r\n \"form_code\": \"FRM-20191008-0000086\",\r\n \"delegation\": \"SD/OD\",\r\n \"action\": \"Approved\",\r\n \"level\": \"1\",\r\n \"remarks\": \"\"\r\n}",
"raw": "{\r\n \"id\": 530,\r\n \"form_code\": \"FRM-20191017-0000135\",\r\n \"delegation\": \"Head of Department\",\r\n \"action\": \"Rejected\",\r\n \"level\": \"1\",\r\n \"remarks\": \"This is rejected by approver before vendor\"\r\n}",
"options": {
"raw": {
"language": "json"
......@@ -2002,7 +1976,7 @@
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"attachments\": [\r\n\t\t{\r\n\t\t\t\"id\": 2,\r\n\t\t\t\"attachment_type\": \"ssgchanged\",\r\n\t\t\t\"attachment_name\": \"hello namde\",\r\n\t\t\t\"file_name\": \"hello\",\r\n\t\t\t\"description\": \"hello desc\",\r\n\t\t\t\"file_upload\": 140\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"hello\",\r\n\t\t\t\"attachment_name\": \"hello name\",\r\n\t\t\t\"file_name\": \"hello\",\r\n\t\t\t\"description\": \"hello desc\",\r\n\t\t\t\"file_upload\": 139\r\n\t\t}\r\n\t]\r\n}\r\n",
"raw": "{\r\n\t\"attachments\": [\r\n\t\t{\r\n\t\t\t\"id\": 2,\r\n\t\t\t\"attachment_type\": \"Before\",\r\n\t\t\t\"attachment_name\": \"we\",\r\n\t\t\t\"file_name\": \"logo_oneberry.png\",\r\n\t\t\t\"description\": \"we\",\r\n\t\t\t\"file_upload\": 140,\r\n\t\t\t\"uploaded_by\": \"USER-20191004-0000098\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"hello\",\r\n\t\t\t\"attachment_name\": \"hello name\",\r\n\t\t\t\"file_name\": \"logo_oneberry.png\",\r\n\t\t\t\"description\": \"hello desc\",\r\n\t\t\t\"file_upload\": 139,\r\n\t\t\t\"attachment_no\": \"\",\r\n\t\t\t\"date_uploaded\": \"\",\r\n\t\t\t\"file\": \"\",\r\n\t\t\t\"template_no\": \"\",\r\n\t\t\t\"upload_no\": \"\"\r\n\t\t}\r\n\t]\r\n}\r\n",
"options": {
"raw": {
"language": "json"
......@@ -2298,14 +2272,14 @@
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/change-request/template/TMP-20190930-0000016/",
"raw": "{{baseurl}}/change-request/template/TMP-20191022-0000092/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"template",
"TMP-20190930-0000016",
"TMP-20191022-0000092",
""
]
}
......@@ -2326,17 +2300,17 @@
],
"body": {
"mode": "raw",
"raw": "{\r\n \"requested_to_template_name\": \"Security Projects\",\r\n \"requested_to_objective\": \"Sample Objective\",\r\n \"requested_to_target_date\": \"10\",\r\n \"requested_to_priority\": \"Normal\",\r\n \"description\": \"Lorem Ipsum\",\r\n \"requested_to_template_id\": \"BPSI\",\r\n \"requested_to_company\": \"COMPANY-20190923-0000001\",\r\n \"requested_to_department\": \"DEPARTMENT-20190923-0000002\",\r\n \"requested_to_user\": \"USER-20190923-0000001\",\r\n \"created_by_user\": \"USER-20190923-0000001\",\r\n \"created_by_department\": \"DEPARTMENT-20190923-0000002\",\r\n \"tmp_approvers\": [\r\n {\r\n \"id\": 2,\r\n \"level\": \"1\",\r\n \"delegation\": \"Head of Department\",\r\n \"user\": null\r\n },\r\n {\r\n \"level\": \"2\",\r\n \"delegation\": \"Approver\",\r\n \"user\": \"USER-20190923-0000001\"\r\n }\r\n ],\r\n \"tmp_stakes\": [\r\n {\r\n \"id\": 1,\r\n \"delegation\": \"Mandatory Stakeholder\",\r\n \"created\": \"2019-09-27T15:05:56.221176\",\r\n \"code\": \"TMPSTK-20190927-0000001\",\r\n \"user\": \"USER-20190923-0000001\",\r\n \"company\": \"COMPANY-20190923-0000001\",\r\n \"department\": \"DEPARTMENT-20190923-0000001\"\r\n }\r\n ],\r\n \"tmp_attachments\": [\r\n {\r\n \"id\": 1,\r\n \"attachment_type\": \"hello\",\r\n \"attachment_name\": \"hello name\",\r\n \"file_name\": \"hello\",\r\n \"description\": \"hello desc\",\r\n \"created\": \"2019-09-27T15:05:56.254174\",\r\n \"code\": \"TMPATCH-20190927-0000001\",\r\n \"uploaded_by\": \"USER-20190923-0000001\",\r\n \"file_upload\": null\r\n }\r\n ],\r\n \"tmp_details\": [\r\n {\r\n \"id\": 1,\r\n \"field_idx\": \"ss\",\r\n \"field_ref\": \"ss\",\r\n \"field_val\": \"ss\",\r\n \"field_props\": \"ss\",\r\n \"created\": \"2019-09-27T15:05:56.287185\",\r\n \"code\": \"TMPDETAIL-20190927-0000001\",\r\n \"template_no\": \"TMP-20190927-0000002\"\r\n }\r\n ]\r\n}"
"raw": "{\r\n\t\"requested_to_company\": \"COMPANY-20190923-0000001\",\r\n\t\"requested_to_department\": \"DEPARTMENT-20191004-0000031\",\r\n\t\"requested_to_user\": \"USER-20191004-0000093\",\r\n\t\"requested_to_template_name\": \"nnn\",\r\n\t\"requested_to_template_id\": \"nn\",\r\n\t\"requested_to_objective\": \"\",\r\n\t\"requested_to_target_date\": 1,\r\n\t\"requested_to_priority\": \"Normal\",\r\n\t\"description\": \"\",\r\n\t\"created_by_user\": \"USER-20191004-0000102\",\r\n\t\"created_by_department\": \"DEPARTMENT-20191004-0000029\",\r\n\t\"tmp_approvers\": [{\r\n\t\t\"id\": 299,\r\n\t\t\"level\": 1,\r\n\t\t\"user\": \"USER-20191004-0000092\",\r\n\t\t\"delegation\": \"Head of Department\",\r\n\t\t\"company\": \"COMPANY-20191004-0000011\",\r\n\t\t\"department\": \"DEPARTMENT-20191004-0000030\"\r\n\t}, {\r\n\t\t\"id\": 300,\r\n\t\t\"level\": 1,\r\n\t\t\"user\": \"USER-20191004-0000092\",\r\n\t\t\"delegation\": \"SD/OD\",\r\n\t\t\"company\": \"COMPANY-20191004-0000011\",\r\n\t\t\"department\": \"DEPARTMENT-20191004-0000030\"\r\n\t}, {\r\n\t\t\"id\": 297,\r\n\t\t\"level\": 2,\r\n\t\t\"user\": \"USER-20191004-0000093\",\r\n\t\t\"delegation\": \"Vendor/Implementor\",\r\n\t\t\"company\": \"COMPANY-20190923-0000001\",\r\n\t\t\"department\": \"DEPARTMENT-20191004-0000031\"\r\n\t}, {\r\n\t\t\"id\": 298,\r\n\t\t\"level\": 3,\r\n\t\t\"user\": null,\r\n\t\t\"delegation\": \"Requestor\"\r\n\t}],\r\n\t\"tmp_stakes\": [],\r\n\t\"tmp_attachments\": [],\r\n\t\"tmp_details\": []\r\n}"
},
"url": {
"raw": "{{baseurl}}/change-request/template/TMP-20190928-0000003/",
"raw": "{{baseurl}}/change-request/template/TMP-20191022-0000096/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"template",
"TMP-20190928-0000003",
"TMP-20191022-0000096",
""
]
}
......@@ -2916,6 +2890,193 @@
}
],
"protocolProfileBehavior": {}
},
{
"name": "Auto Emails",
"item": [
{
"name": "List of Today Reminders",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/change-request/reminder/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"reminder",
""
]
}
},
"response": []
},
{
"name": "List of Today Cancelled",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/change-request/cancelled/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"cancelled",
""
]
}
},
"response": []
},
{
"name": "List of Today Ovedues",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/change-request/overdue/",
"host": [
"{{baseurl}}"
],
"path": [
"change-request",
"overdue",
""
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Asset Management",
"item": [
{
"name": "Asset Groups",
"item": [
{
"name": "Create Asset Group",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Asset Group 1\",\n\t\"asset_group\": \"JTC\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseurl}}/asset-management/asset-group/",
"host": [
"{{baseurl}}"
],
"path": [
"asset-management",
"asset-group",
""
]
}
},
"response": []
},
{
"name": "Edit Asset Group",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Asset Group 3\",\n\t\"asset_group\": \"JTCs\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseurl}}/asset-management/asset-group/AMSGRP-20191025-0000002/",
"host": [
"{{baseurl}}"
],
"path": [
"asset-management",
"asset-group",
"AMSGRP-20191025-0000002",
""
]
}
},
"response": []
},
{
"name": "Delete Asset Group",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{baseurl}}/asset-management/asset-group/AMSGRP-20191025-0000002/",
"host": [
"{{baseurl}}"
],
"path": [
"asset-management",
"asset-group",
"AMSGRP-20191025-0000002",
""
]
}
},
"response": []
},
{
"name": "View Asset Group",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseurl}}/asset-management/asset-group/AMSGRP-20191025-0000002/",
"host": [
"{{baseurl}}"
],
"path": [
"asset-management",
"asset-group",
"AMSGRP-20191025-0000002",
""
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
}
],
"auth": {
......@@ -2923,7 +3084,7 @@
"bearer": [
{
"key": "token",
"value": "a7f86d612e53d07b97b661ccf555bee9dd8c9f27",
"value": "1e3ef7cc7a343b5fa0b54bd2d1699cfee6ca6afe",
"type": "string"
}
]
......
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