├── .gitattributes
├── .idea
├── misc.xml
├── modules.xml
├── ojss.iml
└── workspace.xml
├── __pycache__
├── __init__.cpython-36.pyc
├── settings.cpython-36.pyc
├── urls.cpython-36.pyc
└── wsgi.cpython-36.pyc
├── ojss
├── .idea
│ ├── misc.xml
│ ├── modules.xml
│ ├── ojss.iml
│ └── workspace.xml
├── db.sqlite3
├── manage.py
├── ojss
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-36.pyc
│ │ ├── settings.cpython-36.pyc
│ │ ├── urls.cpython-36.pyc
│ │ └── wsgi.cpython-36.pyc
│ ├── settings.py
│ ├── static
│ │ └── ojss_app
│ │ │ ├── css
│ │ │ ├── bootstrap.css
│ │ │ └── main.css
│ │ │ ├── images
│ │ │ └── bg.jpg
│ │ │ └── js
│ │ │ └── script.js
│ ├── templates
│ │ ├── base.html
│ │ ├── index_base.html
│ │ ├── ojss_app
│ │ │ ├── _calendarentry.html
│ │ │ ├── _job_item.html
│ │ │ ├── applicant_details.html
│ │ │ ├── appliedjobs.html
│ │ │ ├── category_drop_down.html
│ │ │ ├── createjob.html
│ │ │ ├── detail.html
│ │ │ ├── editjob.html
│ │ │ ├── form.html
│ │ │ ├── index.html
│ │ │ ├── interview.html
│ │ │ ├── job_details.html
│ │ │ ├── managejobs.html
│ │ │ ├── recruiterprofile.html
│ │ │ ├── seekerprofile.html
│ │ │ ├── seekerskill.html
│ │ │ ├── showapplicants.html
│ │ │ └── subcategory_drop_down.html
│ │ └── registration
│ │ │ ├── index.html
│ │ │ ├── recruiterlogin.html
│ │ │ └── seekerlogin.html
│ ├── urls.py
│ └── wsgi.py
└── ojss_app
│ ├── __init__.py
│ ├── __pycache__
│ ├── __init__.cpython-36.pyc
│ ├── admin.cpython-36.pyc
│ ├── backends.cpython-36.pyc
│ ├── forms.cpython-36.pyc
│ ├── models.cpython-36.pyc
│ └── views.cpython-36.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── backends.py
│ ├── forms.py
│ ├── migrations
│ ├── 0001_initial.py
│ ├── 0002_seekerprofile.py
│ ├── 0003_auto_20180507_0017.py
│ ├── 0004_auto_20180507_2056.py
│ ├── 0005_auto_20180507_2057.py
│ ├── 0006_remove_recruiterprofile_company_description.py
│ ├── 0007_recruiterprofile_recruiter.py
│ ├── 0008_seekerskillset.py
│ ├── 0009_auto_20180508_0853.py
│ ├── 0010_auto_20180508_1721.py
│ ├── 0011_auto_20180508_1723.py
│ ├── 0012_application_name.py
│ ├── 0013_auto_20180508_1728.py
│ ├── 0014_application_date.py
│ ├── 0015_message.py
│ ├── 0016_auto_20180509_1046.py
│ ├── 0017_message_date.py
│ ├── 0018_category.py
│ ├── 0019_job_category.py
│ ├── 0020_auto_20180509_1336.py
│ ├── 0021_subcategory_category.py
│ ├── 0022_job_sub_category.py
│ ├── 0023_interview.py
│ ├── 0024_auto_20180509_1737.py
│ ├── 0025_auto_20180509_2306.py
│ ├── 0026_auto_20180509_2307.py
│ ├── 0027_auto_20180509_2312.py
│ ├── 0028_auto_20180510_1824.py
│ ├── 0029_auto_20180510_1833.py
│ ├── 0030_auto_20180510_1833.py
│ ├── 0031_auto_20180510_1835.py
│ ├── 0032_auto_20180510_1838.py
│ ├── __init__.py
│ └── __pycache__
│ │ ├── 0001_initial.cpython-36.pyc
│ │ ├── 0002_seekerprofile.cpython-36.pyc
│ │ ├── 0003_auto_20180507_0017.cpython-36.pyc
│ │ ├── 0004_auto_20180507_2056.cpython-36.pyc
│ │ ├── 0005_auto_20180507_2057.cpython-36.pyc
│ │ ├── 0006_remove_recruiterprofile_company_description.cpython-36.pyc
│ │ ├── 0007_recruiterprofile_recruiter.cpython-36.pyc
│ │ ├── 0008_seekerskillset.cpython-36.pyc
│ │ ├── 0009_auto_20180508_0853.cpython-36.pyc
│ │ ├── 0010_auto_20180508_1721.cpython-36.pyc
│ │ ├── 0011_auto_20180508_1723.cpython-36.pyc
│ │ ├── 0012_application_name.cpython-36.pyc
│ │ ├── 0013_auto_20180508_1728.cpython-36.pyc
│ │ ├── 0014_application_date.cpython-36.pyc
│ │ ├── 0015_message.cpython-36.pyc
│ │ ├── 0016_auto_20180509_1046.cpython-36.pyc
│ │ ├── 0017_message_date.cpython-36.pyc
│ │ ├── 0018_category.cpython-36.pyc
│ │ ├── 0019_job_category.cpython-36.pyc
│ │ ├── 0020_auto_20180509_1336.cpython-36.pyc
│ │ ├── 0021_subcategory_category.cpython-36.pyc
│ │ ├── 0022_job_sub_category.cpython-36.pyc
│ │ ├── 0023_interview.cpython-36.pyc
│ │ ├── 0024_auto_20180509_1737.cpython-36.pyc
│ │ ├── 0025_auto_20180509_2306.cpython-36.pyc
│ │ ├── 0026_auto_20180509_2307.cpython-36.pyc
│ │ ├── 0027_auto_20180509_2312.cpython-36.pyc
│ │ ├── 0028_auto_20180510_1824.cpython-36.pyc
│ │ ├── 0029_auto_20180510_1833.cpython-36.pyc
│ │ ├── 0030_auto_20180510_1833.cpython-36.pyc
│ │ ├── 0031_auto_20180510_1835.cpython-36.pyc
│ │ ├── 0032_auto_20180510_1838.cpython-36.pyc
│ │ └── __init__.cpython-36.pyc
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── settings.py
├── static
└── ojss_app
│ ├── css
│ ├── bootstrap.css
│ └── main.css
│ ├── images
│ └── bg.jpg
│ └── js
│ └── script.js
├── templates
├── base.html
├── index_base.html
├── ojss_app
│ ├── _calendarentry.html
│ ├── _job_item.html
│ ├── detail.html
│ ├── form.html
│ ├── index.html
│ ├── job_details.html
│ └── seekerprofile.html
└── registration
│ ├── index.html
│ ├── recruiterlogin.html
│ └── seekerlogin.html
├── urls.py
└── wsgi.py
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/ojss.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | true
44 | DEFINITION_ORDER
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 | 1526884794597
175 |
176 |
177 | 1526884794597
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
--------------------------------------------------------------------------------
/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/__pycache__/settings.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/__pycache__/settings.cpython-36.pyc
--------------------------------------------------------------------------------
/__pycache__/urls.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/__pycache__/urls.cpython-36.pyc
--------------------------------------------------------------------------------
/__pycache__/wsgi.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/__pycache__/wsgi.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ojss/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ojss/.idea/ojss.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ojss/db.sqlite3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/db.sqlite3
--------------------------------------------------------------------------------
/ojss/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ojss.settings")
7 | try:
8 | from django.core.management import execute_from_command_line
9 | except ImportError as exc:
10 | raise ImportError(
11 | "Couldn't import Django. Are you sure it's installed and "
12 | "available on your PYTHONPATH environment variable? Did you "
13 | "forget to activate a virtual environment?"
14 | ) from exc
15 | execute_from_command_line(sys.argv)
16 |
--------------------------------------------------------------------------------
/ojss/ojss/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/__init__.py
--------------------------------------------------------------------------------
/ojss/ojss/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss/__pycache__/settings.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/__pycache__/settings.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss/__pycache__/urls.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/__pycache__/urls.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss/__pycache__/wsgi.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/__pycache__/wsgi.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for ojss project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.0.4.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.0/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = '3vcdwcmu6_ua_g66_a&y=j#8fl=ygf&0-s2$a5jeity4*#(!-e'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'ojss_app',
35 | 'django.contrib.admin',
36 | 'django.contrib.auth',
37 | 'django.contrib.contenttypes',
38 | 'django.contrib.sessions',
39 | 'django.contrib.messages',
40 | 'django.contrib.staticfiles',
41 | ]
42 |
43 |
44 | AUTH_USER_MODEL = 'ojss_app.User'
45 | AUTHENTICATION_BACKENDS = ('ojss_app.backends.CustomUserAuth',)
46 |
47 |
48 | MIDDLEWARE = [
49 | 'django.middleware.security.SecurityMiddleware',
50 | 'django.contrib.sessions.middleware.SessionMiddleware',
51 | 'django.middleware.common.CommonMiddleware',
52 | 'django.middleware.csrf.CsrfViewMiddleware',
53 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
54 | 'django.contrib.messages.middleware.MessageMiddleware',
55 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
56 | ]
57 |
58 | ROOT_URLCONF = 'ojss.urls'
59 |
60 | TEMPLATES = [
61 | {
62 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
63 | 'DIRS': ['ojss/templates'],
64 | 'APP_DIRS': True,
65 | 'OPTIONS': {
66 | 'context_processors': [
67 | 'django.template.context_processors.debug',
68 | 'django.template.context_processors.request',
69 | 'django.contrib.auth.context_processors.auth',
70 | 'django.contrib.messages.context_processors.messages',
71 | ],
72 | },
73 | },
74 | ]
75 |
76 | WSGI_APPLICATION = 'ojss.wsgi.application'
77 |
78 | LOGIN_URL = '/'
79 |
80 |
81 |
82 | # Database
83 | # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
84 |
85 | DATABASES = {
86 | 'default': {
87 | 'ENGINE': 'django.db.backends.sqlite3',
88 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
89 | }
90 | }
91 |
92 |
93 | # Password validation
94 | # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
95 |
96 | AUTH_PASSWORD_VALIDATORS = [
97 | {
98 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
99 | },
100 | {
101 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
102 | },
103 | {
104 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
105 | },
106 | {
107 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
108 | },
109 | ]
110 |
111 |
112 | # Internationalization
113 | # https://docs.djangoproject.com/en/2.0/topics/i18n/
114 |
115 | LANGUAGE_CODE = 'en-us'
116 |
117 | TIME_ZONE = 'UTC'
118 |
119 | USE_I18N = True
120 |
121 | USE_L10N = True
122 |
123 | USE_TZ = True
124 |
125 |
126 | # Static files (CSS, JavaScript, Images)
127 | # https://docs.djangoproject.com/en/2.0/howto/static-files/
128 |
129 | STATIC_URL = '/static/'
130 |
131 |
132 | STATICFILES_DIRS = (
133 | os.path.join(BASE_DIR, 'ojss/static'),
134 | )
135 |
--------------------------------------------------------------------------------
/ojss/ojss/static/ojss_app/css/main.css:
--------------------------------------------------------------------------------
1 |
2 | html{
3 | height: 100%;
4 | width: 100%;
5 | }
6 |
7 |
8 | /* Body transformations */
9 | body {
10 | margin: 0;
11 | padding: 0;
12 | background-color: #343a40;
13 | }
14 |
15 | /* Draws the line after navigation */
16 | .border {
17 | border-bottom: #3ca861;
18 | }
19 |
20 |
21 | /* Styling labels above the search box */
22 | .label {
23 | border-style: none;
24 | font-size: larger;
25 | text-transform: uppercase ;
26 | }
27 |
28 | /* Styling navbar */
29 | .navbar-item {
30 | margin-right: 30px;
31 | position: relative;
32 | }
33 |
34 | .navbar-item:before {
35 | content: "";
36 | position: absolute;
37 | width: 100%;
38 | height: 2px;
39 | bottom: 0;
40 | left: 0;
41 | background-color: #000;
42 | visibility: hidden;
43 | -webkit-transform: scaleX(0);
44 | transform: scaleX(0);
45 | -webkit-transition: all 0.3s ease-in-out 0s;
46 | transition: all 0.3s ease-in-out 0s;
47 | }
48 |
49 | .navbar-item:hover:before {
50 | visibility: visible;
51 | -webkit-transform: scaleX(1);
52 | transform: scaleX(1);
53 | }
54 |
55 |
56 |
57 | #messages{
58 |
59 | width: 100%;
60 | background-color: #3ca861;
61 | }
62 |
63 |
64 |
65 |
66 |
67 | .search-bar{
68 |
69 | margin-top: -35px;
70 | }
71 |
72 |
73 | /* Styling individual job listing in search */
74 | .job_list {
75 | color: #adb5bd;
76 | overflow: hidden;
77 | padding: 20px;
78 | border-style: inset;
79 | border-color: #ffffff;
80 | background-color: #0d0d0d;
81 | margin-top: 10px;
82 |
83 | }
84 |
85 |
86 | /* border in induvidual job listing */
87 | .border-job {
88 | border-bottom: #ffffff;
89 | border-style: inset;
90 |
91 | }
92 |
93 |
94 | /* hover styling for individual job listing */
95 |
96 | .job_list:hover .border-job {
97 |
98 | border-color: #bf2e29;
99 | transition: border-color ease-in .4s;
100 |
101 | }
102 |
103 |
104 |
105 | .job_list h1, h2, h3, h4, h5, h6 {
106 |
107 | color: #a9e0bc;
108 | }
109 |
110 | .job_list p {
111 | padding-top: 20px;
112 | }
113 |
114 |
115 |
116 | /* centering elements on a page */
117 | .page-center {
118 | width: 600px;
119 | margin: 110px auto;
120 | border-style: ridge;
121 | border-color: #e9edde;
122 | padding : 20px;
123 | border-width: thin;
124 | }
125 |
126 |
127 | /* styling form input boxes */
128 | input {
129 | margin-top: 20px;
130 | color: #ffffff;
131 | }
132 |
133 |
134 | /* Job details page styling */
135 |
136 |
137 | /* job detail page items */
138 |
139 | .job_details {
140 |
141 | padding: 20px;
142 | clear: both;
143 | overflow: hidden;
144 | background-color: #0d0d0d;
145 |
146 | }
147 |
148 |
149 |
150 | #job_name,#job_location, #job_organization, #job_renumeration {
151 |
152 |
153 | padding: 5px;
154 |
155 | }
156 |
157 |
158 |
159 | .border-job-details {
160 |
161 | overflow: auto;
162 | padding: 2px;
163 | border-color: #919aa1;
164 | background-color: #0d0d0d;
165 | border-style: groove;
166 |
167 | }
168 |
169 | .job_details p {
170 |
171 | padding-top: 20px;
172 | }
173 |
174 | .login-button{
175 | padding: 5px;
176 | }
177 |
178 | /* Logo Div Placement */
179 | .logo{
180 | margin-top: 40px;
181 | }
182 |
183 | /* logo text */
184 | .logo-text{
185 | color: #f0ad4e;
186 | }
187 |
188 | /* Login text such as signup and login */
189 | .login-text {
190 | color: #4BBF73;
191 | }
192 |
193 |
194 | .profile-form{
195 |
196 | width: 70%;
197 | margin: 0 auto;
198 |
199 | }
200 |
201 |
202 |
203 | .profile-form-style{
204 |
205 | width: 400px;
206 | height: 30px;
207 | margin-left: 30px;
208 |
209 | }
210 |
211 |
212 | .profile-edit-buttons{
213 |
214 | margin-top: 20px;
215 | margin-left: 500px;
216 | }
217 |
218 |
219 |
220 | .skill-edit-buttons{
221 |
222 | margin-top: 20px;
223 | }
224 |
225 |
226 | .skill-group {
227 |
228 | margin-top: 20px;
229 | }
230 |
231 |
232 | /* date pciker */
233 |
234 | .ui-datepicker {
235 | font-size: 20px;
236 | width: 200px;
237 | background: #bf2e29;
238 | border: 1px solid #555;
239 | color: #EEE;
240 | cursor: pointer;
241 | }
242 |
243 |
244 |
245 |
--------------------------------------------------------------------------------
/ojss/ojss/static/ojss_app/images/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss/static/ojss_app/images/bg.jpg
--------------------------------------------------------------------------------
/ojss/ojss/static/ojss_app/js/script.js:
--------------------------------------------------------------------------------
1 |
2 | // Takes care of showing and hiding the application forms
3 | function applicationViewer() {
4 |
5 | var x = document.getElementsByClassName("application-toggler")[0];
6 | var button = document.getElementById("applyButton");
7 |
8 | if (x.style.display == "none") {
9 |
10 | x.style.display = "block";
11 | button.innerHTML = "CANCEL APPLICATION";
12 | button.setAttribute('class','btn btn-warning');
13 |
14 | }
15 | else if (x.style.display == "block"){
16 |
17 | x.style.display = "none";
18 | button.innerHTML = "APPLY";
19 | button.setAttribute('class','btn btn-info');
20 | }
21 |
22 | }
23 |
24 |
25 | //take care of profile reset button
26 |
27 | function resetButton() {
28 |
29 |
30 | var inputItems = document.getElementsByClassName("input-control");
31 | var resetButton = document.getElementById("profileResetButton");
32 | var submitButton = document.getElementById('profileEditButton');
33 | var headerText = document.getElementById('profile-heading');
34 |
35 | headerText.innerText = "Profile";
36 | resetButton.style.display = 'None';
37 | submitButton.type = "submit";
38 | submitButton.innerText = "EDIT PROFILE";
39 |
40 | for (i = 0; i < inputItems.length ; i++) {
41 |
42 |
43 |
44 | inputItems[i].setAttribute("readonly","true");
45 | console.log("test" + 1);
46 |
47 |
48 | }
49 |
50 |
51 | }
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | // Takes care of the profile edit features for seeker
60 |
61 | function toggleProfileEdit() {
62 |
63 | var formElement = document.getElementById("profile-edit");
64 | var heading = document.getElementById("profile-heading");
65 | var submitButton = document.getElementById("profileEditButton");
66 | var resetButton = document.getElementById("profileResetButton");
67 | var dateButton = document.getElementsByClassName('date-picking')[0];
68 |
69 | if (submitButton.type == "button") {
70 |
71 | submitButton.type = "submit";
72 | submitButton.innerText = "Edit Profile";
73 | resetButton.style.display = "none";
74 | heading.innerText = "PROFILE";
75 |
76 |
77 |
78 |
79 | }
80 | else {
81 |
82 | submitButton.type = "button";
83 | submitButton.innerText = "Save Profile";
84 | resetButton.style.display = "inline";
85 | heading.innerText = "EDIT PROFILE";
86 |
87 |
88 | }
89 |
90 |
91 | var inputItems = document.getElementsByClassName("input-control");
92 | for (i = 0; i < inputItems.length ; i++) {
93 |
94 | if (inputItems[i].hasAttribute("readonly"))
95 |
96 | inputItems[i].removeAttribute("readonly");
97 |
98 | else {
99 |
100 | inputItems[i].setAttribute("readonly");
101 | }
102 |
103 | }
104 |
105 |
106 | var optionItem = document.getElementsByClassName("option-values");
107 | for (i=0; i < optionItem.length; i++) {
108 |
109 | if (optionItem[i].hasAttribute('disabled')) {
110 |
111 | optionItem[i].removeAttribute("disabled");
112 | console.log("check here disabled removed");
113 | }
114 | else {
115 | optionItem[i].setAttribute("disabled");
116 | console.log("disabled enabled");
117 | }
118 |
119 | }
120 |
121 | }
122 |
123 |
124 | function removeVal(){
125 |
126 | var textArea = document.getElementById('datepicker');
127 | textArea.setAttribute("value","");
128 | }
129 |
130 |
131 | //takes care of the reset/cancel button in skill form
132 |
133 | function resetSkill() {
134 |
135 | var resetButton = document.getElementById("skill-reset");
136 | var submitButton = document.getElementById("skill-submit");
137 | var inputFields = document.getElementsByClassName("skill-input-control");
138 | var heading = document.getElementById("skill-heading");
139 |
140 | resetButton.style.display = "None";
141 | submitButton.innerText = "EDIT SKILlS";
142 | submitButton.type = "submit";
143 | heading.innerText = "SKILLS";
144 |
145 | for( i=0; i < inputFields.length; i++) {
146 |
147 | inputFields[i].setAttribute("readonly");
148 |
149 | }
150 |
151 | }
152 |
153 |
154 |
155 | //takes care of the edit/submit button in the skill page
156 |
157 |
158 |
159 | function toggleSkillEdit() {
160 |
161 | var resetButton = document.getElementById("skill-reset");
162 | var submitButton = document.getElementById("skill-submit");
163 | var inputFields = document.getElementsByClassName("skill-input-control");
164 | var heading = document.getElementById("skill-heading");
165 |
166 | if (submitButton.type == "button") {
167 |
168 | submitButton.type = "submit";
169 | submitButton.innerText = "EDIT SKILLS";
170 | resetButton.style.display = "none";
171 | heading.innerText = "SKILLS";
172 |
173 |
174 |
175 | }
176 | else {
177 |
178 | submitButton.type = "button";
179 | submitButton.innerText = "SAVE SKILLS";
180 | resetButton.style.display = "inline";
181 | heading.innerText = "EDIT SKILLS";
182 |
183 |
184 | }
185 |
186 |
187 |
188 | for (i = 0; i < inputFields.length ; i++) {
189 |
190 | if (inputFields[i].hasAttribute("readonly")) {
191 |
192 | inputFields[i].removeAttribute("readonly");
193 | console.log("remove readonly");
194 |
195 | }
196 |
197 | else {
198 |
199 | inputFields[i].setAttribute("readonly");
200 | console.log("add read only")
201 | }
202 |
203 | }
204 |
205 |
206 | }
207 |
208 |
209 |
210 | function showInterviewForm() {
211 |
212 | var interviewButton = document.getElementById('interview-button');
213 | var interviewForm = document.getElementById('interview-form');
214 |
215 | if (interviewForm.style.display == 'none') {
216 |
217 | interviewForm.style.display = 'block';
218 | interviewButton.innerText = "CANCEL INTERVIEW FORM";
219 |
220 | }
221 |
222 | else {
223 |
224 | interviewForm.style.display = 'none'
225 | interviewButton.innerText = "SEND INTERVIEW CALL";
226 | }
227 |
228 | }
229 |
230 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/base.html:
--------------------------------------------------------------------------------
1 | {% load staticfiles %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | OJSS
12 |
13 |
14 |
15 | {% if request.user.is_seeker or request.user == None %}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | OJSS
29 |
30 |
32 |
33 |
34 |
35 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | {% else %}
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | OJSS
76 |
77 |
79 |
80 |
81 |
82 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | {% endif %}
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 | Search Keywords
121 |
122 |
123 |
124 |
125 |
126 |
127 | Search by
129 |
130 |
131 |
132 |
133 |
134 |
135 | Category
137 |
138 |
139 |
140 |
141 |
142 |
143 | Sub Category
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 | {% block content %}
257 | {% endblock content %}
258 |
259 |
260 |
261 |
262 |
263 |
373 |
374 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/index_base.html:
--------------------------------------------------------------------------------
1 | {% load staticfiles %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
22 | OJSS
23 |
24 |
25 |
26 |
27 | {% block content %}
28 |
29 |
30 | {% endblock %}
31 |
32 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/_calendarentry.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ entry.name }}
6 |
{{ entry.date }}
7 |
{{ entry.desc }}
8 |
View Details
9 |
Delete
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/_job_item.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {% if results %}
4 |
5 | {% for item in results %}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
{{ item.job_role }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Organization :{{ item.organization }}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
Location : {{ item.location }}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
Renumeration : {{ item.remuneration }}
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
Deadline : {{ item.deadline }}
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
{{ item.job_description|slice:":255" }}
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | Details
74 |
75 |
76 |
77 |
78 |
79 |
80 | {% endfor %}
81 |
82 | {% else %}
83 |
84 |
85 |
86 |
87 | {% if messages %}
88 |
89 | {% for message in messages %}
90 |
91 |
92 |
{{ message }}
93 |
94 |
95 |
96 | {% endfor %}
97 |
98 | {% endif %}
99 |
100 |
101 |
102 |
103 |
104 | {% endif %}
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/applicant_details.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {% if messages %}
12 |
13 | {% for message in messages %}
14 |
15 |
{{ message }}
16 |
17 | {% endfor %}
18 |
19 | {% endif %}
20 |
21 |
22 |
23 |
24 | {% comment %}
25 |
26 |
27 | {% if not status %}
28 |
29 |
78 |
79 |
80 | {% else %}
81 |
82 |
You have already sent interview invite
83 |
84 |
85 |
86 | {% for field in form %}
87 |
88 | {% if field.label == 'Interview date' %}
89 |
90 |
91 |
92 | {{field.label}}
93 |
95 |
96 |
97 |
98 | {% else %}
99 |
100 |
101 |
102 | {{field.label}}
103 |
105 |
106 |
107 |
108 | {% endif %}
109 |
110 |
111 | {% endfor %}
112 |
113 |
114 |
115 | {% endif %}
116 |
117 |
{% endcomment %}
118 |
119 |
120 |
121 |
122 | {% if seeker and application %}
123 |
124 |
125 |
126 |
Applicant Details
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | Application Status
137 |
138 | {% if application.status == 'A' %}
139 | ACTIVE APPLICATION
140 |
141 |
142 |
143 | ACCEPT APPLICATION
144 |
145 |
146 |
147 | REJECT APPLICATION
148 |
149 | {% elif application.status == 'S' %}
150 | APPLICANT SELECTED
151 |
152 |
153 |
154 | SEND INTERVIEW CALL
155 |
156 |
157 | REJECT APPLICATION
158 |
159 | {% elif application.status == 'I' %}
160 |
161 |
162 | INTERVIEW INVITE SENT
163 |
164 | {% else %} APPLICANT REJECTED
165 |
166 |
167 |
168 | RE-ACCEPT APPLICATION
169 |
170 |
171 | {% endif %}
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 | First Name
180 | {{ seeker.first_name }}
181 |
182 |
183 |
184 | Last Name
185 | {{ seeker.last_name }}
186 |
187 |
188 |
189 | Matching Score
190 | {{ application.matching_score }}
191 |
192 |
193 |
194 | Cover Letter
195 | {{ application.cover_letter }}
196 |
197 |
198 |
199 | CV
200 | {{ application.cv }}
201 |
202 |
203 |
204 | Gender
205 | {% if seeker.gender == 'M' %} Male {% else %} Female {% endif %}
206 |
207 |
208 |
209 | Address
210 | {{ seeker.address }}
211 |
212 |
213 |
214 | Phone
215 | {{ seeker.phone }}
216 |
217 |
218 |
219 | Current Job
220 | {{ seeker.current_job_role }}
221 |
222 |
223 |
224 | Current Company
225 | {{ seeker.current_company }}
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 | {% endif %}
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 | {% endblock %}
246 |
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/appliedjobs.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | {% if applications %}
15 |
16 |
Applied Jobs
17 |
18 |
19 |
20 |
21 | #
22 | Application Id
23 | Your Score
24 | Applied date
25 | Status
26 |
27 |
28 |
29 |
30 |
31 | {% for item in applications %}
32 |
33 |
34 |
35 | {% if item.status == 'A' %}
36 |
37 | {% elif item.status == 'I' %}
38 |
39 | {% elif item.status == 'R' %}
40 |
41 | {% else %}
42 |
43 | {% endif %}
44 |
45 |
46 | {{ forloop.counter }}
47 | {{ item.id }}
48 | {{ item.matching_score }}
49 | {{ item.date }}
50 | {% if item.status == 'R' %}
51 | Application rejected
52 | {% elif item.status == "A" %}
53 | Application sent
54 | {% elif item.status == "I" %}
55 | Selected for interview
56 | {% else %} Selected for next round
57 | {% endif %}
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | {% endfor %}
66 |
67 |
68 |
69 |
70 |
71 | {% else %}
72 |
73 |
You have not applied for any jobs
74 |
75 | {% endif %}
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/category_drop_down.html:
--------------------------------------------------------------------------------
1 |
2 | {% for item in category %}
3 | {{ item.category_name }}
4 | {% endfor %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/createjob.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {% if messages %}
12 |
13 | {% for message in messages %}
14 |
15 |
{{ message }}
16 |
17 | {% endfor %}
18 |
19 | {% endif %}
20 |
21 |
22 |
23 |
24 |
43 |
44 |
45 |
163 |
164 | {% endif %}
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/detail.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
Back
7 |
8 |
{{ entries.name }}
9 |
{{ entries.date }}
10 |
11 |
12 |
13 |
14 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/editjob.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | {% if messages %}
13 |
14 | {% for message in messages %}
15 |
16 |
{{ message }}
17 |
18 | {% endfor %}
19 |
20 | {% endif %}
21 |
22 |
23 |
24 | {% if form %}
25 |
26 |
27 |
EDIT JOB
28 |
29 |
30 | {% endif %}
31 |
32 |
33 |
34 |
156 |
157 |
158 |
159 |
160 |
161 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/form.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
37 |
38 |
39 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/index.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "base.html" %}
3 |
4 | {% block content %}
5 |
6 |
7 | {% if request.user.is_seeker %}
8 |
9 |
10 |
11 | {% include 'ojss_app/_job_item.html' %}
12 |
13 |
14 | {% else %}
15 |
16 |
17 | {% if messages %}
18 |
19 | {% for message in messages %}
20 |
21 | {% if message.tags == 'success' %}
22 |
25 | {% endif %}
26 | {% endfor %}
27 |
28 | {% endif %}
29 |
30 |
31 |
32 |
33 | {% include 'ojss_app/_job_item.html' %}
34 |
35 |
36 |
37 |
38 |
39 |
40 | {% endif %}
41 |
42 |
43 |
44 |
45 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/interview.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "base.html" %}
3 |
4 | {% block content %}
5 |
6 |
7 |
8 |
9 | {% if not status %}
10 |
11 |
60 |
61 |
62 | {% else %}
63 |
64 |
You have already sent interview invite
65 |
66 |
67 |
68 | {% for field in form %}
69 |
70 | {% if field.label == 'Interview date' %}
71 |
72 |
73 |
74 | {{field.label}}
75 |
77 |
78 |
79 |
80 | {% else %}
81 |
82 |
83 |
84 | {{field.label}}
85 |
87 |
88 |
89 |
90 | {% endif %}
91 |
92 |
93 | {% endfor %}
94 |
95 |
96 |
97 | {% endif %}
98 |
99 |
100 |
101 |
102 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/job_details.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 | {% if messages %}
11 |
12 | {% for message in messages %}
13 |
14 |
15 |
{{ message }}
16 |
17 |
18 |
19 | {% endfor %}
20 |
21 | {% endif %}
22 |
23 |
24 |
25 |
26 |
27 |
28 | {% if form %}
29 |
30 |
31 |
JOB APPLICATION FORM
32 |
33 | {% csrf_token %}
34 | {% for field in form %}
35 |
36 |
37 | {{ field.label }}
38 |
40 |
41 |
42 |
43 |
44 | {% endfor %}
45 |
46 | APPLY
47 |
48 |
49 |
50 | {% endif %}
51 |
52 |
53 |
54 |
55 | {% if job %}
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
{{ job.job_role }}
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
Organization : {{ job.organization }}
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
Location : {{ job.location }}
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
Renumeration : {{ job.remuneration }}
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
Required Skills   :   
101 | {{ job.skill_required_1 }}  
102 | {{ job.skill_required_2 }}
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
Desirable Skills   :   
113 | {% if job.skill_required_3 %} {{ job.skill_required_3 }} {% endif %}  
114 | {% if job.skill_required_4 %} {{ job.skill_required_4 }} {% endif %}   
115 | {% if job.skill_required_5 %} {{ job.skill_required_5 }} {% endif %}
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 | {% if request.user.is_seeker and status == 'T' %}
128 | Apply
130 |
131 | {% else %}
132 |
You have already applied for this job
133 | {% endif %}
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
{{ job.job_description }}
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 | {% endif %}
158 |
159 |
160 |
161 |
162 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/managejobs.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
19 |
20 |
21 |
22 |
23 | {% if messages %}
24 |
25 | {% for message in messages %}
26 |
27 |
{{ message }}
28 |
29 | {% endfor %}
30 |
31 | {% endif %}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | {% if jobs %}
49 |
50 |
Created Jobs
51 |
52 |
53 |
54 |
55 | #
56 | Job Role
57 | Job Description
58 | Remuneration
59 | Posted Date
60 | Deadline
61 | Advertised (Yes/No)
62 |
63 |
64 |
65 |
66 |
67 |
68 | {% for item in jobs %}
69 |
70 | {% if item.job_ad_flag == 'Y' or item.job_ad_flag == 'y' %}
71 |
72 |
73 |
74 |
75 | {{ forloop.counter }}
76 | {{ item.job_role }}
77 | {{ item.job_description }}
78 | {{ item.remuneration }}
79 | {{ item.posted_date }}
80 | {{ item.deadline }}
81 | {{ item.job_ad_flag }}
82 |
83 |
84 | VIEW APPLICATIONS
85 |
86 |
87 |
88 | EDIT JOB
89 |
90 |
91 |
92 |
93 | {% endif %}
94 |
95 |
96 |
97 | {% endfor %}
98 |
99 | {% for item in jobs %}
100 |
101 | {% if item.job_ad_flag == 'N' or item.job_ad_flag == 'n' %}
102 |
103 |
104 |
105 |
106 | {{ forloop.counter }}
107 | {{ item.job_role }}
108 | {{ item.job_description }}
109 | {{ item.remuneration }}
110 | {{ item.posted_date }}
111 | {{ item.deadline }}
112 | {{ item.job_ad_flag }}
113 |
114 |
115 | VIEW APPLICATIONS
116 |
117 |
118 |
119 | EDIT JOB
120 |
121 |
122 |
123 |
124 | {% endif %}
125 |
126 |
127 |
128 | {% endfor %}
129 |
130 |
131 |
132 |
133 |
134 | {% else %}
135 |
136 |
You have not created any jobs
137 |
138 | {% endif %}
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/recruiterprofile.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/seekerprofile.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/seekerskill.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/showapplicants.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {% if messages %}
12 |
13 | {% for message in messages %}
14 |
15 |
{{ message }}
16 |
17 | {% endfor %}
18 |
19 | {% endif %}
20 |
21 |
22 |
23 | {% if applications %}
24 |
25 |
26 |
27 |
Applicants
28 |
29 |
30 |
31 |
32 | #
33 | Applicant name
34 | Matching Score
35 |
36 |
37 |
38 |
39 |
40 | {% for item in applications %}
41 |
42 |
43 |
44 |
45 | {{ forloop.counter }}
46 | {{ item.seeker_name }}
47 | {{ item.matching_score }}
48 |
49 |
50 |
51 | More Details
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | {% endfor %}
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | {% else %}
68 |
69 |
70 |
71 |
You dont have any applicants currently
72 |
73 |
74 |
75 |
76 |
77 |
78 | {% endif %}
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/ojss_app/subcategory_drop_down.html:
--------------------------------------------------------------------------------
1 |
2 | {% for item in sub_category %}
3 | {{ item.sub_category_name }}
4 | {% endfor %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/registration/index.html:
--------------------------------------------------------------------------------
1 | {% extends 'index_base.html' %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Online Job Seeking System
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
Login
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
60 |
61 |
62 |
67 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | {% endblock %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/registration/recruiterlogin.html:
--------------------------------------------------------------------------------
1 | {% extends "index_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Online Job Seeking System
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
SIGN UP AS A JOB RECRUITER
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {% csrf_token %}
31 |
32 | {% for field in form %}
33 |
34 | {% if field.label == "Password" or field.label == "Password confirmation"%}
35 |
36 |
37 |
38 | {% else %}
39 |
40 | {% endif %}
41 | {{ field.errors }}
42 |
43 | {% endfor %}
44 |
45 | Sign Up
46 |
47 |
48 |
49 |
50 |
51 |
58 |
59 |
60 |
61 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/templates/registration/seekerlogin.html:
--------------------------------------------------------------------------------
1 | {% extends "index_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
Online Job Seeking System
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
SIGN UP AS A JOB SEEKER
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {% csrf_token %}
31 |
32 | {% for field in form %}
33 |
34 | {% if field.label == "Password" or field.label == "Password confirmation"%}
35 |
36 |
37 |
38 | {% else %}
39 |
40 | {% endif %}
41 | {{ field.errors }}
42 |
43 | {% endfor %}
44 |
45 | Sign Up
46 |
47 |
48 |
49 |
50 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock content %}
--------------------------------------------------------------------------------
/ojss/ojss/urls.py:
--------------------------------------------------------------------------------
1 | """ojss URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.0/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path
18 | from ojss_app import views
19 | from django.contrib.auth.views import login
20 |
21 | urlpatterns = [
22 | path('admin/', admin.site.urls),
23 | path("", views.index, name='index'),
24 | path("search", views.search, name='search'),
25 | path("job_details/",views.job_details, name="job_details"),
26 | path("apply/", views.apply, name='apply'),
27 | path("see_applications", views.my_applications, name="my_applications"),
28 | path("seeker_register",views.seekerRegister, name='seeker_register'),
29 | path("recruiter_register", views.recruiterRegister, name='recruiter_register'),
30 | path("^search?", views.search_for_jobs, name="search_list"),
31 | path("seekerprofile",views.seekerProfile, name= 'seeker_profile'),
32 | path("recruiterprofile",views.recruiterProfile, name='recruiter_profile'),
33 | path("skills",views.skills, name='skills'),
34 | path("add_jobs", views.add_job, name='add_job'),
35 | path("manage_jobs", views.manage_jobs, name='manage_jobs'),
36 | path('job_edit/', views.edit_job, name='job_edit'),
37 | path('applications/',views.applications, name='applications'),
38 | path('applicant_details//',views.applicant_details, name='applicant_details'),
39 | path('accept_applicant/',views.accept_applicant, name='accept_applicant'),
40 | path('reject_applicant/',views.reject_applicant, name='reject_applicant'),
41 | path('logout', views.logout_user, name='logout'),
42 | path('ajax/load_subcategory',views.subcategory, name='subcategory'),
43 | path('interview_call/', views.interview_call, name='send_interview_call'),
44 | path('ajax/load_category', views.category, name='category')
45 | ]
46 |
47 | #change add_jobs and job_edits
--------------------------------------------------------------------------------
/ojss/ojss/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for ojss project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ojss.settings")
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/ojss/ojss_app/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__init__.py
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/admin.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/admin.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/backends.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/backends.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/forms.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/forms.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/models.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/models.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/__pycache__/views.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/__pycache__/views.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 | from .models import User,SeekerProfile,RecruiterProfile,Job,SeekerSkillset
3 |
4 |
5 |
6 |
7 |
8 | admin.site.register(User)
9 | admin.site.register(SeekerProfile)
10 | admin.site.register(Job)
11 | admin.site.register(RecruiterProfile)
12 | admin.site.register(SeekerSkillset)
--------------------------------------------------------------------------------
/ojss/ojss_app/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class OjssAppConfig(AppConfig):
5 | name = 'ojss_app'
6 |
--------------------------------------------------------------------------------
/ojss/ojss_app/backends.py:
--------------------------------------------------------------------------------
1 | from .models import User
2 |
3 |
4 | class CustomUserAuth(object):
5 |
6 | def authenticate(self, username=None, password=None):
7 | try:
8 | user = User.object.get(email=username)
9 | if user.check_password(password):
10 | return user
11 | except User.DoesNotExist:
12 | return None
13 |
14 | def get_user(self,user_id):
15 | try:
16 | user = User.object.get(pk=user_id)
17 | if user.is_active:
18 | return user
19 | return None
20 | except User.DoesNotExist:
21 | return None
--------------------------------------------------------------------------------
/ojss/ojss_app/forms.py:
--------------------------------------------------------------------------------
1 | from django import forms
2 | from django.forms import ModelForm
3 | from django.contrib.auth.forms import UserCreationForm
4 | from django.contrib.auth.forms import ReadOnlyPasswordHashField
5 | from .models import User,SeekerProfile,RecruiterProfile,SeekerSkillset,Job,Category,Subcategory, Interview, Application
6 |
7 |
8 |
9 | class SeekerRegistrationForm(UserCreationForm):
10 | email = forms.EmailField(required=True,max_length=255)
11 |
12 |
13 | class Meta:
14 | model = User
15 | fields = (
16 | 'email',
17 | 'password1',
18 | 'password2'
19 | )
20 |
21 |
22 | def save(self, commit=True):
23 | user = super(UserCreationForm,self).save(commit=False)
24 | user.email = self.cleaned_data['email']
25 | user.set_password(self.cleaned_data['password1'])
26 | user.is_seeker = True
27 | user.is_recruiter = False
28 |
29 | if commit:
30 | user.save()
31 |
32 |
33 | return user
34 |
35 |
36 | class RecruiterRegistrationForm(UserCreationForm):
37 | email = forms.EmailField(required=True,max_length=255)
38 |
39 | class Meta:
40 | model = User
41 |
42 | fields = (
43 | 'email',
44 | 'password1',
45 | 'password2'
46 |
47 | )
48 |
49 |
50 | def save(self, commit=True):
51 | user = super(UserCreationForm,self).save(commit=False)
52 | user.email = self.cleaned_data['email']
53 | user.set_password(self.cleaned_data['password1'])
54 | user.is_seeker = False
55 | user.is_recruiter = True
56 |
57 | if commit:
58 | user.save()
59 |
60 | return user
61 |
62 |
63 |
64 | class SeekerProfileForm(forms.Form):
65 |
66 |
67 | class Meta:
68 | model = SeekerProfile
69 |
70 | GENDER_CHOICES = [
71 | ('M', 'MALE'),
72 | ('F', 'FEMALE'),
73 | ]
74 |
75 | first_name = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
76 | last_name = forms.CharField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
77 | gender = forms.ChoiceField(label='Gender',choices=GENDER_CHOICES,widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
78 | address = forms.CharField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
79 | phone = forms.IntegerField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
80 | birthDate = forms.DateTimeField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
81 | current_job_role = forms.CharField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
82 | current_company = forms.CharField(widget=forms.TextInput(attrs={'class' : 'profile-form-style'}))
83 |
84 |
85 |
86 | class RecruiterProfileForm(forms.Form):
87 |
88 |
89 | class Meta:
90 | model = RecruiterProfile
91 |
92 | GENDER_CHOICES = [
93 | ('M', 'MALE'),
94 | ('F', 'FEMALE'),
95 | ]
96 |
97 | first_name = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
98 | last_name = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
99 | gender = forms.ChoiceField(label='Gender', choices=GENDER_CHOICES,
100 | widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
101 | company_name = forms.CharField(widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
102 | company_address = forms.CharField(widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
103 | company_phone = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
104 | job_role = forms.CharField(widget=forms.TextInput(attrs={'class': 'profile-form-style'}))
105 |
106 |
107 |
108 | class SkillForm(forms.Form):
109 |
110 | class Meta:
111 | model = SeekerSkillset
112 |
113 | skill_1 = forms.CharField(max_length=255)
114 | skill_2 = forms.CharField(max_length=255, required=False)
115 | skill_3 = forms.CharField(max_length=255, required=False)
116 | skill_4 = forms.CharField(max_length=255, required=False)
117 | skill_5 = forms.CharField(max_length=255, required=False)
118 |
119 |
120 |
121 | class CreateJobForm(forms.Form):
122 |
123 |
124 | AD_CHOICES = [
125 | ('Y', 'YES'),
126 | ('N', 'NO'),
127 | ]
128 |
129 | class Meta:
130 | model = Job
131 |
132 | job_role = forms.CharField(max_length=255)
133 | job_description = forms.CharField(max_length=255, widget=forms.Textarea)
134 | category = forms.ModelChoiceField(queryset=Category.objects.all())
135 | sub_category = forms.ModelChoiceField(queryset=Subcategory.objects.all())
136 | organization = forms.CharField(max_length=255)
137 | remuneration = forms.IntegerField()
138 | location = forms.CharField(max_length=255)
139 | skill_required_1 = forms.CharField(max_length=255)
140 | skill_required_2 = forms.CharField(max_length=255)
141 | skill_required_3 = forms.CharField(max_length=255, required=False)
142 | skill_required_4 = forms.CharField(max_length=255,required=False)
143 | skill_required_5 = forms.CharField(max_length=255, required=False)
144 | deadline = forms.DateField()
145 | job_ad_flag = forms.ChoiceField(label='ad_choices', choices=AD_CHOICES)
146 |
147 |
148 |
149 | class InterviewForm(forms.Form):
150 |
151 | class Meta:
152 | model = Interview
153 |
154 | interview_Date = forms.DateField()
155 | interview_description = forms.CharField(max_length=1000)
156 |
157 |
158 |
159 |
160 | class Application_form(forms.Form):
161 |
162 | class Meta:
163 | model = Application
164 | field = ('cv', 'cover_letter')
165 |
166 |
167 | cv = forms.CharField(max_length=1000, widget=forms.Textarea)
168 | cover_letter = forms.CharField(max_length=1000, widget=forms.Textarea)
169 |
170 |
171 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-05 10:11
2 |
3 | from django.db import migrations, models
4 | import django.db.models.manager
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | initial = True
10 |
11 | dependencies = [
12 | ]
13 |
14 | operations = [
15 | migrations.CreateModel(
16 | name='User',
17 | fields=[
18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19 | ('password', models.CharField(max_length=128, verbose_name='password')),
20 | ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
21 | ('email', models.EmailField(max_length=255, unique=True, verbose_name='Email Address')),
22 | ('is_active', models.BooleanField(default=True)),
23 | ('is_recruiter', models.BooleanField(default=False)),
24 | ('is_seeker', models.BooleanField(default=False)),
25 | ('is_staff', models.BooleanField(default=False)),
26 | ('is_admin', models.BooleanField(default=False)),
27 | ('register_Date', models.DateTimeField(auto_now_add=True)),
28 | ],
29 | options={
30 | 'abstract': False,
31 | },
32 | managers=[
33 | ('object', django.db.models.manager.Manager()),
34 | ],
35 | ),
36 | ]
37 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0002_seekerprofile.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-06 14:07
2 |
3 | from django.conf import settings
4 | from django.db import migrations, models
5 | import django.db.models.deletion
6 |
7 |
8 | class Migration(migrations.Migration):
9 |
10 | dependencies = [
11 | ('ojss_app', '0001_initial'),
12 | ]
13 |
14 | operations = [
15 | migrations.CreateModel(
16 | name='SeekerProfile',
17 | fields=[
18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19 | ('first_name', models.CharField(max_length=255)),
20 | ('last_name', models.CharField(max_length=255)),
21 | ('gender', models.CharField(choices=[('M', 'MALE'), ('F', 'FEMALE')], default='M', max_length=1)),
22 | ('address', models.CharField(max_length=255)),
23 | ('phone', models.IntegerField(max_length=10)),
24 | ('birthDate', models.DateTimeField()),
25 | ('current_job_role', models.CharField(max_length=255)),
26 | ('current_company', models.CharField(max_length=255)),
27 | ('seeker', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
28 | ],
29 | ),
30 | ]
31 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0003_auto_20180507_0017.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-06 14:17
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0002_seekerprofile'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='seekerprofile',
15 | name='birthDate',
16 | field=models.DateField(),
17 | ),
18 | ]
19 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0004_auto_20180507_2056.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 10:56
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0003_auto_20180507_0017'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Job',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('job_role', models.CharField(max_length=255)),
19 | ('job_description', models.CharField(max_length=255)),
20 | ('organization', models.CharField(max_length=255)),
21 | ('remuneration', models.IntegerField()),
22 | ('location', models.CharField(max_length=255)),
23 | ('skill_required_1', models.CharField(max_length=255)),
24 | ('skill_required_2', models.CharField(max_length=255)),
25 | ('skill_required_3', models.CharField(blank=True, max_length=255, null=True)),
26 | ('skill_required_4', models.CharField(blank=True, max_length=255, null=True)),
27 | ('skill_required_5', models.CharField(blank=True, max_length=255, null=True)),
28 | ('deadline', models.DateField()),
29 | ('posted_date', models.DateField(auto_now_add=True)),
30 | ('job_ad_flag', models.CharField(max_length=1)),
31 | ],
32 | ),
33 | migrations.CreateModel(
34 | name='RecruiterProfile',
35 | fields=[
36 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
37 | ('first_name', models.CharField(max_length=255)),
38 | ('last_name', models.CharField(max_length=255)),
39 | ('gender', models.CharField(choices=[('M', 'MALE'), ('F', 'FEMALE')], default='M', max_length=1)),
40 | ('company_name', models.CharField(max_length=255)),
41 | ('company_description', models.CharField(max_length=255)),
42 | ('company_address', models.CharField(max_length=255)),
43 | ('company_phone', models.IntegerField()),
44 | ('job_role', models.CharField(max_length=255)),
45 | ],
46 | ),
47 | migrations.AddField(
48 | model_name='job',
49 | name='recruiter_id',
50 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.RecruiterProfile'),
51 | ),
52 | ]
53 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0005_auto_20180507_2057.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 10:57
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0004_auto_20180507_2056'),
11 | ]
12 |
13 | operations = [
14 | migrations.RemoveField(
15 | model_name='job',
16 | name='recruiter_id',
17 | ),
18 | migrations.AddField(
19 | model_name='job',
20 | name='recruiter',
21 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='ojss_app.RecruiterProfile'),
22 | preserve_default=False,
23 | ),
24 | ]
25 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0006_remove_recruiterprofile_company_description.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 11:16
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0005_auto_20180507_2057'),
10 | ]
11 |
12 | operations = [
13 | migrations.RemoveField(
14 | model_name='recruiterprofile',
15 | name='company_description',
16 | ),
17 | ]
18 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0007_recruiterprofile_recruiter.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 12:01
2 |
3 | from django.conf import settings
4 | from django.db import migrations, models
5 | import django.db.models.deletion
6 |
7 |
8 | class Migration(migrations.Migration):
9 |
10 | dependencies = [
11 | ('ojss_app', '0006_remove_recruiterprofile_company_description'),
12 | ]
13 |
14 | operations = [
15 | migrations.AddField(
16 | model_name='recruiterprofile',
17 | name='recruiter',
18 | field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
19 | preserve_default=False,
20 | ),
21 | ]
22 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0008_seekerskillset.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 22:37
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0007_recruiterprofile_recruiter'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='SeekerSkillset',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('skill1', models.CharField(max_length=255)),
19 | ('skill2', models.CharField(blank=True, max_length=255, null=True)),
20 | ('skill3', models.CharField(blank=True, max_length=255, null=True)),
21 | ('skill4', models.CharField(blank=True, max_length=255, null=True)),
22 | ('skill5', models.CharField(blank=True, max_length=255, null=True)),
23 | ('seeker', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.SeekerProfile')),
24 | ],
25 | ),
26 | ]
27 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0009_auto_20180508_0853.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-07 22:53
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0008_seekerskillset'),
10 | ]
11 |
12 | operations = [
13 | migrations.RenameField(
14 | model_name='seekerskillset',
15 | old_name='skill1',
16 | new_name='skill_1',
17 | ),
18 | migrations.RenameField(
19 | model_name='seekerskillset',
20 | old_name='skill2',
21 | new_name='skill_2',
22 | ),
23 | migrations.RenameField(
24 | model_name='seekerskillset',
25 | old_name='skill3',
26 | new_name='skill_3',
27 | ),
28 | migrations.RenameField(
29 | model_name='seekerskillset',
30 | old_name='skill4',
31 | new_name='skill_4',
32 | ),
33 | migrations.RenameField(
34 | model_name='seekerskillset',
35 | old_name='skill5',
36 | new_name='skill_5',
37 | ),
38 | ]
39 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0010_auto_20180508_1721.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-08 07:21
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0009_auto_20180508_0853'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Application',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('cover_letter', models.CharField(max_length=1000)),
19 | ('cv', models.CharField(max_length=1000)),
20 | ('matching_score', models.IntegerField()),
21 | ('status', models.CharField(choices=[('A', 'ACTIVE'), ('S', 'SELECTED'), ('R', 'REJECTED')], default='M', max_length=1)),
22 | ],
23 | ),
24 | migrations.AlterField(
25 | model_name='job',
26 | name='job_description',
27 | field=models.CharField(max_length=1000),
28 | ),
29 | migrations.AddField(
30 | model_name='application',
31 | name='job_id',
32 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.Job'),
33 | ),
34 | migrations.AddField(
35 | model_name='application',
36 | name='seeker_id',
37 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.SeekerProfile'),
38 | ),
39 | ]
40 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0011_auto_20180508_1723.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-08 07:23
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0010_auto_20180508_1721'),
10 | ]
11 |
12 | operations = [
13 | migrations.RenameField(
14 | model_name='application',
15 | old_name='job_id',
16 | new_name='job',
17 | ),
18 | migrations.RenameField(
19 | model_name='application',
20 | old_name='seeker_id',
21 | new_name='seeker',
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0012_application_name.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-08 07:27
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0011_auto_20180508_1723'),
10 | ]
11 |
12 | operations = [
13 | migrations.AddField(
14 | model_name='application',
15 | name='name',
16 | field=models.CharField(default=1, max_length=255),
17 | preserve_default=False,
18 | ),
19 | ]
20 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0013_auto_20180508_1728.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-08 07:28
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0012_application_name'),
10 | ]
11 |
12 | operations = [
13 | migrations.RenameField(
14 | model_name='application',
15 | old_name='name',
16 | new_name='seeker_name',
17 | ),
18 | ]
19 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0014_application_date.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 00:28
2 |
3 | from django.db import migrations, models
4 | import django.utils.timezone
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0013_auto_20180508_1728'),
11 | ]
12 |
13 | operations = [
14 | migrations.AddField(
15 | model_name='application',
16 | name='date',
17 | field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
18 | preserve_default=False,
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0015_message.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 00:44
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0014_application_date'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Message',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('message_type', models.CharField(choices=[('A', 'APPLCIATION'), ('I', 'INTERVIEW')], default='M', max_length=1)),
19 | ('application_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.Application')),
20 | ('recruiter_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.RecruiterProfile')),
21 | ('seeker_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.SeekerProfile')),
22 | ],
23 | ),
24 | ]
25 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0016_auto_20180509_1046.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 00:46
2 |
3 | from django.db import migrations
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0015_message'),
10 | ]
11 |
12 | operations = [
13 | migrations.RenameField(
14 | model_name='message',
15 | old_name='application_id',
16 | new_name='application',
17 | ),
18 | migrations.RenameField(
19 | model_name='message',
20 | old_name='recruiter_id',
21 | new_name='recruiter',
22 | ),
23 | migrations.RenameField(
24 | model_name='message',
25 | old_name='seeker_id',
26 | new_name='seeker',
27 | ),
28 | ]
29 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0017_message_date.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 00:55
2 |
3 | from django.db import migrations, models
4 | import django.utils.timezone
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0016_auto_20180509_1046'),
11 | ]
12 |
13 | operations = [
14 | migrations.AddField(
15 | model_name='message',
16 | name='date',
17 | field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
18 | preserve_default=False,
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0018_category.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 03:26
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0017_message_date'),
10 | ]
11 |
12 | operations = [
13 | migrations.CreateModel(
14 | name='Category',
15 | fields=[
16 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
17 | ('category_name', models.CharField(max_length=255)),
18 | ],
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0019_job_category.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 03:31
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0018_category'),
11 | ]
12 |
13 | operations = [
14 | migrations.AddField(
15 | model_name='job',
16 | name='category',
17 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='ojss_app.Category'),
18 | preserve_default=False,
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0020_auto_20180509_1336.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 03:36
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0019_job_category'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Subcategory',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('sub_category_name', models.CharField(max_length=255)),
19 | ],
20 | ),
21 | migrations.AlterField(
22 | model_name='job',
23 | name='category',
24 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='ojss_app.Category'),
25 | ),
26 | ]
27 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0021_subcategory_category.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 03:37
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0020_auto_20180509_1336'),
11 | ]
12 |
13 | operations = [
14 | migrations.AddField(
15 | model_name='subcategory',
16 | name='category',
17 | field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='ojss_app.Category'),
18 | preserve_default=False,
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0022_job_sub_category.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 03:38
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0021_subcategory_category'),
11 | ]
12 |
13 | operations = [
14 | migrations.AddField(
15 | model_name='job',
16 | name='sub_category',
17 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='ojss_app.Subcategory'),
18 | ),
19 | ]
20 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0023_interview.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 07:36
2 |
3 | from django.db import migrations, models
4 | import django.db.models.deletion
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('ojss_app', '0022_job_sub_category'),
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Interview',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('interview_date', models.DateField()),
19 | ('interview_description', models.CharField(max_length=100)),
20 | ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ojss_app.Application')),
21 | ],
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0024_auto_20180509_1737.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 07:37
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0023_interview'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='application',
15 | name='status',
16 | field=models.CharField(choices=[('A', 'ACTIVE'), ('S', 'SELECTED'), ('R', 'REJECTED'), {'Interview', 'I'}], default='M', max_length=1),
17 | ),
18 | ]
19 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0025_auto_20180509_2306.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 13:06
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0024_auto_20180509_1737'),
10 | ]
11 |
12 | operations = [
13 | migrations.RemoveField(
14 | model_name='interview',
15 | name='interview_description',
16 | ),
17 | migrations.AlterField(
18 | model_name='interview',
19 | name='interview_date',
20 | field=models.DateTimeField(auto_now_add=True),
21 | ),
22 | migrations.AlterField(
23 | model_name='message',
24 | name='message_type',
25 | field=models.CharField(choices=[('A', 'APPLICATION'), ('I', 'INTERVIEW')], default='M', max_length=1),
26 | ),
27 | ]
28 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0026_auto_20180509_2307.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 13:07
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0025_auto_20180509_2306'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='message',
15 | name='message_type',
16 | field=models.CharField(choices=[('A', 'APPLICATION'), ('I', 'INTERVIEW')], default='A', max_length=1),
17 | ),
18 | ]
19 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0027_auto_20180509_2312.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-09 13:12
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0026_auto_20180509_2307'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='message',
15 | name='message_type',
16 | field=models.CharField(max_length=1),
17 | ),
18 | ]
19 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0028_auto_20180510_1824.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-10 08:24
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0027_auto_20180509_2312'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='job',
15 | name='skill_required_3',
16 | field=models.CharField(blank=True, default='####', max_length=255),
17 | ),
18 | migrations.AlterField(
19 | model_name='job',
20 | name='skill_required_4',
21 | field=models.CharField(blank=True, default='####', max_length=255),
22 | ),
23 | migrations.AlterField(
24 | model_name='job',
25 | name='skill_required_5',
26 | field=models.CharField(blank=True, default='####', max_length=255),
27 | ),
28 | migrations.AlterField(
29 | model_name='seekerskillset',
30 | name='skill_2',
31 | field=models.CharField(blank=True, default='!!!!', max_length=255),
32 | ),
33 | migrations.AlterField(
34 | model_name='seekerskillset',
35 | name='skill_3',
36 | field=models.CharField(blank=True, default='!!!!', max_length=255),
37 | ),
38 | migrations.AlterField(
39 | model_name='seekerskillset',
40 | name='skill_4',
41 | field=models.CharField(blank=True, default='!!!!', max_length=255),
42 | ),
43 | migrations.AlterField(
44 | model_name='seekerskillset',
45 | name='skill_5',
46 | field=models.CharField(blank=True, default='!!!!', max_length=255),
47 | ),
48 | ]
49 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0029_auto_20180510_1833.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-10 08:33
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0028_auto_20180510_1824'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='seekerskillset',
15 | name='skill_2',
16 | field=models.CharField(blank=True, max_length=255, null=True),
17 | ),
18 | migrations.AlterField(
19 | model_name='seekerskillset',
20 | name='skill_3',
21 | field=models.CharField(blank=True, max_length=255, null=True),
22 | ),
23 | migrations.AlterField(
24 | model_name='seekerskillset',
25 | name='skill_4',
26 | field=models.CharField(blank=True, max_length=255, null=True),
27 | ),
28 | migrations.AlterField(
29 | model_name='seekerskillset',
30 | name='skill_5',
31 | field=models.CharField(blank=True, max_length=255, null=True),
32 | ),
33 | ]
34 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0030_auto_20180510_1833.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-10 08:33
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0029_auto_20180510_1833'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='seekerskillset',
15 | name='skill_2',
16 | field=models.CharField(blank=True, default='####', max_length=255),
17 | ),
18 | migrations.AlterField(
19 | model_name='seekerskillset',
20 | name='skill_3',
21 | field=models.CharField(blank=True, default='####', max_length=255),
22 | ),
23 | migrations.AlterField(
24 | model_name='seekerskillset',
25 | name='skill_4',
26 | field=models.CharField(blank=True, default='####', max_length=255),
27 | ),
28 | migrations.AlterField(
29 | model_name='seekerskillset',
30 | name='skill_5',
31 | field=models.CharField(blank=True, default='####', max_length=255),
32 | ),
33 | ]
34 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0031_auto_20180510_1835.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-10 08:35
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0030_auto_20180510_1833'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='seekerskillset',
15 | name='skill_2',
16 | field=models.CharField(blank=True, default='####', max_length=255, null=True),
17 | ),
18 | migrations.AlterField(
19 | model_name='seekerskillset',
20 | name='skill_3',
21 | field=models.CharField(blank=True, default='####', max_length=255, null=True),
22 | ),
23 | ]
24 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/0032_auto_20180510_1838.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.0.4 on 2018-05-10 08:38
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | dependencies = [
9 | ('ojss_app', '0031_auto_20180510_1835'),
10 | ]
11 |
12 | operations = [
13 | migrations.AlterField(
14 | model_name='job',
15 | name='skill_required_3',
16 | field=models.CharField(blank=True, max_length=255, null=True),
17 | ),
18 | migrations.AlterField(
19 | model_name='job',
20 | name='skill_required_4',
21 | field=models.CharField(blank=True, max_length=255, null=True),
22 | ),
23 | migrations.AlterField(
24 | model_name='job',
25 | name='skill_required_5',
26 | field=models.CharField(blank=True, max_length=255, null=True),
27 | ),
28 | migrations.AlterField(
29 | model_name='seekerskillset',
30 | name='skill_2',
31 | field=models.CharField(blank=True, max_length=255, null=True),
32 | ),
33 | migrations.AlterField(
34 | model_name='seekerskillset',
35 | name='skill_3',
36 | field=models.CharField(blank=True, max_length=255, null=True),
37 | ),
38 | migrations.AlterField(
39 | model_name='seekerskillset',
40 | name='skill_4',
41 | field=models.CharField(blank=True, max_length=255, null=True),
42 | ),
43 | migrations.AlterField(
44 | model_name='seekerskillset',
45 | name='skill_5',
46 | field=models.CharField(blank=True, max_length=255, null=True),
47 | ),
48 | ]
49 |
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__init__.py
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0001_initial.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0001_initial.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0002_seekerprofile.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0002_seekerprofile.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0003_auto_20180507_0017.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0003_auto_20180507_0017.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0004_auto_20180507_2056.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0004_auto_20180507_2056.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0005_auto_20180507_2057.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0005_auto_20180507_2057.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0006_remove_recruiterprofile_company_description.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0006_remove_recruiterprofile_company_description.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0007_recruiterprofile_recruiter.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0007_recruiterprofile_recruiter.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0008_seekerskillset.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0008_seekerskillset.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0009_auto_20180508_0853.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0009_auto_20180508_0853.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0010_auto_20180508_1721.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0010_auto_20180508_1721.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0011_auto_20180508_1723.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0011_auto_20180508_1723.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0012_application_name.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0012_application_name.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0013_auto_20180508_1728.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0013_auto_20180508_1728.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0014_application_date.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0014_application_date.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0015_message.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0015_message.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0016_auto_20180509_1046.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0016_auto_20180509_1046.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0017_message_date.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0017_message_date.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0018_category.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0018_category.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0019_job_category.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0019_job_category.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0020_auto_20180509_1336.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0020_auto_20180509_1336.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0021_subcategory_category.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0021_subcategory_category.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0022_job_sub_category.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0022_job_sub_category.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0023_interview.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0023_interview.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0024_auto_20180509_1737.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0024_auto_20180509_1737.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0025_auto_20180509_2306.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0025_auto_20180509_2306.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0026_auto_20180509_2307.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0026_auto_20180509_2307.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0027_auto_20180509_2312.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0027_auto_20180509_2312.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0028_auto_20180510_1824.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0028_auto_20180510_1824.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0029_auto_20180510_1833.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0029_auto_20180510_1833.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0030_auto_20180510_1833.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0030_auto_20180510_1833.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0031_auto_20180510_1835.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0031_auto_20180510_1835.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/0032_auto_20180510_1838.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/0032_auto_20180510_1838.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/migrations/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/ojss/ojss_app/migrations/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/ojss/ojss_app/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 | from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
3 |
4 |
5 |
6 | class UserManager(BaseUserManager):
7 |
8 | def create_user(self,email,password=None,is_active=True,is_recruiter = False, is_seeker = False, is_staff=False, is_admin= False):
9 |
10 | if not email:
11 | raise ValueError("User must have a valid email address")
12 |
13 | if not password:
14 | raise ValueError("User must have a password")
15 |
16 | user_obj = self.model(
17 |
18 | email = self.normalize_email(email)
19 | )
20 |
21 | user_obj.set_password(password)
22 |
23 | user_obj.is_active = is_active
24 |
25 | user_obj.is_recruiter = is_recruiter
26 |
27 | user_obj.is_seeker = is_seeker
28 |
29 | user_obj.is_admin = is_admin
30 |
31 | user_obj.is_staff = is_staff
32 |
33 | user_obj.save(using=self._db)
34 |
35 | return user_obj
36 |
37 |
38 | def create_staffuser(self,email,password):
39 | user = self.create_user(
40 | email,
41 | password,
42 | is_staff=True
43 | )
44 | return user
45 |
46 |
47 | def create_superuser(self,email,password=None):
48 | user = self.create_user(
49 | email,
50 | password,
51 | is_admin=True,
52 | is_staff=True
53 | )
54 |
55 | return user
56 |
57 |
58 |
59 |
60 |
61 | class User(AbstractBaseUser):
62 | email = models.EmailField(
63 |
64 | verbose_name='Email Address',
65 | max_length=255,
66 | unique=True,
67 | )
68 |
69 | is_active = models.BooleanField(default=True)
70 | is_recruiter = models.BooleanField(default=False)
71 | is_seeker = models.BooleanField(default=False)
72 | is_staff = models.BooleanField(default=False)
73 | is_admin = models.BooleanField(default=False)
74 | register_Date = models.DateTimeField(auto_now_add=True)
75 |
76 | USERNAME_FIELD = 'email'
77 |
78 | REQUIRED_FIELDS = []
79 |
80 | object = UserManager()
81 |
82 | def __str__(self):
83 | return self.email
84 |
85 | def has_perm(self, perm, obj=None):
86 | return True
87 |
88 | def has_module_perms(self, app_label):
89 | return True
90 |
91 |
92 |
93 | class SeekerProfile(models.Model):
94 |
95 | GENDER_CHOICES = (
96 | ('M','MALE'),
97 | ('F','FEMALE'),
98 | )
99 |
100 | seeker = models.OneToOneField(User,on_delete=models.CASCADE)
101 | first_name = models.CharField(max_length=255)
102 | last_name = models.CharField(max_length=255)
103 | gender = models.CharField(max_length=1,
104 | choices=GENDER_CHOICES,
105 | default='M')
106 | address = models.CharField(max_length=255)
107 | phone = models.IntegerField(max_length=10)
108 | birthDate = models.DateField()
109 | current_job_role = models.CharField(max_length=255)
110 | current_company = models.CharField(max_length=255)
111 |
112 |
113 |
114 | def __str__(self):
115 | return self.first_name
116 |
117 |
118 | class RecruiterProfile(models.Model):
119 |
120 | GENDER_CHOICES = (
121 | ('M', 'MALE'),
122 | ('F', 'FEMALE'),
123 | )
124 |
125 | recruiter = models.OneToOneField(User, on_delete=models.CASCADE)
126 | first_name = models.CharField(max_length=255)
127 | last_name = models.CharField(max_length=255)
128 | gender = models.CharField(max_length=1,
129 | choices=GENDER_CHOICES,
130 | default='M')
131 | company_name = models.CharField(max_length=255)
132 | company_address = models.CharField(max_length=255)
133 | company_phone = models.IntegerField()
134 | job_role = models.CharField(max_length=255)
135 |
136 | def __str__(self):
137 | return self.first_name
138 |
139 |
140 | class Category(models.Model):
141 |
142 | category_name = models.CharField(max_length=255)
143 |
144 |
145 | def __str__(self):
146 | return self.category_name
147 |
148 |
149 | class Subcategory(models.Model):
150 |
151 | sub_category_name = models.CharField(max_length=255)
152 | category = models.ForeignKey(Category, on_delete=models.CASCADE)
153 |
154 | def __str__(self):
155 | return self.sub_category_name
156 |
157 |
158 |
159 |
160 |
161 |
162 | class Job(models.Model):
163 | job_role = models.CharField(max_length=255)
164 | job_description = models.CharField(max_length=1000)
165 | organization = models.CharField(max_length=255)
166 | remuneration = models.IntegerField()
167 | location = models.CharField(max_length=255)
168 | category = models.ForeignKey(Category, on_delete=models.SET_NULL,null=True)
169 | sub_category = models.ForeignKey(Subcategory, on_delete=models.SET_NULL, null=True)
170 | skill_required_1 = models.CharField(max_length=255)
171 | skill_required_2 = models.CharField(max_length=255)
172 | skill_required_3 = models.CharField(max_length=255, blank=True, null=True)
173 | skill_required_4 = models.CharField(max_length=255, blank=True, null=True)
174 | skill_required_5 = models.CharField(max_length=255, blank=True, null=True)
175 | deadline = models.DateField()
176 | posted_date = models.DateField(auto_now_add=True)
177 | job_ad_flag = models.CharField(max_length=1)
178 | recruiter = models.ForeignKey(RecruiterProfile,on_delete=models.CASCADE)
179 |
180 |
181 |
182 | def __str__(self):
183 | return self.job_role
184 |
185 |
186 |
187 | class SeekerSkillset(models.Model):
188 |
189 | seeker = models.OneToOneField(SeekerProfile,on_delete=models.CASCADE)
190 | skill_1 = models.CharField(max_length=255)
191 | skill_2 = models.CharField(max_length=255, blank=True, null=True)
192 | skill_3 = models.CharField(max_length=255, blank=True, null=True)
193 | skill_4 = models.CharField(max_length=255, blank=True, null=True)
194 | skill_5 = models.CharField(max_length=255, blank=True, null=True)
195 |
196 |
197 | def __str__(self):
198 | return self.seeker
199 |
200 |
201 | class Application(models.Model):
202 |
203 |
204 | APPLICATION_CHOICES = (
205 | ('A', 'ACTIVE'),
206 | ('S', 'SELECTED'),
207 | ('R', 'REJECTED'),
208 | {'I', 'Interview'},
209 | )
210 |
211 |
212 | seeker = models.ForeignKey(SeekerProfile, on_delete=models.CASCADE)
213 | date = models.DateTimeField(auto_now_add=True)
214 | seeker_name = models.CharField(max_length=255)
215 | job = models.ForeignKey(Job, on_delete=models.CASCADE)
216 | cover_letter = models.CharField(max_length=1000)
217 | cv = models.CharField(max_length=1000)
218 | matching_score = models.IntegerField()
219 | status = models.CharField(max_length=1,
220 | choices=APPLICATION_CHOICES,
221 | default='M')
222 |
223 |
224 |
225 | class Message(models.Model):
226 |
227 |
228 |
229 | message_type = models.CharField(max_length=1)
230 | seeker = models.ForeignKey(SeekerProfile, on_delete=models.CASCADE)
231 | recruiter = models.ForeignKey(RecruiterProfile,on_delete=models.CASCADE)
232 | application = models.ForeignKey(Application,on_delete=models.CASCADE)
233 | date = models.DateTimeField(auto_now_add=True)
234 |
235 |
236 | class Interview(models.Model):
237 |
238 |
239 | interview_date = models.DateTimeField(auto_now_add=True)
240 | application = models.ForeignKey(Application, on_delete=models.CASCADE)
241 |
242 |
243 |
244 |
--------------------------------------------------------------------------------
/ojss/ojss_app/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for ojss project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.0.4.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.0/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = '3vcdwcmu6_ua_g66_a&y=j#8fl=ygf&0-s2$a5jeity4*#(!-e'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'ojss_app',
35 | 'django.contrib.admin',
36 | 'django.contrib.auth',
37 | 'django.contrib.contenttypes',
38 | 'django.contrib.sessions',
39 | 'django.contrib.messages',
40 | 'django.contrib.staticfiles',
41 | ]
42 |
43 |
44 | AUTH_USER_MODEL = 'ojss_app.User'
45 | AUTHENTICATION_BACKENDS = ('ojss_app.backends.CustomUserAuth',)
46 |
47 |
48 | MIDDLEWARE = [
49 | 'django.middleware.security.SecurityMiddleware',
50 | 'django.contrib.sessions.middleware.SessionMiddleware',
51 | 'django.middleware.common.CommonMiddleware',
52 | 'django.middleware.csrf.CsrfViewMiddleware',
53 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
54 | 'django.contrib.messages.middleware.MessageMiddleware',
55 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
56 | ]
57 |
58 | ROOT_URLCONF = 'ojss.urls'
59 |
60 | TEMPLATES = [
61 | {
62 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
63 | 'DIRS': ['ojss/templates'],
64 | 'APP_DIRS': True,
65 | 'OPTIONS': {
66 | 'context_processors': [
67 | 'django.template.context_processors.debug',
68 | 'django.template.context_processors.request',
69 | 'django.contrib.auth.context_processors.auth',
70 | 'django.contrib.messages.context_processors.messages',
71 | ],
72 | },
73 | },
74 | ]
75 |
76 | WSGI_APPLICATION = 'ojss.wsgi.application'
77 |
78 |
79 |
80 |
81 | # Database
82 | # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
83 |
84 | DATABASES = {
85 | 'default': {
86 | 'ENGINE': 'django.db.backends.sqlite3',
87 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
88 | }
89 | }
90 |
91 |
92 | # Password validation
93 | # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
94 |
95 | AUTH_PASSWORD_VALIDATORS = [
96 | {
97 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
98 | },
99 | {
100 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
101 | },
102 | {
103 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
104 | },
105 | {
106 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
107 | },
108 | ]
109 |
110 |
111 | # Internationalization
112 | # https://docs.djangoproject.com/en/2.0/topics/i18n/
113 |
114 | LANGUAGE_CODE = 'en-us'
115 |
116 | TIME_ZONE = 'UTC'
117 |
118 | USE_I18N = True
119 |
120 | USE_L10N = True
121 |
122 | USE_TZ = True
123 |
124 |
125 | # Static files (CSS, JavaScript, Images)
126 | # https://docs.djangoproject.com/en/2.0/howto/static-files/
127 |
128 | STATIC_URL = '/static/'
129 |
130 |
131 | STATICFILES_DIRS = (
132 | os.path.join(BASE_DIR, 'ojss/static'),
133 | )
134 |
--------------------------------------------------------------------------------
/static/ojss_app/css/main.css:
--------------------------------------------------------------------------------
1 |
2 | html{
3 | height: 100%;
4 | width: 100%;
5 | }
6 |
7 |
8 | /* Body transformations */
9 | body {
10 | margin: 0;
11 | padding: 0;
12 | background-color: #343a40;
13 | }
14 |
15 | /* Draws the line after navigation */
16 | .border {
17 | border-bottom: #3ca861;
18 | }
19 |
20 |
21 | /* Styling labels above the search box */
22 | .label {
23 | border-style: none;
24 | font-size: larger;
25 | text-transform: uppercase ;
26 | }
27 |
28 | /* Styling navbar */
29 | .navbar-item {
30 | margin-right: 30px;
31 | position: relative;
32 | }
33 |
34 | .navbar-item:before {
35 | content: "";
36 | position: absolute;
37 | width: 100%;
38 | height: 2px;
39 | bottom: 0;
40 | left: 0;
41 | background-color: #000;
42 | visibility: hidden;
43 | -webkit-transform: scaleX(0);
44 | transform: scaleX(0);
45 | -webkit-transition: all 0.3s ease-in-out 0s;
46 | transition: all 0.3s ease-in-out 0s;
47 | }
48 |
49 | .navbar-item:hover:before {
50 | visibility: visible;
51 | -webkit-transform: scaleX(1);
52 | transform: scaleX(1);
53 | }
54 |
55 |
56 |
57 | /* Styling individual job listing in search */
58 | .job_list {
59 | color: #adb5bd;
60 | overflow: hidden;
61 | padding: 20px;
62 | border-style: inset;
63 | border-color: #ffffff;
64 | background-color: #0d0d0d;
65 |
66 | }
67 |
68 |
69 | /* border in induvidual job listing */
70 | .border-job {
71 | border-bottom: #ffffff;
72 | border-style: inset;
73 |
74 | }
75 |
76 |
77 | /* hover styling for individual job listing */
78 |
79 | .job_list:hover .border-job {
80 |
81 | border-color: #bf2e29;
82 | transition: border-color ease-in .4s;
83 |
84 | }
85 |
86 |
87 |
88 | .job_list h1, h2, h3, h4, h5, h6 {
89 |
90 | color: #a9e0bc;
91 | }
92 |
93 | .job_list p {
94 | padding-top: 20px;
95 | }
96 |
97 |
98 |
99 | /* centering elements on a page */
100 | .page-center {
101 | width: 600px;
102 | margin: 110px auto;
103 | border-style: ridge;
104 | border-color: #e9edde;
105 | padding : 20px;
106 | border-width: thin;
107 | }
108 |
109 |
110 | /* styling form input boxes */
111 | input {
112 | margin-top: 20px;
113 | color: #ffffff;
114 | }
115 |
116 |
117 | /* Job details page styling */
118 |
119 |
120 | /* job detail page items */
121 |
122 | .job_details {
123 |
124 | padding: 20px;
125 | clear: both;
126 | overflow: hidden;
127 | background-color: #0d0d0d;
128 |
129 | }
130 |
131 |
132 |
133 | #job_name,#job_location, #job_organization, #job_renumeration {
134 |
135 |
136 | padding: 5px;
137 |
138 | }
139 |
140 |
141 |
142 | .border-job-details {
143 |
144 | overflow: auto;
145 | padding: 2px;
146 | border-color: #919aa1;
147 | background-color: #0d0d0d;
148 | border-style: groove;
149 |
150 | }
151 |
152 | .job_details p {
153 |
154 | padding-top: 20px;
155 | }
156 |
157 | .login-button{
158 | padding: 5px;
159 | }
160 |
161 | /* Logo Div Placement */
162 | .logo{
163 | margin-top: 40px;
164 | }
165 |
166 | /* logo text */
167 | .logo-text{
168 | color: #f0ad4e;
169 | }
170 |
171 | /* Login text such as signup and login */
172 | .login-text {
173 | color: #4BBF73;
174 | }
175 |
176 |
177 | .profile-form{
178 |
179 | width: 70%;
180 | margin: 0 auto;
181 |
182 | }
183 |
184 |
185 |
186 | .profile-form-style{
187 |
188 | width: 400px;
189 | height: 30px;
190 | margin-left: 30px;
191 |
192 | }
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/static/ojss_app/images/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sunilcyriac/OnlineJobSeekingSystem-Python-Django/43e231c7f4a0faceb9ed155afda23c1de5d582ab/static/ojss_app/images/bg.jpg
--------------------------------------------------------------------------------
/static/ojss_app/js/script.js:
--------------------------------------------------------------------------------
1 |
2 | function applicationViewer() {
3 |
4 | var x = document.getElementsByClassName("application-toggler")[0];
5 | var button = document.getElementById("applyButton")
6 | if (x.style.display == "none") {
7 |
8 | x.style.display = "block";
9 | button.innerHTML = "CANCEL APPLICATION";
10 | button.setAttribute('class','btn btn-warning')
11 |
12 | }
13 | else if (x.style.display == "block"){
14 |
15 | x.style.display = "none";
16 | button.innerHTML = "APPLY";
17 | button.setAttribute('class','btn btn-info')
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/templates/base.html:
--------------------------------------------------------------------------------
1 | {% load staticfiles %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Calendar App
12 |
13 |
14 |
15 | {% if request.user.is_seeker %}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | OJSS
29 |
30 |
32 |
33 |
34 |
35 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | Search Keywords
75 |
76 |
77 |
78 |
79 |
80 |
81 | Search Category
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | {% else %}
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 | OJSS
168 |
169 |
171 |
172 |
173 |
174 |
175 |
176 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 | Search Keywords
214 |
215 |
216 |
217 |
218 |
219 |
220 | Search Category
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 | {% endif %}
294 |
295 |
296 |
297 |
298 |
299 | {% block content %}
300 | {% endblock content %}
301 |
302 |
303 |
304 |
305 |
--------------------------------------------------------------------------------
/templates/index_base.html:
--------------------------------------------------------------------------------
1 | {% load staticfiles %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
22 | Calendar App
23 |
24 |
25 |
26 |
27 | {% block content %}
28 |
29 |
30 | {% endblock %}
31 |
32 |
--------------------------------------------------------------------------------
/templates/ojss_app/_calendarentry.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ entry.name }}
6 |
{{ entry.date }}
7 |
{{ entry.desc }}
8 |
View Details
9 |
Delete
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/templates/ojss_app/_job_item.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Software Engineer
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Organization : Monash University
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
Location : Melbourne, Australia
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
Renumeration : 60000
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
Lorem Ipsum is simply dummy
52 | text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard
53 | dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled
54 | it to make a type specimen book. It has survived not only five centuries, but also the leap into
55 | electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the
56 | release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing
57 | software like Aldus PageMaker including versions of Lorem Ipsum.
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | Details
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/templates/ojss_app/detail.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
Back
7 |
8 |
{{ entries.name }}
9 |
{{ entries.date }}
10 |
11 |
12 |
13 |
14 | {% endblock content %}
--------------------------------------------------------------------------------
/templates/ojss_app/form.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
37 |
38 |
39 | {% endblock content %}
--------------------------------------------------------------------------------
/templates/ojss_app/index.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "base.html" %}
3 |
4 |
5 |
6 |
7 | {% block content %}
8 |
9 |
10 |
11 |
12 | {% include 'ojss_app/_job_item.html' %}
13 |
14 |
15 |
16 |
17 | {% endblock content %}
--------------------------------------------------------------------------------
/templates/ojss_app/job_details.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
JOB APPLICATION FORM GOES HERE
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
Software Engineer
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
Organization : Monash University
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
Location : Melbourne, Australia
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
Renumeration : 60000
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | Apply
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
Lorem Ipsum is simply dummy
81 | text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard
82 | dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled
83 | it to make a type specimen book. It has survived not only five centuries, but also the leap into
84 | electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the
85 | release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing
86 | software like Aldus PageMaker including versions of Lorem Ipsum.
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 | {% endblock content %}
--------------------------------------------------------------------------------
/templates/ojss_app/seekerprofile.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
UPDATE PROFILE
11 |
12 |
13 |
14 |
15 |
16 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 | {% endblock %}
--------------------------------------------------------------------------------
/templates/registration/index.html:
--------------------------------------------------------------------------------
1 | {% extends 'index_base.html' %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Online Job Seeking System
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
Login
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
60 |
61 |
62 |
67 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | {% endblock %}
--------------------------------------------------------------------------------
/templates/registration/recruiterlogin.html:
--------------------------------------------------------------------------------
1 | {% extends "index_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Online Job Seeking System
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
SIGN UP AS A JOB RECRUITER
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {% csrf_token %}
31 |
32 | {% for field in form %}
33 |
34 | {% if field.label == "Password" or field.label == "Password confirmation"%}
35 |
36 |
37 |
38 | {% else %}
39 |
40 | {% endif %}
41 | {{ field.errors }}
42 |
43 | {% endfor %}
44 |
45 | Login
46 |
47 |
48 |
49 |
50 |
51 |
58 |
59 |
60 |
61 | {% endblock content %}
--------------------------------------------------------------------------------
/templates/registration/seekerlogin.html:
--------------------------------------------------------------------------------
1 | {% extends "index_base.html" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
7 |
8 |
9 |
Online Job Seeking System
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
SIGN UP AS A JOB SEEKER
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {% csrf_token %}
31 |
32 | {% for field in form %}
33 |
34 | {% if field.label == "Password" or field.label == "Password confirmation"%}
35 |
36 |
37 |
38 | {% else %}
39 |
40 | {% endif %}
41 | {{ field.errors }}
42 |
43 | {% endfor %}
44 |
45 | Login
46 |
47 |
48 |
49 |
50 |
57 |
58 |
59 |
60 |
61 |
62 | {% endblock content %}
--------------------------------------------------------------------------------
/urls.py:
--------------------------------------------------------------------------------
1 | """ojss URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.0/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path
18 | from ojss_app import views
19 | from django.contrib.auth.views import login
20 |
21 | urlpatterns = [
22 | path('admin/', admin.site.urls),
23 | path("", views.index, name='index'),
24 | path("search", views.search),
25 | path("job_details",views.job_details, name="job_details"),
26 | path("apply", views.apply),
27 | path("see_applications", views.my_applications),
28 | path("see_applicants", views.applicatns),
29 | path("seeker_register",views.seekerRegister, name='seeker_register'),
30 | path("recruiter_register", views.recruiterRegister, name='recruiter_register'),
31 | path("^search?", views.my_applications, name="search_list"),
32 | path("seekerprofile",views.seekerProfile, name= 'seeker_profile')
33 | ]
34 |
--------------------------------------------------------------------------------
/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for ojss project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ojss.settings")
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------