Commit b095463a authored by Gladys Forte's avatar Gladys Forte

audit trail list, initial api for allowed comp and dept for AMS

parent 57265087
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class AuditTrailSerializer(serializers.ModelSerializer):
class Meta:
model = models.AMSAuditTrail
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 AMSAuditTrail
class AuditTrailFilter(filters.FilterSet):
class Meta:
model = AMSAuditTrail
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.audit_trail.table_filters import AuditTrailFilter
from app.applicationlayer.ams.audit_trail import serializers
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from app.helper import decorators
from django.db import transaction
from rest_framework.decorators import action
from app.applicationlayer.utils import model_to_dict
from app.applicationlayer.utils import log_save, enums
from app.applicationlayer.utils import model_to_dict
from django.db import IntegrityError
class AMSAuditTrailViewset(viewsets.ModelViewSet):
queryset = models.AMSAuditTrail.objects.all()
serializer_class = serializers.AuditTrailSerializer
pagination_class = CustomPagination
lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__'
search_fields = (
'code', 'name'
)
def create(self, request, *args, **kwargs):
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(data=form)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Audit Trail 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 Types 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 audit_trail_create(name, desc, asset_stock, created_by):
try:
models.AMSAuditTrail.objects.create(
name=name,
desciption=desc,
asset_stock=asset_stock,
created_by=created_by
)
return True
except Exception as e:
message = {
'code': 500,
'status': 'failed',
'message': 'Request was not able to process' + str(e.__class__)
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\ No newline at end of file
from rest_framework import serializers
from app.entities.models import Company
class AMSCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = '__all__'
from django_filters import rest_framework as filters
from app.entities.models import Company
class AMSCompanyFilterSet(filters.FilterSet):
class Meta:
model = Company
fields = '__all__'
from django_filters import rest_framework as filters
from rest_framework.filters import SearchFilter, OrderingFilter
from app.entities.models import (
Company, AMSPrivilege
)
from rest_framework import viewsets
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.ams.master.ams_company import serializer
from app.applicationlayer.ams.master.ams_company.table_filter import (
AMSCompanyFilterSet
)
from rest_framework.response import Response
from django.db.models import Q
from rest_framework.decorators import action
class AMSCompanyFormViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class = serializer.AMSCompanySerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = AMSCompanyFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
allowed = AMSPrivilege.objects.filter(
Q(id_number=self.request.user.code)
).values('department__company')
queryset = queryset.filter(code__in=allowed)
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 Company found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
from rest_framework import serializers
from app.entities.models import Department
class AMSDepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
from django_filters import rest_framework as filters
from app.entities.models import Department
class AMSDepartmentFilterSet(filters.FilterSet):
class Meta:
model = Department
fields = '__all__'
from django_filters import rest_framework as filters
from rest_framework.filters import SearchFilter, OrderingFilter
from app.entities.models import (
Company, Department, AMSPrivilege
)
from rest_framework import viewsets
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.ams.master.ams_department import serializer
from app.applicationlayer.ams.master.ams_department.table_filter import (
AMSDepartmentFilterSet
)
from rest_framework.response import Response
from django.db.models import Q
from rest_framework.decorators import action
class AMSDepartmentFormViewSet(viewsets.ModelViewSet):
queryset = Department.objects.all()
serializer_class = serializer.AMSDepartmentSerializer
pagination_class = CustomPagination
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = AMSDepartmentFilterSet
ordering_fields = '__all__'
search_fields = ('name',)
http_method_names = ['get']
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
allowed = AMSPrivilege.objects.filter(
Q(id_number=self.request.user.code)
).values('department')
queryset = queryset.filter(code__in=allowed)
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 Department found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
......@@ -11,6 +11,11 @@ from app.applicationlayer.ams.asset.views import AMSAssetViewSet
from app.applicationlayer.ams.asset_stock.views import AMSAssetStockViewSet
from app.applicationlayer.ams.report_type.views import AMSReportTypeViewset
from app.applicationlayer.ams.report.views import AMSReportViewset
from app.applicationlayer.ams.audit_trail.views import AMSAuditTrailViewset
# list of ams companies and department
from app.applicationlayer.ams.master.ams_company.views import AMSCompanyFormViewSet
from app.applicationlayer.ams.master.ams_department.views import AMSDepartmentFormViewSet
router = routers.DefaultRouter()
......@@ -21,6 +26,10 @@ router.register(r'asset', AMSAssetViewSet)
router.register(r'asset-stock', AMSAssetStockViewSet)
router.register(r'report-type', AMSReportTypeViewset)
router.register(r'report', AMSReportViewset)
router.register(r'audit-trail', AMSAuditTrailViewset)
router.register(r'ams-companies', AMSCompanyFormViewSet)
router.register(r'ams-departments', AMSDepartmentFormViewSet)
urlpatterns = [
path('', include(router.urls)),
......
......@@ -40,6 +40,7 @@ class GenerateCode(Enum):
ASSET_STOCK_SUPPORT = 'ASSTSTOCKSUP'
REPORT_TYPE = 'RPTTYPE'
REPORT = 'RPT'
AUDIT_TRAIL = 'AUDIT'
FORM_ASSET = 'FRMASSET'
......
# Generated by Django 2.2 on 2020-03-24 12:08
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0009_auto_20200318_1724'),
]
operations = [
migrations.AddField(
model_name='amsassetgroup',
name='department',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='entities.Department', to_field='code'),
),
migrations.AddField(
model_name='amsassettype',
name='department',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='entities.Department', to_field='code'),
),
]
# Generated by Django 2.2 on 2020-03-24 18:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0010_auto_20200324_1208'),
]
operations = [
migrations.AlterField(
model_name='extracttransformload',
name='model_type',
field=models.CharField(choices=[('APP', 'APP'), ('MODULE', 'MODULE'), ('COMPANY', 'COMPANY'), ('DEPARTMENT', 'DEPARTMENT'), ('USER', 'USER'), ('DELEGATION', 'DELEGATION'), ('NOTIF', 'NOTIF'), ('TMP', 'TMP'), ('TMPAPR', 'TMPAPR'), ('TMPSTK', 'TMPSTK'), ('TMPATCH', 'TMPATCH'), ('TMPDETAIL', 'TMPDETAIL'), ('FRM', 'FRM'), ('FRMAPR', 'FRMAPR'), ('FRMSTK', 'FRMSTK'), ('FRMATCH', 'FRMATCH'), ('FRMDETAIL', 'FRMDETAIL'), ('ETL', 'ETL'), ('CMSSET', 'CMSSET'), ('ASSTTYPE', 'ASSTTYPE'), ('ASST', 'ASST'), ('ASSTSTOCK', 'ASSTSTOCK'), ('ASSTGRP', 'ASSTGRP'), ('ASSTSTOCKSUP', 'ASSTSTOCKSUP'), ('RPTTYPE', 'RPTTYPE'), ('RPT', 'RPT'), ('AUDIT', 'AUDIT'), ('FRMASSET', 'FRMASSET')], default='USER', max_length=100),
),
]
......@@ -1287,7 +1287,13 @@ class AMSAssetGroup(models.Model):
)
created = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
department = models.ForeignKey(
Department,
blank=True,
null=True,
on_delete=models.PROTECT,
to_field='code')
class Meta:
db_table = 'ams_asset_groups'
ordering = ['-created']
......@@ -1325,6 +1331,12 @@ class AMSAssetType(models.Model):
)
created = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
department = models.ForeignKey(
Department,
blank=True,
null=True,
on_delete=models.PROTECT,
to_field='code')
class Meta:
db_table = 'ams_asset_types'
......@@ -1631,8 +1643,8 @@ class AMSAuditTrail(models.Model):
return f'{self.code}'
def save(self, *args, **kwargs):
super(AMSReport, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.REPORT.value, self.id)
super(AMSAuditTrail, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.AUDIT_TRAIL.value, self.id)
if self.code == '':
self.code = code
......
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