Skip to content

Commit 0db431f

Browse files
migrations/logging
1 parent 86e1a35 commit 0db431f

6 files changed

Lines changed: 169 additions & 2 deletions

File tree

forums/logs/spam_detection.log

Whitespace-only changes.

forums/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
1818
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
1919

20+
SPAM_LOG_FILE = os.getenv("SPAM_LOG_FILE")
2021

2122
# Quick-start development settings - unsuitable for production
2223
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
@@ -317,5 +318,4 @@
317318
},
318319
}
319320
}
320-
SPAM_LOG_FILE = os.getenv("SPAM_LOG_FILE", BASE_DIR / "logs/spam_detection.log")
321321
VIDEO_PATH = os.getenv("VIDEO_PATH")

website/migrations/0001_initial.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# Generated by Django 2.2.6 on 2025-09-12 11:42
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='Answer',
17+
fields=[
18+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('uid', models.IntegerField()),
20+
('body', models.TextField()),
21+
('date_created', models.DateTimeField(auto_now_add=True)),
22+
('date_modified', models.DateTimeField(auto_now=True)),
23+
],
24+
),
25+
migrations.CreateModel(
26+
name='Notification',
27+
fields=[
28+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
29+
('uid', models.IntegerField()),
30+
('pid', models.IntegerField()),
31+
('qid', models.IntegerField()),
32+
('aid', models.IntegerField(default=0)),
33+
('cid', models.IntegerField(default=0)),
34+
('date_created', models.DateTimeField(auto_now_add=True)),
35+
],
36+
),
37+
migrations.CreateModel(
38+
name='Question',
39+
fields=[
40+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
41+
('uid', models.IntegerField()),
42+
('category', models.CharField(max_length=200)),
43+
('tutorial', models.CharField(max_length=200)),
44+
('minute_range', models.CharField(max_length=10)),
45+
('second_range', models.CharField(max_length=10)),
46+
('title', models.CharField(max_length=200)),
47+
('body', models.TextField()),
48+
('date_created', models.DateTimeField(auto_now_add=True)),
49+
('date_modified', models.DateTimeField(auto_now=True)),
50+
('views', models.IntegerField(default=1)),
51+
('status', models.IntegerField(default=1)),
52+
('last_active', models.DateTimeField(null=True)),
53+
('last_post_by', models.IntegerField(null=True)),
54+
],
55+
options={
56+
'get_latest_by': 'date_created',
57+
},
58+
),
59+
migrations.CreateModel(
60+
name='QuestionVote',
61+
fields=[
62+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
63+
('uid', models.IntegerField()),
64+
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Question')),
65+
],
66+
),
67+
migrations.CreateModel(
68+
name='QuestionComment',
69+
fields=[
70+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
71+
('uid', models.IntegerField()),
72+
('body', models.TextField()),
73+
('date_created', models.DateTimeField(auto_now_add=True)),
74+
('date_modified', models.DateTimeField(auto_now=True)),
75+
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Question')),
76+
],
77+
),
78+
migrations.CreateModel(
79+
name='AnswerVote',
80+
fields=[
81+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
82+
('uid', models.IntegerField()),
83+
('answer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Answer')),
84+
],
85+
),
86+
migrations.CreateModel(
87+
name='AnswerComment',
88+
fields=[
89+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
90+
('uid', models.IntegerField()),
91+
('body', models.TextField()),
92+
('date_created', models.DateTimeField(auto_now_add=True)),
93+
('date_modified', models.DateTimeField(auto_now=True)),
94+
('answer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Answer')),
95+
],
96+
),
97+
migrations.AddField(
98+
model_name='answer',
99+
name='question',
100+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.Question'),
101+
),
102+
]
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Generated by Django 2.2.6 on 2025-09-12 11:43
2+
3+
from django.db import migrations, models
4+
import django.utils.timezone
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('website', '0001_initial'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='SpamLog',
16+
fields=[
17+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('question_id', models.IntegerField()),
19+
('user_id', models.IntegerField(blank=True, null=True)),
20+
('category', models.CharField(blank=True, max_length=200)),
21+
('title', models.CharField(blank=True, max_length=200)),
22+
('content', models.TextField(blank=True)),
23+
('action', models.CharField(choices=[('AUTO_DELETE', 'Auto Deleted'), ('FLAGGED', 'Flagged for Review'), ('APPROVED', 'Approved')], max_length=20)),
24+
('spam_score', models.IntegerField()),
25+
('confidence', models.CharField(max_length=20)),
26+
('details', models.TextField(blank=True, null=True)),
27+
('created_at', models.DateTimeField(auto_now_add=True)),
28+
],
29+
),
30+
migrations.CreateModel(
31+
name='SpamRule',
32+
fields=[
33+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
34+
('type', models.CharField(choices=[('keyword', 'Keyword'), ('domain', 'Domain / URL')], max_length=10)),
35+
('pattern', models.CharField(max_length=500)),
36+
('score', models.IntegerField(default=1)),
37+
('active', models.BooleanField(default=True)),
38+
('notes', models.CharField(blank=True, max_length=200)),
39+
('expires_at', models.DateTimeField(blank=True, null=True)),
40+
('created_at', models.DateTimeField(auto_now_add=True)),
41+
('updated_at', models.DateTimeField(auto_now=True)),
42+
],
43+
),
44+
migrations.AddField(
45+
model_name='question',
46+
name='approval_required',
47+
field=models.BooleanField(default=False),
48+
),
49+
migrations.AddField(
50+
model_name='question',
51+
name='approved_by',
52+
field=models.IntegerField(null=True),
53+
),
54+
migrations.AddField(
55+
model_name='question',
56+
name='date_approved',
57+
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
58+
preserve_default=False,
59+
),
60+
migrations.AddField(
61+
model_name='question',
62+
name='spam',
63+
field=models.BooleanField(default=False),
64+
),
65+
]

website/migrations/__init__.py

Whitespace-only changes.

website/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class SpamLog(models.Model):
117117
("APPROVED", "Approved"),
118118
]
119119

120-
#question_id = models.IntegerField()
120+
question_id = models.IntegerField()
121121
user_id = models.IntegerField(null=True, blank=True)
122122
category = models.CharField(max_length=200, blank=True)
123123
title = models.CharField(max_length=200, blank=True)

0 commit comments

Comments
 (0)