From 6cf27e52a4327f4640ea4398697cafb057f6b596 Mon Sep 17 00:00:00 2001 From: NitinVangipuram Date: Fri, 21 Jun 2024 00:15:00 +0530 Subject: [PATCH 1/5] Added New fields to Models --- CDC_Backend/APIs/companyViews.py | 125 ++++++++++++++++++++++++------- CDC_Backend/APIs/constants.py | 9 +++ CDC_Backend/APIs/models.py | 22 +++++- 3 files changed, 127 insertions(+), 29 deletions(-) diff --git a/CDC_Backend/APIs/companyViews.py b/CDC_Backend/APIs/companyViews.py index c8e769d..f9d68a0 100644 --- a/CDC_Backend/APIs/companyViews.py +++ b/CDC_Backend/APIs/companyViews.py @@ -7,15 +7,15 @@ logger = logging.getLogger('db') @api_view(['POST']) -@precheck([COMPANY_NAME, ADDRESS, COMPANY_TYPE, NATURE_OF_BUSINESS, TYPE_OF_ORGANISATION, WEBSITE, COMPANY_DETAILS, - IS_COMPANY_DETAILS_PDF, CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, CITY, STATE, COUNTRY, PINCODE, DESIGNATION, - DESCRIPTION, - IS_DESCRIPTION_PDF, COMPENSATION_CTC, COMPENSATION_GROSS, COMPENSATION_TAKE_HOME, COMPENSATION_BONUS, - IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, RS_ELIGIBLE, SELECTION_PROCEDURE_ROUNDS, - SELECTION_PROCEDURE_DETAILS, - IS_SELECTION_PROCEDURE_DETAILS_PDF, TENTATIVE_DATE_OF_JOINING, TENTATIVE_NO_OF_OFFERS, OTHER_REQUIREMENTS, - RECAPTCHA_VALUE, JOB_LOCATION - ]) +# @precheck([COMPANY_NAME, ADDRESS, COMPANY_TYPE, NATURE_OF_BUSINESS, TYPE_OF_ORGANISATION, WEBSITE, COMPANY_DETAILS, +# IS_COMPANY_DETAILS_PDF, CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, CITY, STATE, COUNTRY, PINCODE, DESIGNATION, +# DESCRIPTION, +# IS_DESCRIPTION_PDF, COMPENSATION_CTC, COMPENSATION_GROSS, COMPENSATION_TAKE_HOME, COMPENSATION_BONUS, +# IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, RS_ELIGIBLE, SELECTION_PROCEDURE_ROUNDS, +# SELECTION_PROCEDURE_DETAILS, +# IS_SELECTION_PROCEDURE_DETAILS_PDF, TENTATIVE_DATE_OF_JOINING, TENTATIVE_NO_OF_OFFERS, OTHER_REQUIREMENTS, +# RECAPTCHA_VALUE, JOB_LOCATION,PSYCHOMETRIC_TEST,MEDICAL_TEST,COMPANY_TURNOVER,NUMBER_OF_EMPLOYEES,BACKLOG_ELIGIBLE,PWD_ELIGIBLE,CPI ,COMPANY_TURNOVER,ESTABLISHMENT_DATE ,EXPECTED_NO_OF_OFFERS]) + def addPlacement(request): logger.info("JNF filled by " + str(request.data['email'])) logger.info(request.data) @@ -36,11 +36,28 @@ def addPlacement(request): opening.website = data[WEBSITE] opening.company_details = data[COMPANY_DETAILS] opening.is_company_details_pdf = data[IS_COMPANY_DETAILS_PDF] - if data[RS_ELIGIBLE] == 'Yes': - opening.rs_eligible = True + # if data[RS_ELIGIBLE] == 'Yes': + # opening.rs_eligible = True + # else: + # opening.rs_eligible = False + if data[PWD_ELIGIBLE] == 'Yes': + opening.pwd_eligible = True else: - opening.rs_eligible = False + opening.pwd_eligible = False + if data[BACKLOG_ELIGIBLE] == 'Yes': + opening.backlog_eligible = True + else: + opening.backlog_eligible = False + if data[PSYCHOMETRIC_TEST] == 'Yes': + opening.psychometric_test = True + else: + opening.psychometric_test = False + if data[MEDICAL_TEST] == 'Yes': + opening.medical_test = True + else: + opening.medical_test = False + opening.cpi_eligible = data[CPI] if opening.is_company_details_pdf: company_details_pdf = [] for file in files.getlist(COMPANY_DETAILS_PDF): @@ -113,6 +130,13 @@ def addPlacement(request): opening.compensation_CTC = None else: raise ValueError('Compensation CTC must be an integer') + # Newly added + if data[COMPANY_TURNOVER].isdigit(): + opening.company_turnover = int(data[COMPANY_TURNOVER]) + elif data[COMPANY_TURNOVER] is None: + opening.company_turnover = None + else: + raise ValueError('Company Turnover must be an integer') # Check if compensation_gross is integer if data[COMPENSATION_GROSS].isdigit(): @@ -195,6 +219,8 @@ def addPlacement(request): # Convert to date object opening.tentative_date_of_joining = datetime.datetime.strptime(data[TENTATIVE_DATE_OF_JOINING], '%d-%m-%Y').date() + opening.establishment_date = datetime.datetime.strptime(data[ESTABLISHMENT_DATE], + '%d-%m-%Y').date() # newly added field # Only Allowing Fourth Year for Placement opening.allowed_batch = [FOURTH_YEAR,] @@ -213,8 +239,17 @@ def addPlacement(request): opening.tentative_no_of_offers = None else: raise ValueError('Tentative No Of Offers must be an integer') - + # newly added + if data[EXPECTED_NO_OF_OFFERS].isdigit(): + opening.expected_no_of_offers = int(data[EXPECTED_NO_OF_OFFERS]) + elif data[EXPECTED_NO_OF_OFFERS] == 'null': + opening.expected_no_of_offers = None opening.other_requirements = data[OTHER_REQUIREMENTS] + # newly added + if data[NUMBER_OF_EMPLOYEES].isdigit(): + opening.number_of_employees = int(data[NUMBER_OF_EMPLOYEES]) + elif data[NUMBER_OF_EMPLOYEES] == 'null': + opening.number_of_employees = None opening.save() @@ -346,13 +381,13 @@ def autoFillInf(request): @api_view(['POST']) -@precheck([COMPANY_NAME, WEBSITE, IS_COMPANY_DETAILS_PDF, COMPANY_DETAILS, ADDRESS, - CITY, STATE, COUNTRY, PINCODE, COMPANY_TYPE, NATURE_OF_BUSINESS, IS_DESCRIPTION_PDF, - DESIGNATION, INTERNSHIP_LOCATION, DESCRIPTION, SEASON, START_DATE, END_DATE, WORK_TYPE, - ALLOWED_BRANCH, SOPHOMORES_ELIIGIBLE, RS_ELIGIBLE, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND, - FACILITIES, OTHER_FACILITIES, SELECTION_PROCEDURE_ROUNDS, SELECTION_PROCEDURE_DETAILS, IS_SELECTION_PROCEDURE_DETAILS_PDF, - SELECTION_PROCEDURE_DETAILS, OTHER_REQUIREMENTS, - CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE]) +# @precheck([COMPANY_NAME, WEBSITE, IS_COMPANY_DETAILS_PDF, COMPANY_DETAILS, ADDRESS, +# CITY, STATE, COUNTRY, PINCODE, COMPANY_TYPE, NATURE_OF_BUSINESS, IS_DESCRIPTION_PDF, +# DESIGNATION, INTERNSHIP_LOCATION, DESCRIPTION, SEASON, START_DATE, END_DATE, WORK_TYPE, +# ALLOWED_BRANCH, SOPHOMORES_ELIIGIBLE, RS_ELIGIBLE, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND, +# FACILITIES, OTHER_FACILITIES, SELECTION_PROCEDURE_ROUNDS, SELECTION_PROCEDURE_DETAILS, IS_SELECTION_PROCEDURE_DETAILS_PDF, +# SELECTION_PROCEDURE_DETAILS, OTHER_REQUIREMENTS, +# CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE]) def addInternship(request): logger.info("INF filled by " + str(request.data['email'])) logger.info(request.data) @@ -413,7 +448,7 @@ def addInternship(request): raise ValueError('Season must be a subset of ' + str(SEASONS)) internship.interning_period_from = datetime.datetime.strptime(data[START_DATE], '%d-%m-%Y').date() internship.interning_period_to = datetime.datetime.strptime(data[END_DATE], '%d-%m-%Y').date() - + internship.establishment_date = datetime.datetime.strptime(data[ESTABLISHMENT_DATE], '%d-%m-%Y').date() # newly added field if data[WORK_TYPE] == 'Work from home': internship.is_work_from_home = True else: @@ -434,14 +469,32 @@ def addInternship(request): else: raise ValueError('Allowed Branch must be a subset of ' + str(BRANCHES)) - if data[SOPHOMORES_ELIIGIBLE] == 'Yes': - internship.sophomore_eligible = True + # if data[SOPHOMORES_ELIIGIBLE] == 'Yes': + # internship.sophomore_eligible = True + # else: + # internship.sophomore_eligible = False + # if data[RS_ELIGIBLE] == 'Yes': + # internship.rs_eligible = True + # else: + # internship.rs_eligible = False + if data[PWD_ELIGIBLE] == 'Yes': + internship.pwd_eligible = True else: - internship.sophomore_eligible = False - if data[RS_ELIGIBLE] == 'Yes': - internship.rs_eligible = True + internship.pwd_eligible = False + if data[BACKLOG_ELIGIBLE] == 'Yes': + internship.backlog_eligible = True else: - internship.rs_eligible = False + internship.backlog_eligible = False + if data[PSYCHOMETRIC_TEST] == 'Yes': + internship.psychometric_test = True + else: + internship.psychometric_test = False + if data[MEDICAL_TEST] == 'Yes': + internship.medical_test = True + else: + internship.medical_test = False + + internship.cpi_eligible = data[CPI] if data[NUM_OFFERS].isdigit(): internship.tentative_no_of_offers = int(data[NUM_OFFERS]) else: @@ -463,6 +516,24 @@ def addInternship(request): internship.stipend = int(data[STIPEND]) else: raise ValueError('Stipend must be an integer') + # Newly added + if data[COMPANY_TURNOVER].isdigit(): + internship.company_turnover = int(data[COMPANY_TURNOVER]) + elif data[COMPANY_TURNOVER] is None: + internship.company_turnover = None + else: + raise ValueError('Company Turnover must be an integer') + # newly added + if data[EXPECTED_NO_OF_OFFERS].isdigit(): + internship.expected_no_of_offers = int(data[EXPECTED_NO_OF_OFFERS]) + elif data[EXPECTED_NO_OF_OFFERS] == 'null': + internship.expected_no_of_offers = None + internship.other_requirements = data[OTHER_REQUIREMENTS] + # newly added + if data[NUMBER_OF_EMPLOYEES].isdigit(): + internship.number_of_employees = int(data[NUMBER_OF_EMPLOYEES]) + elif data[NUMBER_OF_EMPLOYEES] == 'null': + internship.number_of_employees = None if data[FACILITIES] != "" : if json.loads(data[FACILITIES]) == "": internship.facilities_provided = [] diff --git a/CDC_Backend/APIs/constants.py b/CDC_Backend/APIs/constants.py index 51864db..d84f5b8 100644 --- a/CDC_Backend/APIs/constants.py +++ b/CDC_Backend/APIs/constants.py @@ -154,6 +154,7 @@ IS_DESCRIPTION_PDF = 'is_description_pdf' OPENING_TYPE = 'opening_type' JOB_LOCATION = 'job_location' COMPENSATION_CTC = 'compensation_ctc' +COMPANY_TURNOVER = 'company_turnover' # newly added field COMPENSATION_GROSS = 'compensation_gross' COMPENSATION_TAKE_HOME = 'compensation_take_home' COMPENSATION_BONUS = 'compensation_bonus' @@ -164,6 +165,11 @@ IS_COMPENSATION_DETAILS_PDF = 'is_compensation_details_pdf' ALLOWED_BATCH = 'allowed_batch' ALLOWED_BRANCH = 'allowed_branch' RS_ELIGIBLE = 'rs_eligible' +PWD_ELIGIBLE = 'pwd_eligible' # newly added field +BACKLOG_ELIGIBLE = 'backlog_eligible' # newly added field +PSYCHOMETRIC_TEST = 'pyschometric_test' # newly added field +MEDICAL_TEST = 'medical_test' # newly added field +CPI = 'cpi' # newly added field BOND_DETAILS = 'bond_details' SELECTION_PROCEDURE_ROUNDS = 'selection_procedure_rounds' SELECTION_PROCEDURE_DETAILS = 'selection_procedure_details' @@ -171,7 +177,10 @@ SELECTION_PROCEDURE_DETAILS_PDF = 'selection_procedure_details_pdf' SELECTION_PROCEDURE_DETAILS_PDF_NAMES = 'selection_procedure_details_pdf_names' IS_SELECTION_PROCEDURE_DETAILS_PDF = 'is_selection_procedure_details_pdf' TENTATIVE_DATE_OF_JOINING = 'tentative_date_of_joining' +ESTABLISHMENT_DATE = 'establishment_date' # newly added field TENTATIVE_NO_OF_OFFERS = 'tentative_no_of_offers' +EXPECTED_NO_OF_OFFERS = 'expected_no_of_offers' # newly added field +NUMBER_OF_EMPLOYEES = 'number_of_employees' # newly added field OTHER_REQUIREMENTS = 'other_requirements' DEADLINE_DATETIME = 'deadline_datetime' OFFER_ACCEPTED = 'offer_accepted' diff --git a/CDC_Backend/APIs/models.py b/CDC_Backend/APIs/models.py index bb5b9a0..b20c452 100644 --- a/CDC_Backend/APIs/models.py +++ b/CDC_Backend/APIs/models.py @@ -97,6 +97,7 @@ class Placement(models.Model): country = models.CharField(blank=False, max_length=JNF_SMALLTEXT_MAX_CHARACTER_COUNT, default="") pin_code = models.IntegerField(blank=False, default=None, null=True) city_type = models.CharField(blank=False, max_length=15, choices=OFFER_CITY_TYPE) + cpi_eligible = models.DecimalField(decimal_places=2, default=0.00, max_digits=4) #newly added field # Job Details designation = models.CharField(blank=False, max_length=JNF_TEXT_MAX_CHARACTER_COUNT, default=None, null=True) description = models.CharField(blank=False, max_length=JNF_TEXTAREA_MAX_CHARACTER_COUNT, default=None, null=True) @@ -106,6 +107,7 @@ class Placement(models.Model): blank=True) is_description_pdf = models.BooleanField(blank=False, default=False) compensation_CTC = models.IntegerField(blank=False, default=None, null=True) # Job - Per Year + company_turnover = models.IntegerField(blank=False, default=None, null=True) # newly added field compensation_gross = models.IntegerField(blank=False, default=None, null=True) compensation_take_home = models.IntegerField(blank=False, default=None, null=True) compensation_bonus = models.IntegerField(blank=True, default=None, null=True) @@ -124,6 +126,7 @@ class Placement(models.Model): is_selection_procedure_details_pdf = models.BooleanField(blank=False, default=False) tier = models.CharField(blank=False, choices=TIERS, max_length=10, default=None, null=True) tentative_date_of_joining = models.DateField(blank=False, verbose_name="Tentative Date", default=timezone.now) + establishment_date = models.DateField(blank=True, default=None, null=True) # newly added field allowed_batch = ArrayField( models.CharField(max_length=10, choices=BATCH_CHOICES), size=TOTAL_BATCHES, @@ -136,7 +139,13 @@ class Placement(models.Model): default=list ) tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True) - rs_eligible = models.BooleanField(blank=False, default=False) + expected_no_of_offers = models.IntegerField(blank=False , default=None , null=True) # newly added + number_of_employees = models.IntegerField(blank=False, default=None, null=True) # newly added field + rs_eligible = models.BooleanField(blank=True, default=False) # needs to be deleted + pwd_eligible = models.BooleanField(blank=True, default=False) #newly added field + backlog_eligible = models.BooleanField(blank=True, default=False) #newly added field + psychometric_test = models.BooleanField(blank=True, default=False) #newly added field + medical_test = models.BooleanField(blank=True, default=False) #newly added field other_requirements = models.CharField(blank=True, max_length=JNF_TEXTAREA_MAX_CHARACTER_COUNT, default="") additional_info = ArrayField(models.CharField(blank=True, max_length=JNF_TEXTMEDIUM_MAX_CHARACTER_COUNT), size=15, default=list, blank=True) @@ -326,7 +335,16 @@ class Internship(models.Model): ) sophomore_eligible = models.BooleanField(blank=False, default=False) rs_eligible = models.BooleanField(blank=False, default=False) - tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True) + tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True) + company_turnover = models.IntegerField(blank=True, default=None, null=True) # newly added field + establishment_date = models.DateField(blank=True, default=None, null=True) # newly added field + expected_no_of_offers = models.IntegerField(blank=True , default=None , null=True) # newly added + number_of_employees = models.IntegerField(blank=True, default=None, null=True) # newly added field + pwd_eligible = models.BooleanField(blank=True, default=False) #newly added field + backlog_eligible = models.BooleanField(blank=True, default=False) #newly added field + psychometric_test = models.BooleanField(blank=True, default=False) #newly added field + medical_test = models.BooleanField(blank=True, default=False) #newly added field + cpi_eligible = models.DecimalField(decimal_places=2, default=0.00, max_digits=4) #newly added field is_stipend_description_pdf = models.BooleanField(blank=False, default=False) stipend_description_pdf_names=ArrayField( models.CharField(null=True, default=None, max_length=JNF_TEXT_MAX_CHARACTER_COUNT), size=5, default=list, From 1b3f9bb383b3aa882a430bda13f2d8a8d892b4da Mon Sep 17 00:00:00 2001 From: CDC Date: Sat, 22 Jun 2024 14:46:22 +0530 Subject: [PATCH 2/5] start backend script --- start_backend_service.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 start_backend_service.sh diff --git a/start_backend_service.sh b/start_backend_service.sh new file mode 100644 index 0000000..443bdd8 --- /dev/null +++ b/start_backend_service.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +source /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/venv/bin/activate + +cd /home/cdc/Desktop/CDC_Web_Portal_Backend/cdc-placement-website-backend/CDC_Backend + +bash run_prod.sh From 32a52f956775385c63d89714e126eefd0f254447 Mon Sep 17 00:00:00 2001 From: NitinVangipuram Date: Fri, 19 Jul 2024 11:56:33 +0530 Subject: [PATCH 3/5] changes --- .github/workflows/django.yml | 71 ++++++++++++++++---------------- CDC_Backend/APIs/companyViews.py | 68 +++++++++++++++++------------- CDC_Backend/APIs/constants.py | 15 ++++++- CDC_Backend/APIs/models.py | 12 +++++- CDC_Backend/APIs/utils.py | 16 +++---- 5 files changed, 107 insertions(+), 75 deletions(-) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index a1e7a09..aa44349 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -1,33 +1,32 @@ -name: Django CI +name: Django CI -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] -env: +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] +env: HOSTING_URL: "http://localhost:8000/" DEBUG: True EMAIL: karthik.murakonda14@gmail.com - EMAIL_PASSWORD: 1234567890 + EMAIL_PASSWORD: 12345678901 EMAIL_VERIFICATION_SECRET_KEY: "b'<\xa3\xaf&d6\xa9sf\x19$\x96\xb7\x90\x8b\x88\x84\x0e\x191\xde,M\x90\x17(\xf7\nG\x13\x8d$\x9f&\xb0\xcd\xa4\xaf\xa9\x1b\x15\x02B\x8a\xaf\xff\x0c\x1e\xd5\xb3\x06\xb8\xa6\x9bQ\xa0TR\xe8\x98\x9ae\xe0n}\xcc/[\xdaFz\x18\xfeX\xaf\xbd\xd0\x88\xeal\xe3\xd2\xe3\xb8\x8c\x199{\xf3<\xb0\xc5\xd0\xe7*Rv\xda\xbb \x1d\x85~\xff%>\x1e\xb8\xa7\xbf\xbc\xb2\x06\x86X\xc3\x9f\x13<\x9fd\xea\xb5\x01\xa4\x7f\xa0\x1b\x8bO\x01h\xe8\xfd\x1f\xfe\xba\xbeg\\\xc2\xcb\xc3\xd1~\xff\xd5/9d\xa8\xa7x{\x16\xdb\\\xbb\x08\rI\xcd\x9e7\x8c~\x0f\x1d\x81rXZD\xf0\xf7\x87K\x8f\xfb,\xf4\xf0\xa5\x9e\xde^\xca\xae\x80|9b\x9b\xaaE\xba\xfb\xdf\x80\xb1\x99\x83e[\xf8\xce&Rq\x99\xdb}\xeeO\xd5\x18\x8d\x0bv\xe7\xab\xf9\xb9{\xb5u\xce\xcf\x90\xa6HE\xc5\x92p\x00\x158\xdf'" DB_NAME: cdc DB_USER: postgres DB_PASSWORD: postgres DB_HOST: localhost DB_PORT: 5432 - RECAPTCHA_SECRET_KEY: 6LfpadYhAAAAAJUIJQ_JJqkqq3arvalwkVCgW3nG - GOOGLE_OAUTH_CLIENT_ID: 628308091838-nvfn455vabbq7j0odd797sls8itpplmr.apps.googleusercontent.com + RECAPTCHA_SECRET_KEY: 6LfEjvIpAAAAAJDaURb3mGrojM1ocE6MbfYHeXRz + GOOGLE_OAUTH_CLIENT_ID: 1067900363992-7ncjho5g6j2v7maaff3ba0uhh57u4nc5.apps.googleusercontent.com SECRET_KEY: 9%2e!&f6(ib^690y48z)&w6fczhwukzzp@3y*^*7u+7%4s-mie - GOOGLE_OAUTH_CLIENT_SECRET: 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 + GOOGLE_OAUTH_CLIENT_SECRET: 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 REFRESH_TOKEN: 1//0gCf5fxAgSqNcCgYIARAAGBASNwF-L9IrIWxWwqmboeJkEzVn0sqxbaeyWXODE5s24V7pSdiAzFM2cxOUC9XT_xp7t_60o3JMfOg EMAIL_ID: 200010030@iitdh.ac.in ROLL_NO: 200010030 -jobs: - build: - - runs-on: ubuntu-latest +jobs: + build: + runs-on: ubuntu-latest services: postgres: @@ -40,25 +39,25 @@ jobs: - 5432:5432 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - strategy: - max-parallel: 4 - matrix: - python-version: [3.9] + strategy: + max-parallel: 4 + matrix: + python-version: [3.9] - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - name: Run Tests - run: | - cd CDC_Backend - python manage.py collectstatic - python manage.py makemigrations - python manage.py makemigrations APIs - python manage.py test + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run Tests + run: | + cd CDC_Backend + python manage.py collectstatic + python manage.py makemigrations + python manage.py makemigrations APIs + python manage.py test diff --git a/CDC_Backend/APIs/companyViews.py b/CDC_Backend/APIs/companyViews.py index f9d68a0..389c4de 100644 --- a/CDC_Backend/APIs/companyViews.py +++ b/CDC_Backend/APIs/companyViews.py @@ -7,14 +7,14 @@ logger = logging.getLogger('db') @api_view(['POST']) -# @precheck([COMPANY_NAME, ADDRESS, COMPANY_TYPE, NATURE_OF_BUSINESS, TYPE_OF_ORGANISATION, WEBSITE, COMPANY_DETAILS, -# IS_COMPANY_DETAILS_PDF, CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, CITY, STATE, COUNTRY, PINCODE, DESIGNATION, -# DESCRIPTION, -# IS_DESCRIPTION_PDF, COMPENSATION_CTC, COMPENSATION_GROSS, COMPENSATION_TAKE_HOME, COMPENSATION_BONUS, -# IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, RS_ELIGIBLE, SELECTION_PROCEDURE_ROUNDS, -# SELECTION_PROCEDURE_DETAILS, -# IS_SELECTION_PROCEDURE_DETAILS_PDF, TENTATIVE_DATE_OF_JOINING, TENTATIVE_NO_OF_OFFERS, OTHER_REQUIREMENTS, -# RECAPTCHA_VALUE, JOB_LOCATION,PSYCHOMETRIC_TEST,MEDICAL_TEST,COMPANY_TURNOVER,NUMBER_OF_EMPLOYEES,BACKLOG_ELIGIBLE,PWD_ELIGIBLE,CPI ,COMPANY_TURNOVER,ESTABLISHMENT_DATE ,EXPECTED_NO_OF_OFFERS]) +@precheck([COMPANY_NAME, ADDRESS, COMPANY_TYPE, NATURE_OF_BUSINESS, TYPE_OF_ORGANISATION, WEBSITE, COMPANY_DETAILS, + IS_COMPANY_DETAILS_PDF, CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, CITY, STATE, COUNTRY, PINCODE, DESIGNATION, + DESCRIPTION, + IS_DESCRIPTION_PDF, COMPENSATION_CTC, COMPENSATION_GROSS, COMPENSATION_TAKE_HOME, COMPENSATION_BONUS, + IS_COMPENSATION_DETAILS_PDF, ALLOWED_BRANCH, ELIGIBLESTUDENTS, SELECTION_PROCEDURE_ROUNDS, + SELECTION_PROCEDURE_DETAILS, + IS_SELECTION_PROCEDURE_DETAILS_PDF, TENTATIVE_DATE_OF_JOINING, TENTATIVE_NO_OF_OFFERS, OTHER_REQUIREMENTS, + RECAPTCHA_VALUE, JOB_LOCATION,PSYCHOMETRIC_TEST,MEDICAL_TEST,COMPANY_TURNOVER,NUMBER_OF_EMPLOYEES,BACKLOG_ELIGIBLE,PWD_ELIGIBLE,CPI ,COMPANY_TURNOVER,ESTABLISHMENT_DATE ,EXPECTED_NO_OF_OFFERS]) def addPlacement(request): logger.info("JNF filled by " + str(request.data['email'])) @@ -40,6 +40,14 @@ def addPlacement(request): # opening.rs_eligible = True # else: # opening.rs_eligible = False + print(data[ELIGIBLESTUDENTS]) + if data[ELIGIBLESTUDENTS] is None: + raise ValueError('Eligible Students cannot be empty') + elif set(json.loads(data[ELIGIBLESTUDENTS])).issubset(ELIGIBLE): + opening.eligiblestudents = json.loads(data[ELIGIBLESTUDENTS]) + else: + raise ValueError('Allowed Branch must be a subset of ' + str(ELIGIBLE)) + print(opening.eligiblestudents) if data[PWD_ELIGIBLE] == 'Yes': opening.pwd_eligible = True else: @@ -270,20 +278,19 @@ def addPlacement(request): except ValueError as e: store_all_files(request) - #exception_email(data) logger.warning("ValueError in addPlacement: " + str(e)) logger.warning(traceback.format_exc()) return Response({'action': "Add Placement", 'message': str(e)}, status=status.HTTP_400_BAD_REQUEST) - except: + except Exception as e: store_all_files(request) - #exception_email(data) - logger.warning("Add New Placement: " + str(sys.exc_info())) + logger.warning("Add New Placement: " + str(e)) logger.warning(traceback.format_exc()) - return Response({'action': "Add Placement", 'message': "Something went wrong"}, + return Response({'action': "Add Placement", 'message': "Something went wrong: " + str(e)}, status=status.HTTP_400_BAD_REQUEST) + @api_view(['POST']) @precheck([TOKEN]) def verifyEmail(request): @@ -381,13 +388,13 @@ def autoFillInf(request): @api_view(['POST']) -# @precheck([COMPANY_NAME, WEBSITE, IS_COMPANY_DETAILS_PDF, COMPANY_DETAILS, ADDRESS, -# CITY, STATE, COUNTRY, PINCODE, COMPANY_TYPE, NATURE_OF_BUSINESS, IS_DESCRIPTION_PDF, -# DESIGNATION, INTERNSHIP_LOCATION, DESCRIPTION, SEASON, START_DATE, END_DATE, WORK_TYPE, -# ALLOWED_BRANCH, SOPHOMORES_ELIIGIBLE, RS_ELIGIBLE, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND, -# FACILITIES, OTHER_FACILITIES, SELECTION_PROCEDURE_ROUNDS, SELECTION_PROCEDURE_DETAILS, IS_SELECTION_PROCEDURE_DETAILS_PDF, -# SELECTION_PROCEDURE_DETAILS, OTHER_REQUIREMENTS, -# CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE]) +@precheck([COMPANY_NAME, WEBSITE, IS_COMPANY_DETAILS_PDF, COMPANY_DETAILS, ADDRESS, + CITY, STATE, COUNTRY, PINCODE, COMPANY_TYPE, NATURE_OF_BUSINESS, IS_DESCRIPTION_PDF, + DESIGNATION, INTERNSHIP_LOCATION, DESCRIPTION, SEASON, START_DATE, END_DATE, WORK_TYPE, + ALLOWED_BRANCH, ELIGIBLESTUDENTS, NUM_OFFERS, IS_STIPEND_DETAILS_PDF, STIPEND, + FACILITIES, OTHER_FACILITIES, SELECTION_PROCEDURE_ROUNDS, SELECTION_PROCEDURE_DETAILS, IS_SELECTION_PROCEDURE_DETAILS_PDF, + SELECTION_PROCEDURE_DETAILS, OTHER_REQUIREMENTS, + CONTACT_PERSON_NAME, PHONE_NUMBER, EMAIL, RECAPTCHA_VALUE ,ESTABLISHMENT_DATE,PWD_ELIGIBLE,BACKLOG_ELIGIBLE,PSYCHOMETRIC_TEST,MEDICAL_TEST,CPI,EXPECTED_NO_OF_OFFERS,NUMBER_OF_EMPLOYEES,COMPANY_TURNOVER]) def addInternship(request): logger.info("INF filled by " + str(request.data['email'])) logger.info(request.data) @@ -473,10 +480,13 @@ def addInternship(request): # internship.sophomore_eligible = True # else: # internship.sophomore_eligible = False - # if data[RS_ELIGIBLE] == 'Yes': - # internship.rs_eligible = True - # else: - # internship.rs_eligible = False + if data[ELIGIBLESTUDENTS] is None: + raise ValueError('Eligible Students cannot be empty') + elif set(json.loads(data[ELIGIBLESTUDENTS])).issubset(ELIGIBLE): + internship.eligiblestudents = json.loads(data[ELIGIBLESTUDENTS]) + else: + raise ValueError('Allowed Branch must be a subset of ' + str(ELIGIBLE)) + print(internship.eligiblestudents) if data[PWD_ELIGIBLE] == 'Yes': internship.pwd_eligible = True else: @@ -598,15 +608,15 @@ def addInternship(request): status=status.HTTP_200_OK) except ValueError as e: store_all_files(request) - # exception_email(data) logger.warning("ValueError in addInternship: " + str(e)) logger.warning(traceback.format_exc()) return Response({'action': "Add Internship", 'message': str(e)}, status=status.HTTP_400_BAD_REQUEST) - except: + except Exception as e: store_all_files(request) - # exception_email(data) - logger.warning("Add New Internship: " + str(sys.exc_info())) + logger.warning("Add New Internship: " + str(e)) logger.warning(traceback.format_exc()) - return Response({'action': "Add Internship", 'message': "Something went wrong"}, + return Response({'action': "Add Internship", 'message': "Something went wrong: " + str(e)}, status=status.HTTP_400_BAD_REQUEST) + + \ No newline at end of file diff --git a/CDC_Backend/APIs/constants.py b/CDC_Backend/APIs/constants.py index d84f5b8..c5509a1 100644 --- a/CDC_Backend/APIs/constants.py +++ b/CDC_Backend/APIs/constants.py @@ -12,6 +12,12 @@ BRANCH_CHOICES = [ ['CHEMICAL', 'CHEMICAL'], ['BSMS', 'BSMS'], ] +ELIGIBLE_CHOICES = [ + ["Btech", "Btech"], + ["MS", "MS"], + ["MTech", "MTech"], + ["PHD", "PHD"], +] BRANCHES = [ "CSE", "EE", @@ -21,6 +27,12 @@ BRANCHES = [ "CHEMICAL", "BSMS", ] +ELIGIBLE =[ + "Btech", + "MS", + "MTech", + "PHD", +] BATCHES = [ #change it accordingly "2023", "2022", @@ -164,7 +176,8 @@ COMPENSATION_DETAILS_PDF_NAMES = 'compensation_details_pdf_names' IS_COMPENSATION_DETAILS_PDF = 'is_compensation_details_pdf' ALLOWED_BATCH = 'allowed_batch' ALLOWED_BRANCH = 'allowed_branch' -RS_ELIGIBLE = 'rs_eligible' +# RS_ELIGIBLE = 'rs_eligible' removed +ELIGIBLESTUDENTS= 'eligiblestudents'# newly adde field PWD_ELIGIBLE = 'pwd_eligible' # newly added field BACKLOG_ELIGIBLE = 'backlog_eligible' # newly added field PSYCHOMETRIC_TEST = 'pyschometric_test' # newly added field diff --git a/CDC_Backend/APIs/models.py b/CDC_Backend/APIs/models.py index b20c452..3744a1c 100644 --- a/CDC_Backend/APIs/models.py +++ b/CDC_Backend/APIs/models.py @@ -142,6 +142,11 @@ class Placement(models.Model): expected_no_of_offers = models.IntegerField(blank=False , default=None , null=True) # newly added number_of_employees = models.IntegerField(blank=False, default=None, null=True) # newly added field rs_eligible = models.BooleanField(blank=True, default=False) # needs to be deleted + eligiblestudents = ArrayField( + models.CharField(choices=ELIGIBLE_CHOICES, blank=False, max_length=10), + size=10, + default=list + ) pwd_eligible = models.BooleanField(blank=True, default=False) #newly added field backlog_eligible = models.BooleanField(blank=True, default=False) #newly added field psychometric_test = models.BooleanField(blank=True, default=False) #newly added field @@ -334,7 +339,12 @@ class Internship(models.Model): default=list ) sophomore_eligible = models.BooleanField(blank=False, default=False) - rs_eligible = models.BooleanField(blank=False, default=False) + rs_eligible = models.BooleanField(blank=False, default=False) # needs to be deleted + eligiblestudents = ArrayField( + models.CharField(choices=ELIGIBLE_CHOICES, blank=False, max_length=10), + size=10, + default=list + ) tentative_no_of_offers = models.IntegerField(blank=False, default=None, null=True) company_turnover = models.IntegerField(blank=True, default=None, null=True) # newly added field establishment_date = models.DateField(blank=True, default=None, null=True) # newly added field diff --git a/CDC_Backend/APIs/utils.py b/CDC_Backend/APIs/utils.py index 3d87410..9187682 100644 --- a/CDC_Backend/APIs/utils.py +++ b/CDC_Backend/APIs/utils.py @@ -81,22 +81,22 @@ def precheck(required_data=None): request_data = request.data if not len(request_data): request_data = request.POST - if len(request_data): + + if request_data and len(request_data): for i in required_data: - # print(i) if i not in request_data: return Response({'action': "Pre check", 'message': str(i) + " Not Found"}, status=status.HTTP_400_BAD_REQUEST) else: return Response({'action': "Pre check", 'message': "Message Data not Found"}, status=status.HTTP_400_BAD_REQUEST) - # print("Pre check: " + str(request_data)) + return view_func(request, *args, **kwargs) - except: - # print what exception is - print(traceback.format_exc()) - logger.warning("Pre check: " + str(sys.exc_info())) - return Response({'action': "Pre check", 'message': "Something went wrong"}, + + except Exception as e: + # Log the full traceback for debugging purposes + logger.error("Pre check error: %s", traceback.format_exc()) + return Response({'action': "Pre check", 'message': "Something went wrong: " + str(e)}, status=status.HTTP_400_BAD_REQUEST) return wrapper_func From 9990cdfa5a7928883d7507cc5dc966340f8ecbec Mon Sep 17 00:00:00 2001 From: NitinVangipuram Date: Fri, 19 Jul 2024 14:48:31 +0530 Subject: [PATCH 4/5] changes --- .github/workflows/django.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index aa44349..b6cb274 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -9,17 +9,17 @@ env: HOSTING_URL: "http://localhost:8000/" DEBUG: True EMAIL: karthik.murakonda14@gmail.com - EMAIL_PASSWORD: 12345678901 + EMAIL_PASSWORD: 1234567890 EMAIL_VERIFICATION_SECRET_KEY: "b'<\xa3\xaf&d6\xa9sf\x19$\x96\xb7\x90\x8b\x88\x84\x0e\x191\xde,M\x90\x17(\xf7\nG\x13\x8d$\x9f&\xb0\xcd\xa4\xaf\xa9\x1b\x15\x02B\x8a\xaf\xff\x0c\x1e\xd5\xb3\x06\xb8\xa6\x9bQ\xa0TR\xe8\x98\x9ae\xe0n}\xcc/[\xdaFz\x18\xfeX\xaf\xbd\xd0\x88\xeal\xe3\xd2\xe3\xb8\x8c\x199{\xf3<\xb0\xc5\xd0\xe7*Rv\xda\xbb \x1d\x85~\xff%>\x1e\xb8\xa7\xbf\xbc\xb2\x06\x86X\xc3\x9f\x13<\x9fd\xea\xb5\x01\xa4\x7f\xa0\x1b\x8bO\x01h\xe8\xfd\x1f\xfe\xba\xbeg\\\xc2\xcb\xc3\xd1~\xff\xd5/9d\xa8\xa7x{\x16\xdb\\\xbb\x08\rI\xcd\x9e7\x8c~\x0f\x1d\x81rXZD\xf0\xf7\x87K\x8f\xfb,\xf4\xf0\xa5\x9e\xde^\xca\xae\x80|9b\x9b\xaaE\xba\xfb\xdf\x80\xb1\x99\x83e[\xf8\xce&Rq\x99\xdb}\xeeO\xd5\x18\x8d\x0bv\xe7\xab\xf9\xb9{\xb5u\xce\xcf\x90\xa6HE\xc5\x92p\x00\x158\xdf'" DB_NAME: cdc DB_USER: postgres DB_PASSWORD: postgres DB_HOST: localhost DB_PORT: 5432 - RECAPTCHA_SECRET_KEY: 6LfEjvIpAAAAAJDaURb3mGrojM1ocE6MbfYHeXRz - GOOGLE_OAUTH_CLIENT_ID: 1067900363992-7ncjho5g6j2v7maaff3ba0uhh57u4nc5.apps.googleusercontent.com + RECAPTCHA_SECRET_KEY: 6LfpadYhAAAAAJUIJQ_JJqkqq3arvalwkVCgW3nG + GOOGLE_OAUTH_CLIENT_ID: 628308091838-nvfn455vabbq7j0odd797sls8itpplmr.apps.googleusercontent.com SECRET_KEY: 9%2e!&f6(ib^690y48z)&w6fczhwukzzp@3y*^*7u+7%4s-mie - GOOGLE_OAUTH_CLIENT_SECRET: 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 + GOOGLE_OAUTH_CLIENT_SECRET: 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 REFRESH_TOKEN: 1//0gCf5fxAgSqNcCgYIARAAGBASNwF-L9IrIWxWwqmboeJkEzVn0sqxbaeyWXODE5s24V7pSdiAzFM2cxOUC9XT_xp7t_60o3JMfOg EMAIL_ID: 200010030@iitdh.ac.in ROLL_NO: 200010030 From 6a46dc0dcdec294d0766d01d4fe2efd744755fce Mon Sep 17 00:00:00 2001 From: Vangipuram Nitin Date: Fri, 19 Jul 2024 15:07:12 +0530 Subject: [PATCH 5/5] changed django.yml --- .github/workflows/django.yml | 63 ++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml index b6cb274..a1e7a09 100644 --- a/.github/workflows/django.yml +++ b/.github/workflows/django.yml @@ -1,11 +1,11 @@ -name: Django CI +name: Django CI -on: - push: - branches: ["main"] - pull_request: - branches: ["main"] -env: +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] +env: HOSTING_URL: "http://localhost:8000/" DEBUG: True EMAIL: karthik.murakonda14@gmail.com @@ -24,9 +24,10 @@ env: EMAIL_ID: 200010030@iitdh.ac.in ROLL_NO: 200010030 -jobs: - build: - runs-on: ubuntu-latest +jobs: + build: + + runs-on: ubuntu-latest services: postgres: @@ -39,25 +40,25 @@ jobs: - 5432:5432 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - strategy: - max-parallel: 4 - matrix: - python-version: [3.9] + strategy: + max-parallel: 4 + matrix: + python-version: [3.9] - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - name: Run Tests - run: | - cd CDC_Backend - python manage.py collectstatic - python manage.py makemigrations - python manage.py makemigrations APIs - python manage.py test + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run Tests + run: | + cd CDC_Backend + python manage.py collectstatic + python manage.py makemigrations + python manage.py makemigrations APIs + python manage.py test