Removed MOTDs, Allowed mods and staff to edit communities.

This commit is contained in:
some weird guy
2023-07-27 20:56:43 -07:00
parent 40355adef6
commit 71d8b5fff4
20 changed files with 334 additions and 497 deletions
-433
View File
@@ -1,433 +0,0 @@
# Generated by Django 3.2.3 on 2023-02-07 01:50
import closedverse_main.models
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('username', models.CharField(max_length=32, unique=True)),
('nickname', models.CharField(max_length=64, null=True)),
('password', models.CharField(max_length=128)),
('email', models.EmailField(blank=True, default='', max_length=254, null=True)),
('has_mh', models.BooleanField(default=False)),
('avatar', models.CharField(blank=True, default='', max_length=1200)),
('theme', closedverse_main.models.ColorField(blank=True, max_length=18, null=True)),
('level', models.SmallIntegerField(default=0)),
('role', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'Bot'), (2, 'Administrator'), (3, 'Moderator'), (4, 'NO'), (5, 'Donator'), (6, 'Tester'), (7, 'Cools'), (8, 'Developer'), (9, 'SMF9-Django'), (10, 'Staff'), (11, 'GAY DOGWATER'), (12, 'DUMB SNAIL'), (13, 'Russian ADRIAN'), (14, 'Contest'), (15, 'Gamecon'), (16, 'Cedar')], default=0)),
('addr', models.CharField(blank=True, max_length=64, null=True)),
('signup_addr', models.CharField(blank=True, max_length=64, null=True)),
('user_agent', models.TextField(blank=True, null=True)),
('c_tokens', models.IntegerField(default=1)),
('hide_online', models.BooleanField(default=False)),
('color', closedverse_main.models.ColorField(blank=True, default='', max_length=18, null=True)),
('staff', models.BooleanField(default=False)),
('active', models.BooleanField(default=True)),
('warned', models.BooleanField(default=False)),
('warned_reason', models.CharField(blank=True, max_length=600, null=True)),
('bg_url', models.CharField(blank=True, max_length=300, null=True)),
('last_login', models.DateTimeField(auto_now=True)),
('created', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Ads',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('url', models.CharField(max_length=256)),
('imageurl', models.ImageField(upload_to='ad/%y/%m/%d/')),
],
),
migrations.CreateModel(
name='Comment',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)),
('body', models.TextField(null=True)),
('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)),
('drawing', models.CharField(blank=True, max_length=200, null=True)),
('spoils', models.BooleanField(default=False)),
('created', models.DateTimeField(auto_now_add=True)),
('edited', models.DateTimeField(auto_now=True)),
('befores', models.TextField(blank=True, null=True)),
('has_edit', models.BooleanField(default=False)),
('is_rm', models.BooleanField(default=False)),
('status', models.SmallIntegerField(choices=[(0, 'ok'), (1, 'delete by user'), (2, 'delete by authority'), (3, 'delete by mod'), (4, 'delete by admin'), (5, 'account pruge')], default=0)),
],
),
migrations.CreateModel(
name='Community',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=255)),
('description', models.TextField(blank=True, default='')),
('ico', models.ImageField(blank=True, null=True, upload_to='icon/%y/%m/%d/')),
('banner', models.ImageField(blank=True, null=True, upload_to='banner/%y/%m/%d/')),
('type', models.SmallIntegerField(choices=[(0, 'General'), (1, 'Game'), (2, 'Special'), (3, 'User Community'), (4, 'Hide')], default=0)),
('platform', models.SmallIntegerField(choices=[(0, 'none'), (1, '3ds'), (2, 'wii u'), (3, 'switch'), (4, 'both'), (5, 'PC'), (6, 'Xbox'), (7, 'Playstation')], default=0)),
('tags', models.CharField(blank=True, choices=[('announcements', 'main announcement community'), ('changelog', 'main changelog'), ('activity', 'Activity Feed posting community'), ('general', 'General Discussion Community')], max_length=255, null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('is_rm', models.BooleanField(default=False)),
('is_feature', models.BooleanField(default=False)),
('require_auth', models.BooleanField(default=False)),
('allowed_users', models.TextField(blank=True, null=True)),
('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name_plural': 'communities',
},
),
migrations.CreateModel(
name='Conversation',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conv_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conv_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Motd',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('order', models.IntegerField(default=1, max_length=3)),
('show', models.BooleanField(default=True)),
('created', models.DateTimeField(auto_now_add=True)),
('Title', models.CharField(blank=True, default='Title', max_length=256)),
('message', models.TextField()),
('hide_date', models.BooleanField(default=False)),
('image', models.ImageField(blank=True, max_length=255, null=True, upload_to='MOTD/%y/%m/%d/')),
],
),
migrations.CreateModel(
name='Poll',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('able_vote', models.BooleanField(default=True)),
('choices', models.TextField(default='[]')),
('created', models.DateTimeField(auto_now_add=True)),
],
),
migrations.CreateModel(
name='Post',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)),
('body', models.TextField(null=True)),
('drawing', models.CharField(blank=True, max_length=200, null=True)),
('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)),
('url', models.URLField(blank=True, default='', max_length=1200, null=True)),
('spoils', models.BooleanField(default=False)),
('disable_yeah', models.BooleanField(default=False)),
('created', models.DateTimeField(auto_now_add=True)),
('edited', models.DateTimeField(auto_now=True)),
('befores', models.TextField(blank=True, null=True)),
('has_edit', models.BooleanField(default=False)),
('is_rm', models.BooleanField(default=False)),
('status', models.SmallIntegerField(choices=[(0, 'ok'), (1, 'delete by user'), (2, 'delete by authority'), (3, 'delete by mod'), (4, 'delete by admin'), (5, 'account pruge')], default=0)),
('community', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('poll', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.poll')),
],
),
migrations.CreateModel(
name='welcomemsg',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('order', models.IntegerField(default=1, max_length=3)),
('show', models.BooleanField(default=True)),
('created', models.DateTimeField(auto_now_add=True)),
('Title', models.CharField(default='Title', max_length=256)),
('message', models.TextField()),
('image', models.ImageField(blank=True, max_length=255, null=True, upload_to='welcomemsg/%y/%m/%d/')),
],
),
migrations.CreateModel(
name='UserRequest',
fields=[
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='closedverse_main.user')),
('ua', models.TextField(blank=True, default='', null=True)),
('latest', models.DateTimeField(auto_now=True)),
('status', models.SmallIntegerField(choices=[(0, 'submitted'), (1, 'viewed'), (2, 'accepted'), (3, 'decline'), (4, 'ignore')], default=0)),
],
bases=('closedverse_main.user',),
),
migrations.CreateModel(
name='Yeah',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
('type', models.SmallIntegerField(choices=[(0, 'post'), (1, 'comment')], default=0)),
('created', models.DateTimeField(auto_now_add=True)),
('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')),
('post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')),
],
),
migrations.CreateModel(
name='UserBlock',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('full', models.BooleanField(default=False)),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='block_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='block_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='ThermostatTouch',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('lvl', models.IntegerField(default=1)),
('who', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Restriction',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('type', models.SmallIntegerField(choices=[(0, 'Prevent yeah'), (1, 'Prevent follow'), (2, 'Prevent comment')])),
('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='restriction_by', to=settings.AUTH_USER_MODEL)),
('comment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_comment', to='closedverse_main.comment')),
('post', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_post', to='closedverse_main.post')),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='restriction_user', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='RedFlag',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('type', models.SmallIntegerField(choices=[(0, 'Post'), (1, 'Comment'), (2, 'User')])),
('reason', models.SmallIntegerField(choices=[(0, 'Actual harassment'), (1, 'Spam'), (2, "I don't like this"), (3, 'Personal info'), (4, 'Obscene use of swearing'), (5, 'NSFW where not allowed'), (6, 'Overly advertising/spam'), (7, 'Please delete this')])),
('reasoning', models.TextField(blank=True, default='', null=True)),
('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')),
('post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')),
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='ProfileHistory',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('old_nickname', models.CharField(blank=True, max_length=64)),
('new_nickname', models.CharField(blank=True, max_length=64)),
('old_comment', models.TextField(blank=True)),
('new_comment', models.TextField(blank=True)),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Profile',
fields=[
('is_new', models.BooleanField(default=True)),
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('origin_id', models.CharField(blank=True, max_length=16, null=True)),
('origin_info', models.CharField(blank=True, max_length=255, null=True)),
('comment', models.TextField(blank=True, default='')),
('country', models.CharField(blank=True, default='', max_length=120)),
('whatareyou', models.CharField(blank=True, default='', max_length=120)),
('id_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)),
('pronoun_is', models.IntegerField(choices=[(0, "I don't know"), (1, 'He/him'), (2, 'She/her'), (3, 'He/she'), (4, 'It'), (5, 'They/Them')], default=0)),
('gender_is', models.IntegerField(choices=[(0, "I don't know"), (1, 'Girl'), (2, 'Boy'), (3, 'Minion'), (4, 'Toaster'), (5, 'Dinosaur'), (6, 'Truck'), (7, 'Robot'), (8, 'Monkey'), (9, 'Big chungus'), (10, 'Other')], default=0)),
('let_friendrequest', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)),
('yeahs_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=0)),
('comments_visibility', models.SmallIntegerField(choices=[(0, 'show'), (1, 'friends only'), (2, 'hide')], default=2)),
('weblink', models.CharField(blank=True, default='', max_length=1200)),
('external', models.CharField(blank=True, default='', max_length=255)),
('let_yeahnotifs', models.BooleanField(default=True)),
('let_freedom', models.BooleanField(default=True)),
('limit_post', models.SmallIntegerField(default=0)),
('cannot_edit', models.BooleanField(default=False)),
('email_login', models.SmallIntegerField(choices=[(0, 'Do not allow'), (1, 'Okay'), (2, 'Only allow')], default=1)),
('adopted', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to=settings.AUTH_USER_MODEL)),
('favorite', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='closedverse_main.post')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='PollVote',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('done', models.DateTimeField(auto_now_add=True)),
('choice', models.SmallIntegerField(default=0)),
('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('poll', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.poll')),
],
),
migrations.CreateModel(
name='Notification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('read', models.BooleanField(default=False)),
('type', models.SmallIntegerField(choices=[(0, 'Yeah on post'), (1, 'Yeah on comment'), (2, 'Comment on my post'), (3, "Comment on others' post"), (4, 'Follow to me')])),
('merges', models.TextField(blank=True, default='')),
('created', models.DateTimeField(auto_now_add=True)),
('latest', models.DateTimeField(auto_now=True)),
('context_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.comment')),
('context_post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post')),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_sender', to=settings.AUTH_USER_MODEL)),
('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_to', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Message',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('feeling', models.SmallIntegerField(choices=[(0, 'normal'), (1, 'happy'), (2, 'wink'), (3, 'surprised'), (4, 'frustrated'), (5, 'confused'), (38, 'japan'), (39, 'lol i lied'), (69, 'adam is gay'), (70, 'I am a faggot!'), (71, 'Juice'), (72, 'Commit Suicide'), (73, 'Fresh!')], default=0)),
('body', models.TextField(null=True)),
('drawing', models.CharField(blank=True, max_length=200, null=True)),
('screenshot', models.CharField(blank=True, default='', max_length=1200, null=True)),
('url', models.URLField(blank=True, default='', max_length=1200, null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('read', models.BooleanField(default=False)),
('is_rm', models.BooleanField(default=False)),
('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.conversation')),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='LoginAttempt',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('success', models.BooleanField(default=False)),
('addr', models.CharField(blank=True, max_length=64, null=True)),
('user_agent', models.TextField(blank=True, null=True)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Friendship',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('latest', models.DateTimeField(auto_now=True)),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='friend_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='friend_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='FriendRequest',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('body', models.TextField(blank=True, default='', null=True)),
('read', models.BooleanField(default=False)),
('finished', models.BooleanField(default=False)),
('created', models.DateTimeField(auto_now_add=True)),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fr_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='fr_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Follow',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='follow_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='follow_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='ConversationInvite',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('body', models.TextField(blank=True, default='', null=True)),
('read', models.BooleanField(default=False)),
('finished', models.BooleanField(default=False)),
('created', models.DateTimeField(auto_now_add=True)),
('conversation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.conversation')),
('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='convinvite_source', to=settings.AUTH_USER_MODEL)),
('target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='convinvite_target', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='Complaint',
fields=[
('unique_id', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('type', models.SmallIntegerField(choices=[(0, 'Bug report'), (1, 'Suggestion'), (2, 'Want')])),
('body', models.TextField(blank=True, default='')),
('sex', models.SmallIntegerField(choices=[(0, 'girl'), (1, 'privileged one'), (2, '(none)')], null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
name='CommunityFavorite',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('community', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community')),
],
),
migrations.CreateModel(
name='CommunityClink',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('kind', models.BooleanField(default=False)),
('also', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='two', to='closedverse_main.community')),
('root', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='one', to='closedverse_main.community')),
],
),
migrations.AddField(
model_name='comment',
name='community',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.community'),
),
migrations.AddField(
model_name='comment',
name='creator',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='comment',
name='original_post',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.post'),
),
migrations.CreateModel(
name='AuditLog',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('type', models.SmallIntegerField(choices=[(0, 'Post delete'), (1, 'Comment delete'), (2, 'User edit'), (3, 'Generate passwd reset'), (4, 'User delete'), (5, 'Image delete'), (6, 'Purge 1'), (7, 'Purge 2'), (8, 'Purge 3'), (9, 'Purge 4'), (10, 'Purge 5'), (11, 'Un-purge 1'), (12, 'Changed server settings')])),
('reasoning', models.TextField(blank=True, default='', null=True)),
('by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='audit_by', to=settings.AUTH_USER_MODEL)),
('comment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_comment', to='closedverse_main.comment')),
('post', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_post', to='closedverse_main.post')),
('reversed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_reverse_by', to=settings.AUTH_USER_MODEL)),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_user', to=settings.AUTH_USER_MODEL)),
],
),
]
@@ -1,24 +0,0 @@
# Generated by Django 3.2.3 on 2023-02-08 00:56
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('closedverse_main', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='MetaViews',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True)),
('from_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='from_user', to=settings.AUTH_USER_MODEL)),
('target_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='target_user', to=settings.AUTH_USER_MODEL)),
],
),
]
+21 -16
View File
@@ -614,7 +614,7 @@ class Community(models.Model):
is_rm = models.BooleanField(default=False)
is_feature = models.BooleanField(default=False)
require_auth = models.BooleanField(default=False)
allowed_users = models.TextField(null=True, blank=True)
rank_needed_to_post = models.IntegerField(default=0)
creator = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE)
objects = PostManager()
@@ -678,14 +678,29 @@ class Community(models.Model):
post.recent_comment = post.recent_comment()
return posts
def post_perm(self, request):
if self.allowed_users:
allows = self.allowed_users.split(',')
if not request.user.is_authenticated or str(request.user.id) not in allows:
return False
if request.user.level >= self.rank_needed_to_post:
return True
elif request.user.staff == True:
return True
# If the community is made by you, you should be able to post in there regardless.
elif request.user == self.creator:
return True
else:
return False
def can_edit_community(self, request):
# yanderedev moment
if not request.user.is_authenticated:
return False
# If the user is a mod but can't post in one community, the user should not edit it either.
if not request.user.level >= self.rank_needed_to_post and not request.user.staff == True:
return False
if request.user == self.creator:
return True
elif request.user.level >= settings.level_needed_to_man_communities or request.user.staff == True:
return True
else:
return False
def has_favorite(self, request):
if request.user.communityfavorite_set.filter(community=self).exists():
return True
@@ -1721,16 +1736,6 @@ class Ads(models.Model):
def __str__(self):
return "Ad with id " + str(self.id) + ", created at " + str(self.created) + ", with url " + str(self.url) + ", and imageurl " + str(self.imageurl)
class Motd(models.Model):
id = models.AutoField(primary_key=True)
order = models.IntegerField(max_length=3, default=1)
show = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
Title = models.CharField(max_length=256, blank=True, default='Title')
message = models.TextField(null=False, blank=False)
hide_date = models.BooleanField(default=False)
image = models.ImageField(upload_to='MOTD/%y/%m/%d/', max_length=255, null=True, blank=True)
class welcomemsg(models.Model):
id = models.AutoField(primary_key=True)
order = models.IntegerField(max_length=3, default=1)
@@ -19,14 +19,15 @@
</div>
{% endif %}
{% if mesoftheday and request.user.is_authenticated %}
<div class="post-list-outline index-memo">
<h2 class="label">MOTD / News</h2>
{% for mesoftheday in mesoftheday %}
{% if mesoftheday.Title %}<h2>{{ mesoftheday.Title }}</h2>{% endif %}
<p>{{ mesoftheday.message|linebreaksbr|urlize }}</p>
{% if mesoftheday.image %}<image src={{ mesoftheday.image.url }}></image>{% endif %}
{% if mesoftheday.hide_date == False %}<p class="memo-date">Posted {{ mesoftheday.created }}</p>{% endif %}
{% if announcements and request.user.is_authenticated %}
<div class="Announcements">
{% for announcements in announcements %}
<div class='Announcement-content'>
{% user_icon_container announcements.creator post.feeling %}
<a class='user-name' href={% url "main:user-view" announcements.creator.username %} {% if announcements.creator.color %}style=color:{{ announcements.creator.color }}{% endif %}>{{ announcements.creator }}</a><a class='timestamp"'> - {{ announcements.created }}</a>
<p>{{ announcements.body|linebreaksbr|urlize }}</p>
{% if announcements.screenshot %}<image class='Announcement-image' src={{ announcements.screenshot }}></image>{% endif %}
</div>
{% endfor %}
</div>
{% endif %}
@@ -1,11 +1,11 @@
{% extends "closedverse_main/layout.html" %}
{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %}{% load closedverse_community %}
{% if community.is_feature %}<div class='notice'>
<p>Who the fuck gave you ownership of a fucking featured community!</p>
{% if not request.user == community.creator %}<div class='notice'>
<p>Mods and staff members can edit communities.</p>
</div>{% endif %}
{% community_sidebar community request %}
<div class="main-column"><div class="post-list-outline">
<h2 class="label">Change settings for {{ community.creator }}'s community</h2>
<h2 class="label">Change settings for {% if community.creator %}{{ community.creator }}'s{% else %}this{% endif %} community</h2>
<form class="setting-form" method="post" action={% url "main:community-tools-set" community.id %}>
<li class="setting-community-name">
<p class="settings-label">Set name:</p>
@@ -37,6 +37,7 @@
<p>&nbsp;</p>
<input type="checkbox" name="force_login" {% if community.require_auth %}checked{% endif %}>Require login:
<p class="note">If this is on, users will need to sign in to view your community.</p>
<p class="note">I plan on removing this feature as it's implemented in an extremely janky way. Or at least improving it, so you are no longer forced to sign in to view yeahs from anyone. The whole idea behind this feature is to prevent web crawling or unauthorized third parties from seeing content without an account.</p>
</li>
<li>
<p class="settings-label">Platform</p>
@@ -61,4 +62,4 @@
<input type="submit" class="black-button apply-button" value="Save">
</div>
</form></div></div>
{% endblock %}
{% endblock %}
@@ -38,9 +38,9 @@
<button type="button" class="symbol button favorite-button{% if community.has_favorite %} checked{% endif %}" data-action-favorite="{% url "main:community-favorite-add" community.id %}" data-action-unfavorite="{% url "main:community-favorite-rm" community.id %}"><span class="favorite-button-text">Favorite</span></button>
<!--<button class="button reload-btn">Refresh posts</button>
-->
{% if request.user == community.creator %}
{% if can_edit %}
<button class="button" data-href="{% url "main:community-tools" community.id %}">Community Settings</button>
{% endif %}
{% endif %}
</section>
</div>
</div>
@@ -5,6 +5,7 @@ register = template.Library()
def community_sidebar(community, request):
return {
'community': community,
'can_edit': community.can_edit_community(request),
'request': request,
}
@register.inclusion_tag('closedverse_main/elements/community_post.html')
@@ -15,7 +16,7 @@ def community_post(post, type=0):
}
@register.inclusion_tag('closedverse_main/elements/post-list.html')
def post_list(posts, next_offset=None, type=0, nf_text=''):
def post_list(posts, next_offset=None, type=0, nf_text='', time=None):
text = {
0: "This community doesn't have any posts yet.",
}.get(type, nf_text)
@@ -23,6 +24,7 @@ def post_list(posts, next_offset=None, type=0, nf_text=''):
'posts': posts,
'nf': text,
'next': next_offset,
'time': time,
}
@register.inclusion_tag('closedverse_main/elements/post-form.html')
def post_form(user, community):
@@ -67,4 +69,4 @@ def community_page_element(communities, text='General Communities', feature=Fals
'communities': communities,
'title': text,
'feature': feature,
}
}
+7 -5
View File
@@ -69,12 +69,12 @@ def community_list(request):
ad = "no ads"
WelcomeMSG = welcomemsg.objects.filter(show=True).order_by('-order', '-id')
mesoftheday = Motd.objects.filter(show=True).order_by('-order', '-id')
announcements = Post.objects.filter(community__tags='announcements').order_by('-id')[:6]
return render(request, 'closedverse_main/community_list.html', {
'title': 'Communities',
'ad': ad,
'mesoftheday': mesoftheday,
'announcements': announcements,
'WelcomeMSG': WelcomeMSG,
'availableads': availableads,
'classes': classes,
@@ -821,6 +821,7 @@ def community_view(request, community):
"""View an individual community"""
communities = get_object_or_404(Community, id=community)
communities.setup(request)
can_edit = communities.can_edit_community(request)
if not communities.clickable():
return HttpResponseForbidden()
if not request.user.is_authenticated and communities.require_auth:
@@ -836,7 +837,6 @@ def community_view(request, community):
next_offset = 50
else:
next_offset = None
if request.META.get('HTTP_X_AUTOPAGERIZE'):
return render(request, 'closedverse_main/elements/post-list.html', {
'posts': posts,
@@ -875,7 +875,8 @@ def community_tools(request, community):
the_community = get_object_or_404(Community, id=community)
if not request.user.is_authenticated:
raise Http404()
if request.user != the_community.creator:
can_edit = the_community.can_edit_community(request)
if not can_edit:
raise Http404()
return render(request, 'closedverse_main/community_tools.html', {
'title': 'Community tools',
@@ -890,7 +891,8 @@ def community_tools_set(request, community):
#do the checks
if not request.user.is_authenticated:
return HttpResponseForbidden()
if request.user != the_community.creator:
can_edit = the_community.can_edit_community(request)
if not can_edit:
return HttpResponseForbidden()
if len(request.POST.get('community_name')) == 0 or len(request.POST.get('community_name')) >= 100:
return json_response('bad name')