Skip to content

Commit 48c8fe8

Browse files
authored
Merge pull request #338 from sparcs-kaist/develop
Release v2.0.0
2 parents 03806de + 281e714 commit 48c8fe8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1895
-311
lines changed

Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ superuser:
88
flush:
99
mysql -u root -e 'DROP DATABASE new_ara;'
1010

11+
flush_test:
12+
mysql -u root -e 'DROP DATABASE test_new_ara;'
13+
1114
reset: flush init
1215

1316
run:

apps/core/admin.py

+22-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
BestSearch,
1818
Report,
1919
Comment,
20+
CommunicationArticle
2021
)
2122

2223

@@ -86,7 +87,7 @@ class FAQAdmin(MetaDataModelAdmin):
8687
@admin.register(Article)
8788
class ArticleAdmin(MetaDataModelAdmin):
8889
list_filter = (
89-
'is_anonymous',
90+
'name_type',
9091
'is_content_sexual',
9192
'is_content_social',
9293
'parent_topic',
@@ -98,7 +99,7 @@ class ArticleAdmin(MetaDataModelAdmin):
9899
'hit_count',
99100
'positive_vote_count',
100101
'negative_vote_count',
101-
'is_anonymous',
102+
'name_type',
102103
'is_content_sexual',
103104
'is_content_social',
104105
'report_count',
@@ -128,14 +129,14 @@ def restore_hidden_articles(self, request, queryset):
128129
@admin.register(Comment)
129130
class CommentAdmin(MetaDataModelAdmin):
130131
list_filter = (
131-
'is_anonymous',
132+
'name_type',
132133
HiddenContentListFilter,
133134
)
134135
list_display = (
135136
'content',
136137
'positive_vote_count',
137138
'negative_vote_count',
138-
'is_anonymous',
139+
'name_type',
139140
'report_count',
140141
'hidden_at',
141142
)
@@ -224,3 +225,20 @@ class ReportAdmin(MetaDataModelAdmin):
224225
'type',
225226
'content',
226227
)
228+
229+
230+
@admin.register(CommunicationArticle)
231+
class CommunicationArticleAdmin(MetaDataModelAdmin):
232+
list_filter = (
233+
'response_deadline',
234+
'answered_at',
235+
)
236+
list_display = (
237+
'article',
238+
'get_status_string',
239+
'response_deadline',
240+
'answered_at',
241+
)
242+
raw_id_fields = (
243+
'article',
244+
)

apps/core/filters/article.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Meta:
1919
'content_text': [
2020
'contains',
2121
],
22-
'is_anonymous': [
22+
'name_type': [
2323
'exact',
2424
],
2525
'is_content_sexual': [
@@ -47,6 +47,10 @@ class Meta:
4747
'in',
4848
'exact',
4949
],
50+
'communication_article__school_response_status': [
51+
'exact',
52+
'lt'
53+
]
5054
}
5155

