33from sqladmin import ModelView
44from sqlalchemy import Column
55
6+ from wacruit .src .admin .formatters import member_formatter
67from wacruit .src .admin .formatters import recruiting_formatter
78from wacruit .src .admin .formatters import shorten_column
9+ from wacruit .src .admin .formatters import timeline_category_formatter
810from wacruit .src .admin .formatters import user_formatter
911from wacruit .src .apps .announcement .models import Announcement
12+ from wacruit .src .apps .faq .models import FAQ
13+ from wacruit .src .apps .history .models import History
14+ from wacruit .src .apps .member .models import Member
15+ from wacruit .src .apps .pre_registration .models import PreRegistration
1016from wacruit .src .apps .problem .models import CodeSubmission
1117from wacruit .src .apps .problem .models import Problem
1218from wacruit .src .apps .problem .models import Testcase
19+ from wacruit .src .apps .project .models import Project
1320from wacruit .src .apps .recruiting .models import Recruiting
1421from wacruit .src .apps .recruiting .models import RecruitingApplication
22+ from wacruit .src .apps .recruiting_info .models import RecruitingInfo
1523from wacruit .src .apps .resume .models import ResumeQuestion
1624from wacruit .src .apps .resume .models import ResumeSubmission
25+ from wacruit .src .apps .review .models import Review
26+ from wacruit .src .apps .seminar .models import Seminar
27+ from wacruit .src .apps .sponsor .models import Sponsor
28+ from wacruit .src .apps .timeline .models import Timeline
29+ from wacruit .src .apps .timeline .models import TimelineCategory
1730from wacruit .src .apps .user .models import User
1831
1932
@@ -84,6 +97,7 @@ class RecruitingAdmin(ModelView, model=Recruiting):
8497 Recruiting .to_date ,
8598 Recruiting .description ,
8699 Recruiting .short_description ,
100+ Recruiting .recruiting_info ,
87101 ]
88102
89103 column_formatters = {
@@ -284,6 +298,196 @@ class RecruitingApplicationAdmin(ModelView, model=RecruitingApplication):
284298 column_sortable_list = RecruitingApplication .__table__ .columns .keys ()
285299
286300
301+ class ProjectAdmin (ModelView , model = Project ):
302+ column_list = [
303+ Project .id ,
304+ Project .name ,
305+ Project .summary ,
306+ Project .introduction ,
307+ Project .thumbnail_url ,
308+ Project .project_type ,
309+ Project .is_active ,
310+ ]
311+
312+ form_excluded_columns = [
313+ Project .images ,
314+ Project .urls ,
315+ ]
316+
317+ column_searchable_list = [
318+ Project .name ,
319+ Project .summary ,
320+ Project .introduction ,
321+ ]
322+
323+ column_sortable_list = Project .__table__ .columns .keys ()
324+
325+
326+ class MemberAdmin (ModelView , model = Member ):
327+ column_list = [
328+ Member .id ,
329+ Member .first_name ,
330+ Member .last_name ,
331+ Member .introduction ,
332+ Member .department ,
333+ Member .college ,
334+ Member .phone_number ,
335+ Member .github_id ,
336+ Member .generation ,
337+ Member .is_active ,
338+ Member .created_at ,
339+ Member .position ,
340+ ]
341+
342+ column_searchable_list = [Member .first_name , Member .last_name ]
343+
344+ column_sortable_list = Member .__table__ .columns .keys ()
345+
346+
347+ class ReviewAdmin (ModelView , model = Review ):
348+ column_list = [
349+ Review .id ,
350+ Review .member ,
351+ Review .title ,
352+ Review .content ,
353+ ]
354+
355+ column_formatters = {
356+ Review .member : member_formatter , # type: ignore
357+ }
358+
359+ column_searchable_list = [
360+ Review .title ,
361+ ]
362+
363+ column_sortable_list = Review .__table__ .columns .keys ()
364+
365+
366+ class SeminarAdmin (ModelView , model = Seminar ):
367+ column_list = [
368+ Seminar .id ,
369+ Seminar .seminar_type ,
370+ Seminar .curriculum_info ,
371+ Seminar .prerequisite_info ,
372+ Seminar .is_active ,
373+ ]
374+
375+ column_searchable_list = [Seminar .seminar_type ]
376+
377+ column_sortable_list = Seminar .__table__ .columns .keys ()
378+
379+
380+ class PreRegistrationAdmin (ModelView , model = PreRegistration ):
381+ column_list = [
382+ PreRegistration .id ,
383+ PreRegistration .url ,
384+ PreRegistration .generation ,
385+ PreRegistration .is_active ,
386+ ]
387+ column_searchable_list = [
388+ PreRegistration .url ,
389+ PreRegistration .generation ,
390+ ]
391+
392+ column_sortable_list = PreRegistration .__table__ .columns .keys ()
393+
394+
395+ class SponsorAdmin (ModelView , model = Sponsor ):
396+ column_list = [
397+ Sponsor .id ,
398+ Sponsor .name ,
399+ Sponsor .amount ,
400+ Sponsor .email ,
401+ Sponsor .phone_number ,
402+ Sponsor .sponsored_date ,
403+ ]
404+
405+ column_searchable_list = [
406+ Sponsor .name ,
407+ ]
408+
409+ column_sortable_list = Sponsor .__table__ .columns .keys ()
410+
411+
412+ class TimelineAdmin (ModelView , model = Timeline ):
413+ column_list = [
414+ Timeline .id ,
415+ Timeline .title ,
416+ Timeline .category ,
417+ Timeline .group ,
418+ Timeline .start_date ,
419+ Timeline .end_date ,
420+ ]
421+ column_formatters = {
422+ Timeline .category : timeline_category_formatter , # type: ignore
423+ }
424+ column_searchable_list = [
425+ Timeline .title ,
426+ ]
427+
428+ column_sortable_list = Timeline .__table__ .columns .keys ()
429+
430+
431+ class TimelineCategoryAdmin (ModelView , model = TimelineCategory ):
432+ column_list = [
433+ TimelineCategory .id ,
434+ TimelineCategory .title ,
435+ ]
436+
437+ column_searchable_list = [
438+ TimelineCategory .title ,
439+ ]
440+
441+ column_sortable_list = TimelineCategory .__table__ .columns .keys ()
442+
443+
444+ class FAQAdmin (ModelView , model = FAQ ):
445+ column_list = [
446+ FAQ .id ,
447+ FAQ .question ,
448+ FAQ .answer ,
449+ ]
450+
451+ column_searchable_list = [
452+ FAQ .question ,
453+ ]
454+
455+ column_sortable_list = FAQ .__table__ .columns .keys ()
456+
457+
458+ class RecruitingInfoAdmin (ModelView , model = RecruitingInfo ):
459+ column_list = [
460+ RecruitingInfo .id ,
461+ RecruitingInfo .recruiting ,
462+ RecruitingInfo .info_num ,
463+ ]
464+
465+ column_formatters = {
466+ RecruitingInfo .recruiting : recruiting_formatter # type: ignore
467+ }
468+
469+ column_searchable_list = [
470+ "recruiting.name" ,
471+ RecruitingInfo .info_num ,
472+ ]
473+
474+ column_sortable_list = RecruitingInfo .__table__ .columns .keys ()
475+
476+
477+ class HistoryAdmin (ModelView , model = History ):
478+ column_list = [
479+ History .id ,
480+ History .history_key ,
481+ History .history_value ,
482+ ]
483+
484+ column_searchable_list = [
485+ History .history_key ,
486+ ]
487+
488+ column_sortable_list = History .__table__ .columns .keys ()
489+
490+
287491admin_views = [
288492 UserAdmin ,
289493 RecruitingAdmin ,
@@ -294,4 +498,15 @@ class RecruitingApplicationAdmin(ModelView, model=RecruitingApplication):
294498 ResumeQuestionAdmin ,
295499 ResumeSubmissionAdmin ,
296500 RecruitingApplicationAdmin ,
501+ ProjectAdmin ,
502+ MemberAdmin ,
503+ ReviewAdmin ,
504+ SeminarAdmin ,
505+ PreRegistrationAdmin ,
506+ SponsorAdmin ,
507+ TimelineAdmin ,
508+ TimelineCategoryAdmin ,
509+ FAQAdmin ,
510+ RecruitingInfoAdmin ,
511+ HistoryAdmin ,
297512]
0 commit comments