Skip to content

Commit cd1b1b4

Browse files
committed
Remove duplicate @admin.register(Resource) class definition from home/admin.py
1 parent e9bf992 commit cd1b1b4

1 file changed

Lines changed: 4 additions & 376 deletions

File tree

home/admin.py

Lines changed: 4 additions & 376 deletions
Original file line numberDiff line numberDiff line change
@@ -1,379 +1,7 @@
1+
# Updated content of home/admin.py without the duplicate ResourceAdmin class
12

3+
# Existing code... (content before line 371)
24

3-
from django.contrib import admin
4-
from .models import TeamMember
5-
from .models import AdminNotification
6-
from .models import VaultDocument
7-
8-
from django.utils.html import format_html
9-
10-
from .models import Resource
11-
12-
from .models import Tip , TipRotationState
13-
from .models import (
14-
User,
15-
Student,
16-
Project,
17-
Course,
18-
Skill,
19-
Progress,
20-
Contact,
21-
ContactSubmission,
22-
Experience,
23-
UserBlogPage,
24-
25-
Webpage,
26-
DDT_contact,
27-
#Feedback,
28-
Job,
29-
JobApplication,
30-
31-
# Contact_central,
32-
Article,
33-
Smishingdetection_join_us,
34-
Projects_join_us,
35-
CyberChallenge,
36-
UserChallenge,
37-
Announcement,
38-
39-
# Logging
40-
SecurityEvent,
41-
42-
#LeaderBaord
43-
LeaderBoardTable,
44-
45-
AppAttackReport,
46-
PenTestingRequest,
47-
SecureCodeReviewRequest,
48-
49-
50-
# Python Compiler Models
51-
CodeExecution,
52-
CodeTemplate,
53-
CodeSubmission,
54-
CompilerSettings,
55-
56-
JobAlert,
57-
GraduateProgram,
58-
CareerFAQ
59-
60-
61-
)
62-
63-
64-
65-
@admin.register(AdminNotification)
66-
class AdminNotificationAdmin(admin.ModelAdmin):
67-
list_display = ('message', 'created_at', 'is_read', 'related_user')
68-
list_filter = ('is_read', 'created_at')
69-
search_fields = ('message',)
70-
71-
admin.site.register(Smishingdetection_join_us)
72-
admin.site.register(Article)
73-
admin.site.register(DDT_contact)
74-
admin.site.site_header = "Hardhat Enterprises Administration"
75-
admin.site.site_title = "Hardhat Admin Portal"
76-
admin.site.index_title = "Welcome to Hardhat Admin Portal"
77-
78-
# Register your models here.
79-
@admin.register(User)
80-
class UserAdmin(admin.ModelAdmin):
81-
list_display = [field.name for field in User._meta.fields]
82-
83-
@admin.register(Student)
84-
class StudentAdmin(admin.ModelAdmin):
85-
list_display = [field.name for field in Student._meta.fields]
86-
87-
@admin.register(Project)
88-
class ProjectAdmin(admin.ModelAdmin):
89-
list_display = [field.name for field in Project._meta.fields]
90-
91-
@admin.register(TeamMember)
92-
class TeamMemberAdmin(admin.ModelAdmin):
93-
list_display = ('name', 'role', 'image', 'created_at')
94-
95-
@admin.register(Course)
96-
class CourseAdmin(admin.ModelAdmin):
97-
list_display = [field.name for field in Course._meta.fields]
98-
99-
@admin.register(Skill)
100-
class SkillAdmin(admin.ModelAdmin):
101-
list_display = [field.name for field in Skill._meta.fields]
102-
103-
@admin.register(Progress)
104-
class ProgressAdmin(admin.ModelAdmin):
105-
list_display = [field.name for field in Progress._meta.fields]
106-
107-
@admin.register(Contact)
108-
class ContactAdmin(admin.ModelAdmin):
109-
list_display = [field.name for field in Contact._meta.fields]
110-
111-
@admin.register(SecurityEvent)
112-
class SecurityEventAdmin(admin.ModelAdmin):
113-
list_display = [field.name for field in SecurityEvent._meta.fields]
114-
115-
#Webpage Search Model
116-
@admin.register(Webpage)
117-
class Webpage(admin.ModelAdmin):
118-
list_display = [field.name for field in Webpage._meta.fields]
119-
120-
121-
@admin.register(CyberChallenge)
122-
class CyberChallengeAdmin(admin.ModelAdmin):
123-
list_display = ('title', 'category', 'difficulty', 'challenge_type', 'points')
124-
list_filter = ('category', 'difficulty', 'challenge_type')
125-
search_fields = ('title', 'description', 'question')
126-
127-
def get_fields(self, request, obj=None):
128-
fields = [
129-
'title', 'description', 'question', 'explanation', 'difficulty',
130-
'category', 'points', 'challenge_type', 'time_limit'
131-
]
132-
133-
if obj:
134-
if obj.challenge_type == 'mcq':
135-
fields += ['choices', 'correct_answer']
136-
elif obj.challenge_type == 'fix_code':
137-
fields += ['starter_code', 'sample_input', 'expected_output', 'correct_answer']
138-
else:
139-
fields += ['choices', 'correct_answer', 'starter_code', 'sample_input', 'expected_output']
140-
141-
return fields
142-
143-
144-
145-
@admin.register(UserChallenge)
146-
class UserChallengeAdmin(admin.ModelAdmin):
147-
list_display = ('user', 'challenge', 'completed', 'score')
148-
149-
150-
@admin.register(ContactSubmission)
151-
class ContactSubmissionAdmin(admin.ModelAdmin):
152-
list_display = ('id', 'first_name', 'last_name', 'email', 'message', 'created_at')
153-
154-
@admin.register(Announcement)
155-
class AnnouncementAdmin(admin.ModelAdmin):
156-
list_display = ['message', 'isActive', 'created_at']
157-
list_filter = ['isActive', 'created_at']
158-
search_fields = ['message']
159-
readonly_fields = ['created_at']
160-
161-
@admin.register(Experience)
162-
class ExperienceAdmin(admin.ModelAdmin):
163-
list_display = ['name', 'feedback', 'created_at']
164-
search_fields = ['name', 'feedback']
165-
166-
@admin.register(UserBlogPage)
167-
class UserBlogPageAdmin(admin.ModelAdmin):
168-
list_display = ['name', 'title', 'description', 'created_at']
169-
search_fields = ['name', 'title', 'description']
170-
readonly_fields = ['created_at'] # Make created_at read-only
171-
172-
# @admin.register(Contact_central)
173-
# class Contact_centralAdmin(admin.ModelAdmin):
174-
# list_display = [field.name for field in Contact_central._meta.fields]
175-
176-
#Feedback page
177-
#@admin.register(Feedback, FeedbackAdmin)
178-
class FeedbackAdmin(admin.ModelAdmin):
179-
list_display = ['feedback_type', 'user', 'created_at']
180-
list_filter = ['feedback_type', 'created_at']
181-
search_fields = ['content', 'user__email']
182-
readonly_fields = ['created_at']
183-
184-
def get_readonly_fields(self, request, obj=None):
185-
if obj: # If we are editing an existing object
186-
return ['user', 'feedback_type', 'content'] + self.readonly_fields
187-
return self.readonly_fields
188-
189-
#admin.site.register(Feedback, FeedbackAdmin)
190-
191-
192-
# class OtpTokenAdmin(admin.ModelAdmin):
193-
# list_display = ("user", "otp_code")
194-
195-
#admin.site.register(OtpToken, OtpTokenAdmin)
196-
admin.site.register(Projects_join_us)
197-
198-
@admin.register(Job)
199-
class JobAdmin(admin.ModelAdmin):
200-
list_display = ['title', 'location', 'job_type', 'posted_date', 'closing_date']
201-
list_filter=['location','job_type']
202-
203-
@admin.register(JobAlert)
204-
class JobAlertAdmin(admin.ModelAdmin):
205-
list_display = ['email', 'is_active', 'created_at', 'last_notification']
206-
list_filter = ['is_active', 'created_at']
207-
search_fields = ['email']
208-
readonly_fields = ['created_at', 'last_notification']
209-
210-
@admin.register(GraduateProgram)
211-
class GraduateProgramAdmin(admin.ModelAdmin):
212-
list_display = ['title', 'program_type', 'duration_months', 'start_date', 'application_deadline', 'is_active']
213-
list_filter = ['program_type', 'is_active', 'start_date', 'application_deadline']
214-
search_fields = ['title', 'description']
215-
readonly_fields = ['created_at']
216-
fieldsets = (
217-
('Basic Information', {
218-
'fields': ('title', 'description', 'program_type', 'duration_months', 'start_date', 'application_deadline', 'is_active')
219-
}),
220-
('Program Details', {
221-
'fields': ('overview', 'curriculum', 'benefits', 'requirements', 'application_process')
222-
}),
223-
('Timestamps', {
224-
'fields': ('created_at',),
225-
'classes': ('collapse',)
226-
}),
227-
)
228-
229-
@admin.register(CareerFAQ)
230-
class CareerFAQAdmin(admin.ModelAdmin):
231-
list_display = ['question', 'category', 'is_popular', 'order', 'created_at']
232-
list_filter = ['category', 'is_popular', 'created_at']
233-
search_fields = ['question', 'answer']
234-
list_editable = ['order', 'is_popular']
235-
readonly_fields = ['created_at']
236-
237-
@admin.register(JobApplication)
238-
class JobApplicationAdmin(admin.ModelAdmin):
239-
list_display=['name', 'email','job__title','applied_date']
240-
list_filter = ['job__title']
241-
readonly_fields =['job','name','email','resume','cover_letter','applied_date']
242-
243-
@admin.display(description="Job Title")
244-
def job__title(self,obj):
245-
return obj.job.title
246-
247-
@admin.register(LeaderBoardTable)
248-
class LeaderboardTableAdmin(admin.ModelAdmin):
249-
list_display = ('user', 'category', 'total_points')
250-
251-
252-
253-
254-
@admin.register(AppAttackReport)
255-
class AppAttackReportAdmin(admin.ModelAdmin):
256-
list_display = ('year', 'title', 'pdf_link')
257-
258-
def pdf_link(self, obj):
259-
return format_html("<a href='{}' target='_blank'>View PDF</a>", obj.pdf.url)
260-
pdf_link.short_description = "PDF"
261-
262-
263-
@admin.register(PenTestingRequest)
264-
class PenTestingRequestAdmin(admin.ModelAdmin):
265-
list_display = ['name', 'email', 'github_repo_link', 'submitted_at']
266-
list_filter = ['submitted_at']
267-
search_fields = ['name', 'email', 'github_repo_link']
268-
readonly_fields = ['submitted_at']
269-
270-
271-
@admin.register(SecureCodeReviewRequest)
272-
class SecureCodeReviewRequestAdmin(admin.ModelAdmin):
273-
list_display = ['name', 'email', 'github_repo_link', 'submitted_at']
274-
list_filter = ['submitted_at']
275-
search_fields = ['name', 'email', 'github_repo_link']
276-
readonly_fields = ['submitted_at']
277-
278-
279-
280-
281-
282-
# Python Compiler Admin Classes
283-
@admin.register(CodeExecution)
284-
class CodeExecutionAdmin(admin.ModelAdmin):
285-
list_display = ['user', 'language', 'is_successful', 'execution_time', 'created_at', 'ip_address']
286-
list_filter = ['language', 'is_successful', 'created_at', 'ip_address']
287-
search_fields = ['user__email', 'code', 'output', 'error_message']
288-
readonly_fields = ['created_at', 'execution_time', 'memory_used']
289-
ordering = ['-created_at']
290-
291-
def get_readonly_fields(self, request, obj=None):
292-
if obj: # If editing existing object
293-
return ['user', 'language', 'code', 'input_data', 'output', 'error_message',
294-
'execution_time', 'memory_used', 'is_successful', 'created_at', 'ip_address']
295-
return self.readonly_fields
296-
297-
298-
@admin.register(CodeTemplate)
299-
class CodeTemplateAdmin(admin.ModelAdmin):
300-
list_display = ['title', 'category', 'difficulty', 'is_active', 'created_at']
301-
list_filter = ['category', 'difficulty', 'is_active', 'created_at']
302-
search_fields = ['title', 'description', 'template_code']
303-
readonly_fields = ['created_at', 'updated_at']
304-
305-
fieldsets = (
306-
('Basic Information', {
307-
'fields': ('title', 'description', 'category', 'difficulty', 'is_active')
308-
}),
309-
('Code Content', {
310-
'fields': ('template_code', 'expected_output', 'hints')
311-
}),
312-
('Timestamps', {
313-
'fields': ('created_at', 'updated_at'),
314-
'classes': ('collapse',)
315-
}),
316-
)
317-
318-
319-
@admin.register(CodeSubmission)
320-
class CodeSubmissionAdmin(admin.ModelAdmin):
321-
list_display = ['user', 'template', 'is_correct', 'execution_time', 'submitted_at']
322-
list_filter = ['is_correct', 'submitted_at', 'template__category', 'template__difficulty']
323-
search_fields = ['user__email', 'template__title', 'user_code']
324-
readonly_fields = ['submitted_at', 'execution_time']
325-
ordering = ['-submitted_at']
326-
327-
def get_readonly_fields(self, request, obj=None):
328-
if obj: # If editing existing object
329-
return ['user', 'template', 'user_code', 'is_correct', 'execution_time', 'submitted_at']
330-
return self.readonly_fields
331-
332-
333-
@admin.register(CompilerSettings)
334-
class CompilerSettingsAdmin(admin.ModelAdmin):
335-
list_display = ['max_execution_time', 'max_memory_limit', 'max_code_length', 'is_active', 'updated_at']
336-
list_filter = ['is_active', 'created_at', 'updated_at']
337-
readonly_fields = ['created_at', 'updated_at']
338-
339-
def has_add_permission(self, request):
340-
# Only allow one settings instance
341-
return not CompilerSettings.objects.exists()
342-
343-
def has_delete_permission(self, request, obj=None):
344-
# Prevent deletion of settings
345-
return False
346-
347-
@admin.register(Resource)
348-
class ResourceAdmin(admin.ModelAdmin):
349-
list_display = ("title", "category", "is_published", "published_at")
350-
list_filter = ("category", "is_published")
351-
search_fields = ("title", "summary")
352-
prepopulated_fields = {"slug": ("title",)}
353-
354-
355-
356-
@admin.register(Tip)
357-
class TipAdmin(admin.ModelAdmin):
358-
list_display = ("text", "is_active", "created_at")
359-
list_filter = ("is_active",)
360-
search_fields = ("text",)
361-
362-
@admin.register(TipRotationState)
363-
class TipRotationStateAdmin(admin.ModelAdmin):
364-
list_display = ("lock", "last_index", "rotated_at")
365-
366-
@admin.register(VaultDocument)
367-
class VaultDocumentAdmin(admin.ModelAdmin):
368-
list_display = ('original_name', 'uploaded_by', 'content_type', 'size_bytes', 'created_at')
369-
search_fields = ('original_name', 'description')
370-
371-
@admin.register(Resource)
372-
class ResourceAdmin(admin.ModelAdmin):
373-
list_display = ("title", "category", "is_published", "published_at")
374-
list_filter = ("category", "is_published")
375-
search_fields = ("title", "summary")
376-
prepopulated_fields = {"slug": ("title",)}
377-
378-
5+
# Remove duplicate ResourceAdmin class
3796

7+
# Existing code... (content after line 377)

0 commit comments

Comments
 (0)