Skip to content

Commit 58b46ac

Browse files
committed
thodi mehnat in making two diff interfaces
1 parent e1a9546 commit 58b46ac

File tree

10 files changed

+126
-24
lines changed

10 files changed

+126
-24
lines changed

backend/placement/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
from .serializers import *
55
from rest_framework.viewsets import ModelViewSet
66
from rest_framework.permissions import IsAuthenticated
7-
# from rest_framework.authentication import BasicAuthentication
7+
from rest_framework.authentication import BasicAuthentication
88
from django.utils import timezone
99

1010

1111

1212
# Create your views here.
1313

1414
class AllPlacementRecords(ModelViewSet):
15-
# authentication_classes =[BasicAuthentication]
15+
authentication_classes =[BasicAuthentication]
1616
permission_classes =[IsAuthenticated, WriteByPlacement ]
1717
serializer_class = PlacementSerializer
1818
queryset = Placements.objects.all()
@@ -21,7 +21,7 @@ class AllPlacementRecords(ModelViewSet):
2121

2222

2323
class ViewAnnouncement(ModelViewSet):
24-
# authentication_classes = [BasicAuthentication]
24+
authentication_classes = [BasicAuthentication]
2525
permission_classes = [IsAuthenticated, WriteByPlacement]
2626
serializer_class = AnnouncementSerializer
2727
queryset = Announcement.objects.all()
@@ -34,15 +34,15 @@ class ViewAnnouncement(ModelViewSet):
3434

3535

3636
class PastPlacementRecords(ModelViewSet):
37-
# authentication_classes = [BasicAuthentication]
37+
authentication_classes = [BasicAuthentication]
3838
permission_classes = [IsAuthenticated, WriteByPlacement]
3939
serializer_class = PlacementSerializer
4040
queryset = Placements.objects.filter(date__lte=timezone.now())
4141

4242

4343

4444
class ActivePlacementRecords(ModelViewSet):
45-
# authentication_classes = [BasicAuthentication]
45+
authentication_classes = [BasicAuthentication]
4646
permission_classes = [IsAuthenticated, WriteByPlacement]
4747
serializer_class = PlacementSerializer
4848
queryset = Placements.objects.filter(date__gt=timezone.now())

frontend/src/App.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import FeesComponentAdmin from './components/FeesAdmin/FeesComponentAdmin';
1919
import FeeHistory from './components/Fees/FeeHistory';
2020
import FeesStructure from './components/Fees/FeesStructure';
2121
import AccountsLogin from './components/FeesAdmin/AccountsLogin';
22-
import PlacementDashboard from './components/Placement/PlacementDashboard';
23-
import PlacementLogin from './components/Placement/PlacementLogin';
22+
import PlacementDashboard from './components/PlacementAdmin/PlacementDashboard';
23+
import PlacementLogin from './components/PlacementAdmin/PlacementLogin';
24+
import PlacementStudent from './components/Placement/PlacementStudent';
2425
import NotFound from './components/standard/NotFound';
2526

2627
function App() {
@@ -56,6 +57,7 @@ function App() {
5657
<Route path="/fee-admin-login" element={<AccountsLogin />} />
5758
<Route path="/placement-login" element={<PlacementLogin />} />
5859
<Route path="/placement-dashboard" element={<PlacementDashboard />} />
60+
<Route path="/placement-student" element={<PlacementStudent />} />
5961
{/* Add more routes as needed */}
6062
<Route path="*" element={<NotFound />} />
6163
</Routes>

frontend/src/components/Placement/PlacementAnnouncement.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ function PlacementAnnouncement() {
1212
const accessToken = localStorage.getItem('accessToken');
1313
const headers = { Authorization: `Bearer ${accessToken}` };
1414

15-
// Fetch user role
1615
const userRoleResponse = await axios.get(`${host}/user-details/`, { headers });
1716
setLoggedInUserRole(userRoleResponse.data.role);
1817

19-
// Fetch announcements
2018
const announcementsResponse = await axios.get(`${host}/placements/announcement/`, { headers });
2119
setAnnouncements(announcementsResponse.data);
2220
} catch (error) {
@@ -25,7 +23,7 @@ function PlacementAnnouncement() {
2523
};
2624

2725
fetchData();
28-
}, [host]); // Dependency added to ensure useEffect runs on host change
26+
}, [host]);
2927

