Commit ad73e4d6 authored by John Red Medrano's avatar John Red Medrano

added allowed company endpoint

parent 2d3352db
from rest_framework import serializers
from app.entities.models import AllowedCompany
class AllowedCompanySerializer(serializers.ModelSerializer):
class Meta:
model = AllowedCompany
fields = '__all__'
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import AllowedCompany
from django.db.models import Q
class AllowedCompanyFilterSet(filters.FilterSet):
# search = filters.CharFilter(method='search_bar', label='search')
# def search_bar(self, queryset, name, value):
# return queryset.filter(
# Q(username__icontains=value) |
# Q(first_name__icontains=value) |
# Q(last_name__icontains=value))
class Meta:
model = AllowedCompany
fields = '__all__'
# from rest_framework.views import APIView
from rest_framework import status, viewsets
from rest_framework.response import Response
from app.entities import enums
from app.entities.models import AllowedCompany
from app.applicationlayer.utils import CustomPagination, status_message_response
# from rest_framework.exceptions import ParseError
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.allowed_company.serializer import (
AllowedCompanySerializer
)
from app.applicationlayer.cms.allowed_company.table_filter import (
AllowedCompanyFilterSet
)
from django.db import transaction
from rest_framework.exceptions import ValidationError
class AllowedCompanyViewSet(viewsets.ModelViewSet):
queryset = AllowedCompany.objects.all()
serializer_class = AllowedCompanySerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_class = AllowedCompanyFilterSet
ordering_fields = '__all__'
search_fields = (
'id_number__code', 'company_pivot__code',
'group_pivots__code'
)
# @decorators.rms.user_list
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 Users 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:
form = request.data['form']
id_number = form[0]['id_number']
AllowedCompany.objects.filter(id_number=id_number).delete()
# print(body['form'])
serializer = AllowedCompanySerializer(
data=form, many=True
)
if serializer.is_valid(raise_exception=True):
serializer.save()
message = {
'code': 201,
'status': 'success',
'message': 'Form Details 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': 'Request was not able to process' + str(e),
}
return Response(str(e),
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
...@@ -5,6 +5,7 @@ from django.conf.urls import url ...@@ -5,6 +5,7 @@ from django.conf.urls import url
from app.applicationlayer.management.notification.views import NotificationsViewset from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.cms.template import views as crtemplate_views from app.applicationlayer.cms.template import views as crtemplate_views
from app.applicationlayer.cms.form import views as crform_views from app.applicationlayer.cms.form import views as crform_views
from app.applicationlayer.cms.allowed_company import views
router = routers.DefaultRouter() router = routers.DefaultRouter()
...@@ -21,11 +22,13 @@ router.register(r'form-approvers', crform_views.ChangeRequestFormApproversViewse ...@@ -21,11 +22,13 @@ router.register(r'form-approvers', crform_views.ChangeRequestFormApproversViewse
router.register(r'form-stakeholders', crform_views.ChangeRequestFormStakeHoldersViewset) router.register(r'form-stakeholders', crform_views.ChangeRequestFormStakeHoldersViewset)
router.register(r'form-attachments', crform_views.ChangeRequestFormAttachmentsViewset) router.register(r'form-attachments', crform_views.ChangeRequestFormAttachmentsViewset)
router.register(r'form-details', crform_views.ChangeRequestFormDetailsViewset) router.register(r'form-details', crform_views.ChangeRequestFormDetailsViewset)
router.register(r'allowed-companies', views.AllowedCompanyViewSet)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', crtemplate_views.ChangeRequestTemplatePost.as_view()), path('template-post/', crtemplate_views.ChangeRequestTemplatePost.as_view()),
path('form-post/', crform_views.ChangeRequestFormPost.as_view()), path('form-post/', crform_views.ChangeRequestFormPost.as_view()),
# path('allowed-companies/', views.AllowedCompanyApiView.as_view()),
path('user-list/', crtemplate_views.UserList.as_view(), name="User List"), path('user-list/', crtemplate_views.UserList.as_view(), name="User List"),
) )
...@@ -44,10 +44,8 @@ class CompanyViewSet(viewsets.ModelViewSet): ...@@ -44,10 +44,8 @@ class CompanyViewSet(viewsets.ModelViewSet):
# @decorators.rms.company_list # @decorators.rms.company_list
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
print(self.queryset)
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
print(self.queryset)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
......
# Generated by Django 2.2 on 2019-09-17 18:02
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0002_auto_20190917_1716'),
]
operations = [
migrations.CreateModel(
name='AllowedCompany',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_change_request', models.BooleanField(default=True)),
('create_change_request_template', models.BooleanField(default=True)),
('view_all_change_request', models.BooleanField(default=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('deleted_at', models.DateTimeField(blank=True, null=True)),
('company_pivot', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_company_pivot', to='entities.Company', to_field='code')),
('group_pivots', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_group_pivots', to='entities.Department', to_field='code')),
('id_number', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_id_number', to=settings.AUTH_USER_MODEL, to_field='code')),
],
options={
'db_table': 'allowed_company',
},
),
]
# Generated by Django 2.2 on 2019-09-18 11:04
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('entities', '0003_allowedcompany'),
]
operations = [
migrations.AlterField(
model_name='allowedcompany',
name='company_pivot',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_company_pivot', to='entities.Company', to_field='code'),
),
migrations.AlterField(
model_name='allowedcompany',
name='group_pivots',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_group_pivots', to='entities.Department', to_field='code'),
),
migrations.AlterField(
model_name='allowedcompany',
name='id_number',
field=models.ForeignKey(default=django.utils.timezone.now, on_delete=django.db.models.deletion.DO_NOTHING, related_name='allowed_company_id_number', to=settings.AUTH_USER_MODEL, to_field='code'),
preserve_default=False,
),
]
...@@ -977,3 +977,31 @@ class PasswordReset(models.Model): ...@@ -977,3 +977,31 @@ class PasswordReset(models.Model):
class Meta: class Meta:
db_table = 'password_resets' db_table = 'password_resets'
class AllowedCompany(models.Model):
id_number = models.ForeignKey(
User,
on_delete=models.DO_NOTHING,
to_field='code',
related_name='allowed_company_id_number'
)
company_pivot = models.ForeignKey(
Company,
on_delete=models.DO_NOTHING,
related_name='allowed_company_company_pivot',
to_field='code'
)
group_pivots = models.ForeignKey(
Department,
on_delete=models.DO_NOTHING,
related_name='allowed_company_group_pivots',
to_field='code'
)
# app_code = models.CharField(max_length=250)
create_change_request = models.BooleanField(default=True)
create_change_request_template = models.BooleanField(default=True)
view_all_change_request = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True)
class Meta:
db_table = 'allowed_company'
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