Hello everyone,
I have implemented an endpoint to register an organization how do I make
it posssible to upload the images considering the org model as shown below.
```
class Organization(Group):
email = models.EmailField(max_length=60, blank=False, null=False)
admin = models.ManyToManyField(settings.AUTH_USER_MODEL)
users = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name
='org_users')
is_active = models.BooleanField(default=False)
short_name = models.CharField(max_length=200,blank=True)
location = models.CharField(max_length=200,blank=True, null=True)
tag_line = models.TextField(null=True,blank=True)
company_phone = models.CharField(max_length=15, blank=True, null=True)
po_box = models.CharField(max_length=15, blank=True, null=True)
first_logo = models.ImageField(null=True,blank=True)
second_logo = models.ImageField(null=True,blank=True)
third_logo = models.ImageField(null=True,blank=True)
history = HistoricalRecords()
```
I have implemented the following view but saving the images part is an
issue:
```
class OrganizationRegistration(generics.CreateAPIView):
queryset = Organization.objects.all()
permission_classes = (permissions.AllowAny,)
serializer_class = OrgRegistrationSerializer
"""
{
"admin":{
"username":"[email protected]",
"first_name":"Cindy",
"last_name":"Georgia",
"password":"password",
"email":"[email protected]"
},
"org":{
"name":"ARIZONA LAW SOCIETY",
"short_name":"ALS",
"tag_line":"ALS",
"email":"[email protected]",
"company_phone": "+25475533222",
"po_box": "200",
"location":"NAKURU",
"first_logo":
"https://www.mintformations.co.uk/blog/wp-content/uploads/2020/05/shutterstock_583717939.jpg",
"second_logo":
"https://www.mintformations.co.uk/blog/wp-content/uploads/2020/05/shutterstock_583717939.jpg",
"third_logo":
"https://www.mintformations.co.uk/blog/wp-content/uploads/2020/05/shutterstock_583717939.jpg"
}
}
"""
def post(self, request, format=None, *args, **kwargs):
try:
admins = Group.objects.get(name__iexact='admin')
admin_role = Role.objects.get(name__iexact="admin")
except:
# The admin group is
admins = Group.objects.create(name="admin")
admin_role = Role.objects.create(name="admin")
# Validate USer and Org
if Organization.objects.filter(name__iexact
=request.data['org']['name']).exists() is True:
res = {"data": None, "msg":"Organization with that name already
registered","success": False}
return Response(data=res,status=status.HTTP_400_BAD_REQUEST)
if User.objects.filter(username__iexact
=request.data['admin']['username']).exists() is True:
res = {"data": None, "msg":"User with that name already
registered.","success": False}
return Response(data=res,status=status.HTTP_400_BAD_REQUEST)
try:
admin = User.objects.create(
username=request.data['admin']['username'],
email=request.data['admin']['email'],
first_name=request.data['admin']['first_name'],
last_name=request.data['admin']['last_name'],
)
location_name = request.data['org']['location'].upper()
location_obj, _ = Location.objects.get_or_create(name
=location_name)
area_name = location_obj.name
# Create Random Password
password = User.objects.make_random_password(length=10)
admin.set_password(password)
admin.save()
admin.groups.add(admins)
admin.roles.add(admin_role)
except Exception as e:
return Response(data={"msg":str
(e),"success":False, "data": None},status=status.HTTP_400_BAD_REQUEST)
try:
first_file_logo = request.data['org']['first_logo']
second_file_logo = request.data['org']['second_logo']
third_file_logo = request.data['org']['third_logo']
org = Organization.objects.create(
name=request.data['org']['name'],
email=request.data['org']['email'],
location=request.data['org']['location'],
short_name = request.data['org']['short_name'],
tag_line = request.data['org']['tag_line'],
company_phone = request.data['org']['company_phone'],
po_box = request.data['org']['po_box'],
first_logo = first_file_logo,
second_logo =second_file_logo ,
third_logo = third_file_logo
)
admin.org_id = org.id
admin.save()
# add the user creating the Organization to admins by DEFAULT
# NOTE:
# all the other normaall users will be added normally i.e
admins.save()
org.admin.add(admin)
org.users.add(admin)
admin.is_active = False
admin.save()
payload = jwt_payload_handler(admin, org)
jwt_token = jwt_encode_handler(payload)
support_email = settings.SUPPORT_EMAIL
# # FIXME:
# refactor this code inorder to have its own function
path = get_full_path(request)
path = settings.BASE_URL
subject = 'Welcome onboard E-Voting'
org_html_message =
loader.render_to_string('authenticate/org-confirmation.html')
admin_html_message =
loader.render_to_string('authenticate/admin-confirmation.html')
# if the org is regestering themselves the org id will alway be zero
admin_message_string = strip_tags(admin_html_message)
org_message_string = strip_tags(org_html_message)
admin_ctx = {
'name': admin.username,
'password': password,
'email': admin.email,
'link': '{}registration/confirmation/{}/'.format(path,
jwt_token.decode("utf-8"))
}
org_ctx = {
'name': org.name,
'email': org.email,
'link': '{}registration/confirmation/{}/'.format(path,
jwt_token.decode("utf-8"))
}
admin_html_content =
loader.render_to_string('authenticate/admin-confirmation.html', admin_ctx)
org_html_content =
loader.render_to_string('authenticate/org-confirmation.html', org_ctx)
admin_message = {
"html": admin_html_content,
"text": admin_message_string
}
org_message = {
"html": org_html_content,
"text": org_message_string
}
# SEND BOTH MAIL TO ACTIVATE USER AND ORG
send_mail_to_org = send_credentials.delay(
'Welcome onboard E-Vote: Organization Confirmation',
org_message,
org.email
)
send_mail_to_admin = send_credentials.delay(
'Welcome onboard E-Vote: Admin Confirmation',
admin_message,
admin.email
)
serializer = OrgRegSerializer(org)
res = {"msg": "Check personal and organization emails, NOTE: finish
org registration first!!!", "success": True, "data": serializer.data}
return Response(
data=res,
status=status.HTTP_201_CREATED
)
except Exception as e:
return Response(data={"msg":str
(e),"success":False, "data": None},status=status.HTTP_400_BAD_REQUEST)
``
--
You received this message because you are subscribed to the Google Groups
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-rest-framework/39c3eea3-7302-4a02-83ff-78a1779a5a15n%40googlegroups.com.