diff --git a/recruiters/admin.py b/recruiters/admin.py index 2388646..c3488e2 100644 --- a/recruiters/admin.py +++ b/recruiters/admin.py @@ -1,6 +1,12 @@ from django.contrib import admin -from .models import Recruiter, JobPost +from .models import Recruiter, JobPost,JobCategory, Country, Company # Register your models here. admin.site.register(Recruiter) -admin.site.register(JobPost) \ No newline at end of file +admin.site.register(JobCategory) +admin.site.register(Country) +admin.site.register(Company) + +@admin.register(JobPost) +class JobPostAdmin(admin.ModelAdmin): + list_display= ['job_title', 'category'] diff --git a/recruiters/migrations/0005_jobcategory.py b/recruiters/migrations/0005_jobcategory.py new file mode 100644 index 0000000..47553bb --- /dev/null +++ b/recruiters/migrations/0005_jobcategory.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.7 on 2023-03-16 08:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0004_alter_jobpost_recruiter'), + ] + + operations = [ + migrations.CreateModel( + name='JobCategory', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ], + ), + ] diff --git a/recruiters/migrations/0006_jobpost_category.py b/recruiters/migrations/0006_jobpost_category.py new file mode 100644 index 0000000..b8a0f3c --- /dev/null +++ b/recruiters/migrations/0006_jobpost_category.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.7 on 2023-03-16 08:15 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0005_jobcategory'), + ] + + operations = [ + migrations.AddField( + model_name='jobpost', + name='category', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='recruiters.jobcategory'), + preserve_default=False, + ), + ] diff --git a/recruiters/migrations/0007_alter_jobcategory_options.py b/recruiters/migrations/0007_alter_jobcategory_options.py new file mode 100644 index 0000000..6c2a4d5 --- /dev/null +++ b/recruiters/migrations/0007_alter_jobcategory_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.7 on 2023-03-16 08:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0006_jobpost_category'), + ] + + operations = [ + migrations.AlterModelOptions( + name='jobcategory', + options={'verbose_name': 'Category', 'verbose_name_plural': 'Categories'}, + ), + ] diff --git a/recruiters/migrations/0008_alter_jobpost_category.py b/recruiters/migrations/0008_alter_jobpost_category.py new file mode 100644 index 0000000..acae11a --- /dev/null +++ b/recruiters/migrations/0008_alter_jobpost_category.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.7 on 2023-03-16 08:44 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0007_alter_jobcategory_options'), + ] + + operations = [ + migrations.AlterField( + model_name='jobpost', + name='category', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='jobs', to='recruiters.jobcategory'), + ), + ] diff --git a/recruiters/migrations/0009_country_remove_recruiter_company_name_company_and_more.py b/recruiters/migrations/0009_country_remove_recruiter_company_name_company_and_more.py new file mode 100644 index 0000000..dc73992 --- /dev/null +++ b/recruiters/migrations/0009_country_remove_recruiter_company_name_company_and_more.py @@ -0,0 +1,39 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:05 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0008_alter_jobpost_category'), + ] + + operations = [ + migrations.CreateModel( + name='Country', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ], + ), + migrations.RemoveField( + model_name='recruiter', + name='company_name', + ), + migrations.CreateModel( + name='Company', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50)), + ('description', models.CharField(max_length=200)), + ('country', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='recruiters.country')), + ], + ), + migrations.AddField( + model_name='recruiter', + name='company', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='recruiters.company'), + ), + ] diff --git a/recruiters/migrations/0010_jobpost_company_jobpost_created_at.py b/recruiters/migrations/0010_jobpost_company_jobpost_created_at.py new file mode 100644 index 0000000..096ad26 --- /dev/null +++ b/recruiters/migrations/0010_jobpost_company_jobpost_created_at.py @@ -0,0 +1,24 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0009_country_remove_recruiter_company_name_company_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='jobpost', + name='company', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='recruiters.company'), + ), + migrations.AddField( + model_name='jobpost', + name='created_at', + field=models.DateTimeField(auto_now_add=True, null=True), + ), + ] diff --git a/recruiters/migrations/0011_alter_jobpost_company.py b/recruiters/migrations/0011_alter_jobpost_company.py new file mode 100644 index 0000000..9f537c6 --- /dev/null +++ b/recruiters/migrations/0011_alter_jobpost_company.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0010_jobpost_company_jobpost_created_at'), + ] + + operations = [ + migrations.AlterField( + model_name='jobpost', + name='company', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='recruiters.company'), + ), + ] diff --git a/recruiters/migrations/0012_remove_jobpost_company.py b/recruiters/migrations/0012_remove_jobpost_company.py new file mode 100644 index 0000000..2b58aa2 --- /dev/null +++ b/recruiters/migrations/0012_remove_jobpost_company.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:27 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0011_alter_jobpost_company'), + ] + + operations = [ + migrations.RemoveField( + model_name='jobpost', + name='company', + ), + ] diff --git a/recruiters/migrations/0013_remove_recruiter_company.py b/recruiters/migrations/0013_remove_recruiter_company.py new file mode 100644 index 0000000..8e1d8d3 --- /dev/null +++ b/recruiters/migrations/0013_remove_recruiter_company.py @@ -0,0 +1,17 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:29 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0012_remove_jobpost_company'), + ] + + operations = [ + migrations.RemoveField( + model_name='recruiter', + name='company', + ), + ] diff --git a/recruiters/migrations/0014_jobpost_company_recruiter_company.py b/recruiters/migrations/0014_jobpost_company_recruiter_company.py new file mode 100644 index 0000000..6fb00e4 --- /dev/null +++ b/recruiters/migrations/0014_jobpost_company_recruiter_company.py @@ -0,0 +1,24 @@ +# Generated by Django 4.1.7 on 2023-03-16 09:34 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('recruiters', '0013_remove_recruiter_company'), + ] + + operations = [ + migrations.AddField( + model_name='jobpost', + name='company', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='company', to='recruiters.company'), + ), + migrations.AddField( + model_name='recruiter', + name='company', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='recruiters.company'), + ), + ] diff --git a/recruiters/models.py b/recruiters/models.py index f1c8c71..b1b51b1 100644 --- a/recruiters/models.py +++ b/recruiters/models.py @@ -27,7 +27,7 @@ class EducationChoices(models.TextChoices): education = models.CharField(max_length=30, choices=EducationChoices.choices) about = models.TextField(max_length=50, null=True, blank=True) total_employees_hired = models.PositiveIntegerField(blank=False, null=False) - company_name = models.CharField(max_length=15, null=False, blank=False) + company = models.ForeignKey("recruiters.Company", on_delete=models.PROTECT, null=True) def __str__(self) -> str: return self.user.username @@ -70,11 +70,40 @@ class Jobtiming(models.TextChoices): required_experience = models.CharField(max_length=30) minimum_salary = models.PositiveIntegerField() maximum_salary = models.PositiveIntegerField() + created_at = models.DateTimeField(auto_now_add=True, null=True) salary_visibility = models.BooleanField(default=True) gender_prefrences = models.CharField(max_length=20, choices=GenderPreference.choices) + category = models.ForeignKey("recruiters.JobCategory", on_delete=models.PROTECT, related_name="jobs") + company = models.ForeignKey("recruiters.Company", on_delete=models.PROTECT, related_name='company', null=True) def __str__(self) -> str: return f"{self.job_title}, {self.job_location}" +class JobCategory(models.Model): + name = models.CharField(max_length=100) + + class Meta: + verbose_name = "Category" + verbose_name_plural = "Categories" + + + def __str__(self) -> str: + return self.name + +class Company(models.Model): + name = models.CharField(max_length=50) + description = models.CharField(max_length=200) + country = models.ForeignKey("recruiters.Country", on_delete=models.PROTECT) + + def __str__(self) -> str: + return self.name + + + +class Country(models.Model): + name = models.CharField(max_length=50) + + def __str__(self) -> str: + return self.name \ No newline at end of file diff --git a/recruiters/views.py b/recruiters/views.py index 3505235..1f4ceb0 100644 --- a/recruiters/views.py +++ b/recruiters/views.py @@ -1,10 +1,17 @@ from django.shortcuts import render -from .models import Recruiter +from .models import Recruiter, JobCategory, JobPost # Create your views here. def home(request): - return render(request, "index.html") + categories = JobCategory.objects.all().order_by("id") + jobposts = JobPost.objects.all().order_by("-created_at") + context = { + "jobcategories" : categories, + "header_categories": categories[:5], + "jobposts" : jobposts, + } + return render(request, "index.html", context=context) def post_job(request): return render(request,'new-job-post.html') diff --git a/templates/browsejobs.html b/templates/browsejobs.html index fc3df56..c972778 100644 --- a/templates/browsejobs.html +++ b/templates/browsejobs.html @@ -31,7 +31,7 @@

Browse Jobs

{{job.job_title}}

-
{{job.number_of_positions}}
+
{{job.company}}
{{job.job_location}}
diff --git a/templates/index.html b/templates/index.html index f99db00..e6cc2d9 100644 --- a/templates/index.html +++ b/templates/index.html @@ -285,39 +285,15 @@

Top Categories

-
- -
-
- -
-
- -
-
- -
-
+ {% for category in jobcategories %} +
+ +
+ {% endfor %} + + @@ -373,210 +349,19 @@

Search Expert Candidates

Recently Added Jobs

Featured Jobs Posts For This Week

- +
+ {% for jobpost in jobposts %}
- -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- - -
-
- - - -
- Apply Job -
-
-
- -
-
- @@ -590,6 +375,7 @@

Open Source Interactive Developer

+ {% endfor %}
-
{{job.number_of_positions}}
+
{{job.company}}
{{job.job_location}}