Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Leetcode and GitHub user detail #111

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Thumbs.db
*.tmp
*.swp
*.swo
*.cpython-312.pyc
coverage/

# -----------------------------
Expand Down Expand Up @@ -56,3 +57,4 @@ api/migrations/** # Ignore Django migrations, except __init__.py (handled below

# Don't ignore __init__.py in migrations
!api/**/migrations/__init__.py
node_modules
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
PNPM ?= pnpm
PYTHON ?= python3
PIP ?= pip3
MAKE ?= make

install:
cd api/ && $(PIP) install -r requirements.txt
Expand Down
6 changes: 0 additions & 6 deletions api/.env.example

This file was deleted.

Binary file removed api/leaderboard/__pycache__/__init__.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/admin.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/celery.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/friends.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/models.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/root.cpython-312.pyc
Binary file not shown.
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/settings.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/urls.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/users.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/views.cpython-312.pyc
Binary file not shown.
Binary file removed api/leaderboard/__pycache__/wsgi.cpython-312.pyc
Binary file not shown.
Binary file not shown.
Binary file removed api/leaderboard/api/__pycache__/urls.cpython-312.pyc
Binary file not shown.
Binary file not shown.
136 changes: 65 additions & 71 deletions api/leaderboard/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from django.contrib.auth.models import User
from django.views.decorators.csrf import csrf_exempt
from datetime import datetime
from django.db import transaction
import requests


Expand Down Expand Up @@ -49,75 +50,67 @@ def current_user(request):
@api_view(["POST"])
@permission_classes([permissions.IsAuthenticated])
def post_UserNames(request):

try:
# data['user']=request.user.username
# data=request.data
username_cc=request.data["cc_uname"]
username_cf=request.data["cf_uname"]
username_gh=request.data["gh_uname"]
username_lt=request.data["lt_uname"]
user=request.user

if UserNames.objects.filter(user=user).exists():
t = UserNames.objects.get(user=user)
if username_cc!="":
codechefUser.objects.filter(username=t.cc_uname).delete()
t.cc_uname=username_cc
cc_user = codechefUser(username=username_cc)
cc_user.save()
if username_cf!="":
codeforcesUser.objects.filter(username=t.cf_uname).delete()
t.cf_uname=username_cf
cf_user = codeforcesUser(username=username_cf)
cf_user.save()
if username_gh!="":
githubUser.objects.filter(username=t.gh_uname).delete()
t.gh_uname=username_gh
gh_user = githubUser(username=username_gh)
gh_user.save()
if username_lt!="":
LeetcodeUser.objects.filter(username=t.lt_uname).delete()
t.lt_uname=username_lt
lt_user = LeetcodeUser(username=username_lt)
lt_user.save()
t.save()
else:
if user!="":
userName=UserNames(user=user,cc_uname=username_cc,cf_uname=username_cf,gh_uname=username_gh,lt_uname=username_lt)
username_cc = request.data.get("cc_uname", "")
username_cf = request.data.get("cf_uname", "")
username_gh = request.data.get("gh_uname", "")
username_lt = request.data.get("lt_uname", "")
user = request.user

with transaction.atomic():
# Check if user already exists in UserNames
t = UserNames.objects.filter(user=user).first()

if t:
# Update and delete only if the value changes
if username_cc and t.cc_uname != username_cc:
codechefUser.objects.filter(username=t.cc_uname).delete()
t.cc_uname = username_cc
codechefUser.objects.get_or_create(username=username_cc)

if username_cf and t.cf_uname != username_cf:
codeforcesUser.objects.filter(username=t.cf_uname).delete()
t.cf_uname = username_cf
codeforcesUser.objects.get_or_create(username=username_cf)

if username_gh and t.gh_uname != username_gh:
githubUser.objects.filter(username=t.gh_uname).delete()
t.gh_uname = username_gh
githubUser.objects.get_or_create(username=username_gh)

if username_lt and t.lt_uname != username_lt:
LeetcodeUser.objects.filter(username=t.lt_uname).delete()
t.lt_uname = username_lt
LeetcodeUser.objects.get_or_create(username=username_lt)

t.save()

else:
# Create new UserNames entry
userName = UserNames(user=user, cc_uname=username_cc, cf_uname=username_cf, gh_uname=username_gh, lt_uname=username_lt)
userName.save()
if username_cc!="":
cc_user = codechefUser(username=username_cc)
cc_user.save()

# username_cf = request.data["cf_uname"]
if username_cf!="":
cf_user = codeforcesUser(username=username_cf)
cf_user.save()

# username_gh = request.data["gh_uname"]
if username_gh!="":
gh_user = githubUser(username=username_gh)
gh_user.save()
if username_lt!="":
lt_user = LeetcodeUser(username=username_lt)
lt_user.save()

