mirror of
https://github.com/i701/sarlink-portal-api.git
synced 2025-11-23 01:06:59 +00:00
Merge pull request #17 from i701/feat/user-verification-flow
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 3m5s
All checks were successful
Build and Push Docker Images / Build and Push Docker Images (push) Successful in 3m5s
Feat/user verification flow
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
# Generated by Django 5.2 on 2025-07-15 20:48
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("api", "0016_user_is_admin"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="temporaryuser",
|
||||||
|
name="t_id_card",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, db_index=True, max_length=255, null=True, unique=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="temporaryuser",
|
||||||
|
name="t_mobile",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, db_index=True, max_length=255, null=True, unique=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="user",
|
||||||
|
name="id_card",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, db_index=True, max_length=255, null=True, unique=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="user",
|
||||||
|
name="mobile",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True, db_index=True, max_length=255, null=True, unique=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -13,10 +13,14 @@ import pyotp
|
|||||||
class User(AbstractUser):
|
class User(AbstractUser):
|
||||||
address = models.CharField(max_length=255, blank=True)
|
address = models.CharField(max_length=255, blank=True)
|
||||||
email = models.EmailField(blank=True, null=True, unique=True)
|
email = models.EmailField(blank=True, null=True, unique=True)
|
||||||
mobile = models.CharField(max_length=255, blank=True, unique=True, null=True)
|
mobile = models.CharField(
|
||||||
|
max_length=255, blank=True, unique=True, null=True, db_index=True
|
||||||
|
)
|
||||||
designation = models.CharField(max_length=255, blank=True)
|
designation = models.CharField(max_length=255, blank=True)
|
||||||
acc_no = models.CharField(max_length=255, blank=True)
|
acc_no = models.CharField(max_length=255, blank=True)
|
||||||
id_card = models.CharField(max_length=255, blank=True, unique=True, null=True)
|
id_card = models.CharField(
|
||||||
|
max_length=255, blank=True, unique=True, null=True, db_index=True
|
||||||
|
)
|
||||||
verified = models.BooleanField(default=False)
|
verified = models.BooleanField(default=False)
|
||||||
is_admin = models.BooleanField(default=False)
|
is_admin = models.BooleanField(default=False)
|
||||||
dob = models.DateField(blank=True, null=True)
|
dob = models.DateField(blank=True, null=True)
|
||||||
@@ -46,10 +50,14 @@ class TemporaryUser(models.Model):
|
|||||||
t_last_name = models.CharField(max_length=255, blank=True)
|
t_last_name = models.CharField(max_length=255, blank=True)
|
||||||
t_address = models.CharField(max_length=255, blank=True)
|
t_address = models.CharField(max_length=255, blank=True)
|
||||||
t_email = models.EmailField(blank=True, null=True, unique=True)
|
t_email = models.EmailField(blank=True, null=True, unique=True)
|
||||||
t_mobile = models.CharField(max_length=255, blank=True, unique=True, null=True)
|
t_mobile = models.CharField(
|
||||||
|
max_length=255, blank=True, unique=True, null=True, db_index=True
|
||||||
|
)
|
||||||
t_designation = models.CharField(max_length=255, blank=True)
|
t_designation = models.CharField(max_length=255, blank=True)
|
||||||
t_acc_no = models.CharField(max_length=255, blank=True)
|
t_acc_no = models.CharField(max_length=255, blank=True)
|
||||||
t_id_card = models.CharField(max_length=255, blank=True, unique=True, null=True)
|
t_id_card = models.CharField(
|
||||||
|
max_length=255, blank=True, unique=True, null=True, db_index=True
|
||||||
|
)
|
||||||
t_verified = models.BooleanField(default=False)
|
t_verified = models.BooleanField(default=False)
|
||||||
t_dob = models.DateField(blank=True, null=True)
|
t_dob = models.DateField(blank=True, null=True)
|
||||||
t_terms_accepted = models.BooleanField(default=False)
|
t_terms_accepted = models.BooleanField(default=False)
|
||||||
|
|||||||
@@ -105,6 +105,30 @@ class ListCreatePaymentView(StaffEditorPermissionMixin, generics.ListCreateAPIVi
|
|||||||
serializer = PaymentSerializer(payment)
|
serializer = PaymentSerializer(payment)
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
|
all_payments = request.query_params.get("all_payments", "false").lower() in [
|
||||||
|
"true",
|
||||||
|
"1",
|
||||||
|
"yes",
|
||||||
|
]
|
||||||
|
if (
|
||||||
|
request.user.is_authenticated
|
||||||
|
and getattr(request.user, "is_admin")
|
||||||
|
and bool(all_payments)
|
||||||
|
):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
queryset = queryset.filter(user=request.user)
|
||||||
|
|
||||||
|
page = self.paginate_queryset(queryset)
|
||||||
|
if page is not None:
|
||||||
|
serializer = self.get_serializer(page, many=True)
|
||||||
|
return self.get_paginated_response(serializer.data)
|
||||||
|
|
||||||
|
serializer = self.get_serializer(queryset, many=True)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|
||||||
class PaymentDetailAPIView(StaffEditorPermissionMixin, generics.RetrieveAPIView):
|
class PaymentDetailAPIView(StaffEditorPermissionMixin, generics.RetrieveAPIView):
|
||||||
queryset = Payment.objects.select_related("user").all()
|
queryset = Payment.objects.select_related("user").all()
|
||||||
|
|||||||
Reference in New Issue
Block a user