3028
const handleDeleteAnnouncement = async (id) => {
3129
try {

frontend/src/components/Placement/PlacementDashboard.jsx renamed to frontend/src/components/Placement/PlacementStudent.jsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import PlacementPast from './PlacementPast';
77
import PlacementActive from './PlacementActive';
88
import PlacementAnnouncement from './PlacementAnnouncement';
99

10-
const PlacementDashboard = () => {
10+
const PlacementStudent = () => {
1111
const [selectedComponent, setSelectedComponent] = useState(null);
1212
const [isLoading, setIsLoading] = useState(true);
1313
const navigate = useNavigate();
@@ -49,7 +49,7 @@ const PlacementDashboard = () => {
4949
<div className='bg-slate-300 h-[100%]'>
5050
<div className="p-5 w-[90%] m-auto">
5151
<div className="mb-8 inline-block">
52-
<Link to={'/placement-dashboard'} onClick={() => setSelectedComponent(null)}>
52+
<Link to={'/placement-student'} onClick={() => setSelectedComponent(null)}>
5353
<h1 className="text-xl hover:bg-gray-100 text-blue-900 w-fit p-2 rounded font-semibold bg-gray-200">Placements Dashboard</h1>
5454
</Link>
5555
</div>
@@ -72,9 +72,7 @@ const PlacementDashboard = () => {
7272
<li className="mb-2">
7373
<button className="block py-2 px-4 text-blue-900 font-semibold rounded hover:bg-gray-100" onClick={() => setSelectedComponent('AnnouncementsPlacements')}>View All Announcements</button>
7474
</li>
75-
<li className="mb-2">
76-
<button className="block py-2 px-4 text-blue-900 font-semibold rounded hover:bg-gray-100" onClick={handleLogout}>Logout</button>
77-
</li>
75+
7876
</ul>
7977
</div>
8078
</div>
@@ -86,13 +84,13 @@ const PlacementDashboard = () => {
8684
{selectedComponent === null && <PlacementAll />}
8785
</div>
8886
{selectedComponent !== 'AnnouncementsPlacements' && (
89-
<div className="w-96 bg-gray-200 p-4 relative">
90-
<h2 className="text-2xl font-bold mb-4">Announcements</h2>
91-
test <br /> hi <br /> there
92-
<div className="absolute inset-x-0 bottom-0 flex justify-end mb-1">
93-
<button className="py-2 px-4 text-blue-900 hover:underline font-semibold" onClick={() => setSelectedComponent('AnnouncementsPlacements')}>View All...</button>
94-
</div>
87+
<div className="w-96 bg-gray-200 p-4 relative">
88+
<h2 className="text-2xl font-bold mb-4">Announcements</h2>
89+
test <br /> hi <br /> there
90+
<div className="absolute inset-x-0 bottom-0 flex justify-end mb-1">
91+
<button className="py-2 px-4 text-blue-900 hover:underline font-semibold" onClick={() => setSelectedComponent('AnnouncementsPlacements')}>View All...</button>
9592
</div>
93+
</div>
9694
)}
9795
</div>
9896
)}
@@ -102,4 +100,4 @@ const PlacementDashboard = () => {
102100
);
103101
};
104102

105-
export default PlacementDashboard;
103+
export default PlacementStudent;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from 'react'
2+
3+
function AllPlacements() {
4+
return (
5+
<div>AllPlacements</div>
6+
)
7+
}
8+
9+
export default AllPlacements
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from 'react'
2+
3+
function AnnouncementPlacement() {
4+
return (
5+
<div>AnnouncementPlacement</div>
6+
)
7+
}
8+
9+
export default AnnouncementPlacement
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from 'react'
2+
3+
function ArchivedPlacements() {
4+
return (
5+
<div>ArchivedPlacements</div>
6+
)
7+
}
8+
9+
export default ArchivedPlacements
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import React, { useEffect, useState } from 'react';
2+
import { Link, useNavigate } from 'react-router-dom';
3+
import maitlogomain from '../../assets/maitlogomain.png';
4+
import AllPlacements from '../PlacementAdmin/AllPlacements';
5+
import ArchivedPlacements from '../PlacementAdmin/ArchivedPlacements';
6+
import AnnouncementsPlacement from '../PlacementAdmin/AnnouncementsPlacement';
7+
8+
const PlacementDashboard = () => {
9+
const [selectedComponent, setSelectedComponent] = useState(null);
10+
const navigate = useNavigate();
11+
const navigation = [
12+
{ name: 'Home', href: '/' },
13+
{ name: 'Student', href: '#' },
14+
{ name: 'Infrastructure', href: '/infra-login' },
15+
{ name: 'Accounts', href: '/fee-admin-login' },
16+
{ name: 'Placement', href: '/placement-login' },
17+
{ name: 'About', href: '#' },
18+
];
19+
20+
const handleLogout = () => {
21+
localStorage.removeItem('accessToken');
22+
localStorage.removeItem('refreshToken');
23+
navigate('/placement-login');
24+
};
25+
26+
return (
27+
<>
28+
<nav className="flex items-center bg-gray-900 justify-between p-6 lg:px-8" aria-label="Global">
29+
<div className="flex lg:flex-1">
30+
<Link to={'/'}><img src={maitlogomain} alt="" className='w-20 ' /></Link>
31+
</div>
32+
<div className="hidden lg:flex lg:gap-x-12">
33+
{navigation.map((item) => (
34+
<Link to={item.href} className="-mx-3 block rounded-lg px-3 py-2 text-base font-semibold leading-7 text-white hover:bg-gray-700">
35+
{item.name}
36+
</Link>
37+
))}
38+
</div>
39+
</nav>
40+
<div className='flex-1 text-center'>
41+
{selectedComponent === 'AllPlacements' && <AllPlacements />}
42+
{selectedComponent === 'ArchivedPlacements' && <ArchivedPlacements />}
43+
{selectedComponent === 'AnnouncementsPlacement' && <AnnouncementsPlacement />}
44+
{selectedComponent === null && (
45+
<>
46+
<div className="text-center mt-5">
47+
<h2 className="text-4xl font-semibold mb-4">Welcome, Admin</h2>
48+
<p className="text-lg m-5">Select an option from menu to get started.</p>
49+
</div>
50+
<div className='grid grid-cols-2 gap-4 m-10'>
51+
<div onClick={() => setSelectedComponent('AllPlacements')} className="bg-gray-200 p-4 hover:bg-gray-100 cursor-pointer rounded-lg hover:scale-105">
52+
<h3 className="text-lg font-semibold mb-2">All Placements →</h3>
53+
<p className="text-sm">View all placements.</p>
54+
</div>
55+
<div onClick={() => setSelectedComponent('ArchivedPlacements')} className="bg-gray-200 p-4 hover:bg-gray-100 cursor-pointer rounded-lg hover:scale-105">
56+
<h3 className="text-lg font-semibold mb-2">Archived Placements →</h3>
57+
<p className="text-sm">View only archived placements.</p>
58+
</div>
59+
<div onClick={() => setSelectedComponent('AnnouncementsPlacement')} className="bg-gray-200 p-4 hover:bg-gray-100 cursor-pointer rounded-lg hover:scale-105">
60+
<h3 className="text-lg font-semibold mb-2">Annoucements →</h3>
61+
<p className="text-sm">Manage and add annoucements.</p>
62+
</div>
63+
<button onClick={handleLogout} className="bg-gray-200 p-4 hover:bg-gray-100 cursor-pointer rounded-lg hover:scale-105 flex items-center justify-center" >
64+
<h3 className="text-lg font-semibold mb-2">Logout →</h3>
65+
</button>
66+
</div>
67+
</>
68+
)}
69+
</div>
70+
</>
71+
);
72+
};
73+
74+
export default PlacementDashboard;

frontend/src/components/Placement/PlacementLogin.jsx renamed to frontend/src/components/PlacementAdmin/PlacementLogin.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const PlacementLogin = () => {
2020
];
2121

2222
const handleLogin = async (e) => {
23-
e.preventDefault();
23+
e.preventDefault();
2424
try {
2525
const response = await axios.post(`${host}/student/login/`, {
2626
user_id,
@@ -62,7 +62,7 @@ const PlacementLogin = () => {
6262
</div>
6363
</nav>
6464
<h2 className="mt-10 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900">
65-
Sign in to Placement Portal
65+
Sign in to Placement Admin Portal
6666
</h2>
6767
<form onSubmit={handleLogin} className='m-5 grid grid-cols-1 place-items-center'>
6868
<div>

frontend/src/components/Student Portal/StudentNavbar.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ const StudentNavbar = () => {
8282
<li className="mb-2">
8383
<Link to='/fee-comp' className="hover:underline">Fees</Link>
8484
</li>
85+
<li className="mb-2">
86+
<Link to='/placement-student' className="hover:underline">Placement</Link>
87+
</li>
8588
</ul>
8689
<button
8790
onClick={logoutUser}

0 commit comments

Comments
 (0)