added default roles to user: shop_user, coop_manager

This commit is contained in:
Sam
2021-02-02 12:51:51 +00:00
parent b5887c5c51
commit b906ef0be9
3 changed files with 56 additions and 2 deletions

View File

@@ -1,18 +1,35 @@
import csv
import logging
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.permissions import IsAdminUser
from rest_framework.generics import UpdateAPIView
from rest_framework.decorators import api_view, permission_classes
from . import models
from . import serializers
from back_latienda.permissions import CustomUserPermissions, YourOwnUserPermissions
User = get_user_model()
# Create your views here.
logging.basicConfig(
filename='logs/csv-load.log',
filemode='w',
format='%(levelname)s:%(message)s',
level=logging.INFO,
)
class CustomUserViewSet(viewsets.ModelViewSet):
model = models.CustomUser
@@ -62,3 +79,31 @@ class UpdateUserView(UpdateAPIView):
queryset = model.objects.all()
permission_classes = (YourOwnUserPermissions,)
serializer_class = serializers.UpdateUserSerializer
@api_view(['POST',])
@permission_classes([IsAdminUser,])
def load_coop_managers(request):
"""Read CSV file being received
Parse it to create users and related companies
"""
csv_file = request.FILES["csv_file"]
if csv_file.name.endswith('.csv') is not True:
logging.error(f"File {csv_file.name} is not a CSV file")
return Response({"errors":{"details": "File is not CSV type"}})
logging.info(f"Reading contents of {csv_file.name}")
csv_reader = csv.DictReader(csv_file, delimiter=',')
for row in csv_reader:
email = row['email']
cif = row['cif']
company_name = row['nombre-coop']
short_name = row['nombre-corto']
url = row['url']
shop = row['es-tienda']
coop = None
coop_user = User.objects.create_user(email=email, company=coop, role='COOP_MANAGER')
return Response