Commit 7348753c authored by Gladys Forte's avatar Gladys Forte

Merge pull request #619 in RMS/api-main-service from gladys-dev2 to product-dev

* commit 'c1bcd8f1':
  cms_settings
parents 1f5ffb68 c1bcd8f1
from rest_framework import serializers
from app.entities.models import ChangeRequestSettings
from app.applicationlayer.utils import model_to_dict
class ChangeRequestSettingsSerializer(serializers.ModelSerializer):
class Meta:
model = ChangeRequestSettings
fields = '__all__'
read_only_fields = ['created', 'code']
from django_filters import rest_framework as filters
from app.entities.models import ChangeRequestSettings
class ChangeRequestSettingsFilterSet(filters.FilterSet):
class Meta:
model = ChangeRequestSettings
fields = '__all__'
from rest_framework import status, viewsets
from rest_framework.response import Response
from app.entities import enums
from app.entities.models import ChangeRequestSettings
from app.applicationlayer.utils import CustomPagination,status_message_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.cms.cms_settings.serializer import (
ChangeRequestSettingsSerializer
)
from app.applicationlayer.cms.cms_settings.table_filter import (
ChangeRequestSettingsFilterSet
)
from django.db import transaction
from rest_framework.exceptions import ValidationError
from django.db import IntegrityError
class CMSSettingsViewSet(viewsets.ModelViewSet):
queryset = ChangeRequestSettings.objects.all()
serializer_class = ChangeRequestSettingsSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = ChangeRequestSettingsFilterSet
ordering_fields = '__all__'
search_fields = (
'active_user__code',
'behalf_user__code'
)
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 CMS Settings found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(
serializer.data,
status=status.HTTP_200_OK
)
@transaction.atomic
def create(self, request, *args, **kwargs):
try:
id_number = self.request.user.code
ChangeRequestSettings.objects.filter(active_user=id_number).delete()
data_cms_settings = []
cms_settings = request.data['cms_settings']
for cms_setting in cms_settings:
cms_setting['active_user'] = id_number
data_cms_settings.append(cms_setting)
serializer = ChangeRequestSettingsSerializer(
data=data_cms_settings, many=True
)
if serializer.is_valid(raise_exception=True):
serializer.save()
message = {
'code': 201,
'status': 'success',
'message': 'CMS Settings successfully saved!',
'results': serializer.data
}
return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e:
message = {
'code': 400,
'status': 'failed',
'message': str(e),
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
message = {
'code': 500,
'status': 'failed',
'message': str(e),
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
......@@ -6,6 +6,7 @@ from rest_framework.urlpatterns import format_suffix_patterns
from app.applicationlayer.cms.form import views as crform_views
from app.applicationlayer.cms.allowed_company import views as allowed
from app.applicationlayer.cms.cms_settings import views as cms_settings
# MASTERS Form
from app.applicationlayer.cms.master.template.company.views import ChangeRequestCompanyTemplateViewSet
......@@ -64,6 +65,7 @@ router.register(r'form-download', dl.DownloadRequest)
# privilege CMS
router.register(r'allowed-companies', allowed.AllowedCompanyViewSet)
router.register(r'cms-settings', cms_settings.CMSSettingsViewSet)
# privilege CMS
# filter endpoints under Allowed Companies table
......
......@@ -2,7 +2,6 @@ from enum import Enum
class ModelSeriesEnum(Enum):
USER = "USR"
CMS_SETTINGS = "cms_settings"
# CLIENT = "CLI"
# CONSUMABLEPRODUCTS = "CSP"
......@@ -46,6 +45,7 @@ class GenerateCode(Enum):
ETL = 'ETL'
ASSET_GROUP = 'AMSGRP'
CMS_SETTINGS = "CMSSET"
'''
*********
......
# Generated by Django 2.2 on 2020-01-13 21:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0002_changerequestsettings'),
]
operations = [
migrations.RemoveField(
model_name='changerequestsettings',
name='createdby',
),
migrations.RemoveField(
model_name='changerequestsettings',
name='modified',
),
migrations.RemoveField(
model_name='changerequestsettings',
name='modifiedby',
),
migrations.AddField(
model_name='changerequestsettings',
name='deleted_at',
field=models.DateTimeField(blank=True, null=True),
),
]
......@@ -1230,7 +1230,7 @@ class AssetGroup(models.Model):
self.save()
class ChangeRequestSettings(AuditClass):
class ChangeRequestSettings(models.Model):
code = models.CharField(unique=True, max_length=255)
active_user = models.ForeignKey(
User,
......@@ -1249,7 +1249,8 @@ class ChangeRequestSettings(AuditClass):
behalf_rejected = models.BooleanField(default=False)
behalf_implemented = models.BooleanField(default=False)
behalf_completed = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True)
class Meta:
db_table = 'change_request_settings'
......@@ -1260,7 +1261,7 @@ class ChangeRequestSettings(AuditClass):
def save(self, *args, **kwargs):
super(ChangeRequestSettings, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.ModelSeriesEnum.value, self.id)
code = number_generator(enums.GenerateCode.CMS_SETTINGS.value, self.id)
if self.code == '':
self.code = code
......
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