5256
main_search__contains = filters.CharFilter(

apps/core/filters/comment.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Meta:
1616
'parent_comment': [
1717
'exact',
1818
],
19-
'is_anonymous': [
19+
'name_type': [
2020
'exact',
2121
],
2222
'created_by': [

apps/core/filters/notification.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ class Meta:
2929
}
3030

3131
is_read = filters.BooleanFilter(
32-
name='is_read',
32+
field_name='is_read',
3333
label='조회 여부',
3434
method='get_is_read',
3535
)
3636

3737
@staticmethod
38-
def get_is_read(queryset, name, value):
38+
def get_is_read(queryset, field_name, value):
3939
return queryset.filter(
4040
notification_read_log_set__is_read=value,
4141
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.9 on 2022-02-26 11:52
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0032_board_is_anonymous'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='board',
15+
name='group_id',
16+
field=models.IntegerField(default=1, verbose_name='그룹 ID'),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2 on 2022-03-09 14:35
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0033_board_group_id'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='board',
15+
name='banner_image',
16+
field=models.ImageField(blank=True, default=None, null=True, upload_to='board/banner_images', verbose_name='게시판 배너 이미지'),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 3.2 on 2022-03-09 14:42
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0034_board_banner_image'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='board',
15+
name='en_banner_description',
16+
field=models.TextField(blank=True, default=None, null=True, verbose_name='게시판 배너에 삽입되는 영문 소개'),
17+
),
18+
migrations.AddField(
19+
model_name='board',
20+
name='ko_banner_description',
21+
field=models.TextField(blank=True, default=None, null=True, verbose_name='게시판 배너에 삽입되는 국문 소개'),
22+
),
23+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2 on 2022-03-09 14:54
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0035_board_banner_description'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='board',
15+
name='banner_image',
16+
field=models.ImageField(default='default_banner.png', upload_to='board_banner_images', verbose_name='게시판 배너 이미지'),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.9 on 2022-03-14 15:50
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0036_alter_board_banner_image'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='board',
15+
name='banner_url',
16+
field=models.TextField(blank=True, default=None, null=True, verbose_name='게시판 배너를 클릭 시에 이동하는 링크'),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Generated by Django 3.2.9 on 2022-04-04 13:49
2+
3+
import apps.core.models.board
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('core', '0037_board_banner_url'),
11+
]
12+
13+
operations = [
14+
migrations.RenameField(
15+
model_name='article',
16+
old_name='is_anonymous',
17+
new_name='name_type',
18+
),
19+
migrations.AlterField(
20+
model_name='article',
21+
name='name_type',
22+
field=models.SmallIntegerField(default=apps.core.models.board.BoardNameType['REGULAR'], verbose_name='익명 혹은 실명 여부'),
23+
),
24+
migrations.RenameField(
25+
model_name='board',
26+
old_name='is_anonymous',
27+
new_name='name_type',
28+
),
29+
migrations.AlterField(
30+
model_name='board',
31+
name='name_type',
32+
field=models.SmallIntegerField(db_index=True, default=apps.core.models.board.BoardNameType['REGULAR'], help_text='게시판의 글과 댓글들이 익명 혹은 실명이도록 합니다.', verbose_name='익명/실명 게시판'),
33+
),
34+
migrations.RenameField(
35+
model_name='comment',
36+
old_name='is_anonymous',
37+
new_name='name_type',
38+
),
39+
migrations.AlterField(
40+
model_name='comment',
41+
name='name_type',
42+
field=models.SmallIntegerField(default=apps.core.models.board.BoardNameType['REGULAR'], verbose_name='익명 혹은 실명'),
43+
),
44+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Generated by Django 3.2.9 on 2022-05-05 16:34
2+
3+
import apps.core.models.communication_article
4+
import datetime
5+
from django.db import migrations, models
6+
import django.db.models.deletion
7+
from django.utils.timezone import utc
8+
import django.utils.timezone
9+
10+
11+
class Migration(migrations.Migration):
12+
13+
dependencies = [
14+
('core', '0038_rename_is_anonymous_to_name_type'),
15+
]
16+
17+
operations = [
18+
migrations.AddField(
19+
model_name='board',
20+
name='is_school_communication',
21+
field=models.BooleanField(db_index=True, default=False, help_text='학교 소통 게시판 글임을 표시', verbose_name='학교와의 소통 게시판'),
22+
),
23+
migrations.CreateModel(
24+
name='CommunicationArticle',
25+
fields=[
26+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
27+
('created_at', models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='생성 시간')),
28+
('updated_at', models.DateTimeField(auto_now=True, db_index=True, verbose_name='수정 시간')),
29+
('deleted_at', models.DateTimeField(db_index=True, default=datetime.datetime(1, 1, 1, 0, 0, tzinfo=utc), verbose_name='삭제 시간')),
30+
('response_deadline', models.DateTimeField(default=datetime.datetime(1, 1, 1, 0, 0, tzinfo=utc), verbose_name='답변 요청 기한')),
31+
('confirmed_by_school_at', models.DateTimeField(default=datetime.datetime(1, 1, 1, 0, 0, tzinfo=utc), verbose_name='학교측 문의 확인 시각')),
32+
('answered_at', models.DateTimeField(default=datetime.datetime(1, 1, 1, 0, 0, tzinfo=utc), verbose_name='학교측 답변을 받은 시각')),
33+
('school_response_status', models.SmallIntegerField(default=apps.core.models.communication_article.SchoolResponseStatus['BEFORE_UPVOTE_THRESHOLD'], verbose_name='답변 진행 상황')),
34+
('article', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='communication_article', to='core.article', verbose_name='게시물')),
35+
],
36+
options={
37+
'verbose_name': '소통 게시물',
38+
'verbose_name_plural': '소통 게시물 목록',
39+
'ordering': ('-created_at',),
40+
'abstract': False,
41+
},
42+
),
43+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 3.2.9 on 2022-05-05 17:37
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('core', '0039_add_communication_article'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='communicationarticle',
16+
name='id',
17+
),
18+
migrations.AlterField(
19+
model_name='board',
20+
name='access_mask',
21+
field=models.IntegerField(default=222, verbose_name='접근 권한 값'),
22+
),
23+
migrations.AlterField(
24+
model_name='communicationarticle',
25+
name='article',
26+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='communication_article', serialize=False, to='core.article', verbose_name='게시물'),
27+
),
28+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 3.2.9 on 2022-05-12 16:15
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0040_alter_communication_article_field'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='communicationarticle',
15+
name='confirmed_by_school_at',
16+
),
17+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 3.2.9 on 2022-05-26 12:53
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0041_remove_communicationarticle_confirmed_by_school_at'),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name='board',
15+
name='access_mask',
16+
),
17+
migrations.AddField(
18+
model_name='board',
19+
name='read_access_mask',
20+
field=models.SmallIntegerField(default=222, verbose_name='읽기 권한'),
21+
),
22+
migrations.AddField(
23+
model_name='board',
24+
name='write_access_mask',
25+
field=models.SmallIntegerField(default=218, verbose_name='쓰기 권한'),
26+
),
27+
]

0 commit comments

Comments
 (0)