new company search endpoint, but searchfilter not working
This commit is contained in:
@@ -44,6 +44,7 @@ urlpatterns = [
|
|||||||
path('api/v1/my_user/', core_views.my_user, name='my-user'),
|
path('api/v1/my_user/', core_views.my_user, name='my-user'),
|
||||||
path('api/v1/my_company/', company_views.my_company, name='my-company'),
|
path('api/v1/my_company/', company_views.my_company, name='my-company'),
|
||||||
path('api/v1/companies/sample/', company_views.random_company_sample , name='company-sample'),
|
path('api/v1/companies/sample/', company_views.random_company_sample , name='company-sample'),
|
||||||
|
path('api/v1/search/companies/', company_views.CompanySearchViewSet.as_view({'get': 'list'}) , name='company-search'),
|
||||||
path('api/v1/purchase_email/', product_views.purchase_email, name='purchase-email'),
|
path('api/v1/purchase_email/', product_views.purchase_email, name='purchase-email'),
|
||||||
path('api/v1/products/all_categories/', product_views.all_categories, name='all-categories'),
|
path('api/v1/products/all_categories/', product_views.all_categories, name='all-categories'),
|
||||||
path('api/v1/stats/me/', stat_views.track_user, name='user-tracker'),
|
path('api/v1/stats/me/', stat_views.track_user, name='user-tracker'),
|
||||||
|
|||||||
@@ -551,3 +551,51 @@ class AdminCompanyViewSetTest(APITestCase):
|
|||||||
# assertions
|
# assertions
|
||||||
self.assertEquals(response.status_code, 204)
|
self.assertEquals(response.status_code, 204)
|
||||||
|
|
||||||
|
|
||||||
|
class CompanySearchViewSet(APITestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
"""Tests setup
|
||||||
|
"""
|
||||||
|
self.endpoint = '/api/v1/search/companies/'
|
||||||
|
self.factory = CompanyFactory
|
||||||
|
self.model = Company
|
||||||
|
# create user
|
||||||
|
self.email = f"user@mail.com"
|
||||||
|
self.password = ''.join(random.choices(string.ascii_uppercase, k = 10))
|
||||||
|
self.user = CustomUserFactory(email=self.email, is_active=True)
|
||||||
|
self.user.set_password(self.password)
|
||||||
|
self.user.save()
|
||||||
|
|
||||||
|
def test_anon_user_can_search_company_name(self):
|
||||||
|
company_name = 'Test company name'
|
||||||
|
# create instance
|
||||||
|
instance = self.factory(company_name=company_name)
|
||||||
|
|
||||||
|
# query
|
||||||
|
url = f"{self.endpoint}?search={company_name}"
|
||||||
|
response = self.client.get(url)
|
||||||
|
|
||||||
|
# assertions
|
||||||
|
self.assertEquals(response.status_code, 200)
|
||||||
|
|
||||||
|
payload = response.json()
|
||||||
|
print(payload)
|
||||||
|
self.assertEquals(len(payload), 1)
|
||||||
|
|
||||||
|
def test_anon_user_can_search_short_name(self):
|
||||||
|
short_name = 'Test company name'
|
||||||
|
# create instance
|
||||||
|
instance = self.factory(short_name=short_name)
|
||||||
|
|
||||||
|
# query
|
||||||
|
url = f"{self.endpoint}?search={short_name}"
|
||||||
|
response = self.client.get(url)
|
||||||
|
|
||||||
|
# assertions
|
||||||
|
self.assertEquals(response.status_code, 200)
|
||||||
|
|
||||||
|
payload = response.json()
|
||||||
|
print(payload)
|
||||||
|
self.assertEquals(len(payload), 1)
|
||||||
|
|
||||||
|
|||||||
@@ -24,14 +24,20 @@ from back_latienda.permissions import IsCreator, IsSiteAdmin
|
|||||||
from utils import woocommerce
|
from utils import woocommerce
|
||||||
|
|
||||||
|
|
||||||
|
class CompanySearchViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = Company.objects.filter(is_validated=True).order_by('-created')
|
||||||
|
serializer_class = CompanySerializer
|
||||||
|
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
|
||||||
|
filter_backends = (filters.SearchFilter, )
|
||||||
|
# search_fields = ['company_name__unaccent__icontains', 'short_name__unaccent__icontains']
|
||||||
|
search_fields = ['@company_name', '@short_name']
|
||||||
|
|
||||||
|
|
||||||
class CompanyViewSet(viewsets.ModelViewSet):
|
class CompanyViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Company.objects.filter(is_validated=True).order_by('-created')
|
queryset = Company.objects.filter(is_validated=True).order_by('-created')
|
||||||
serializer_class = CompanySerializer
|
serializer_class = CompanySerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
|
permission_classes = [IsAuthenticatedOrReadOnly, IsCreator]
|
||||||
filterset_class = CompanyTagFilter
|
filterset_class = CompanyTagFilter
|
||||||
filter_backends = [filters.SearchFilter]
|
|
||||||
search_fields = ['company_name__unaccent__icontains', 'short_name__unaccent__icontains']
|
|
||||||
|
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
serializer.save(creator=self.request.user)
|
serializer.save(creator=self.request.user)
|
||||||
|
|||||||
Reference in New Issue
Block a user