diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 105ce2d..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 492648b..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 8eec2f9..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/skyonnweb.iml b/.idea/skyonnweb.iml
deleted file mode 100644
index 74d515a..0000000
--- a/.idea/skyonnweb.iml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/skyonnweb/007.docx b/skyonnweb/007.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/007.docx differ
diff --git a/skyonnweb/media/007.docx b/skyonnweb/media/007.docx
new file mode 100644
index 0000000..52dd860
Binary files /dev/null and b/skyonnweb/media/007.docx differ
diff --git a/skyonnweb/media/100001.pdf b/skyonnweb/media/100001.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/100001.pdf differ
diff --git a/skyonnweb/media/1001.docx b/skyonnweb/media/1001.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/1001.docx differ
diff --git a/skyonnweb/media/1001_1vmm3qO.docx b/skyonnweb/media/1001_1vmm3qO.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/1001_1vmm3qO.docx differ
diff --git a/skyonnweb/media/1001_FZ56zrZ.docx b/skyonnweb/media/1001_FZ56zrZ.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/1001_FZ56zrZ.docx differ
diff --git a/skyonnweb/media/1001_k2oz1xX.docx b/skyonnweb/media/1001_k2oz1xX.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/1001_k2oz1xX.docx differ
diff --git a/skyonnweb/media/1010.pdf b/skyonnweb/media/1010.pdf
new file mode 100644
index 0000000..955e36c
Binary files /dev/null and b/skyonnweb/media/1010.pdf differ
diff --git a/skyonnweb/media/1111.docx b/skyonnweb/media/1111.docx
new file mode 100644
index 0000000..74069fd
Binary files /dev/null and b/skyonnweb/media/1111.docx differ
diff --git a/skyonnweb/media/1111.pdf b/skyonnweb/media/1111.pdf
new file mode 100644
index 0000000..7a78ff4
Binary files /dev/null and b/skyonnweb/media/1111.pdf differ
diff --git a/skyonnweb/media/11112.docx b/skyonnweb/media/11112.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/11112.docx differ
diff --git a/skyonnweb/media/1122.docx b/skyonnweb/media/1122.docx
new file mode 100644
index 0000000..74069fd
Binary files /dev/null and b/skyonnweb/media/1122.docx differ
diff --git a/skyonnweb/media/122.docx b/skyonnweb/media/122.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/122.docx differ
diff --git a/skyonnweb/media/122000.docx b/skyonnweb/media/122000.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/122000.docx differ
diff --git a/skyonnweb/media/1234.docx b/skyonnweb/media/1234.docx
new file mode 100644
index 0000000..52dd860
Binary files /dev/null and b/skyonnweb/media/1234.docx differ
diff --git a/skyonnweb/media/1234.pdf b/skyonnweb/media/1234.pdf
new file mode 100644
index 0000000..5cfadb9
Binary files /dev/null and b/skyonnweb/media/1234.pdf differ
diff --git a/skyonnweb/media/12345.docx b/skyonnweb/media/12345.docx
new file mode 100644
index 0000000..52dd860
Binary files /dev/null and b/skyonnweb/media/12345.docx differ
diff --git a/skyonnweb/media/1234_YMaBUYe.pdf b/skyonnweb/media/1234_YMaBUYe.pdf
new file mode 100644
index 0000000..7a78ff4
Binary files /dev/null and b/skyonnweb/media/1234_YMaBUYe.pdf differ
diff --git a/skyonnweb/media/1234_qNVO1jG.pdf b/skyonnweb/media/1234_qNVO1jG.pdf
new file mode 100644
index 0000000..5cfadb9
Binary files /dev/null and b/skyonnweb/media/1234_qNVO1jG.pdf differ
diff --git a/skyonnweb/media/12w.docx b/skyonnweb/media/12w.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/12w.docx differ
diff --git a/skyonnweb/media/144.docx b/skyonnweb/media/144.docx
new file mode 100644
index 0000000..d11c3a0
Binary files /dev/null and b/skyonnweb/media/144.docx differ
diff --git a/skyonnweb/media/2000.docx b/skyonnweb/media/2000.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/2000.docx differ
diff --git a/skyonnweb/media/200004.docx b/skyonnweb/media/200004.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/200004.docx differ
diff --git a/skyonnweb/media/20003.pdf b/skyonnweb/media/20003.pdf
new file mode 100644
index 0000000..955e36c
Binary files /dev/null and b/skyonnweb/media/20003.pdf differ
diff --git a/skyonnweb/media/2001.docx b/skyonnweb/media/2001.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/2001.docx differ
diff --git a/skyonnweb/media/2222.pdf b/skyonnweb/media/2222.pdf
new file mode 100644
index 0000000..7a78ff4
Binary files /dev/null and b/skyonnweb/media/2222.pdf differ
diff --git a/skyonnweb/media/22222.pdf b/skyonnweb/media/22222.pdf
new file mode 100644
index 0000000..0f8b088
Binary files /dev/null and b/skyonnweb/media/22222.pdf differ
diff --git a/skyonnweb/media/2WWWW.docx b/skyonnweb/media/2WWWW.docx
new file mode 100644
index 0000000..52dd860
Binary files /dev/null and b/skyonnweb/media/2WWWW.docx differ
diff --git a/skyonnweb/media/2WWWW_ryfaDVl.docx b/skyonnweb/media/2WWWW_ryfaDVl.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/2WWWW_ryfaDVl.docx differ
diff --git a/skyonnweb/media/3000.docx b/skyonnweb/media/3000.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/3000.docx differ
diff --git a/skyonnweb/media/3000.pdf b/skyonnweb/media/3000.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/3000.pdf differ
diff --git a/skyonnweb/media/350.docx b/skyonnweb/media/350.docx
new file mode 100644
index 0000000..d11c3a0
Binary files /dev/null and b/skyonnweb/media/350.docx differ
diff --git a/skyonnweb/media/4000.pdf b/skyonnweb/media/4000.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/4000.pdf differ
diff --git a/skyonnweb/media/40000.docx b/skyonnweb/media/40000.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/40000.docx differ
diff --git a/skyonnweb/media/4567.docx b/skyonnweb/media/4567.docx
new file mode 100644
index 0000000..74069fd
Binary files /dev/null and b/skyonnweb/media/4567.docx differ
diff --git a/skyonnweb/media/4567.pdf b/skyonnweb/media/4567.pdf
new file mode 100644
index 0000000..5cfadb9
Binary files /dev/null and b/skyonnweb/media/4567.pdf differ
diff --git a/skyonnweb/media/5000.docx b/skyonnweb/media/5000.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/5000.docx differ
diff --git a/skyonnweb/media/7000.docx b/skyonnweb/media/7000.docx
new file mode 100644
index 0000000..74069fd
Binary files /dev/null and b/skyonnweb/media/7000.docx differ
diff --git a/skyonnweb/media/786.docx b/skyonnweb/media/786.docx
new file mode 100644
index 0000000..d11c3a0
Binary files /dev/null and b/skyonnweb/media/786.docx differ
diff --git a/skyonnweb/media/9876.pdf b/skyonnweb/media/9876.pdf
new file mode 100644
index 0000000..5cfadb9
Binary files /dev/null and b/skyonnweb/media/9876.pdf differ
diff --git a/skyonnweb/media/9876_uWKMpAx.pdf b/skyonnweb/media/9876_uWKMpAx.pdf
new file mode 100644
index 0000000..7a78ff4
Binary files /dev/null and b/skyonnweb/media/9876_uWKMpAx.pdf differ
diff --git a/skyonnweb/media/CGEMPJP00233848.docx b/skyonnweb/media/CGEMPJP00233848.docx
new file mode 100644
index 0000000..d11c3a0
Binary files /dev/null and b/skyonnweb/media/CGEMPJP00233848.docx differ
diff --git a/skyonnweb/media/JI7865.docx b/skyonnweb/media/JI7865.docx
new file mode 100644
index 0000000..d11c3a0
Binary files /dev/null and b/skyonnweb/media/JI7865.docx differ
diff --git a/skyonnweb/media/ORN1234567.pdf b/skyonnweb/media/ORN1234567.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/ORN1234567.pdf differ
diff --git a/skyonnweb/media/a.docx b/skyonnweb/media/a.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/a.docx differ
diff --git a/skyonnweb/media/a_6p6oUgN.docx b/skyonnweb/media/a_6p6oUgN.docx
new file mode 100644
index 0000000..52dd860
Binary files /dev/null and b/skyonnweb/media/a_6p6oUgN.docx differ
diff --git a/skyonnweb/media/hjuu89.docx b/skyonnweb/media/hjuu89.docx
new file mode 100644
index 0000000..dbf3ffc
Binary files /dev/null and b/skyonnweb/media/hjuu89.docx differ
diff --git a/skyonnweb/media/laxmi1223.pdf b/skyonnweb/media/laxmi1223.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/laxmi1223.pdf differ
diff --git a/skyonnweb/media/laxmi1223_YQdQ5xn.pdf b/skyonnweb/media/laxmi1223_YQdQ5xn.pdf
new file mode 100644
index 0000000..2c4f9f2
Binary files /dev/null and b/skyonnweb/media/laxmi1223_YQdQ5xn.pdf differ
diff --git a/skyonnweb/media/laxmi89.pdf b/skyonnweb/media/laxmi89.pdf
new file mode 100644
index 0000000..9f98083
Binary files /dev/null and b/skyonnweb/media/laxmi89.pdf differ
diff --git a/skyonnweb/media/laxni87.pdf b/skyonnweb/media/laxni87.pdf
new file mode 100644
index 0000000..9f98083
Binary files /dev/null and b/skyonnweb/media/laxni87.pdf differ
diff --git a/skyonnweb/media/profile_pics/5.jpg b/skyonnweb/media/profile_pics/5.jpg
new file mode 100644
index 0000000..3743e6c
Binary files /dev/null and b/skyonnweb/media/profile_pics/5.jpg differ
diff --git a/skyonnweb/media/profile_pics/images.html b/skyonnweb/media/profile_pics/images.html
new file mode 100644
index 0000000..a14fda3
--- /dev/null
+++ b/skyonnweb/media/profile_pics/images.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/skyonnweb/media/profile_pics/images_TZObiZb.html b/skyonnweb/media/profile_pics/images_TZObiZb.html
new file mode 100644
index 0000000..a14fda3
--- /dev/null
+++ b/skyonnweb/media/profile_pics/images_TZObiZb.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/skyonnweb/media/profile_pics/laxmi2.jpg b/skyonnweb/media/profile_pics/laxmi2.jpg
new file mode 100644
index 0000000..bcf8f94
Binary files /dev/null and b/skyonnweb/media/profile_pics/laxmi2.jpg differ
diff --git a/skyonnweb/media/profile_pics/laxmi4.jpg b/skyonnweb/media/profile_pics/laxmi4.jpg
new file mode 100644
index 0000000..5750dcb
Binary files /dev/null and b/skyonnweb/media/profile_pics/laxmi4.jpg differ
diff --git a/skyonnweb/media/profile_pics/laxmi4_DVzJEX7.jpg b/skyonnweb/media/profile_pics/laxmi4_DVzJEX7.jpg
new file mode 100644
index 0000000..5750dcb
Binary files /dev/null and b/skyonnweb/media/profile_pics/laxmi4_DVzJEX7.jpg differ
diff --git a/skyonnweb/media/profile_pics/laxmi6.jpg b/skyonnweb/media/profile_pics/laxmi6.jpg
new file mode 100644
index 0000000..1523635
Binary files /dev/null and b/skyonnweb/media/profile_pics/laxmi6.jpg differ
diff --git a/skyonnweb/media/profile_pics/motion-sensor_11256354.png b/skyonnweb/media/profile_pics/motion-sensor_11256354.png
new file mode 100644
index 0000000..f377ad5
Binary files /dev/null and b/skyonnweb/media/profile_pics/motion-sensor_11256354.png differ
diff --git a/skyonnweb/media/tcslucky234.docx b/skyonnweb/media/tcslucky234.docx
new file mode 100644
index 0000000..3333194
Binary files /dev/null and b/skyonnweb/media/tcslucky234.docx differ
diff --git a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-.png b/skyonnweb/profile_pics/001_-_Admin_Dashboard_-.png
deleted file mode 100644
index a05250c..0000000
Binary files a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_WRKZrun.png b/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_WRKZrun.png
deleted file mode 100644
index a05250c..0000000
Binary files a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_WRKZrun.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_bJymqUf.png b/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_bJymqUf.png
deleted file mode 100644
index a05250c..0000000
Binary files a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_bJymqUf.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_l2c3o5F.png b/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_l2c3o5F.png
deleted file mode 100644
index a05250c..0000000
Binary files a/skyonnweb/profile_pics/001_-_Admin_Dashboard_-_l2c3o5F.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/0391605a-c602-4996-94f1-a2e8ce0c7e2d.webm b/skyonnweb/profile_pics/0391605a-c602-4996-94f1-a2e8ce0c7e2d.webm
deleted file mode 100644
index 348e348..0000000
Binary files a/skyonnweb/profile_pics/0391605a-c602-4996-94f1-a2e8ce0c7e2d.webm and /dev/null differ
diff --git a/skyonnweb/profile_pics/2762751.jpg b/skyonnweb/profile_pics/2762751.jpg
deleted file mode 100644
index 4bda14b..0000000
Binary files a/skyonnweb/profile_pics/2762751.jpg and /dev/null differ
diff --git a/skyonnweb/profile_pics/2762751_npMMFLh.jpg b/skyonnweb/profile_pics/2762751_npMMFLh.jpg
deleted file mode 100644
index 4bda14b..0000000
Binary files a/skyonnweb/profile_pics/2762751_npMMFLh.jpg and /dev/null differ
diff --git a/skyonnweb/profile_pics/2762751_rA3oUct.jpg b/skyonnweb/profile_pics/2762751_rA3oUct.jpg
deleted file mode 100644
index 4bda14b..0000000
Binary files a/skyonnweb/profile_pics/2762751_rA3oUct.jpg and /dev/null differ
diff --git a/skyonnweb/profile_pics/Login_page_in_HTML.png b/skyonnweb/profile_pics/Login_page_in_HTML.png
deleted file mode 100644
index 228b404..0000000
Binary files a/skyonnweb/profile_pics/Login_page_in_HTML.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Login_page_in_HTML_ODqHEPB.png b/skyonnweb/profile_pics/Login_page_in_HTML_ODqHEPB.png
deleted file mode 100644
index 228b404..0000000
Binary files a/skyonnweb/profile_pics/Login_page_in_HTML_ODqHEPB.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard.png b/skyonnweb/profile_pics/Manager_Dashboard.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard_BJH5c4E.png b/skyonnweb/profile_pics/Manager_Dashboard_BJH5c4E.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard_BJH5c4E.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard_Bu1yh5a.png b/skyonnweb/profile_pics/Manager_Dashboard_Bu1yh5a.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard_Bu1yh5a.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard_DVGDNYK.png b/skyonnweb/profile_pics/Manager_Dashboard_DVGDNYK.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard_DVGDNYK.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard_JjtBMGB.png b/skyonnweb/profile_pics/Manager_Dashboard_JjtBMGB.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard_JjtBMGB.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Manager_Dashboard_QmrcdRE.png b/skyonnweb/profile_pics/Manager_Dashboard_QmrcdRE.png
deleted file mode 100644
index a3367a1..0000000
Binary files a/skyonnweb/profile_pics/Manager_Dashboard_QmrcdRE.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/New_Job_Posting_-.png b/skyonnweb/profile_pics/New_Job_Posting_-.png
deleted file mode 100644
index 26751a1..0000000
Binary files a/skyonnweb/profile_pics/New_Job_Posting_-.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/New_Job_Posting_-_1AwS2ng.png b/skyonnweb/profile_pics/New_Job_Posting_-_1AwS2ng.png
deleted file mode 100644
index 26751a1..0000000
Binary files a/skyonnweb/profile_pics/New_Job_Posting_-_1AwS2ng.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/New_Job_Posting_-_3lCtXfC.png b/skyonnweb/profile_pics/New_Job_Posting_-_3lCtXfC.png
deleted file mode 100644
index 26751a1..0000000
Binary files a/skyonnweb/profile_pics/New_Job_Posting_-_3lCtXfC.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/New_Job_Posting_-_72XBNEo.png b/skyonnweb/profile_pics/New_Job_Posting_-_72XBNEo.png
deleted file mode 100644
index 26751a1..0000000
Binary files a/skyonnweb/profile_pics/New_Job_Posting_-_72XBNEo.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/New_Job_Posting_-_qd0gaPT.png b/skyonnweb/profile_pics/New_Job_Posting_-_qd0gaPT.png
deleted file mode 100644
index 26751a1..0000000
Binary files a/skyonnweb/profile_pics/New_Job_Posting_-_qd0gaPT.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Screenshot_1.png b/skyonnweb/profile_pics/Screenshot_1.png
deleted file mode 100644
index 3c5ba30..0000000
Binary files a/skyonnweb/profile_pics/Screenshot_1.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Screenshot_2024-03-06_125339.png b/skyonnweb/profile_pics/Screenshot_2024-03-06_125339.png
deleted file mode 100644
index 9de84ca..0000000
Binary files a/skyonnweb/profile_pics/Screenshot_2024-03-06_125339.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Screenshot_2024-03-06_125421.png b/skyonnweb/profile_pics/Screenshot_2024-03-06_125421.png
deleted file mode 100644
index 5bd47ad..0000000
Binary files a/skyonnweb/profile_pics/Screenshot_2024-03-06_125421.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/Screenshot_2024-03-06_125421_e6790TX.png b/skyonnweb/profile_pics/Screenshot_2024-03-06_125421_e6790TX.png
deleted file mode 100644
index 5bd47ad..0000000
Binary files a/skyonnweb/profile_pics/Screenshot_2024-03-06_125421_e6790TX.png and /dev/null differ
diff --git a/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_10.56.39.jpeg b/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_10.56.39.jpeg
deleted file mode 100644
index fb91192..0000000
Binary files a/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_10.56.39.jpeg and /dev/null differ
diff --git a/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_11.04.39.jpeg b/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_11.04.39.jpeg
deleted file mode 100644
index a6a229c..0000000
Binary files a/skyonnweb/profile_pics/WhatsApp_Image_2023-11-03_at_11.04.39.jpeg and /dev/null differ
diff --git a/skyonnweb/profile_pics/download_1.htm b/skyonnweb/profile_pics/download_1.htm
new file mode 100644
index 0000000..56baa95
--- /dev/null
+++ b/skyonnweb/profile_pics/download_1.htm
@@ -0,0 +1,1540 @@
+
+
+
+
+
+
+
+
+
+
+ Admin Dashboard
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/skyonnweb/skyonnadmin/migrations/0001_initial.py b/skyonnweb/skyonnadmin/migrations/0001_initial.py
index f386406..f0e7430 100644
--- a/skyonnweb/skyonnadmin/migrations/0001_initial.py
+++ b/skyonnweb/skyonnadmin/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 4.2.11 on 2024-03-14 07:02
+# Generated by Django 4.2.11 on 2024-05-07 11:06
from django.db import migrations, models
@@ -11,6 +11,26 @@ class Migration(migrations.Migration):
]
operations = [
+ migrations.CreateModel(
+ name='Contact',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('client_id', models.CharField(max_length=30, null=True)),
+ ('name', models.CharField(max_length=40, null=True)),
+ ('designation', models.CharField(max_length=50, null=True)),
+ ('department', models.CharField(max_length=50, null=True)),
+ ('phone_no', models.CharField(max_length=50, null=True)),
+ ('email', models.EmailField(max_length=254, null=True)),
+ ('location', models.CharField(max_length=102, null=True)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Locations',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('location', models.CharField(max_length=50, null=True)),
+ ],
+ ),
migrations.CreateModel(
name='skyonnAdmin',
fields=[
@@ -35,4 +55,30 @@ class Migration(migrations.Migration):
'abstract': False,
},
),
+ migrations.CreateModel(
+ name='SubcompanyDetails',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('parent_company', models.CharField(max_length=100)),
+ ('sub_company', models.CharField(max_length=100, unique=True)),
+ ('location', models.CharField(max_length=100)),
+ ('gst_no', models.CharField(max_length=50)),
+ ('address', models.CharField(max_length=200)),
+ ('client_id', models.CharField(max_length=20, null=True)),
+ ('contacts', models.ManyToManyField(related_name='subcompany_contacts', to='skyonnadmin.contact')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='ClientDetails',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('parent_company', models.CharField(max_length=100)),
+ ('location', models.CharField(max_length=100)),
+ ('department', models.CharField(max_length=100)),
+ ('gst_no', models.CharField(max_length=50)),
+ ('address', models.CharField(max_length=200)),
+ ('client_id', models.CharField(max_length=20, null=True)),
+ ('contacts', models.ManyToManyField(related_name='contacts', to='skyonnadmin.contact')),
+ ],
+ ),
]
diff --git a/skyonnweb/skyonnadmin/migrations/0002_addcontact_rename_phone_no_contact_first_name_and_more.py b/skyonnweb/skyonnadmin/migrations/0002_addcontact_rename_phone_no_contact_first_name_and_more.py
new file mode 100644
index 0000000..45be9e2
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0002_addcontact_rename_phone_no_contact_first_name_and_more.py
@@ -0,0 +1,141 @@
+# Generated by Django 5.0.6 on 2024-05-25 05:39
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AddContact',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('Company', models.CharField(max_length=100, null=True)),
+ ('Sub_company', models.CharField(max_length=100, null=True)),
+ ('location', models.CharField(max_length=50, null=True)),
+ ('Department', models.CharField(max_length=50, null=True)),
+ ('Designation', models.CharField(max_length=50, null=True)),
+ ('Phone_number', models.IntegerField(null=True)),
+ ('Email', models.EmailField(max_length=254, null=True)),
+ ],
+ ),
+ migrations.RenameField(
+ model_name='contact',
+ old_name='phone_no',
+ new_name='first_name',
+ ),
+ migrations.RemoveField(
+ model_name='clientdetails',
+ name='contacts',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='email',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='location',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='name',
+ ),
+ migrations.RemoveField(
+ model_name='subcompanydetails',
+ name='contacts',
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='company_email',
+ field=models.EmailField(default='default_company_email@example.com', max_length=254, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='last_name',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='phone_no1',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='phone_no2',
+ field=models.CharField(blank=True, max_length=20, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='department',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='address',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='department',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='gst_no',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='location',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='parent_company',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='contact',
+ name='client_id',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ migrations.AlterField(
+ model_name='contact',
+ name='department',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='contact',
+ name='designation',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='address',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='gst_no',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='location',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='parent_company',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='sub_company',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0002_contact_subcompanydetails_clientdetails.py b/skyonnweb/skyonnadmin/migrations/0002_contact_subcompanydetails_clientdetails.py
deleted file mode 100644
index 5b42375..0000000
--- a/skyonnweb/skyonnadmin/migrations/0002_contact_subcompanydetails_clientdetails.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Generated by Django 4.2.11 on 2024-03-18 07:10
-
-from django.db import migrations, models
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('skyonnadmin', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Contact',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('first_name', models.CharField(max_length=50)),
- ('last_name', models.CharField(max_length=50)),
- ('phone_no1', models.CharField(max_length=20)),
- ('phone_no2', models.CharField(blank=True, max_length=20, null=True)),
- ('company_email', models.EmailField(max_length=254)),
- ('designation', models.CharField(max_length=100)),
- ('department', models.CharField(max_length=100)),
- ],
- ),
- migrations.CreateModel(
- name='SubcompanyDetails',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('parent_company', models.CharField(max_length=100)),
- ('sub_company', models.CharField(max_length=100)),
- ('location', models.CharField(max_length=100)),
- ('department', models.CharField(max_length=100)),
- ('gst_no', models.CharField(max_length=50)),
- ('address', models.CharField(max_length=200)),
- ('client_id', models.CharField(max_length=20, null=True)),
- ('admin_first_name', models.CharField(max_length=50)),
- ('admin_last_name', models.CharField(max_length=50)),
- ('admin_phone_no1', models.CharField(max_length=20)),
- ('admin_phone_no2', models.CharField(blank=True, max_length=20, null=True)),
- ('admin_company_email', models.EmailField(max_length=254)),
- ('admin_designation', models.CharField(max_length=100, null=True)),
- ('admin_department', models.CharField(max_length=100, null=True)),
- ('admin_location', models.CharField(max_length=100, null=True)),
- ('accounts_contacts', models.ManyToManyField(related_name='subcompany_accounts_contacts', to='skyonnadmin.contact')),
- ('admin_contacts', models.ManyToManyField(related_name='subcompany_admin_contacts', to='skyonnadmin.contact')),
- ('hr_contacts', models.ManyToManyField(related_name='subcompany_hr_contacts', to='skyonnadmin.contact')),
- ('recruiter_contacts', models.ManyToManyField(related_name='subcompany_recruiter_contacts', to='skyonnadmin.contact')),
- ],
- ),
- migrations.CreateModel(
- name='ClientDetails',
- fields=[
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('parent_company', models.CharField(max_length=100)),
- ('location', models.CharField(max_length=100)),
- ('department', models.CharField(max_length=100)),
- ('gst_no', models.CharField(max_length=50)),
- ('address', models.CharField(max_length=200)),
- ('client_id', models.CharField(max_length=20, null=True)),
- ('admin_first_name', models.CharField(max_length=50)),
- ('admin_last_name', models.CharField(max_length=50)),
- ('admin_phone_no1', models.CharField(max_length=20)),
- ('admin_phone_no2', models.CharField(blank=True, max_length=20, null=True)),
- ('admin_company_email', models.EmailField(max_length=254)),
- ('admin_designation', models.CharField(max_length=100, null=True)),
- ('admin_department', models.CharField(max_length=100, null=True)),
- ('admin_location', models.CharField(max_length=100, null=True)),
- ('accounts_contacts', models.ManyToManyField(related_name='accounts_contacts', to='skyonnadmin.contact')),
- ('admin_contacts', models.ManyToManyField(related_name='admin_contacts', to='skyonnadmin.contact')),
- ('hr_contacts', models.ManyToManyField(related_name='hr_contacts', to='skyonnadmin.contact')),
- ('recruiter_contacts', models.ManyToManyField(related_name='recruiter_contacts', to='skyonnadmin.contact')),
- ],
- ),
- ]
diff --git a/skyonnweb/skyonnadmin/migrations/0003_rename_address_clientdetails_street_and_more.py b/skyonnweb/skyonnadmin/migrations/0003_rename_address_clientdetails_street_and_more.py
new file mode 100644
index 0000000..9bcbdde
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0003_rename_address_clientdetails_street_and_more.py
@@ -0,0 +1,161 @@
+# Generated by Django 5.0.6 on 2024-05-25 06:10
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0002_addcontact_rename_phone_no_contact_first_name_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='address',
+ new_name='Street',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='department',
+ new_name='location_Id',
+ ),
+ migrations.RenameField(
+ model_name='contact',
+ old_name='first_name',
+ new_name='phone_no',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='address',
+ new_name='State',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='department',
+ new_name='location_id',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='client_id',
+ new_name='sub_client_id',
+ ),
+ migrations.RemoveField(
+ model_name='clientdetails',
+ name='location',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='client_id',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='company_email',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='last_name',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='phone_no1',
+ ),
+ migrations.RemoveField(
+ model_name='contact',
+ name='phone_no2',
+ ),
+ migrations.RemoveField(
+ model_name='subcompanydetails',
+ name='location',
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='Pincode',
+ field=models.IntegerField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='address_1',
+ field=models.CharField(blank=True, max_length=300, null=True),
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='address_2',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='contacts',
+ field=models.ManyToManyField(related_name='contacts', to='skyonnadmin.contact'),
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='country',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='clientdetails',
+ name='state',
+ field=models.CharField(blank=True, max_length=300, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='email',
+ field=models.EmailField(max_length=254, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='location',
+ field=models.CharField(max_length=102, null=True),
+ ),
+ migrations.AddField(
+ model_name='contact',
+ name='name',
+ field=models.CharField(max_length=40, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='Pincode',
+ field=models.IntegerField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='Street',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='address_1',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='address_2',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='country',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Phone_number',
+ field=models.IntegerField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='contact',
+ name='department',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='contact',
+ name='designation',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='sub_company',
+ field=models.CharField(max_length=100, null=True, unique=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0004_remove_clientdetails_street_and_more.py b/skyonnweb/skyonnadmin/migrations/0004_remove_clientdetails_street_and_more.py
new file mode 100644
index 0000000..7b8e971
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0004_remove_clientdetails_street_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 5.0.6 on 2024-05-27 06:10
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0003_rename_address_clientdetails_street_and_more'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='clientdetails',
+ name='Street',
+ ),
+ migrations.RemoveField(
+ model_name='subcompanydetails',
+ name='Street',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0005_subcompanydetails_city.py b/skyonnweb/skyonnadmin/migrations/0005_subcompanydetails_city.py
new file mode 100644
index 0000000..8420403
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0005_subcompanydetails_city.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-05-27 06:51
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0004_remove_clientdetails_street_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='subcompanydetails',
+ name='City',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0006_clientdetails_city.py b/skyonnweb/skyonnadmin/migrations/0006_clientdetails_city.py
new file mode 100644
index 0000000..aa9da8f
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0006_clientdetails_city.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-05-27 07:35
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0005_subcompanydetails_city'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='clientdetails',
+ name='City',
+ field=models.CharField(max_length=200, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0007_alter_clientdetails_parent_company.py b/skyonnweb/skyonnadmin/migrations/0007_alter_clientdetails_parent_company.py
new file mode 100644
index 0000000..028e68c
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0007_alter_clientdetails_parent_company.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-05-27 07:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0006_clientdetails_city'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='parent_company',
+ field=models.CharField(max_length=100, null=True, unique=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0008_alter_addcontact_phone_number.py b/skyonnweb/skyonnadmin/migrations/0008_alter_addcontact_phone_number.py
new file mode 100644
index 0000000..cc2ec09
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0008_alter_addcontact_phone_number.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-05-28 08:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0007_alter_clientdetails_parent_company'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Phone_number',
+ field=models.IntegerField(null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0009_alter_addcontact_phone_number_and_more.py b/skyonnweb/skyonnadmin/migrations/0009_alter_addcontact_phone_number_and_more.py
new file mode 100644
index 0000000..49b1188
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0009_alter_addcontact_phone_number_and_more.py
@@ -0,0 +1,28 @@
+# Generated by Django 5.0.6 on 2024-05-28 08:23
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0008_alter_addcontact_phone_number'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Phone_number',
+ field=models.CharField(max_length=10, null=True),
+ ),
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='Pincode',
+ field=models.IntegerField(null=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='Pincode',
+ field=models.IntegerField(null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0010_addcontact_name.py b/skyonnweb/skyonnadmin/migrations/0010_addcontact_name.py
new file mode 100644
index 0000000..3f48e31
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0010_addcontact_name.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-06-04 09:06
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0009_alter_addcontact_phone_number_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='Name',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0011_rename_address_1_subcompanydetails_address_1_and_more.py b/skyonnweb/skyonnadmin/migrations/0011_rename_address_1_subcompanydetails_address_1_and_more.py
new file mode 100644
index 0000000..5b05329
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0011_rename_address_1_subcompanydetails_address_1_and_more.py
@@ -0,0 +1,53 @@
+# Generated by Django 5.0.6 on 2024-06-07 06:34
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0010_addcontact_name'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='address_1',
+ new_name='Address_1',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='address_2',
+ new_name='Address_2',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='country',
+ new_name='Country',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='gst_no',
+ new_name='GST_no',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='location_id',
+ new_name='Location_id',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='parent_company',
+ new_name='Parent_company',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='sub_client_id',
+ new_name='Sub_client_id',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='sub_company',
+ new_name='Sub_company',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0012_rename_address_1_clientdetails_address_1_and_more.py b/skyonnweb/skyonnadmin/migrations/0012_rename_address_1_clientdetails_address_1_and_more.py
new file mode 100644
index 0000000..b858fe7
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0012_rename_address_1_clientdetails_address_1_and_more.py
@@ -0,0 +1,48 @@
+# Generated by Django 5.0.6 on 2024-06-07 06:50
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0011_rename_address_1_subcompanydetails_address_1_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='address_1',
+ new_name='Address_1',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='address_2',
+ new_name='Address_2',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='country',
+ new_name='Country',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='gst_no',
+ new_name='GST_no',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='location_Id',
+ new_name='Location_Id',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='parent_company',
+ new_name='Parent_company',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='state',
+ new_name='State',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0013_rename_address_1_clientdetails_address_1_and_more.py b/skyonnweb/skyonnadmin/migrations/0013_rename_address_1_clientdetails_address_1_and_more.py
new file mode 100644
index 0000000..4479616
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0013_rename_address_1_clientdetails_address_1_and_more.py
@@ -0,0 +1,88 @@
+# Generated by Django 5.0.6 on 2024-06-07 07:08
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0012_rename_address_1_clientdetails_address_1_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='Address_1',
+ new_name='address_1',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='Address_2',
+ new_name='address_2',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='Country',
+ new_name='country',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='GST_no',
+ new_name='gst_no',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='Location_Id',
+ new_name='location_Id',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='Parent_company',
+ new_name='parent_company',
+ ),
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='State',
+ new_name='state',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Address_1',
+ new_name='address_1',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Address_2',
+ new_name='address_2',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Country',
+ new_name='country',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='GST_no',
+ new_name='gst_no',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Location_id',
+ new_name='location_id',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Parent_company',
+ new_name='parent_company',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Sub_client_id',
+ new_name='sub_client_id',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='Sub_company',
+ new_name='sub_company',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0014_sublocationdetails_alter_addcontact_company_and_more.py b/skyonnweb/skyonnadmin/migrations/0014_sublocationdetails_alter_addcontact_company_and_more.py
new file mode 100644
index 0000000..820f86e
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0014_sublocationdetails_alter_addcontact_company_and_more.py
@@ -0,0 +1,69 @@
+# Generated by Django 5.0.6 on 2024-06-10 07:24
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0013_rename_address_1_clientdetails_address_1_and_more'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SublocationDetails',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('parent_company', models.CharField(max_length=100, null=True)),
+ ('department', models.CharField(max_length=100, null=True)),
+ ('Location', models.CharField(max_length=100, null=True)),
+ ('gst_no', models.CharField(max_length=50, null=True)),
+ ('address_1', models.CharField(blank=True, max_length=300, null=True)),
+ ('address_2', models.CharField(blank=True, max_length=200, null=True)),
+ ('City', models.CharField(max_length=200, null=True)),
+ ('state', models.CharField(blank=True, max_length=300, null=True)),
+ ('Pincode', models.IntegerField(null=True)),
+ ('country', models.CharField(max_length=200, null=True)),
+ ],
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Company',
+ field=models.CharField(blank=True, max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Department',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Designation',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Email',
+ field=models.EmailField(max_length=254, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Name',
+ field=models.CharField(max_length=100, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Phone_number',
+ field=models.CharField(max_length=10, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Sub_company',
+ field=models.CharField(blank=True, max_length=100, null=True),
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='location',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0015_rename_state_sublocationdetails_state_and_more.py b/skyonnweb/skyonnadmin/migrations/0015_rename_state_sublocationdetails_state_and_more.py
new file mode 100644
index 0000000..fe9d870
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0015_rename_state_sublocationdetails_state_and_more.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.6 on 2024-06-10 09:07
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0014_sublocationdetails_alter_addcontact_company_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='sublocationdetails',
+ old_name='state',
+ new_name='State',
+ ),
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Name',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0016_rename_gst_no_clientdetails_gst_no_and_more.py b/skyonnweb/skyonnadmin/migrations/0016_rename_gst_no_clientdetails_gst_no_and_more.py
new file mode 100644
index 0000000..0da34d9
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0016_rename_gst_no_clientdetails_gst_no_and_more.py
@@ -0,0 +1,28 @@
+# Generated by Django 5.0.6 on 2024-06-10 10:30
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0015_rename_state_sublocationdetails_state_and_more'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='clientdetails',
+ old_name='gst_no',
+ new_name='GST_No',
+ ),
+ migrations.RenameField(
+ model_name='subcompanydetails',
+ old_name='gst_no',
+ new_name='GST_No',
+ ),
+ migrations.RenameField(
+ model_name='sublocationdetails',
+ old_name='gst_no',
+ new_name='GST_No',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0017_alter_clientdetails_gst_no_and_more.py b/skyonnweb/skyonnadmin/migrations/0017_alter_clientdetails_gst_no_and_more.py
new file mode 100644
index 0000000..31fd2dc
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0017_alter_clientdetails_gst_no_and_more.py
@@ -0,0 +1,28 @@
+# Generated by Django 5.0.6 on 2024-06-12 10:24
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0016_rename_gst_no_clientdetails_gst_no_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True, unique=True),
+ ),
+ migrations.AlterField(
+ model_name='sublocationdetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True, unique=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0018_alter_clientdetails_gst_no.py b/skyonnweb/skyonnadmin/migrations/0018_alter_clientdetails_gst_no.py
new file mode 100644
index 0000000..6efa24a
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0018_alter_clientdetails_gst_no.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.11 on 2024-06-23 11:53
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0017_alter_clientdetails_gst_no_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='clientdetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0019_alter_subcompanydetails_gst_no_and_more.py b/skyonnweb/skyonnadmin/migrations/0019_alter_subcompanydetails_gst_no_and_more.py
new file mode 100644
index 0000000..410c9b6
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0019_alter_subcompanydetails_gst_no_and_more.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.11 on 2024-06-27 18:13
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0018_alter_clientdetails_gst_no'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='subcompanydetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ migrations.AlterField(
+ model_name='sublocationdetails',
+ name='GST_No',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0020_client_jobposting.py b/skyonnweb/skyonnadmin/migrations/0020_client_jobposting.py
new file mode 100644
index 0000000..a8de62f
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0020_client_jobposting.py
@@ -0,0 +1,43 @@
+# Generated by Django 5.0.6 on 2024-07-05 07:51
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0019_alter_subcompanydetails_gst_no_and_more'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Client',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('parent_company', models.CharField(max_length=255)),
+ ],
+ ),
+ migrations.CreateModel(
+ name='JobPosting',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('JobID', models.CharField(max_length=100, unique=True)),
+ ('Location', models.CharField(max_length=255)),
+ ('SPOC', models.CharField(max_length=255)),
+ ('SPOC2', models.CharField(blank=True, max_length=255, null=True)),
+ ('StartDate', models.DateField()),
+ ('CloseDate', models.DateField()),
+ ('BudgetMin', models.DecimalField(decimal_places=2, max_digits=10)),
+ ('BudgetMax', models.DecimalField(decimal_places=2, max_digits=10)),
+ ('Header', models.CharField(max_length=255)),
+ ('job_description', models.TextField()),
+ ('Type', models.CharField(max_length=50)),
+ ('Experience_in_Yrs', models.CharField(max_length=50)),
+ ('NoOfPosting', models.IntegerField()),
+ ('SpecialInstructions', models.TextField(blank=True, null=True)),
+ ('JD', models.FileField(upload_to='JD/')),
+ ('Client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='skyonnadmin.client')),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0021_alter_jobposting_client.py b/skyonnweb/skyonnadmin/migrations/0021_alter_jobposting_client.py
new file mode 100644
index 0000000..4977882
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0021_alter_jobposting_client.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-07-05 07:53
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0020_client_jobposting'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='jobposting',
+ name='Client',
+ field=models.CharField(blank=True, max_length=100, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0022_rename_job_description_jobposting_jobdescription_and_more.py b/skyonnweb/skyonnadmin/migrations/0022_rename_job_description_jobposting_jobdescription_and_more.py
new file mode 100644
index 0000000..77ff8c6
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0022_rename_job_description_jobposting_jobdescription_and_more.py
@@ -0,0 +1,24 @@
+# Generated by Django 5.0.6 on 2024-07-05 09:19
+
+import skyonnadmin.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0021_alter_jobposting_client'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='jobposting',
+ old_name='job_description',
+ new_name='JobDescription',
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='JD',
+ field=models.FileField(upload_to='JD/', validators=[skyonnadmin.models.validate_file_extension]),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0023_spoc_alter_jobposting_budgetmax_and_more.py b/skyonnweb/skyonnadmin/migrations/0023_spoc_alter_jobposting_budgetmax_and_more.py
new file mode 100644
index 0000000..e83a3d8
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0023_spoc_alter_jobposting_budgetmax_and_more.py
@@ -0,0 +1,40 @@
+# Generated by Django 5.0.6 on 2024-07-23 05:49
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0022_rename_job_description_jobposting_jobdescription_and_more'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SPOC',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255)),
+ ],
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='BudgetMax',
+ field=models.DecimalField(decimal_places=2, max_digits=100),
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='BudgetMin',
+ field=models.DecimalField(decimal_places=2, max_digits=100),
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='JD',
+ field=models.FileField(null=True, upload_to='JD'),
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='JobID',
+ field=models.CharField(max_length=100),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0024_alter_jobposting_budgetmax_and_more.py b/skyonnweb/skyonnadmin/migrations/0024_alter_jobposting_budgetmax_and_more.py
new file mode 100644
index 0000000..9fc1b7e
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0024_alter_jobposting_budgetmax_and_more.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.6 on 2024-07-23 08:35
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0023_spoc_alter_jobposting_budgetmax_and_more'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='jobposting',
+ name='BudgetMax',
+ field=models.DecimalField(decimal_places=2, max_digits=10),
+ ),
+ migrations.AlterField(
+ model_name='jobposting',
+ name='BudgetMin',
+ field=models.DecimalField(decimal_places=2, max_digits=10),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0025_delete_jobposting_delete_spoc.py b/skyonnweb/skyonnadmin/migrations/0025_delete_jobposting_delete_spoc.py
new file mode 100644
index 0000000..099d8b3
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0025_delete_jobposting_delete_spoc.py
@@ -0,0 +1,19 @@
+# Generated by Django 5.0.6 on 2024-07-23 09:59
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0024_alter_jobposting_budgetmax_and_more'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='JobPosting',
+ ),
+ migrations.DeleteModel(
+ name='SPOC',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0026_rename_name_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0026_rename_name_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..1b34447
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0026_rename_name_addcontact_firstname_and_more.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.6 on 2024-07-26 06:55
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0025_delete_jobposting_delete_spoc'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='addcontact',
+ old_name='Name',
+ new_name='FirstName',
+ ),
+ migrations.RenameField(
+ model_name='addcontact',
+ old_name='location',
+ new_name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0027_remove_addcontact_firstname.py b/skyonnweb/skyonnadmin/migrations/0027_remove_addcontact_firstname.py
new file mode 100644
index 0000000..c5e9e59
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0027_remove_addcontact_firstname.py
@@ -0,0 +1,17 @@
+# Generated by Django 5.0.6 on 2024-07-26 07:09
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0026_rename_name_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0028_addcontact_firstname.py b/skyonnweb/skyonnadmin/migrations/0028_addcontact_firstname.py
new file mode 100644
index 0000000..06d6e27
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0028_addcontact_firstname.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.0.6 on 2024-07-26 07:10
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0027_remove_addcontact_firstname'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0029_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0029_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..86b7bca
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0029_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 5.0.6 on 2024-07-26 07:11
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0028_addcontact_firstname'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0030_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0030_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..3d8b964
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0030_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.0.6 on 2024-07-26 07:13
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0029_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0031_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0031_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..d8e052c
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0031_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.2.11 on 2024-07-30 10:06
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0030_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0032_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0032_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..76d5b1a
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0032_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.11 on 2024-07-30 10:06
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0031_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0033_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0033_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..994a475
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0033_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.2.11 on 2024-07-30 10:08
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0032_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0034_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0034_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..2a84f63
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0034_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.11 on 2024-07-30 10:08
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0033_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0035_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0035_addcontact_contact_id.py
new file mode 100644
index 0000000..bdbd7de
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0035_addcontact_contact_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.11 on 2024-08-01 06:59
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0034_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='Contact_id',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0036_remove_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0036_remove_addcontact_contact_id.py
new file mode 100644
index 0000000..94a7cfa
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0036_remove_addcontact_contact_id.py
@@ -0,0 +1,17 @@
+# Generated by Django 4.2.11 on 2024-08-09 10:32
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0035_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='Contact_id',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0037_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0037_addcontact_contact_id.py
new file mode 100644
index 0000000..b2e070c
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0037_addcontact_contact_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.11 on 2024-08-09 10:32
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0036_remove_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='Contact_id',
+ field=models.CharField(max_length=20, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0038_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0038_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..0680e4c
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0038_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 4.2.11 on 2024-08-09 10:33
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0037_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0039_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0039_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..482789d
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0039_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.11 on 2024-08-09 10:34
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0038_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0040_internalteam.py b/skyonnweb/skyonnadmin/migrations/0040_internalteam.py
new file mode 100644
index 0000000..48df0f4
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0040_internalteam.py
@@ -0,0 +1,33 @@
+# Generated by Django 4.2.11 on 2024-08-13 09:57
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0039_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='InternalTeam',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('FirstName', models.CharField(max_length=100, null=True)),
+ ('LastName', models.CharField(max_length=100, null=True)),
+ ('Designation', models.CharField(max_length=100, null=True)),
+ ('Department', models.CharField(max_length=100, null=True)),
+ ('Address_1', models.CharField(max_length=255, null=True)),
+ ('Address_2', models.CharField(blank=True, max_length=255, null=True)),
+ ('City', models.CharField(max_length=100)),
+ ('State', models.CharField(max_length=100, null=True)),
+ ('Pincode', models.CharField(max_length=6, null=True)),
+ ('Country', models.CharField(max_length=100, null=True)),
+ ('PhoneNo1', models.CharField(max_length=15, null=True)),
+ ('PhoneNo2', models.CharField(blank=True, max_length=15, null=True)),
+ ('Email1', models.EmailField(max_length=254, null=True)),
+ ('Email2', models.EmailField(max_length=254, null=True)),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0041_internalteam_band.py b/skyonnweb/skyonnadmin/migrations/0041_internalteam_band.py
new file mode 100644
index 0000000..8850485
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0041_internalteam_band.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.11 on 2024-08-30 09:41
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0040_internalteam'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='internalteam',
+ name='Band',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0042_internalteam_login_internalteam_password.py b/skyonnweb/skyonnadmin/migrations/0042_internalteam_login_internalteam_password.py
new file mode 100644
index 0000000..12f646a
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0042_internalteam_login_internalteam_password.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.11 on 2024-08-30 10:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0041_internalteam_band'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='internalteam',
+ name='Login',
+ field=models.EmailField(max_length=254, null=True),
+ ),
+ migrations.AddField(
+ model_name='internalteam',
+ name='Password',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0043_internalteam_user_id.py b/skyonnweb/skyonnadmin/migrations/0043_internalteam_user_id.py
new file mode 100644
index 0000000..53ab57c
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0043_internalteam_user_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.11 on 2024-09-02 06:49
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0042_internalteam_login_internalteam_password'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='internalteam',
+ name='user_id',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0044_alter_internalteam_email2.py b/skyonnweb/skyonnadmin/migrations/0044_alter_internalteam_email2.py
new file mode 100644
index 0000000..e8bf8c7
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0044_alter_internalteam_email2.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.1 on 2024-09-16 07:50
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0043_internalteam_user_id'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='internalteam',
+ name='Email2',
+ field=models.EmailField(max_length=40, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0045_alter_internalteam_email2.py b/skyonnweb/skyonnadmin/migrations/0045_alter_internalteam_email2.py
new file mode 100644
index 0000000..fdf89cd
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0045_alter_internalteam_email2.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.1 on 2024-09-16 07:55
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0044_alter_internalteam_email2'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='internalteam',
+ name='Email2',
+ field=models.EmailField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0046_spoc.py b/skyonnweb/skyonnadmin/migrations/0046_spoc.py
new file mode 100644
index 0000000..bd12d85
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0046_spoc.py
@@ -0,0 +1,20 @@
+# Generated by Django 5.1.1 on 2024-09-16 07:56
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0045_alter_internalteam_email2'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='SPOC',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, null=True)),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0047_delete_internalteam.py b/skyonnweb/skyonnadmin/migrations/0047_delete_internalteam.py
new file mode 100644
index 0000000..9e5dfc5
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0047_delete_internalteam.py
@@ -0,0 +1,16 @@
+# Generated by Django 5.1.1 on 2024-09-16 07:59
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0046_spoc'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='InternalTeam',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0048_internalteam.py b/skyonnweb/skyonnadmin/migrations/0048_internalteam.py
new file mode 100644
index 0000000..1ff22aa
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0048_internalteam.py
@@ -0,0 +1,37 @@
+# Generated by Django 5.1.1 on 2024-09-16 07:59
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0047_delete_internalteam'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='InternalTeam',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('FirstName', models.CharField(max_length=100, null=True)),
+ ('LastName', models.CharField(max_length=100, null=True)),
+ ('Designation', models.CharField(max_length=100, null=True)),
+ ('Department', models.CharField(max_length=100, null=True)),
+ ('Address_1', models.CharField(max_length=255, null=True)),
+ ('Address_2', models.CharField(blank=True, max_length=255, null=True)),
+ ('City', models.CharField(max_length=100)),
+ ('State', models.CharField(max_length=100, null=True)),
+ ('Pincode', models.CharField(max_length=6, null=True)),
+ ('Country', models.CharField(max_length=100, null=True)),
+ ('PhoneNo1', models.CharField(max_length=15, null=True)),
+ ('PhoneNo2', models.CharField(blank=True, max_length=15, null=True)),
+ ('Email1', models.EmailField(max_length=254, null=True)),
+ ('Email2', models.EmailField(max_length=50, null=True)),
+ ('Band', models.CharField(max_length=50, null=True)),
+ ('Login', models.EmailField(max_length=254, null=True)),
+ ('Password', models.CharField(max_length=50, null=True)),
+ ('user_id', models.CharField(max_length=50, null=True)),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0049_delete_addcontact.py b/skyonnweb/skyonnadmin/migrations/0049_delete_addcontact.py
new file mode 100644
index 0000000..9938ce9
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0049_delete_addcontact.py
@@ -0,0 +1,16 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:39
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0048_internalteam'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='AddContact',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0050_addcontact.py b/skyonnweb/skyonnadmin/migrations/0050_addcontact.py
new file mode 100644
index 0000000..e4c530b
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0050_addcontact.py
@@ -0,0 +1,28 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0049_delete_addcontact'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AddContact',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('Contact_id', models.CharField(max_length=20, null=True)),
+ ('Company', models.CharField(blank=True, max_length=100, null=True)),
+ ('Sub_company', models.CharField(blank=True, max_length=100, null=True)),
+ ('FirstName', models.CharField(max_length=100, null=True)),
+ ('LastName', models.CharField(blank=True, max_length=50, null=True)),
+ ('Department', models.CharField(blank=True, max_length=50, null=True)),
+ ('Designation', models.CharField(blank=True, max_length=50, null=True)),
+ ('Phone_number', models.CharField(max_length=10, null=True, unique=True)),
+ ('Email', models.EmailField(max_length=254, null=True, unique=True)),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0051_alter_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0051_alter_addcontact_contact_id.py
new file mode 100644
index 0000000..2540843
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0051_alter_addcontact_contact_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0050_addcontact'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='addcontact',
+ name='Contact_id',
+ field=models.CharField(max_length=30, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0052_remove_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0052_remove_addcontact_contact_id.py
new file mode 100644
index 0000000..dd307c9
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0052_remove_addcontact_contact_id.py
@@ -0,0 +1,17 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:41
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0051_alter_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='Contact_id',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0053_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0053_addcontact_contact_id.py
new file mode 100644
index 0000000..03a17e8
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0053_addcontact_contact_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:42
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0052_remove_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='Contact_id',
+ field=models.CharField(max_length=30, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0054_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0054_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..133978f
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0054_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:43
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0053_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0055_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0055_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..f734639
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0055_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.1.1 on 2024-09-16 08:43
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0054_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0056_delete_internalteam.py b/skyonnweb/skyonnadmin/migrations/0056_delete_internalteam.py
new file mode 100644
index 0000000..8f2d36e
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0056_delete_internalteam.py
@@ -0,0 +1,16 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:27
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0055_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.DeleteModel(
+ name='InternalTeam',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0057_internalteam.py b/skyonnweb/skyonnadmin/migrations/0057_internalteam.py
new file mode 100644
index 0000000..4c98504
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0057_internalteam.py
@@ -0,0 +1,37 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:27
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0056_delete_internalteam'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='InternalTeam',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('FirstName', models.CharField(max_length=100, null=True)),
+ ('LastName', models.CharField(max_length=100, null=True)),
+ ('Designation', models.CharField(max_length=100, null=True)),
+ ('Department', models.CharField(max_length=100, null=True)),
+ ('Address_1', models.CharField(max_length=255, null=True)),
+ ('Address_2', models.CharField(blank=True, max_length=255, null=True)),
+ ('City', models.CharField(max_length=100)),
+ ('State', models.CharField(max_length=100, null=True)),
+ ('Pincode', models.CharField(max_length=6, null=True)),
+ ('Country', models.CharField(max_length=100, null=True)),
+ ('PhoneNo1', models.CharField(max_length=15, null=True)),
+ ('PhoneNo2', models.CharField(blank=True, max_length=15, null=True)),
+ ('Email1', models.EmailField(max_length=254, null=True)),
+ ('Email2', models.EmailField(max_length=50, null=True)),
+ ('Band', models.CharField(max_length=50, null=True)),
+ ('Login', models.EmailField(max_length=254, null=True)),
+ ('Password', models.CharField(max_length=50, null=True)),
+ ('user_id', models.CharField(max_length=50, null=True)),
+ ],
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0058_remove_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0058_remove_addcontact_contact_id.py
new file mode 100644
index 0000000..4fc569a
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0058_remove_addcontact_contact_id.py
@@ -0,0 +1,17 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:38
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0057_internalteam'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='Contact_id',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0059_addcontact_contact_id.py b/skyonnweb/skyonnadmin/migrations/0059_addcontact_contact_id.py
new file mode 100644
index 0000000..96b15a2
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0059_addcontact_contact_id.py
@@ -0,0 +1,18 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0058_remove_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='Contact_id',
+ field=models.CharField(max_length=30, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0060_remove_addcontact_firstname_and_more.py b/skyonnweb/skyonnadmin/migrations/0060_remove_addcontact_firstname_and_more.py
new file mode 100644
index 0000000..f5b4e1f
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0060_remove_addcontact_firstname_and_more.py
@@ -0,0 +1,21 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:40
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0059_addcontact_contact_id'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='FirstName',
+ ),
+ migrations.RemoveField(
+ model_name='addcontact',
+ name='LastName',
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0061_addcontact_firstname_addcontact_lastname.py b/skyonnweb/skyonnadmin/migrations/0061_addcontact_firstname_addcontact_lastname.py
new file mode 100644
index 0000000..303a2ea
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0061_addcontact_firstname_addcontact_lastname.py
@@ -0,0 +1,23 @@
+# Generated by Django 5.1.1 on 2024-09-19 10:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0060_remove_addcontact_firstname_and_more'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='addcontact',
+ name='FirstName',
+ field=models.CharField(max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='addcontact',
+ name='LastName',
+ field=models.CharField(blank=True, max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0062_remove_internalteam_phoneno2_internalteam_landnumber.py b/skyonnweb/skyonnadmin/migrations/0062_remove_internalteam_phoneno2_internalteam_landnumber.py
new file mode 100644
index 0000000..7e084ed
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0062_remove_internalteam_phoneno2_internalteam_landnumber.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2.11 on 2024-12-03 10:56
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0061_addcontact_firstname_addcontact_lastname'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='internalteam',
+ name='PhoneNo2',
+ ),
+ migrations.AddField(
+ model_name='internalteam',
+ name='LandNumber',
+ field=models.CharField(blank=True, max_length=25, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/migrations/0063_remove_internalteam_band_internalteam_level.py b/skyonnweb/skyonnadmin/migrations/0063_remove_internalteam_band_internalteam_level.py
new file mode 100644
index 0000000..3f6a39f
--- /dev/null
+++ b/skyonnweb/skyonnadmin/migrations/0063_remove_internalteam_band_internalteam_level.py
@@ -0,0 +1,22 @@
+# Generated by Django 4.2.11 on 2024-12-03 10:57
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('skyonnadmin', '0062_remove_internalteam_phoneno2_internalteam_landnumber'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='internalteam',
+ name='Band',
+ ),
+ migrations.AddField(
+ model_name='internalteam',
+ name='Level',
+ field=models.CharField(max_length=50, null=True),
+ ),
+ ]
diff --git a/skyonnweb/skyonnadmin/models.py b/skyonnweb/skyonnadmin/models.py
index 0ed76a1..74f66aa 100644
--- a/skyonnweb/skyonnadmin/models.py
+++ b/skyonnweb/skyonnadmin/models.py
@@ -1,5 +1,7 @@
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models
+from django.core.exceptions import ValidationError
+import os
class CustomUserManager(BaseUserManager):
@@ -56,68 +58,129 @@ class skyonnAdmin(AbstractBaseUser):
self.admin_id = f'{self.ADMIN_ID_PREFIX}{new_id:03d}'
super().save(*args, **kwargs)
- def __str__(self):
+ def _str_(self):
return self.phone
+class SubcompanyDetails(models.Model):
+ sub_client_id = models.CharField(max_length=20, null=True)
+ parent_company = models.CharField(max_length=100,null=True)
+ sub_company = models.CharField(max_length=100,unique=True,null=True)
+ GST_No = models.CharField(max_length=50, null=True)
+ location_id = models.CharField(max_length=100,null=True)
+ address_1 = models.CharField(max_length=200,null=True)
+ address_2 = models.CharField(max_length=200,null=True)
+ # Street = models.CharField(max_length=200,null=True)
+ City = models.CharField(max_length=200, null=True)
+ State = models.CharField(max_length=200,null=True)
+ Pincode =models.IntegerField(null=True)
+ country = models.CharField(max_length=200,null=True)
+
+
+ def _str_(self):
+ return f"{self.parent_company}"
+
+
class Contact(models.Model):
- client_id = models.CharField(max_length=20, null=True)
- first_name = models.CharField(max_length=50)
- last_name = models.CharField(max_length=50)
- phone_no1 = models.CharField(max_length=20)
- phone_no2 = models.CharField(max_length=20, blank=True, null=True)
- company_email = models.EmailField()
- designation = models.CharField(max_length=100)
- department = models.CharField(max_length=100)
- def __str__(self):
- return f"{self.first_name} {self.last_name} - {self.company_email}"
+ # sub_client_id = models.ForeignKey(SubcompanyDetails,on_delete=models.CASCADE)
+ name = models.CharField(max_length=40,null=True)
+ designation = models.CharField(max_length=50,null=True)
+ department = models.CharField(max_length=50,null=True)
+ phone_no = models.CharField(max_length=50, null=True)
+ email = models.EmailField(null=True)
+ location = models.CharField(max_length=102,null=True)
+ def _str_(self):
+ return f"{self.name} - {self.department}"
class ClientDetails(models.Model):
- parent_company = models.CharField(max_length=100)
- location = models.CharField(max_length=100)
- department = models.CharField(max_length=100)
- gst_no = models.CharField(max_length=50)
- address = models.CharField(max_length=200)
+ # STATE_CHOICES =(('Andhra Pradesh','andhra Pradesh'),('Arunachal Pradesh','arunachal Pradesh'),('assam','Assam'),
+ # ('Bihar','bihar'),('Chhattisgarh','chhattisgarh'),('Goa','goa'),('Gujarat','Gujarat'),('Haryana','haryana'),
+ # ('Himachal Pradesh','himachal Pradesh'),('Jharkhand','jharkhand'),('Karnataka','karnataka'),
+ # ('Kerala','kerala'),)
+
client_id = models.CharField(max_length=20, null=True)
- admin_first_name = models.CharField(max_length=50)
- admin_last_name = models.CharField(max_length=50)
- admin_phone_no1 = models.CharField(max_length=20)
- admin_phone_no2 = models.CharField(max_length=20, blank=True, null=True)
- admin_company_email = models.EmailField()
- admin_designation = models.CharField(max_length=100, null=True)
- admin_department = models.CharField(max_length=100, null=True)
- admin_location = models.CharField(max_length=100, null=True)
- admin_contacts = models.ManyToManyField(Contact, related_name='admin_contacts')
- hr_contacts = models.ManyToManyField(Contact, related_name='hr_contacts')
- accounts_contacts = models.ManyToManyField(Contact, related_name='accounts_contacts')
- recruiter_contacts = models.ManyToManyField(Contact, related_name='recruiter_contacts')
+ parent_company = models.CharField(max_length=100,null=True, unique=True)
+ GST_No = models.CharField(max_length=50, null=True)
+ location_Id = models.CharField(max_length=100,null=True)
+ address_1 = models.CharField(max_length=300,blank=True,null=True)
+ address_2 = models.CharField(max_length=200,null=True,blank=True)
+ # Street=models.CharField(max_length=200,null=True)
+ City = models.CharField(max_length=200, null=True)
+ state = models.CharField(max_length=300, blank=True, null=True)
+ Pincode = models.IntegerField(null=True)
+ country = models.CharField(max_length=200,null=True)
+
+ contacts = models.ManyToManyField(Contact, related_name='contacts')
+
+ def _str_(self):
+ return f"{self.parent_company} - {self.location_Id}"
+
+class SublocationDetails(models.Model):
+ parent_company = models.CharField(max_length=100, null=True)
+ department = models.CharField(max_length=100, null=True)
+ GST_No = models.CharField(max_length=50, null=True)
+ Location = models.CharField(max_length=100, null=True)
+ address_1 = models.CharField(max_length=300, blank=True, null=True)
+ address_2 = models.CharField(max_length=200, null=True, blank=True)
+ City = models.CharField(max_length=200, null=True)
+ State = models.CharField(max_length=300, blank=True, null=True)
+ Pincode = models.IntegerField(null=True)
+ country = models.CharField(max_length=200, null=True)
+
+
+class Locations(models.Model):
+ location = models.CharField(null=True, max_length=50)
+
+
+class AddContact(models.Model):
+ Contact_id = models.CharField(max_length=30, null=True)
+ Company = models.CharField(max_length=100, null=True, blank=True)
+ Sub_company = models.CharField(max_length=100, null=True, blank=True)
+ FirstName = models.CharField(max_length=100, null=True)
+ LastName = models.CharField(max_length=50, null=True, blank=True)
+ Department = models.CharField(max_length=50, null=True, blank=True)
+ Designation = models.CharField(max_length=50, null=True, blank=True)
+ Phone_number = models.CharField(max_length=10, unique=True, null=True)
+ Email = models.EmailField(unique=True, null=True)
+
+class Client(models.Model):
+ parent_company = models.CharField(max_length=255)
def __str__(self):
- return f"{self.parent_company} - {self.location}"
-
-
-class SubcompanyDetails(models.Model):
- parent_company = models.CharField(max_length=100)
- sub_company = models.CharField(max_length=100)
- location = models.CharField(max_length=100)
- department = models.CharField(max_length=100)
- gst_no = models.CharField(max_length=50)
- address = models.CharField(max_length=200)
- client_id = models.CharField(max_length=20, null=True)
- admin_first_name = models.CharField(max_length=50)
- admin_last_name = models.CharField(max_length=50)
- admin_phone_no1 = models.CharField(max_length=20)
- admin_phone_no2 = models.CharField(max_length=20, blank=True, null=True)
- admin_company_email = models.EmailField()
- admin_designation = models.CharField(max_length=100, null=True)
- admin_department = models.CharField(max_length=100, null=True)
- admin_location = models.CharField(max_length=100, null=True)
- admin_contacts = models.ManyToManyField(Contact, related_name='subcompany_admin_contacts')
- hr_contacts = models.ManyToManyField(Contact, related_name='subcompany_hr_contacts')
- accounts_contacts = models.ManyToManyField(Contact, related_name='subcompany_accounts_contacts')
- recruiter_contacts = models.ManyToManyField(Contact, related_name='subcompany_recruiter_contacts')
+ return self.parent_company
+
+def validate_file_extension(value):
+ ext = os.path.splitext(value.name)[1] # Get file extension
+ valid_extensions = ['.pdf', '.jpg', '.jpeg']
+ if not ext.lower() in valid_extensions:
+ raise ValidationError('Unsupported file extension. Allowed extensions are: .pdf, .jpg, .jpeg')
+
+class SPOC(models.Model):
+ name = models.CharField(max_length=255,null=True)
+
+class InternalTeam(models.Model):
+ FirstName = models.CharField(max_length=100, null=True)
+ LastName = models.CharField(max_length=100, null=True)
+ Designation = models.CharField(max_length=100, null=True)
+ Department = models.CharField(max_length=100, null=True)
+ Address_1 = models.CharField(max_length=255, null=True)
+ Address_2 = models.CharField(max_length=255, blank=True, null=True)
+ City = models.CharField(max_length=100)
+ State = models.CharField(max_length=100, null=True)
+ Pincode = models.CharField(max_length=6, null=True)
+ Country = models.CharField(max_length=100, null=True)
+ PhoneNo1 = models.CharField(max_length=15, null=True)
+ LandNumber = models.CharField(max_length=25, blank=True, null=True)
+ Email1 = models.EmailField(null=True)
+ Email2 = models.EmailField(max_length=50,null=True)
+ Level = models.CharField(max_length=50, null=True)
+
+ Login = models.EmailField(null=True)
+ Password = models.CharField(max_length=50, null=True)
+ user_id = models.CharField(max_length=50, null=True)
def __str__(self):
- return f"{self.parent_company} - {self.location}"
+ return f"{self.FirstName} {self.LastName}"
+
diff --git a/skyonnweb/skyonnadmin/serializers.py b/skyonnweb/skyonnadmin/serializers.py
new file mode 100644
index 0000000..953a451
--- /dev/null
+++ b/skyonnweb/skyonnadmin/serializers.py
@@ -0,0 +1,10 @@
+from rest_framework import serializers
+from .models import SubcompanyDetails
+
+class DetailsSerializer(serializers.Serializer):
+ client_details= serializers.ListField(child=serializers.DictField())
+ sub_company_details = serializers.ListField(child=serializers.DictField())
+
+ class Meta:
+ model = SubcompanyDetails
+ fields = '__all__'
diff --git a/skyonnweb/skyonnadmin/urls.py b/skyonnweb/skyonnadmin/urls.py
index f8d3c3f..18fd45e 100644
--- a/skyonnweb/skyonnadmin/urls.py
+++ b/skyonnweb/skyonnadmin/urls.py
@@ -4,7 +4,9 @@ from . import views
urlpatterns = [
path('', views.home, name='admin_home'),
path('create_admin/', views.create_admin, name='create_admin'),
- path('admin-login/', views.login, name='admin-login'), # URL for login
+ path('admin_login/', views.admin_login, name='admin_login'), # URL for login
+ path('validate_admin/', views.validate_admin, name='validate_admin'),
+ path('get_admin_details/', views.get_admin_details, name='get_admin_details'),
path('admin/dashboard//', views.admin_dashboard, name='dashboard'),
path('admin_logout/', views.logout_view, name='admin_logout'),
# path('client_details/', views.client_details, name='client_details'),
@@ -16,12 +18,50 @@ urlpatterns = [
path('add_subclient/', views.add_subclient, name='add_subclient'),
path('add_client/', views.add_client, name='add_client'),
path('existing_client/', views.existing_client, name='existing_client'),
- path('get_contacts/', views.get_contacts, name='get_contacts'),
+
+ path('new_job_postings/', views.new_job_posting, name='new_job_postings'),
+
+ # path('get_contacts/', views.get_contacts, name='get_contacts'),
path('save-details/', views.save_details, name='save_details'),
+ path('get_GSTNo/', views.get_GSTNo, name='get_GSTNo'),
path('save-details-subcompany/', views.save_details_subcompany, name='save-details-subcompany'),
+ path('get_parentCompany/', views.get_parentCompany, name='get_parentCompany'),
+ path('save_sublocation/', views.save_sublocation, name='save_sublocation'),
path('api/get_subcompanies/', views.get_locations, name='get_subcompanies'),
path('get_subcompany_details/', views.get_combined_details, name='get_subcompany_details'),
+ path('add_new_contact/', views.add_new_contact, name='add_new_contact'),
+ path('add_location/', views.add_locations, name='add_location'),
+ path('get_subclients/', views.get_subclients, name='get_subclients'),
+ path('get_filtered_data/', views.get_filtered_data, name='get_filtered_data'),
+ path('save_new_entry/', views.save_new_entry, name='save_new_entry'),
path('add_contact/', views.add_contact, name='add_contact'),
+ path('get_team_details/', views.get_team_details, name='get_team_details'),
+ path('get_department/', views.get_department, name='get_department'),
+ path('get_SearchData/', views.get_SearchData, name='get_SearchData'),
+ path('check_parent_company/', views.check_parent_company, name='check_parent_company'),
+ path('check_sub_company/', views.check_sub_company, name='check_sub_company'),
+ # path('save_job_posting/', views.save_job_posting, name='save_job_posting'),
+
+ path('edit_CompanyDetails/', views.edit_CompanyDetails, name='edit_CompanyDetails'),
+ path('delete_CompanyDetails/', views.delete_CompanyDetails, name='delete_CompanyDetails'),
+ path('edit_teamDetails/', views.edit_teamDetails, name='edit_teamDetails'),
+ path('delete_teamDetails/', views.delete_teamDetails, name='delete_teamDetails'),
+ path('validate_field/', views.validate_field, name='validate_field'),
+ path('validate_cell_field/', views.validate_cell_field, name='validate_cell_field'),
+ path('Internal_team_details/', views.Internal_team_details, name='Internal_team_details'),
+ path('save_Internal_team_Details/', views.save_Internal_team_Details, name='save_Internal_team_Details'),
+ path('validate_internal_team/', views.validate_internal_team, name='validate_internal_team'),
+ path('validate_internal_team/', views.validate_internal_team, name='validate_internal_team'),
+ path('existing_employee/', views.existing_employee, name='existing_employee'),
+ path('validate_existingEmployee/', views.validate_existingEmployee, name='validate_existingEmployee'),
+ path('delete_internalTeam/', views.delete_internalTeam, name='delete_internalTeam'),
+ path('edit_internalTeam/', views.edit_internalTeam, name='edit_internalTeam'),
+ path('print_internalTeam/', views.print_internalTeam, name='print_internalTeam'),
+
+ path('get_row_count/', views.get_row_count, name='get_row_count'),
+ path('load_excel_data/', views.load_excel_data, name='load_excel_data'),
+ path('get_employee/', views.get_employee, name='get_employee'),
]
+
diff --git a/skyonnweb/skyonnadmin/views.py b/skyonnweb/skyonnadmin/views.py
index 8da3288..542e3d9 100644
--- a/skyonnweb/skyonnadmin/views.py
+++ b/skyonnweb/skyonnadmin/views.py
@@ -1,7 +1,7 @@
from django.contrib import messages
from django.contrib.auth import authenticate, login as auth_login, logout
from django.shortcuts import render, redirect, get_object_or_404
-from .models import skyonnAdmin, ClientDetails, SubcompanyDetails, Contact
+from .models import skyonnAdmin, ClientDetails, SubcompanyDetails, Contact, Locations, AddContact, SublocationDetails,InternalTeam
from django.contrib.auth.hashers import make_password
from django.http import HttpResponse
import random
@@ -11,6 +11,16 @@ import json
from django.core.serializers.json import DjangoJSONEncoder
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
+from django.core.exceptions import ObjectDoesNotExist
+from .serializers import DetailsSerializer
+from django.core.validators import validate_email
+from django.core.exceptions import ValidationError
+import re
+from django.http import JsonResponse
+from django.db.models import Q
+from django.core.mail import send_mail
+import threading
+import pandas as pd
def home(request):
return render(request, 'skyonnadmin/home.html')
@@ -18,11 +28,10 @@ def home(request):
def create_admin(request):
if request.method == 'POST':
- # Retrieve data from the form
first_name = request.POST['first_name']
last_name = request.POST['last_name']
phone_number = request.POST['phone']
- phone_number_2 = request.POST.get('phone_number_2')
+ phone_number_2 = request.POST.get('phone_2')
company_email = request.POST['company_email']
personal_email = request.POST.get('personal_email')
address = request.POST['address']
@@ -31,6 +40,8 @@ def create_admin(request):
password = request.POST['password'] # Assuming there's a password field in the form
hashed_password = make_password(password)
+ picture = request.FILES.get('picture')
+
# Generate admin ID based on the last ID in the database
last_admin = skyonnAdmin.objects.order_by('-id').first()
if last_admin:
@@ -52,45 +63,70 @@ def create_admin(request):
work_location=work_location,
role=role,
admin_id=admin_id,
- password=hashed_password
+ password=hashed_password,
+ picture= picture
)
+ print((admin.first_name, admin.last_name))
admin.backend = 'user.backend.PhoneAuthenticationBackend'
auth_login(request, admin)
- return redirect('dashboard', admin_id=admin.admin_id)
+ return JsonResponse(
+ {'success': 'Login successful', 'redirect_url': f'/skyonnadmin/admin/dashboard/{admin.admin_id}'})
else:
return render(request, 'skyonnadmin/home.html')
- # # Redirect to the admin signup page
- # return redirect('home')
- #
- # return render(request, 'skyonnadmin/home.html')
+
+def validate_admin(request):
+ if request.method == 'GET':
+ email1 = request.GET.get('company_email')
+ email2 = request.GET.get('personal_email')
+ phone_number1 = request.GET.get('phone')
+ phone_number2 = request.GET.get('phone_2')
+ response = {
+ 'exists': False
+ }
+ if email1 and (skyonnAdmin.objects.filter(company_email=email1).exists() or
+ skyonnAdmin.objects.filter(personal_email=email1).exists()):
+ response['exists'] = True
+
+ if email2 and (skyonnAdmin.objects.filter(company_email=email2).exists() or
+ skyonnAdmin.objects.filter(personal_email=email2).exists()):
+ response['exists'] = True
+
+ if phone_number1 and (skyonnAdmin.objects.filter(phone=phone_number1).exists() or
+ skyonnAdmin.objects.filter(phone_number_2=phone_number1).exists()):
+ response['exists'] = True
+
+ if phone_number2 and (skyonnAdmin.objects.filter(phone=phone_number2).exists() or
+ skyonnAdmin.objects.filter(phone_number_2=phone_number2).exists()):
+ response['exists'] = True
+
+ return JsonResponse(response)
-def login(request):
+def admin_login(request):
if request.method == 'POST':
phone = request.POST.get('phone')
password = request.POST.get('password')
- print("Phone:", phone)
- # Retrieve the admin object based on the provided phone number
+ if not phone and 'phone' in request.POST:
+ return JsonResponse({'error': 'Please fill the phone number field.'}, status=400)
+ if not password and 'password' in request.POST: # Validate password if it's present
+ return JsonResponse({'error': 'Please fill the password field.'}, status=400)
+
admin = skyonnAdmin.objects.filter(phone=phone).first()
- print(admin)
-
- if admin is not None:
- # Check if the provided password matches the stored password
- if admin.check_password(password):
- # Password is correct, login successful
- # You can implement your login logic here
- print("Admin ID:", admin.admin_id)
- return redirect('dashboard', admin_id=admin.admin_id)
- else:
- # Password is incorrect
- messages.error(request, 'Invalid password.')
- else:
- # Admin with the provided phone number does not exist
- messages.error(request, 'No admin found for the provided phone number.')
+ if admin is None:
+ return JsonResponse({'error': 'Incorrect phone number.'}, status=404)
- return render(request, 'skyonnadmin/home.html')
+ if password:
+ if not admin.check_password(password):
+ return JsonResponse({'error': 'Incorrect password.'}, status=401)
+
+ return JsonResponse(
+ {'success': 'Login successful', 'redirect_url': f'/skyonnadmin/admin/dashboard/{admin.admin_id}'})
+
+ return JsonResponse({'success': 'Phone number is valid.'}, status=200)
+
+ return JsonResponse({'error': 'Invalid request method.'}, status=405)
def admin_dashboard(request, admin_id):
@@ -101,7 +137,7 @@ def admin_dashboard(request, admin_id):
full_name = f"{first_name}"
print(full_name)
- return render(request, 'skyonnadmin/admin_dashboard.html', {'first_name': full_name, 'admin_id': admin_id})
+ return render(request, 'skyonnadmin/admin_dashboard.html', {'first_name': full_name, 'admin_id': admin_id,'picture': admin.picture})
# Admin dashboard logic goes here
@@ -109,66 +145,102 @@ def logout_view(request):
logout(request)
return redirect('admin_home')
+def get_admin_details(request):
+ admin_id = request.GET.get('admin_id', None)
+ print(admin_id)
+ admin = get_object_or_404(skyonnAdmin, admin_id=admin_id)
+ print('admin:', admin)
+
+ admin_picture = admin.picture.url
+
+ admin_data = {
+ 'first_name': admin.first_name,
+ 'last_name': admin.last_name,
+ 'phone': admin.phone,
+ 'phone_number_2': admin.phone_number_2,
+ 'company_email': admin.company_email,
+ 'personal_email': admin.personal_email,
+ 'address': admin.address,
+ 'work_location': admin.work_location,
+ 'admin_picture': admin_picture
+ }
+ return JsonResponse({'admin_data': admin_data})
-def client_details(request):
+def client_details(request):
return render(request, 'skyonnadmin/client_details.html')
def add_subclient(request):
admin_id = request.GET.get('admin_id', None)
clients = ClientDetails.objects.all()
- return render(request, 'skyonnadmin/add_subclient.html', {'clients': clients,'admin_id': admin_id})
+ return render(request, 'skyonnadmin/add_subclient.html', {'clients': clients, 'admin_id': admin_id})
def add_client(request):
admin_id = request.GET.get('admin_id', None)
print(admin_id)
clients = ClientDetails.objects.all()
- return render(request, 'skyonnadmin/add_client.html', {'clients': clients,'admin_id': admin_id})
+ return render(request, 'skyonnadmin/add_client.html', {'clients': clients, 'admin_id': admin_id})
def existing_client(request):
- return render(request, 'skyonnadmin/existing_client.html')
+ clients = ClientDetails.objects.all()
+ return render(request, 'skyonnadmin/existing_client.html', {'clients': clients})
+
+def new_job_posting(request):
+ admin_id = request.GET.get('admin_id', None)
+ return render(request, 'skyonnadmin/new_job_posting.html', {'admin_id': admin_id})
+
+def add_new_contact(request):
+ clients = ClientDetails.objects.all()
+ sub_clients = SubcompanyDetails.objects.all()
+ return render(request, 'skyonnadmin/add_new_contact.html',{'clients': clients,'sub_clients': sub_clients})
+@csrf_exempt
def save_details(request):
if request.method == 'POST':
+
# Extract data from the first form
parent_company = request.POST.get('ParentCompany', '')
- location = request.POST.get('Location', '')
- department = request.POST.get('Department', '')
- gst_no = request.POST.get('GSTNo', '')
- address = request.POST.get('Address', '')
-
- # Extract data from the second form
- first_name = request.POST.get('Admin_FirstName', '')
- last_name = request.POST.get('Admin_LastName', '')
- phone_no1 = request.POST.get('Admin_PhoneNo1', '')
- phone_no2 = request.POST.get('Admin_PhoneNo2', '')
- company_email = request.POST.get('Admin_CompanyEmail', '')
- designation = request.POST.get('Admin_Designation', '')
- admin_department = request.POST.get('Admin_Department', '')
- admin_location = request.POST.get('Admin_Location', '')
- print(admin_location)
+ locationId = request.POST.get('Location_Id', '')
+ GST_No = request.POST.get('GSTNo', '')
+ address_1 = request.POST.get('Address_1', '')
+ state = request.POST.get('State', '')
+ # Street = request.POST.get('Street', '')
+ City = request.POST.get('City', '')
+ country = request.POST.get('country', '')
+ address_2 = request.POST.get('Address_2', '')
+ Pincode = request.POST.get('Pincode', '')
+
client_id = generate_client_id(parent_company)
+ print(client_id)
+ if not parent_company or not locationId or not GST_No or not address_1 or not state or not City or not country or not Pincode:
+ return JsonResponse({'status': 'error','message': 'Error while saving client.Please fill required fields'},
+ status=400)
+ # if ClientDetails.objects.filter(parent_company=parent_company.upper()).exists():
+ # return JsonResponse({'status': 'error','field': 'ParentCompany', 'message': 'Parent Company already exists'}, status=400)
+ # # Save data into the database
+ parent_company_proper = parent_company.title()
+
+ # Check for duplicate ParentCompany
+ if ClientDetails.objects.filter(parent_company=parent_company_proper).exists():
+ return JsonResponse(
+ {'status': 'error', 'field': 'ParentCompany', 'message': 'Parent Company already exists'}, status=400)
- # Save data into the database
job_details = ClientDetails(
- parent_company=parent_company,
- location=location,
- department=department,
- gst_no=gst_no,
- address=address,
+ parent_company=parent_company_proper,
+ location_Id=locationId,
+ GST_No=GST_No,
+ address_1=address_1,
+ state=state,
+ # Street= Street,
+ City=City,
+ country=country,
+ address_2=address_2,
+ Pincode=Pincode,
client_id=client_id,
- admin_first_name=first_name,
- admin_last_name=last_name,
- admin_phone_no1=phone_no1,
- admin_phone_no2=phone_no2,
- admin_company_email=company_email,
- admin_designation=designation,
- admin_department=admin_department,
- admin_location=admin_location
)
job_details.save()
admin_id = request.GET.get('admin_id', None)
@@ -178,56 +250,123 @@ def save_details(request):
return HttpResponse('Invalid request method')
+def check_parent_company(request):
+ if request.method == 'GET':
+ parent_company = request.GET.get('ParentCompany', '').strip().upper()
+ print(parent_company)
+ exists = ClientDetails.objects.filter(parent_company=parent_company).exists()
+ return JsonResponse({'exists': exists})
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
+
+def get_parentCompany(request):
+ clients = ClientDetails.objects.values('parent_company')
+ print(clients)
+ return JsonResponse(list(clients), safe=False)
+
+def save_sublocation(request):
+ if request.method == 'POST':
+ parent_company = request.POST.get('ParentCompany', '')
+ department = request.POST.get('Department', '')
+ Location = request.POST.get('Location', '')
+ GST_No = request.POST.get('GSTNo', '')
+ address_1 = request.POST.get('Address_1', '')
+ address_2 = request.POST.get('Address_2', '')
+ # Street = request.POST.get('Street', '')
+ City = request.POST.get('City', '')
+ State = request.POST.get('State', '')
+ Pincode = request.POST.get('Pincode', '')
+ country = request.POST.get('country', '')
+
+ if not parent_company or not department or not Location or not GST_No or not address_1 or not State or not City or not country or not Pincode:
+ return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_Location.Please fill required fields'},
+ status=400)
+
+ # Save data into the database
+ job_details = SublocationDetails(
+ parent_company=parent_company,
+ department= department,
+ Location=Location,
+ GST_No=GST_No,
+ address_1=address_1,
+ address_2=address_2,
+ # Street = Street,
+ City=City,
+ State=State,
+ Pincode=Pincode,
+ country=country, )
+ job_details.save()
+ admin_id = request.GET.get('admin_id', None)
+ print(admin_id)
+ return JsonResponse({'status': 'success', 'message': 'sublocation saved successfully.'})
+ else:
+ return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
+
+def get_GSTNo(request):
+ if request.method == 'GET':
+ parent_company = request.GET.get('ParentCompany')
+ gst_no = ClientDetails.objects.filter(parent_company=parent_company).values('GST_No')
+ gst = list(gst_no)
+ print(gst)
+ return JsonResponse(gst[0],safe=False)
+ else:
+ return JsonResponse({'error': 'Invalid request'})
+
+
@csrf_exempt
def save_details_subcompany(request):
print("00came")
if request.method == 'POST':
# Extract data from the first form
parent_company = request.POST.get('ParentCompany', '')
- location = request.POST.get('Location', '')
- department = request.POST.get('Department', '')
- gst_no = request.POST.get('GSTNo', '')
- address = request.POST.get('Address', '')
sub_company = request.POST.get('SubCompany', '')
+ location_id = request.POST.get('Location_Id', '')
+ GST_No = request.POST.get('GSTNo', '')
+ address_1 = request.POST.get('Address_1', '')
+ address_2 = request.POST.get('Address_2', '')
+ # Street = request.POST.get('Street', '')
+ City = request.POST.get('City', '')
+ State = request.POST.get('State', '')
+ Pincode = request.POST.get('Pincode', '')
+ country = request.POST.get('country', '')
- # Extract data from the second form
- first_name = request.POST.get('Admin_FirstName', '')
- last_name = request.POST.get('Admin_LastName', '')
- phone_no1 = request.POST.get('Admin_PhoneNo1', '')
- phone_no2 = request.POST.get('Admin_PhoneNo2', '')
- company_email = request.POST.get('Admin_CompanyEmail', '')
- designation = request.POST.get('Admin_Designation', '')
- admin_department = request.POST.get('Admin_Department', '')
- admin_location = request.POST.get('Admin_Location', '')
- print(admin_location)
- client_id = generate_client_id(parent_company)
-
+ sub_client_id = generate_client_id(parent_company)
+ print(sub_client_id)
+ if not parent_company or not sub_company or not location_id or not address_1 or not State or not City or not country or not Pincode:
+ return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_client.Please fill required fields'},
+ status=400)
+ if SubcompanyDetails.objects.filter(sub_company=sub_company.title()).exists():
+ return JsonResponse({'status': 'error','field': 'SubCompany', 'message': 'Sub_Company already exists'}, status=400)
# Save data into the database
job_details = SubcompanyDetails(
parent_company=parent_company,
- sub_company=sub_company,
- location=location,
- department=department,
- gst_no=gst_no,
- address=address,
- client_id=client_id,
- admin_first_name=first_name,
- admin_last_name=last_name,
- admin_phone_no1=phone_no1,
- admin_phone_no2=phone_no2,
- admin_company_email=company_email,
- admin_designation=designation,
- admin_department=admin_department,
- admin_location=admin_location
+ sub_company=sub_company.title(),
+ location_id=location_id,
+ GST_No=GST_No ,
+ address_1=address_1,
+ address_2=address_2,
+ # Street = Street,
+ City = City,
+ State = State,
+ Pincode = Pincode,
+ country= country,
+ sub_client_id=sub_client_id,
+
)
job_details.save()
admin_id = request.GET.get('admin_id', None)
+ print(admin_id)
return JsonResponse({'status': 'success', 'message': 'subclient saved successfully.'})
-
else:
return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
+def check_sub_company(request):
+ if request.method == 'GET':
+ sub_company = request.GET.get('SubCompany', '').strip().upper()
+ print(sub_company)
+ exists = SubcompanyDetails.objects.filter(sub_company=sub_company).exists()
+ return JsonResponse({'exists': exists})
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
def get_combined_details(request):
parent_company = request.GET.get('parent_company')
@@ -249,15 +388,7 @@ def get_combined_details(request):
'gst_no': detail.gst_no,
'address': detail.address,
'client_id': detail.client_id,
- 'admin_first_name': detail.admin_first_name,
- 'admin_last_name': detail.admin_last_name,
- 'admin_phone_no1': detail.admin_phone_no1,
- 'admin_phone_no2': detail.admin_phone_no2,
- 'admin_company_email': detail.admin_company_email,
- 'admin_designation': detail.admin_designation,
- 'admin_department': detail.admin_department,
- 'admin_location': detail.admin_location,
- # Add contacts data if needed
+
})
# Add subcompany details to combined_data
@@ -266,19 +397,11 @@ def get_combined_details(request):
'parent_company': detail.parent_company,
'sub_company': detail.sub_company,
'location': detail.location,
- 'department': detail.department,
+ # 'department': detail.department,
'gst_no': detail.gst_no,
'address': detail.address,
'client_id': detail.client_id,
- 'admin_first_name': detail.admin_first_name,
- 'admin_last_name': detail.admin_last_name,
- 'admin_phone_no1': detail.admin_phone_no1,
- 'admin_phone_no2': detail.admin_phone_no2,
- 'admin_company_email': detail.admin_company_email,
- 'admin_designation': detail.admin_designation,
- 'admin_department': detail.admin_department,
- 'admin_location': detail.admin_location,
- # Add contacts data if needed
+
})
print(combined_data)
return JsonResponse(combined_data, safe=False)
@@ -306,55 +429,858 @@ def generate_client_id(parent_company):
return client_id
-def get_contacts(request):
- client_id = request.GET.get('client_id')
- department = request.GET.get('department')
- client_details = ClientDetails.objects.filter(client_id=client_id).first()
+# def get_contacts(request):
+# if request.method == 'GET':
+# client = request.GET.get('Client')
+# print(client)
+# SPOC_Details = AddContact.objects.filter(Company=client).values('FirstName','Department')
+#
+# SPOC_Details_list = list(SPOC_Details)
+# return JsonResponse(SPOC_Details_list, safe=False)
+# else:
+# return JsonResponse({'error': 'Invalid request'})
+
+
+def add_locations(request):
+ locations_list = ['Hyderabad', 'Pune', 'Chennai', 'Mumbai', 'Cochin', 'Ahmedabad', 'Bangalore']
+ for location in locations_list:
+ try:
+ Locations.objects.get(location=location)
+ print(f"Location '{location}' already exists.")
+ except ObjectDoesNotExist:
+ Locations.objects.create(location=location)
+ print(f"Added location '{location}' to the database.")
+
+
+def get_subclients(request):
+ if request.method == 'GET' and 'parent_company' in request.GET:
+ parent_company = request.GET['parent_company']
+ # Query SubcompanyDetails table to filter sub-clients by parent company
+ sub_clients = SubcompanyDetails.objects.filter(parent_company=parent_company).values_list('sub_company',
+ flat=True)
+ # Convert queryset to list
+ sub_clients_list = list(sub_clients)
+ return JsonResponse(sub_clients_list, safe=False)
+ else:
+ return JsonResponse({'error': 'Invalid request'})
+
+
+def get_filtered_data(request):
+ if request.method == 'GET':
+ client = request.GET.get('client')
+ sub_client = request.GET.get('subClient')
+
+ client_details = ClientDetails.objects.filter(parent_company=client)
+ client_id = [data.client_id for data in client_details]
+ print(client_id)
+ # Filter SubcompanyDetails based on client and sub-client
+ if sub_client == 'All Sub Clients':
+ sub_company_details = SubcompanyDetails.objects.filter(parent_company=client)
+ else:
+ sub_company_details = SubcompanyDetails.objects.filter(parent_company=client, sub_company=sub_client)
+ sub_client_id=[data.sub_client_id for data in sub_company_details]
+ print(sub_client_id)
- if department == 'hiring_managers':
- contacts = client_details.hiring_manager_contacts.all()
- elif department == 'accounts':
- contacts = client_details.accounts_contacts.all()
- elif department == 'human_resources':
- contacts = client_details.hr_contacts.all()
- elif department == 'administration':
- contacts = client_details.admin_contacts.all()
+ filtered_data = {
+ 'client_details':list(client_details.values()),
+ 'sub_company_details': list(sub_company_details.values())
+ }
+
+ # # Serialize the filtered data
+ serializer = DetailsSerializer(filtered_data)
+ print(serializer.data)
+
+ return JsonResponse(serializer.data, safe=False)
else:
- contacts = []
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
- contacts_data = [{
- "name": f"{contact.first_name} {contact.last_name}",
- "designation": contact.designation,
- "department": contact.department,
- "phone": contact.phone_no1,
- "email": contact.company_email,
- "location": contact.client_id.location, # Adjust based on your model relationships
- } for contact in contacts]
+def save_new_entry(request):
+ if request.method == 'POST':
+ data = json.loads(request.body)
+ rowData = data.get('rowData')
+ department = data.get('department')
- return JsonResponse({"contacts": contacts_data})
+ # Retrieve the SubcompanyDetails instance based on the department
+ subcompany_instance = get_object_or_404(SubcompanyDetails, department=department)
+
+ # Save the new contact data to the appropriate contact field
+ if subcompany_instance:
+ new_contact = Contact.objects.create(**rowData)
+ getattr(subcompany_instance, 'admin_contacts').add(new_contact)
+ return JsonResponse({'message': 'New entry saved successfully.'}, status=200)
+ else:
+ return JsonResponse({'message': f'No SubcompanyDetails instance found for department: {department}'}, status=404)
+ else:
+ return JsonResponse({'message': 'Invalid request method.'}, status=400)
-@csrf_exempt
-@require_http_methods(["POST"])
def add_contact(request):
- print("hii")
- # Extract information from the request
- department = request.POST.get('department')
- # Assume 'sub_company_id' is passed to identify which SubcompanyDetails to update
- sub_company_id = request.POST.get('sub_company_id')
- # Create the Contact instance (simplified, add validation and error handling)
- contact = Contact(
- first_name=request.POST.get('first_name'),
- last_name=request.POST.get('last_name'),
- # Add other fields as necessary
- )
- contact.save()
-
- # Add the contact to the appropriate department of the SubcompanyDetails instance
- sub_company = SubcompanyDetails.objects.get(id=sub_company_id)
- if department == 'HR':
- sub_company.hr_contacts.add(contact)
- elif department == 'Accounts':
- sub_company.accounts_contacts.add(contact)
- # Add conditions for other departments as needed
-
- return JsonResponse({"success": True, "message": "Contact added successfully."})
\ No newline at end of file
+ print("00came")
+ if request.method == 'POST':
+ # Extract data from the form
+ Company = request.POST.get('Company', '')
+ Sub_company = request.POST.get('Sub_Company') or Company
+ LastName = request.POST.get('LastName', '')
+ FirstName = request.POST.get('FirstName', '')
+ Department = request.POST.get('Department', '')
+ Designation = request.POST.get('Designation', '')
+ Phone_number = request.POST.get('Phone_number', '')
+ Email = request.POST.get('Email', '')
+
+ contact_id = generate_client_id(Company)
+ print(contact_id)
+ if not Company or not FirstName or not Department or not Designation or not Phone_number or not Email:
+ return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_client.Please fill required fields'},
+ status=400)
+
+ # Save data into the database
+ add_contact = AddContact(
+ Company=Company,
+ Sub_company=Sub_company,
+ FirstName=FirstName,
+ LastName=LastName,
+ Department=Department,
+ Designation=Designation,
+ Phone_number=Phone_number,
+ Email=Email,
+ Contact_id=contact_id
+ )
+ add_contact.save()
+
+ admin_id = request.GET.get('admin_id', None)
+ print(admin_id)
+
+ return JsonResponse({'status': 'success', 'message': 'Contact saved successfully.'})
+
+ else:
+ return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
+
+def validate_field(request):
+ if request.method == 'GET':
+ email = request.GET.get('Email')
+ phone_number = request.GET.get('Phone_number')
+ response = {
+ 'exists': False
+ }
+ if email and AddContact.objects.filter(Email=email).exists():
+ response['exists'] = True
+ elif phone_number and AddContact.objects.filter(Phone_number=phone_number).exists():
+ response['exists'] = True
+ return JsonResponse(response)
+
+
+def validate_cell_field(request):
+ if request.method == 'GET':
+ email = request.GET.get('Email')
+ phone_number = request.GET.get('Phone_number')
+ contact_id = request.GET.get('Contact_id')
+ print('contact_id:',contact_id)
+
+ response = {
+ 'email_exists': False,
+ 'phone_exists': False
+ }
+ if email:
+ existing_email_contact = AddContact.objects.filter(Email=email).first()
+ if existing_email_contact and existing_email_contact.Contact_id != contact_id:
+ response['email_exists'] = True
+
+ # Check for existing phone number but ignore if it's the same contact
+ if phone_number:
+ existing_phone_contact = AddContact.objects.filter(Phone_number=phone_number).first()
+ if existing_phone_contact and existing_phone_contact.Contact_id != contact_id:
+ response['phone_exists'] = True
+
+ return JsonResponse(response)
+
+
+
+# def save_job_posting(request):
+# if request.method == 'POST':
+# # Extract data from the form
+# Client = request.POST.get('Client', '')
+# JobID = request.POST.get('JobID', '')
+# Location = request.POST.get('Location', '')
+# SPOC = request.POST.get('SPOC', '')
+# SPOC2 = request.POST.get('SPOC2', '')
+# StartDate = request.POST.get('StartDate', '')
+# CloseDate = request.POST.get('CloseDate', '')
+# BudgetMin = request.POST.get('BudgetMin', '')
+# BudgetMax = request.POST.get('BudgetMax', '')
+# Header = request.POST.get('Header', '')
+# JobDescription = request.POST.get('JobDescription', '')
+# Experience_in_Yrs = request.POST.get('Experience_in_Yrs', '')
+# NoOfPosting = request.POST.get('NoOfPosting', '')
+# Type = request.POST.get('Type', '')
+# SpecialInstructions = request.POST.get('SpecialInstructions', '')
+# JD = request.POST.get('JD', '' )
+#
+# jobposting = JobPosting(
+# Client=Client,
+# JobID=JobID,
+# Location=Location,
+# SPOC=SPOC,
+# SPOC2=SPOC2,
+# StartDate=StartDate,
+# CloseDate=CloseDate,
+# BudgetMin=BudgetMin,
+# BudgetMax=BudgetMax,
+# Header=Header,
+# JobDescription=JobDescription,
+# Experience_in_Yrs=Experience_in_Yrs,
+# NoOfPosting=NoOfPosting,
+# Type=Type,
+# SpecialInstructions=SpecialInstructions,
+# JD=JD,
+# )
+# jobposting.save()
+# print(jobposting)
+#
+# admin_id = request.GET.get('admin_id', None)
+# print(admin_id)
+#
+# return JsonResponse({'status': 'success', 'message': 'Job_posting saved successfully.'})
+#
+# else:
+# return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
+
+def get_team_details(request):
+ if request.method == 'GET':
+ client = request.GET.get('client')
+ sub_client = request.GET.get('subClient')
+
+ if not sub_client:
+ contacts = AddContact.objects.filter(Company=client, Sub_company='')
+ elif sub_client == 'All Sub Clients':
+ contacts = AddContact.objects.filter(Company=client)
+ else:
+ contacts = AddContact.objects.filter(Company=client, Sub_company=sub_client)
+
+ filtered_data = {
+ 'contacts': list(contacts.values()),
+ }
+ # Return serialized data as JSON response
+ return JsonResponse(filtered_data, safe=False)
+ # return JsonResponse({"success": True, "message": "Contact added successfully."})
+
+ else:
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
+
+
+def get_department(request):
+ if request.method == 'GET':
+ department = request.GET.get('Department')
+ client = request.GET.get('client')
+ sub_client = request.GET.get('subClient')
+
+ if not sub_client:
+ departments = AddContact.objects.filter(Department=department, Company=client, Sub_company='').distinct()
+ elif sub_client == 'All Sub Clients':
+ departments = AddContact.objects.filter(Department=department, Company=client).distinct()
+ else:
+ departments = AddContact.objects.filter(Department=department, Company=client,
+ Sub_company=sub_client).distinct()
+ # Convert queryset to list
+ department_list = list(departments.values())
+
+ return JsonResponse(department_list, safe=False)
+ # return JsonResponse({"success": True, "message": "Contact added successfully."})
+ else:
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
+
+
+def get_SearchData(request):
+ if request.method == 'GET':
+ client = request.GET.get('client')
+ sub_client = request.GET.get('subClient')
+ searchKeyword = request.GET.get('searchKeyword')
+
+ query1 = Q()
+ query2 = Q()
+ query3 = Q()
+
+ if client:
+ query1 &= Q(Company__icontains=client)
+ query2 &= Q(parent_company__icontains=client)
+ query3 &= Q(parent_company__icontains=client)
+
+ if sub_client and sub_client != 'All Sub Clients':
+ query1 &= Q(Sub_company__icontains=sub_client)
+ query2 &= Q(parent_company__icontains=sub_client)
+ query3 &= Q(sub_company__icontains=sub_client)
+
+ if searchKeyword:
+ keywords = searchKeyword.split()
+ search_query1 = Q()
+
+ search_query1 |= (
+ Q(Sub_company__icontains=searchKeyword) |
+ Q(Company__icontains=searchKeyword) |
+ Q(FirstName__icontains=searchKeyword) |
+ Q(LastName__icontains=searchKeyword) |
+ Q(Designation__icontains=searchKeyword) |
+ Q(Department__icontains=searchKeyword) |
+ Q(Phone_number__icontains=searchKeyword) |
+ Q(Email__icontains=searchKeyword)
+ )
+
+ # Handle case for multiple words in keyword (e.g., "account department")
+ for word in keywords:
+ search_query1 |= (
+ Q(Sub_company__icontains=word) |
+ Q(Company__icontains=word) |
+ Q(FirstName__icontains=word) |
+ Q(LastName__icontains=word) |
+ Q(Designation__icontains=word) |
+ Q(Department__icontains=word) |
+ Q(Phone_number__icontains=word) |
+ Q(Email__icontains=word)
+ )
+
+ # Handle concatenated names (e.g., "JohnDoe")
+ if len(keywords) == 1: # Check for single-word input
+ for i in range(1, len(searchKeyword)):
+ possible_first_name = searchKeyword[:i]
+ possible_last_name = searchKeyword[i:]
+ search_query1 |= (
+ Q(FirstName__icontains=possible_first_name) &
+ Q(LastName__icontains=possible_last_name)
+ )
+ elif len(keywords) == 2: # If two parts exist, treat as FirstName and LastName
+ first_name, last_name = keywords
+ search_query1 |= (
+ Q(FirstName__icontains=first_name) & Q(LastName__icontains=last_name)
+ )
+
+ query1 &= search_query1
+
+ search_query2 = (
+ Q(parent_company__icontains=searchKeyword) | Q(GST_No__icontains=searchKeyword) |
+ Q(location_Id__icontains=searchKeyword))
+ query2 &= search_query2
+
+ search_query3 = (
+ Q(sub_company__icontains=searchKeyword) | Q(parent_company__icontains=searchKeyword) |
+ Q(GST_No__icontains=searchKeyword) | Q(location_id__icontains=searchKeyword))
+ query3 &= search_query3
+
+ contacts = AddContact.objects.filter(query1).values()
+ client_details = ClientDetails.objects.filter(query2).values()
+ sub_company_details = SubcompanyDetails.objects.filter(query3).values()
+
+ filtered_data = {
+ 'contacts': list(contacts),
+ 'client_details': list(client_details),
+ 'sub_company_details': list(sub_company_details)
+ }
+
+ return JsonResponse(filtered_data, safe=False)
+ else:
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
+
+
+def edit_CompanyDetails(request):
+ if request.method == 'POST':
+ try:
+ data = json.loads(request.body)
+ id = data.get('client_id') or data.get('sub_client_id')
+ print(id)
+
+ if not id:
+ return JsonResponse({'error': 'ID parameter missing'}, status=400)
+
+ if 'client_id' in data:
+ client = ClientDetails.objects.filter(client_id=id).first()
+ if client:
+ client.parent_company = data.get('parent_company', client.parent_company)
+ client.GST_No = data.get('GST_No', client.GST_No)
+ client.location_Id = data.get('location_Id', client.location_Id)
+ client.address_1 = data.get('address_1', client.address_1)
+ client.address_2 = data.get('address_2', client.address_2)
+ client.City = data.get('City', client.City)
+ client.state = data.get('state', client.state)
+ client.Pincode = data.get('Pincode', client.Pincode)
+ client.country = data.get('country', client.country)
+ client.save()
+ print(client)
+ return JsonResponse({'message': 'Client details updated successfully.'}, status=200)
+
+ if 'sub_client_id' in data:
+ sub_client = SubcompanyDetails.objects.filter(sub_client_id=id).first()
+ if sub_client:
+ sub_client.parent_company = data.get('parent_company', sub_client.parent_company)
+ sub_client.sub_company = data.get('sub_company', sub_client.sub_company)
+ sub_client.GST_No = data.get('GST_No', sub_client.GST_No)
+ sub_client.location_id = data.get('location_id', sub_client.location_id)
+ sub_client.address_1 = data.get('address_1', sub_client.address_1)
+ sub_client.address_2 = data.get('address_2', sub_client.address_2)
+ sub_client.City = data.get('City', sub_client.City)
+ sub_client.State = data.get('State', sub_client.State)
+ sub_client.Pincode = data.get('Pincode', sub_client.Pincode)
+ sub_client.country = data.get('country', sub_client.country)
+ sub_client.save()
+ print(sub_client)
+ return JsonResponse({'message': 'Sub-client details updated successfully.'}, status=200)
+
+ return JsonResponse({'error': 'Company details not found.'}, status=404)
+
+ except json.JSONDecodeError:
+ return JsonResponse({'error': 'Invalid JSON'}, status=400)
+ except Exception as e:
+ return JsonResponse({'error': str(e)}, status=500)
+
+ return JsonResponse({'error': 'Invalid request method'}, status=405)
+
+
+def delete_CompanyDetails(request):
+ if request.method != 'DELETE':
+ return JsonResponse({'error': 'Invalid HTTP method. Only DELETE is allowed.'}, status=405)
+
+ try:
+ data = json.loads(request.body)
+ client_id = data.get('client_id')
+ sub_client_id = data.get('sub_client_id')
+ parent_company = data.get('parent_company')
+
+ if sub_client_id:
+ # Delete only the specific subclient
+ sub_clients_deleted, _ = SubcompanyDetails.objects.filter(sub_client_id=sub_client_id).delete()
+ response = {
+ 'message': 'Subclient deleted successfully.',
+ 'sub_clients_deleted': sub_clients_deleted
+ }
+ return JsonResponse(response, status=200)
+
+ if client_id and parent_company:
+ # Delete related sub-clients and contacts
+ sub_clients_deleted, _ = SubcompanyDetails.objects.filter(parent_company=parent_company).delete()
+ contacts_deleted, _ = AddContact.objects.filter(Company=parent_company).delete()
+
+ # Delete the main client
+ client = ClientDetails.objects.get(client_id=client_id, parent_company=parent_company)
+ client.delete()
+
+ response = {
+ 'message': 'Client and related data deleted successfully.',
+ 'client_deleted': 1,
+ 'sub_clients_deleted': sub_clients_deleted,
+ 'contacts_deleted': contacts_deleted
+ }
+ return JsonResponse(response, status=200)
+
+ return JsonResponse({'error': 'Insufficient data provided to delete any record.'}, status=400)
+
+ except ClientDetails.DoesNotExist:
+ return JsonResponse({'error': 'Client with the given ID and Parent Company does not exist'}, status=404)
+ except Exception as e:
+ return JsonResponse({'error': f'An error occurred: {str(e)}'}, status=500)
+
+
+
+@csrf_exempt
+def edit_teamDetails(request):
+ if request.method == 'POST':
+ data = json.loads(request.body)
+ id = data.get('Contact_id', None)
+ print(id)
+
+ if id:
+ try:
+ contact = AddContact.objects.get(Contact_id=id)
+ print(contact)
+
+ contact.Company = data.get('Company', contact.Company)
+ contact.Sub_company = data.get('Sub_company', contact.Sub_company)
+ contact.FirstName = data.get('FirstName', contact.FirstName)
+ contact.LastName = data.get('LastName', contact.LastName)
+ contact.Department = data.get('Department', contact.Department)
+ contact.Designation = data.get('Designation', contact.Designation)
+ contact.Phone_number = data.get('Phone_number', contact.Phone_number)
+ contact.Email = data.get('Email', contact.Email)
+ contact.save()
+ print(contact)
+ return JsonResponse({'message': 'Contact updated successfully.'}, status=200)
+ except AddContact.DoesNotExist:
+ return JsonResponse({'error': 'Contact not found.'}, status=404)
+ except Exception as e:
+ return JsonResponse({'error': str(e)}, status=500)
+ else:
+ return JsonResponse({'error': 'Email not provided.'}, status=400)
+ else:
+ return JsonResponse({'error': 'Invalid request method.'}, status=405)
+
+
+def delete_teamDetails(request):
+ try:
+ # Get the contact_id from the query parameters instead of the request body
+ contact_id = request.GET.get('Contact_id')
+ print('contact_id:', contact_id)
+
+ if contact_id is None:
+ return JsonResponse({'error': 'Contact ID not provided'}, status=400)
+
+ # Try to get the contact and delete it
+ contact = AddContact.objects.get(Contact_id=contact_id)
+ contact.delete()
+
+ return JsonResponse({'success': f'Contact with id {contact_id} deleted successfully'})
+
+ except AddContact.DoesNotExist:
+ return JsonResponse({'error': 'Contact does not exist'}, status=404)
+
+ except Exception as e:
+ # Log the error and return a 500 status
+ print(f'Error deleting contact: {e}')
+ return JsonResponse({'error': str(e)}, status=500)
+
+
+def edit_internalTeam(request):
+ if request.method == 'POST':
+ data = json.loads(request.body)
+ email = data.get('Email1', None)
+ print(email)
+
+ if email:
+ try:
+ employee = InternalTeam.objects.get(Email1=email)
+
+ employee.FirstName = data.get('FirstName', employee.FirstName)
+ employee.LastName = data.get('LastName', employee.LastName)
+ employee.Designation = data.get('Designation', employee.Designation)
+ employee.Department = data.get('Department', employee.Department)
+ employee.PhoneNo1 = data.get('PhoneNo1', employee.PhoneNo1)
+ employee.LandNumber = data.get('LandNumber', employee.LandNumber)
+ employee.Email2 = data.get('Email2', employee.Email2)
+ employee.Level = data.get('Level', employee.Level)
+ employee.save()
+ print(employee)
+ return JsonResponse({'message': 'Internal Team updated successfully.'}, status=200)
+ except AddContact.DoesNotExist:
+ return JsonResponse({'error': 'Contact not found.'}, status=404)
+ except Exception as e:
+ return JsonResponse({'error': str(e)}, status=500)
+ else:
+ return JsonResponse({'error': 'Email not provided.'}, status=400)
+ else:
+ return JsonResponse({'error': 'Invalid request method.'}, status=405)
+
+
+def delete_internalTeam(request):
+ try:
+ email = request.GET.get('Email1')
+ print(email)
+
+ employee = InternalTeam.objects.get(Email1=email)
+ print(employee)
+ employee.delete()
+ return JsonResponse({'success':f'Data with Email {email} deleted successfully'})
+ except InternalTeam.DoesNotExist:
+ return JsonResponse({'error': 'Employee does not exist'}, status=404)
+
+ except Exception as e:
+ # Log the error and return a 500 status
+ print(f'Error deleting Internal Team Details: {e}')
+ return JsonResponse({'error': str(e)}, status=500)
+
+
+def print_internalTeam(request):
+ email = request.GET.get('Email1')
+ print(email)
+
+ if email:
+ try:
+ employee = InternalTeam.objects.get(Email1=email)
+
+ data = {
+ 'FirstName': employee.FirstName,
+ 'LastName': employee.LastName,
+ 'Designation': employee.Designation,
+ 'Department': employee.Department,
+ 'PhoneNo1': employee.PhoneNo1,
+ 'LandNumber': employee.LandNumber,
+ 'Email1': employee.Email1,
+ 'Email2': employee.Email2,
+ 'Level': employee.Level
+ }
+ print(employee)
+ return JsonResponse(data, status=200)
+ except AddContact.DoesNotExist:
+ return JsonResponse({'error': 'Contact not found.'}, status=404)
+ except Exception as e:
+ return JsonResponse({'error': str(e)}, status=500)
+ else:
+ return JsonResponse({'error': 'Email not provided.'}, status=400)
+
+
+def validate_existingEmployee(request):
+ if request.method == 'GET':
+ email1 = request.GET.get('Email1')
+ email2 = request.GET.get('Email2')
+ phone_number1 = request.GET.get('PhoneNo1')
+ phone_number2 = request.GET.get('PhoneNo2')
+
+ response = {
+ 'email_exists': False,
+ 'phone_exists': False,
+
+ }
+ if email2:
+ existing_phone_contact1 = InternalTeam.objects.filter(Email1=email2).first()
+ existing_phone_contact2 = InternalTeam.objects.filter(Email2=email2).first()
+ if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
+ (existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
+ response['email_exists'] = True
+
+ # Check for existing phone number but ignore if it's the same contact
+ if phone_number1:
+ existing_phone_contact1 = InternalTeam.objects.filter(PhoneNo1=phone_number1).first()
+ existing_phone_contact2 = InternalTeam.objects.filter(LandNumber=phone_number1).first()
+ if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
+ (existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
+ response['phone_exists'] = True
+
+ if phone_number2:
+ existing_phone_contact1 = InternalTeam.objects.filter(PhoneNo1=phone_number2).first()
+ existing_phone_contact2 = InternalTeam.objects.filter(LandNumber=phone_number2).first()
+ if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
+ (existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
+ response['phone_exists'] = True
+
+ return JsonResponse(response)
+
+
+
+def Internal_team_details(request):
+ admin_id = request.GET.get('admin_id', None)
+ print(admin_id)
+ return render(request, 'skyonnadmin/Internal_team_details.html',{'admin_id': admin_id})
+
+
+def save_Internal_team_Details(request):
+ if request.method == 'POST':
+ FirstName = request.POST.get('FirstName').strip()
+ LastName = request.POST.get('LastName')
+ Designation = request.POST.get('Designation')
+ Department = request.POST.get('Department')
+ Address_1 = request.POST.get('Address_1')
+ Address_2 = request.POST.get('Address_2')
+ City = request.POST.get('City')
+ State = request.POST.get('State')
+ Country = request.POST.get('Country')
+ Pincode = request.POST.get('Pincode')
+ PhoneNo1 = request.POST.get('PhoneNo1')
+ LandNumber = request.POST.get('LandNumber')
+ Email1 = request.POST.get('Email1')
+ Email2 = request.POST.get('Email2')
+ Level = request.POST.get('Level')
+
+ Login = Email1
+ Password = FirstName + '@123'
+ user_id = FirstName.upper()[:3] + PhoneNo1[:4]
+
+ internal_team = InternalTeam(
+ FirstName=FirstName,
+ LastName=LastName,
+ Designation=Designation,
+ Department=Department,
+ Address_1=Address_1,
+ Address_2=Address_2,
+ City=City,
+ State=State,
+ Pincode=Pincode,
+ Country=Country,
+ PhoneNo1=PhoneNo1,
+ LandNumber=LandNumber,
+ Email1=Email1,
+ Email2=Email2,
+ Level=Level,
+ Login=Login,
+ Password=Password,
+ user_id=user_id
+ )
+ internal_team.save()
+
+ # email_thread= threading.Thread(target=send_login_credentials, args=(FirstName, Login, Password, Email1))
+ # email_thread.start()
+
+ # Return JSON response
+ return JsonResponse({'status': 'success', 'message': 'Internal team details saved successfully.'})
+ else:
+ return HttpResponse('Invalid request method', status=405)
+
+# def send_login_credentials(FirstName, Login, Password, Email1):
+# subject = 'Your Login Credentials'
+# message = f'Hi {FirstName}, \n\n Your Login Credentials are: \n Login_id : {Login} \n Password : {Password}'
+# from_email = 'subramanyajithendra@gmail.com'
+# recipient_list = [Email1]
+# send_mail(subject, message, from_email, recipient_list)
+
+
+def validate_internal_team(request):
+ if request.method == 'GET':
+ email1 = request.GET.get('Email1')
+ email2 = request.GET.get('Email2')
+ phone_number1 = request.GET.get('PhoneNo1')
+ phone_number2 = request.GET.get('LandNumber')
+ response = {
+ 'exists': False
+ }
+ if email1 and (InternalTeam.objects.filter(Email1=email1).exists() or InternalTeam.objects.filter(Email2=email1).exists()):
+ response['exists'] = True
+ if email2 and (InternalTeam.objects.filter(Email1=email2).exists() or InternalTeam.objects.filter(Email2=email2).exists()):
+ response['exists'] = True
+ if phone_number1 and (InternalTeam.objects.filter(PhoneNo1=phone_number1).exists() or InternalTeam.objects.filter(LandNumber=phone_number1).exists()):
+ response['exists'] = True
+ elif phone_number2 and (InternalTeam.objects.filter(PhoneNo1=phone_number2).exists() or InternalTeam.objects.filter(LandNumber=phone_number2).exists()):
+ response['exists'] = True
+ return JsonResponse(response)
+
+
+# def existing_employee(request):
+# employees = InternalTeam.objects.all()
+#
+# employees_data = []
+# for employee in employees:
+# employees_data.append({
+# 'FirstName': employee.FirstName,
+# 'LastName': employee.LastName,
+# 'Designation': employee.Designation,
+# 'Department': employee.Department,
+# 'Address_1': employee.Address_1,
+# 'Address_2': employee.Address_2,
+# 'City': employee.City,
+# 'State': employee.State,
+# 'Pincode': employee.Pincode,
+# 'Country': employee.Country,
+# 'PhoneNo1': employee.PhoneNo1,
+# 'PhoneNo2': employee.PhoneNo2,
+# 'Email1': employee.Email1,
+# 'Email2': employee.Email2,
+# 'Band': employee.Band
+# })
+#
+# return JsonResponse({'employees': employees_data})
+
+
+def get_row_count(request):
+ if request.method == 'POST' and request.FILES['excelFile']:
+ try:
+ excel_file = request.FILES['excelFile']
+ df = pd.read_excel(excel_file) # Requires pandas and openpyxl
+ row_count = len(df.index) # Count the rows in the DataFrame
+ return JsonResponse({'row_count': row_count})
+ except Exception as e:
+ return JsonResponse({'error': str(e)}, status=400)
+ return JsonResponse({'error': 'Invalid request'}, status=400)
+
+def load_excel_data(request):
+ if request.method == 'POST' and request.FILES.get('excelFile'):
+ excel_file = request.FILES['excelFile']
+ data = pd.read_excel(excel_file)
+
+ required_columns = ['FirstName', 'LastName', 'Designation', 'Department', 'Address_1', 'City',
+ 'State', 'Pincode', 'Country', 'PhoneNo1','LandNumber', 'Email1', 'Level']
+
+ data[['PhoneNo1', 'LandNumber']] = data[['PhoneNo1', 'LandNumber']].fillna('')
+
+ empty_fields = {}
+
+ for column in required_columns:
+ if column not in ['PhoneNo1','LandNumber'] and data[column].isnull().any():
+ empty_fields[column] = data[data[column].isnull()].index.tolist()
+
+ missing_contact = data[(data['PhoneNo1'] == '') & (data['LandNumber'] == '')].index.tolist()
+
+ if missing_contact:
+ empty_fields['Contact'] = missing_contact
+
+ if empty_fields:
+ return JsonResponse({'error': True,
+ 'message': 'Some fields are empty in the provided Excel sheet.','empty_fields': empty_fields}, status=400)
+
+ valid_data = data[(data['PhoneNo1'] != '') | (data['LandNumber'] != '')]
+ print(valid_data)
+
+ return JsonResponse({'error': False,'data': valid_data.to_dict(orient='records')}, safe=False)
+
+ return JsonResponse({'error': True,'message': "No file uploaded"}, status=400)
+
+
+def process_row(request):
+ if request.method == 'POST':
+ try:
+ row_data = json.load(request.body)
+ print(row_data)
+
+ FirstName = row_data.get('FirstName')
+ LastName = row_data.get('LastName')
+ Designation = row_data.get('Designation')
+ Department = row_data.get('Department')
+ Address_1 = row_data.get('Address_1')
+ Address_2 = row_data.get('Address_2')
+ City = row_data.get('City')
+ State = row_data.get('State')
+ Pincode = row_data.get('Pincode')
+ PhoneNo1 = row_data.get('PhoneNo1')
+ LandNumber = row_data.get('LandNumber')
+ Email1 = row_data.get('Email1')
+ Email2 = row_data.get('Email2')
+ Level = row_data.get('Level')
+
+ return JsonResponse({"message": "Row processed successfully", "data": row_data}, status=200)
+
+ except Exception as e:
+ return JsonResponse({"error": f"Failed to process row: {str(e)}"}, status=400)
+
+ return JsonResponse({"error": "Invalid request method"}, status=400)
+
+
+def existing_employee(request):
+ employees = InternalTeam.objects.all()
+
+ employees_data = []
+ for employee in employees:
+ employees_data.append({
+ 'FirstName': employee.FirstName,
+ 'LastName': employee.LastName,
+ 'Designation': employee.Designation,
+ 'Department': employee.Department,
+ 'PhoneNo1': employee.PhoneNo1,
+ 'LandNumber': employee.LandNumber,
+ 'Email1': employee.Email1,
+ 'Email2': employee.Email2,
+ 'Level': employee.Level
+ })
+
+ return JsonResponse({'employees': employees_data})
+
+def get_employee(request):
+ if request.method == 'GET':
+ firstName = request.GET.get('firstName')
+ lastName = request.GET.get('lastName')
+ email = request.GET.get('Email1')
+ print('email:',email)
+ try:
+
+ emp_obj = InternalTeam.objects.filter((Q(FirstName=firstName) | Q(LastName=lastName)) & Q(Email1=email)).first()
+ emp_data = {
+ 'FirstName': emp_obj.FirstName,
+ 'LastName': emp_obj.LastName,
+ 'Designation': emp_obj.Designation,
+ 'Department': emp_obj.Department,
+ 'Address_1': emp_obj.Address_1,
+ 'Address_2': emp_obj.Address_2,
+ 'City': emp_obj.City,
+ 'State': emp_obj.State,
+ 'Pincode': emp_obj.Pincode,
+ 'Country': emp_obj.Country,
+ 'PhoneNo1': emp_obj.PhoneNo1,
+ 'LandNumber': emp_obj.LandNumber,
+ 'Email1': emp_obj.Email1,
+ 'Email2': emp_obj.Email2,
+ 'Level': emp_obj.Level,
+ }
+ return JsonResponse(emp_data)
+ except InternalTeam.DoesNotExist:
+ return JsonResponse({'error': 'Client not found'}, status=404)
+ else:
+ return JsonResponse({'error': 'Invalid request method'}, status=400)
diff --git a/skyonnweb/skyonnweb/settings.py b/skyonnweb/skyonnweb/settings.py
index 17435cf..eab7435 100644
--- a/skyonnweb/skyonnweb/settings.py
+++ b/skyonnweb/skyonnweb/settings.py
@@ -37,8 +37,8 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'skyonnadmin',
'user',
- 'skyonnadmin'
]
MIDDLEWARE = [
@@ -79,7 +79,7 @@ WSGI_APPLICATION = 'skyonnweb.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'skyonn',
+ 'NAME': 'skyonn4',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
@@ -127,6 +127,14 @@ USE_TZ = True
STATIC_URL = 'static/'
+# STATICFILES_DIRS = [
+# BASE_DIR / "static",
+# ]
+STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
+
+MEDIA_URL = '/media/'
+MEDIA_ROOT = os.path.join(BASE_DIR,'media')
+
# Default primary key field type
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
@@ -136,3 +144,13 @@ AUTHENTICATION_BACKENDS = [
'user.backend.PhoneAuthenticationBackend',
'django.contrib.auth.backends.ModelBackend', # Keep the default backend as a fallback
]
+
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #settings to send mail
+EMAIL_HOST = 'smtp.gmail.com' # Replace with your SMTP server
+EMAIL_PORT = 587
+EMAIL_USE_TLS = True
+EMAIL_HOST_USER = 'subramanyajithendra@gmail.com'
+EMAIL_HOST_PASSWORD = 'grdwevagtfmfqosb'
+
+TIME_ZONE = 'Asia/Kolkata'
+USE_TZ = True
\ No newline at end of file
diff --git a/skyonnweb/skyonnweb/urls.py b/skyonnweb/skyonnweb/urls.py
index 5ece3c2..a81a03b 100644
--- a/skyonnweb/skyonnweb/urls.py
+++ b/skyonnweb/skyonnweb/urls.py
@@ -2,9 +2,12 @@ from django.contrib import admin
from django.urls import path
from django.contrib import admin
from django.urls import path, include # Make sure to import include here
+from django.conf import settings
+from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
- path('', include('user.urls')), # Include your users app URLs
path('skyonnadmin/', include('skyonnadmin.urls')),
-]
\ No newline at end of file
+ path('', include('user.urls')), # Include your users app URLs
+
+] + static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)
diff --git a/skyonnweb/static/images/Activity Report.svg b/skyonnweb/static/images/Activity Report.svg
new file mode 100644
index 0000000..62df0fb
--- /dev/null
+++ b/skyonnweb/static/images/Activity Report.svg
@@ -0,0 +1,6 @@
+
diff --git a/skyonnweb/static/images/Add A New SPOC.svg b/skyonnweb/static/images/Add A New SPOC.svg
new file mode 100644
index 0000000..8b9150a
--- /dev/null
+++ b/skyonnweb/static/images/Add A New SPOC.svg
@@ -0,0 +1,8 @@
+
diff --git a/skyonnweb/static/images/All job post.svg b/skyonnweb/static/images/All job post.svg
new file mode 100644
index 0000000..928a777
--- /dev/null
+++ b/skyonnweb/static/images/All job post.svg
@@ -0,0 +1,10 @@
+
diff --git a/skyonnweb/static/images/Arminta_Logo.svg b/skyonnweb/static/images/Arminta_Logo.svg
new file mode 100644
index 0000000..1ba0472
--- /dev/null
+++ b/skyonnweb/static/images/Arminta_Logo.svg
@@ -0,0 +1,7 @@
+
diff --git a/skyonnweb/static/images/Arminta_Logo_1.svg b/skyonnweb/static/images/Arminta_Logo_1.svg
new file mode 100644
index 0000000..9b78446
--- /dev/null
+++ b/skyonnweb/static/images/Arminta_Logo_1.svg
@@ -0,0 +1,7 @@
+
diff --git a/skyonnweb/static/images/Client Details (3).svg b/skyonnweb/static/images/Client Details (3).svg
new file mode 100644
index 0000000..ebaed3a
--- /dev/null
+++ b/skyonnweb/static/images/Client Details (3).svg
@@ -0,0 +1,7 @@
+
diff --git a/skyonnweb/static/images/Close_Button.svg b/skyonnweb/static/images/Close_Button.svg
new file mode 100644
index 0000000..29b81cf
--- /dev/null
+++ b/skyonnweb/static/images/Close_Button.svg
@@ -0,0 +1,4 @@
+
diff --git a/skyonnweb/static/images/Internal team Details (1).svg b/skyonnweb/static/images/Internal team Details (1).svg
new file mode 100644
index 0000000..76ebf38
--- /dev/null
+++ b/skyonnweb/static/images/Internal team Details (1).svg
@@ -0,0 +1,9 @@
+
diff --git a/skyonnweb/static/images/Messages.svg b/skyonnweb/static/images/Messages.svg
new file mode 100644
index 0000000..243aed0
--- /dev/null
+++ b/skyonnweb/static/images/Messages.svg
@@ -0,0 +1,6 @@
+
diff --git a/skyonnweb/static/images/New job post (1).svg b/skyonnweb/static/images/New job post (1).svg
new file mode 100644
index 0000000..9fa7a38
--- /dev/null
+++ b/skyonnweb/static/images/New job post (1).svg
@@ -0,0 +1,7 @@
+
diff --git a/skyonnweb/static/images/Pending process.svg b/skyonnweb/static/images/Pending process.svg
new file mode 100644
index 0000000..28df225
--- /dev/null
+++ b/skyonnweb/static/images/Pending process.svg
@@ -0,0 +1,6 @@
+
diff --git a/skyonnweb/static/images/Save_Button (1).svg b/skyonnweb/static/images/Save_Button (1).svg
new file mode 100644
index 0000000..56cfa33
--- /dev/null
+++ b/skyonnweb/static/images/Save_Button (1).svg
@@ -0,0 +1,9 @@
+
diff --git a/skyonnweb/static/images/logo (2).png b/skyonnweb/static/images/logo (2).png
new file mode 100644
index 0000000..f7f2c02
Binary files /dev/null and b/skyonnweb/static/images/logo (2).png differ
diff --git a/skyonnweb/static/images/submited Resumes.svg b/skyonnweb/static/images/submited Resumes.svg
new file mode 100644
index 0000000..79e7dc6
--- /dev/null
+++ b/skyonnweb/static/images/submited Resumes.svg
@@ -0,0 +1,5 @@
+
diff --git a/skyonnweb/templates/skyonnadmin/Internal_team_details.html b/skyonnweb/templates/skyonnadmin/Internal_team_details.html
new file mode 100644
index 0000000..9a3864e
--- /dev/null
+++ b/skyonnweb/templates/skyonnadmin/Internal_team_details.html
@@ -0,0 +1,405 @@
+
+
+
+
+
+
+ New Job Posting
+
+
+
+
+
+
+
+
+ Skyonn Technologies:
+ Internal Team_Details
+
+
+
+
+
+
+
+
+
diff --git a/skyonnweb/templates/skyonnadmin/add_client.html b/skyonnweb/templates/skyonnadmin/add_client.html
index 08ce1e2..ef5a19e 100644
--- a/skyonnweb/templates/skyonnadmin/add_client.html
+++ b/skyonnweb/templates/skyonnadmin/add_client.html
@@ -35,7 +35,7 @@
width: calc(100% - 50px);
padding: 10px;
border-radius: 10px;
- border: 1px solid #ccc;
+ border: 1px solid black;
}
label.required::after {
content: "*";
@@ -90,188 +90,224 @@
margin-left: 500px;
width: 900px;
}
- .add p {
- margin-left: 470px;
- margin-top: 3px;
- }
- .add a {
- text-decoration: none;
- }
+ .add-sublocation-link {
+ display: inline-flex; /* Use inline-flex to keep the link inline */
+ align-items: center; /* Vertically center the icon and text */
+ text-decoration: none; /* Remove underline */
+ color: black; /* Text color */
+ margin: 600;
+ }
+
+ .sublocation-icon {
+ margin-right: 7px;
+ margin-top:-200px;/* Space between the icon and the text */
+ }
+
+ .sublocation-text {
+ margin-left:-90px;
+ margin-top:-150px;
+ }
.container1 input[type="text"] {
width: calc(100% - 20px);
margin-right: 10px;
}
- .add span {
- display: inline-block;
- width: 25px;
- height: 25px;
- border: 2px solid black; /* Add border property */
- border-radius: 50%;
- text-align: center;
- line-height: 30px;
- margin-left: 530px;
- color: black;
- }}
+
+
+
+
+
+
+
+
+
+
+
+ h3 {
+ text-decoration: underline;
+ margin-left:30px;
+}}
-
-