# Create corresponding user entries
if username_cc:
codechefUser.objects.get_or_create(username=username_cc)
if username_cf:
codeforcesUser.objects.get_or_create(username=username_cf)
if username_gh:
githubUser.objects.get_or_create(username=username_gh)
if username_lt:
LeetcodeUser.objects.get_or_create(username=username_lt)

return Response({
'status':200,
'message':"Success",
},status=status.HTTP_201_CREATED)
# else:
# return Response({
# 'status':400,
# 'message':"Wrong",
# },status=status.HTTP_400_BAD_REQUEST)

except Exception as e:
print(e)
'status': 200,
'message': "Success",
}, status=status.HTTP_201_CREATED)

except Exception as e:
return Response({
'status':400,
'message':"Wrong"
},status=status.HTTP_400_BAD_REQUEST)
'status': 400,
'message': str(e),
}, status=status.HTTP_400_BAD_REQUEST)


import logging

Expand All @@ -135,26 +128,27 @@ def registerUser(request):
logger.debug(f"Request data: {request.data}")

first_name = request.data.get("first_name", "")
last_name = request.data.get("last_name", "")
# last_name = request.data.get("last_name", "")
email = request.data.get("email", "")
username = request.data.get("username", "")
password = request.data.get("password", "")
# password = request.data.get("password", "")
cc_uname = request.data.get("cc_uname", "")
cf_uname = request.data.get("cf_uname", "")
gh_uname = request.data.get("gh_uname", "")
lt_uname = request.data.get("lt_uname", "")

if not all([first_name, email, username, password]):
logger.error("Missing required fields: first_name, email, username, or password")
if not all([first_name, email, username]):
logger.error("Missing required fields: first_name, email, username")
return Response({
'status': 400,
'message': "Missing required fields"
}, status=status.HTTP_400_BAD_REQUEST)

# Create user
user = User.objects.create_user(
username=username, password=password,
first_name=first_name, last_name=last_name,
username=username,
password='GOOGLEDATA',
first_name=first_name,
email=email
)
user.save()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-04 07:15

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("leaderboard", "0003_auto_20231009_1114"),
]

operations = [
migrations.AlterField(
model_name="codeforcesuser",
name="last_activity",
field=models.BigIntegerField(default=1738653325.13413),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-05 10:12

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("leaderboard", "0004_alter_codeforcesuser_last_activity"),
]

operations = [
migrations.AlterField(
model_name="codeforcesuser",
name="last_activity",
field=models.BigIntegerField(default=1738750367.042801),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-05 10:15

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("leaderboard", "0005_alter_codeforcesuser_last_activity"),
]

operations = [
migrations.AlterField(
model_name="codeforcesuser",
name="last_activity",
field=models.BigIntegerField(default=1738750545.301245),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-12 16:28

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("leaderboard", "0006_alter_codeforcesuser_last_activity"),
]

operations = [
migrations.AlterField(
model_name="codeforcesuser",
name="last_activity",
field=models.BigIntegerField(default=1739377737.950671),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.5 on 2025-02-18 18:17

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("leaderboard", "0007_alter_codeforcesuser_last_activity"),
]

operations = [
migrations.AlterField(
model_name="codeforcesuser",
name="last_activity",
field=models.BigIntegerField(default=1739902669.24653),
),
]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion api/leaderboard/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class codeforcesUser(models.Model):
max_rating = models.PositiveIntegerField(default=0)
rating = models.PositiveIntegerField(default=0)
last_activity = models.BigIntegerField(
default=datetime.max.timestamp()
default=datetime.now().timestamp()
)
last_updated = models.DateTimeField(auto_now=True)
avatar = models.CharField(max_length=256, default="")
Expand Down
12 changes: 6 additions & 6 deletions api/leaderboard/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,12 @@
# "NAME": BASE_DIR / "db.sqlite3",
# }
# }
POSTGRES_ENGINE = str(os.getenv("POSTGRES_ENGINE"))
POSTGRES_NAME = str(os.getenv("POSTGRES_NAME"))
POSTGRES_USER = str(os.getenv("POSTGRES_USER"))
POSTGRES_PASSWORD = str(os.getenv("POSTGRES_PASSWORD"))
POSTGRES_HOST = str(os.getenv("POSTGRES_HOST"))
POSTGRES_PORT = str(os.getenv("POSTGRES_PORT"))
POSTGRES_ENGINE = "django.db.backends.postgresql"
POSTGRES_NAME = "postgres"
POSTGRES_USER = "postgres.rgusvtmhhyjhrgsakktd"
POSTGRES_PASSWORD = "yuvrajrathod1202"
POSTGRES_HOST = "aws-0-ap-south-1.pooler.supabase.com"
POSTGRES_PORT = "5432"

DATABASES = {
'default': {
Expand Down
Loading