Skip to content

Commit 3ba5d0f

Browse files
Merge pull request #146 from null-open-security-community/main
Slug generation logic
2 parents def5c10 + 98cb589 commit 3ba5d0f

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

apps/accounts/models.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import uuid
2-
from django.utils.text import slugify
32
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
43
from django.db import models
4+
import string
5+
import random
56

67
# from Jobapp.models import User as JobUser
78
# Create your models here.
@@ -38,6 +39,9 @@ def create_superuser(self, email, name, password=None):
3839
user.save(using=self._db)
3940
return user
4041

42+
def generate_unique_slug(length=8):
43+
characters = string.ascii_uppercase + string.digits # Uppercase letters and digits
44+
return ''.join(random.choices(characters, k=length))
4145

4246
class User(AbstractBaseUser):
4347
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
@@ -73,13 +77,9 @@ class User(AbstractBaseUser):
7377

7478
def save(self, *args, **kwargs):
7579
if not self.slug: # Generate slug only if it doesn't exist
76-
self.slug = slugify(self.name)
77-
# Ensure uniqueness by appending a counter if needed
78-
unique_slug = self.slug
79-
counter = 1
80-
while User.objects.filter(slug=unique_slug).exists():
81-
unique_slug = f"{self.slug}{counter}"
82-
counter += 1
80+
unique_slug = generate_unique_slug()
81+
while User.objects.filter(slug=unique_slug).exists(): # Ensure uniqueness
82+
unique_slug = generate_unique_slug()
8383
self.slug = unique_slug
8484
super().save(*args, **kwargs)
8585

apps/applicants/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@ class AllApplicantsOfCompany(APIView):
2929
)
3030
def get(self, request):
3131
"""List all users that belong to company"""
32-
applicants = Applicants.objects.filter(job__employer=request.user)
32+
filters = {
33+
"job__employer": request.user
34+
}
35+
slug = request.query_params.get('slug', None)
36+
if slug:
37+
filters["slug"] = slug
38+
39+
applicants = Applicants.objects.filter(**filters)
3340

3441
return Response(
3542
ApplicantModelSerializer(applicants, many=True).data,

apps/jobs/models.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
from apps.accounts.models import User
66
from apps.jobs.constants import values
7-
from django.utils.text import slugify
7+
import string
8+
import random
89
from apps.jobs.constants.values import GENDER, HIRING_STATUS, JOB_TYPE, STATUS_CHOICES
910

1011

@@ -52,6 +53,9 @@ class Meta:
5253
# policy
5354
is_deleted = models.BooleanField(default=False, editable=False)
5455

56+
def generate_unique_slug(length=8):
57+
characters = string.ascii_uppercase + string.digits # Uppercase letters and digits
58+
return ''.join(random.choices(characters, k=length))
5559

5660
class Job(models.Model):
5761
"""
@@ -105,13 +109,9 @@ class Meta:
105109

106110
def save(self, *args, **kwargs):
107111
if not self.slug: # Generate slug only if it doesn't exist
108-
self.slug = slugify(self.title)
109-
# Ensure uniqueness by appending a counter if needed
110-
unique_slug = self.slug
111-
counter = 1
112-
while Job.objects.filter(slug=unique_slug).exists():
113-
unique_slug = f"{self.slug}{counter}"
114-
counter += 1
112+
unique_slug = generate_unique_slug()
113+
while User.objects.filter(slug=unique_slug).exists(): # Ensure uniqueness
114+
unique_slug = generate_unique_slug()
115115
self.slug = unique_slug
116116
super().save(*args, **kwargs)
117117

0 commit comments

Comments
 (0)