mirror of
https://github.com/Mistake35/Cedar-Django.git
synced 2026-07-18 00:21:14 +10:00
stuff
- Fixed community edit audit logs being created even if the user owns the community. - Simple ban page that shows you the reason, expiration date, and time left. - Removing unused models - other small changes
This commit is contained in:
@@ -139,7 +139,7 @@ class CommentAdmin(admin.ModelAdmin):
|
|||||||
class CommunityAdmin(admin.ModelAdmin):
|
class CommunityAdmin(admin.ModelAdmin):
|
||||||
raw_id_fields = ('creator', )
|
raw_id_fields = ('creator', )
|
||||||
list_display = ('id', 'name', 'description', 'type', 'creator', 'popularity', 'is_rm', 'is_feature', 'require_auth')
|
list_display = ('id', 'name', 'description', 'type', 'creator', 'popularity', 'is_rm', 'is_feature', 'require_auth')
|
||||||
search_fields = ('id', 'name', 'description', )
|
search_fields = ('id', 'name', 'description', 'creator')
|
||||||
actions = [Hide_content, Show_content, Feature_community, Unfeature_community, force_login, unforce_login]
|
actions = [Hide_content, Show_content, Feature_community, Unfeature_community, force_login, unforce_login]
|
||||||
list_filter = ('type', 'is_rm', 'is_feature', 'require_auth')
|
list_filter = ('type', 'is_rm', 'is_feature', 'require_auth')
|
||||||
def get_queryset(self, request):
|
def get_queryset(self, request):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from django.http import HttpResponseForbidden
|
from django.http import HttpResponseForbidden
|
||||||
from closedverse import settings
|
from closedverse import settings
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect, render
|
||||||
from .models import Ban
|
from .models import Ban
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from re import compile
|
from re import compile
|
||||||
@@ -52,19 +52,19 @@ class CheckForBanMiddleware:
|
|||||||
active_user_ban = Ban.objects.filter(
|
active_user_ban = Ban.objects.filter(
|
||||||
to=request.user,
|
to=request.user,
|
||||||
active=True,
|
active=True,
|
||||||
expiry_date__gte=timezone.now()
|
expiry_date__gte=timezone.now()).first()
|
||||||
).first()
|
|
||||||
if active_user_ban:
|
if active_user_ban:
|
||||||
return HttpResponseForbidden('You are banned from this site. Reason: ' + active_user_ban.reason)
|
context = {'ban': active_user_ban}
|
||||||
|
return render(request, 'ban.html', context)
|
||||||
# Get one active ban that is not expired for the IP address
|
# Get one active ban that is not expired for the IP address
|
||||||
ip_address = request.META.get('REMOTE_ADDR')
|
ip_address = request.META.get('REMOTE_ADDR')
|
||||||
active_ip_ban = Ban.objects.filter(
|
active_ip_ban = Ban.objects.filter(
|
||||||
ip_address=ip_address,
|
ip_address=ip_address,
|
||||||
active=True,
|
active=True,
|
||||||
expiry_date__gte=timezone.now(),
|
expiry_date__gte=timezone.now(),).first()
|
||||||
).first()
|
|
||||||
if active_ip_ban:
|
if active_ip_ban:
|
||||||
return HttpResponseForbidden('Your IP address is banned from this site. Reason: ' + active_ip_ban.reason)
|
context = {'ban': active_ip_ban}
|
||||||
|
return render(request, 'ban.html', context)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
class ClosedMiddleware(object):
|
class ClosedMiddleware(object):
|
||||||
|
|||||||
@@ -0,0 +1,428 @@
|
|||||||
|
# Generated by Django 3.2.2 on 2023-09-16 19:39
|
||||||
|
|
||||||
|
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 = [
|
||||||
|
('auth', '0012_alter_user_first_name_max_length'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='User',
|
||||||
|
fields=[
|
||||||
|
('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, help_text="Don't touch this. This is if the user's avatar is set to a Mii.")),
|
||||||
|
('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, help_text='This is the level of authority. People with a lower level cannot edit those with a higher level. This also grants additional permissions outside of the Django Admin Panel.')),
|
||||||
|
('addr', models.CharField(blank=True, max_length=64, null=True)),
|
||||||
|
('signup_addr', models.CharField(blank=True, max_length=64, null=True)),
|
||||||
|
('c_tokens', models.IntegerField(default=1, help_text='How many communities should this user be allowed to make?')),
|
||||||
|
('hide_online', models.BooleanField(default=False, help_text='If this is ticked, the user has opted to hide their online status.')),
|
||||||
|
('color', closedverse_main.models.ColorField(blank=True, default='', max_length=18, null=True)),
|
||||||
|
('is_staff', models.BooleanField(default=False, help_text="Allow this user to access the admin panel you're using right now?")),
|
||||||
|
('is_active', models.BooleanField(default=True, help_text="If this is off, the user is basically banned and can't do shit here")),
|
||||||
|
('is_superuser', models.BooleanField(default=False, help_text="Overrides django groups. This also allows you to change people's perms.")),
|
||||||
|
('can_invite', models.BooleanField(default=True, help_text='Can this user invite new users? This does not matter unless the invite system is turned on.')),
|
||||||
|
('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)),
|
||||||
|
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'permissions': [('Can_alter_level_and_Perms', 'Allow this user to change Level, Groups and Permissions?')],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
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/')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name_plural': 'ads',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Comment',
|
||||||
|
fields=[
|
||||||
|
('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, help_text='Tick this to hide this comment')),
|
||||||
|
('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, help_text='Used to distinguish how a comment was removed. Our purging feature uses this to determine what comments to restore and what not to.')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Community',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('name', models.CharField(max_length=255)),
|
||||||
|
('description', models.TextField(blank=True)),
|
||||||
|
('ico', models.ImageField(blank=True, null=True, upload_to='')),
|
||||||
|
('banner', models.ImageField(blank=True, null=True, upload_to='')),
|
||||||
|
('type', models.SmallIntegerField(choices=[(0, 'General'), (1, 'Game'), (2, 'Special'), (3, 'User Community'), (4, 'Hide')], default=0, help_text='The category the community belongs in, setting this to None will remove the community.')),
|
||||||
|
('platform', models.SmallIntegerField(choices=[(0, 'None'), (1, '3DS'), (2, 'Wii U'), (3, 'Switch'), (4, '3DS and Wii U'), (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')], help_text='Provides special functionality for specific communities.', max_length=255, null=True)),
|
||||||
|
('created', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('updated', models.DateTimeField(auto_now=True)),
|
||||||
|
('is_rm', models.BooleanField(default=False, help_text='Tick this on to remove the community.')),
|
||||||
|
('is_feature', models.BooleanField(default=False, help_text='Feature this community on the front page where everyone can see it.')),
|
||||||
|
('require_auth', models.BooleanField(default=False, help_text='Force your users to sign in to view this community.')),
|
||||||
|
('rank_needed_to_post', models.IntegerField(default=0, help_text='Make admin only communities.')),
|
||||||
|
('creator', models.ForeignKey(blank=True, help_text="Who owns this community? It's highly recommended to not fill this on for general communities. Keep in mind that owners can block others from using communities they own.", null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name_plural': 'communities',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Conversation',
|
||||||
|
fields=[
|
||||||
|
('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='Poll',
|
||||||
|
fields=[
|
||||||
|
('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=[
|
||||||
|
('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)),
|
||||||
|
('video', models.CharField(blank=True, default='', max_length=256, null=True)),
|
||||||
|
('url', models.URLField(blank=True, default='', max_length=1200, null=True)),
|
||||||
|
('spoils', models.BooleanField(default=False)),
|
||||||
|
('disable_yeah', models.BooleanField(default=False)),
|
||||||
|
('lock_comments', models.SmallIntegerField(choices=[(0, 'Not locked'), (1, 'Locked by user'), (2, 'Locked by mod')], default=0, help_text='People will not be able to comment on posts that are locked.')),
|
||||||
|
('created', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('edited', models.DateTimeField(auto_now=True)),
|
||||||
|
('befores', models.TextField(blank=True, help_text='If this post gets edited, the old body will be here.', null=True)),
|
||||||
|
('has_edit', models.BooleanField(default=False)),
|
||||||
|
('is_rm', models.BooleanField(default=False, help_text='Tick this to hide this post')),
|
||||||
|
('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, help_text='Used to distinguish how a post was removed. Our purging feature uses this to determine what posts to restore and what not to.')),
|
||||||
|
('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, help_text='A busted ass poll feature that does not work.', null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.poll')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Role',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('is_static', models.BooleanField(default=False)),
|
||||||
|
('image', models.ImageField(help_text="Upload an icon that will show on the top left of one's profile. A 22x22 image works best!", upload_to='roles/')),
|
||||||
|
('organization', models.CharField(blank=True, help_text="Text that shows above one's username", max_length=255, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
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)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
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='Warning',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('created', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('reason', models.TextField(blank=True, null=True)),
|
||||||
|
('by', models.ForeignKey(help_text='This is not shown to the recipient', on_delete=django.db.models.deletion.CASCADE, related_name='Warned_by', to=settings.AUTH_USER_MODEL)),
|
||||||
|
('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='Warned_user', to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='UserBlock',
|
||||||
|
fields=[
|
||||||
|
('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='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='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, null=True)),
|
||||||
|
('new_nickname', models.CharField(blank=True, max_length=64, null=True)),
|
||||||
|
('old_comment', models.TextField(blank=True, null=True)),
|
||||||
|
('new_comment', models.TextField(blank=True)),
|
||||||
|
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name_plural': 'profile histories',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Profile',
|
||||||
|
fields=[
|
||||||
|
('is_new', models.BooleanField(default=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, 'Not specified'), (1, 'He/him'), (2, 'She/her'), (3, 'He/she'), (4, 'It'), (5, 'They/Them')], default=0, help_text='haha attack helicopter.')),
|
||||||
|
('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, help_text='Restrict this user from posting images, videos, URLs, and even making new accounts.')),
|
||||||
|
('limit_post', models.SmallIntegerField(default=0, help_text='Great for spammers, set to "0" to remove the restriction.')),
|
||||||
|
('cannot_edit', models.BooleanField(default=False, help_text='Make it so this user cannot change settings.')),
|
||||||
|
('email_login', models.SmallIntegerField(choices=[(0, 'Do not allow'), (1, 'Okay'), (2, 'Only allow')], default=1)),
|
||||||
|
('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'), (5, 'Warning received')])),
|
||||||
|
('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')),
|
||||||
|
('context_warning', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='closedverse_main.warning')),
|
||||||
|
('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='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)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Message',
|
||||||
|
fields=[
|
||||||
|
('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='Invites',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('created', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('code', models.CharField(default=uuid.uuid4, max_length=36)),
|
||||||
|
('used', models.BooleanField(default=False)),
|
||||||
|
('void', models.BooleanField(default=False)),
|
||||||
|
('creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invite_creator', to=settings.AUTH_USER_MODEL)),
|
||||||
|
('used_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invited_user', to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Friendship',
|
||||||
|
fields=[
|
||||||
|
('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=[
|
||||||
|
('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=[
|
||||||
|
('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=[
|
||||||
|
('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.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='Ban',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('created', models.DateTimeField(auto_now_add=True)),
|
||||||
|
('reason', models.TextField(blank=True, null=True)),
|
||||||
|
('expiry_date', models.DateTimeField(help_text='The date and time on which this ban will expire, Set this way off into the future if this ban should be permanent')),
|
||||||
|
('active', models.BooleanField(default=True, help_text='Untick this to disable this ban')),
|
||||||
|
('ip_address', models.CharField(blank=True, help_text='Put an IP address in here to make this an IP ban. When using the ban function outside of the Django admin panel, this is filled in automatically.', max_length=256, null=True)),
|
||||||
|
('by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='banned_by', to=settings.AUTH_USER_MODEL)),
|
||||||
|
('to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='banned_user', to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
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, 'Disable comments'), (4, 'Community edit'), (5, 'Ban user'), (6, 'Edit ban for user')])),
|
||||||
|
('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')),
|
||||||
|
('community', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='audit_community', to='closedverse_main.community')),
|
||||||
|
('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)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='user',
|
||||||
|
name='role',
|
||||||
|
field=models.ForeignKey(blank=True, help_text="This will show a funny badge and text on this user's profile. This does not grant the user any additional power and is only visual.", null=True, on_delete=django.db.models.deletion.SET_NULL, to='closedverse_main.role'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='user',
|
||||||
|
name='user_permissions',
|
||||||
|
field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'),
|
||||||
|
),
|
||||||
|
]
|
||||||
+20
-34
@@ -750,27 +750,31 @@ class Community(models.Model):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def post_perm(self, request):
|
def post_perm(self, request):
|
||||||
|
if not request.user.is_authenticated:
|
||||||
|
return False
|
||||||
|
if request.user.has_perm('closedverse_main.change_community') or request.user.has_perm('closedverse_main.add_post'):
|
||||||
|
# if you have editing or post perms in /admin, you can override shit.
|
||||||
|
# oh god this will become a clusterfuck of logic...
|
||||||
|
return True
|
||||||
if self.Community_block(request):
|
if self.Community_block(request):
|
||||||
return False
|
return False
|
||||||
if request.user.level >= self.rank_needed_to_post:
|
if request.user.level >= self.rank_needed_to_post:
|
||||||
return True
|
return True
|
||||||
elif request.user.is_staff == True:
|
return False
|
||||||
|
def can_edit_community(self, user):
|
||||||
|
# i hate how I have to include this shit
|
||||||
|
if not user.is_authenticated:
|
||||||
|
return False
|
||||||
|
if user.has_perm('closedverse_main.change_community'):
|
||||||
|
# if you have editing perms, you can edit whatever community you want.
|
||||||
|
return True
|
||||||
|
if not user.level >= self.rank_needed_to_post:
|
||||||
|
return False
|
||||||
|
if user == self.creator:
|
||||||
|
return True
|
||||||
|
if user.level >= settings.level_needed_to_man_communities and self.creator:
|
||||||
return True
|
return True
|
||||||
return False
|
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.is_staff == True:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if request.user == self.creator:
|
|
||||||
return True
|
|
||||||
elif request.user.level >= settings.level_needed_to_man_communities or request.user.is_staff == True:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
def has_favorite(self, request):
|
def has_favorite(self, request):
|
||||||
if request.user.communityfavorite_set.filter(community=self).exists():
|
if request.user.communityfavorite_set.filter(community=self).exists():
|
||||||
return True
|
return True
|
||||||
@@ -1681,19 +1685,6 @@ class Message(models.Model):
|
|||||||
raise ValueError
|
raise ValueError
|
||||||
return json.dumps(ls)
|
return json.dumps(ls)
|
||||||
|
|
||||||
class ConversationInvite(models.Model):
|
|
||||||
id = models.AutoField(primary_key=True)
|
|
||||||
conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)
|
|
||||||
source = models.ForeignKey(User, related_name='convinvite_source', on_delete=models.CASCADE)
|
|
||||||
target = models.ForeignKey(User, related_name='convinvite_target', on_delete=models.CASCADE)
|
|
||||||
body = models.TextField(blank=True, null=True, default='')
|
|
||||||
read = models.BooleanField(default=False)
|
|
||||||
finished = models.BooleanField(default=False)
|
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return "Invite to conversation " + str(self.conversation) + " from " + str(self.source) + " to " + str(self.target)
|
|
||||||
|
|
||||||
class Poll(models.Model):
|
class Poll(models.Model):
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.AutoField(primary_key=True)
|
||||||
able_vote = models.BooleanField(default=True)
|
able_vote = models.BooleanField(default=True)
|
||||||
@@ -1815,12 +1806,6 @@ class AuditLog(models.Model):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
class UserRequest(User):
|
|
||||||
# USER AGENT
|
|
||||||
ua = models.TextField(default='', null=True, blank=True)
|
|
||||||
latest = models.DateTimeField(auto_now=True)
|
|
||||||
status = models.SmallIntegerField(default=0, choices=((0, 'submitted'), (1, 'viewed'), (2, 'accepted'), (3, 'decline'), (4, 'ignore'), ))
|
|
||||||
|
|
||||||
class Ads(models.Model):
|
class Ads(models.Model):
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.AutoField(primary_key=True)
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
@@ -1847,6 +1832,7 @@ class Ads(models.Model):
|
|||||||
return "Ad with id " + str(self.id) + ", created at " + str(self.created) + ", with url " + str(self.url) + ", and imageurl " + str(self.imageurl)
|
return "Ad with id " + str(self.id) + ", created at " + str(self.created) + ", with url " + str(self.url) + ", and imageurl " + str(self.imageurl)
|
||||||
|
|
||||||
# thing will log changes to your bio or nickname
|
# thing will log changes to your bio or nickname
|
||||||
|
# i should get rid of this, its worthless.
|
||||||
class ProfileHistory(models.Model):
|
class ProfileHistory(models.Model):
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.AutoField(primary_key=True)
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>You are banned</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>You are banned from {{ brand_name }}.</h1>
|
||||||
|
{% if ban.reason %}<p>Reason: {{ ban.reason }}</p>{% endif %}
|
||||||
|
<p>Your ban will expire on {{ ban.expiry_date }}</p>
|
||||||
|
<p>{{ ban.expiry_date|timeuntil }} remaining.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,8 +1,5 @@
|
|||||||
{% extends "closedverse_main/layout.html" %}
|
{% extends "closedverse_main/layout.html" %}
|
||||||
{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %}{% load closedverse_community %}
|
{% block main-body %}{% load closedverse_user %}{% load closedverse_tags %}{% load closedverse_community %}
|
||||||
{% if not request.user == community.creator %}<div class='notice'>
|
|
||||||
<p>Mods and staff members can edit communities.</p>
|
|
||||||
</div>{% endif %}
|
|
||||||
{% community_sidebar community request %}
|
{% community_sidebar community request %}
|
||||||
<div class="main-column"><div class="post-list-outline">
|
<div class="main-column"><div class="post-list-outline">
|
||||||
<h2 class="label">Change settings for {% if community.creator %}{{ community.creator }}'s{% else %}this{% endif %} community</h2>
|
<h2 class="label">Change settings for {% if community.creator %}{{ community.creator }}'s{% else %}this{% endif %} community</h2>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ register = template.Library()
|
|||||||
def community_sidebar(community, request):
|
def community_sidebar(community, request):
|
||||||
return {
|
return {
|
||||||
'community': community,
|
'community': community,
|
||||||
'can_edit': community.can_edit_community(request),
|
'can_edit': community.can_edit_community(request.user),
|
||||||
'Community_block': community.Community_block(request),
|
'Community_block': community.Community_block(request),
|
||||||
'request': request,
|
'request': request,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,11 +54,7 @@ def community_list(request):
|
|||||||
"""Lists communities / main page."""
|
"""Lists communities / main page."""
|
||||||
#popularity = Community.popularity
|
#popularity = Community.popularity
|
||||||
obj = Community.objects
|
obj = Community.objects
|
||||||
# if there are no featured communities, sort by popularity instead.
|
feature = obj.filter(is_feature=True).order_by('-created')
|
||||||
if not obj.filter(is_feature=True).exists():
|
|
||||||
feature = sorted(obj.filter().exclude(type=4), key=lambda x: x.popularity(), reverse=True)[0:4]
|
|
||||||
else:
|
|
||||||
feature = obj.filter(is_feature=True).order_by('-created')
|
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
# If no profile exists for request.user, make one automatically.
|
# If no profile exists for request.user, make one automatically.
|
||||||
profile_exists = Profile.objects.filter(user=request.user).exists()
|
profile_exists = Profile.objects.filter(user=request.user).exists()
|
||||||
@@ -123,7 +119,7 @@ def community_all(request, category):
|
|||||||
category_type = category_enum[0]
|
category_type = category_enum[0]
|
||||||
communities = Community.get_all(category_type, offset)
|
communities = Community.get_all(category_type, offset)
|
||||||
# Closedverse was NEVER meant to have 20000000 communities.
|
# Closedverse was NEVER meant to have 20000000 communities.
|
||||||
if communities.count() > 11:
|
if communities.count() > 12:
|
||||||
has_next = True
|
has_next = True
|
||||||
else:
|
else:
|
||||||
has_next = False
|
has_next = False
|
||||||
@@ -438,7 +434,7 @@ def user_view(request, username):
|
|||||||
nickname_old = user.nickname
|
nickname_old = user.nickname
|
||||||
if profile.cannot_edit:
|
if profile.cannot_edit:
|
||||||
return json_response("Not allowed.")
|
return json_response("Not allowed.")
|
||||||
if len(request.POST.get('screen_name')) is 0 or len(request.POST['screen_name']) > 32:
|
if len(request.POST.get('screen_name')) == 0 or len(request.POST['screen_name']) > 32:
|
||||||
return json_response('Nickname is too long or too short (length '+str(len(request.POST.get('screen_name')))+', max 32)')
|
return json_response('Nickname is too long or too short (length '+str(len(request.POST.get('screen_name')))+', max 32)')
|
||||||
if len(request.POST.get('profile_comment')) > 2200:
|
if len(request.POST.get('profile_comment')) > 2200:
|
||||||
return json_response('Profile comment is too long (length '+str(len(request.POST.get('profile_comment')))+', max 2200)')
|
return json_response('Profile comment is too long (length '+str(len(request.POST.get('profile_comment')))+', max 2200)')
|
||||||
@@ -936,7 +932,6 @@ def community_view(request, community):
|
|||||||
"""View an individual community"""
|
"""View an individual community"""
|
||||||
communities = get_object_or_404(Community, id=community)
|
communities = get_object_or_404(Community, id=community)
|
||||||
communities.setup(request)
|
communities.setup(request)
|
||||||
can_edit = communities.can_edit_community(request)
|
|
||||||
if not communities.clickable():
|
if not communities.clickable():
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
if not request.user.is_authenticated and communities.require_auth:
|
if not request.user.is_authenticated and communities.require_auth:
|
||||||
@@ -989,10 +984,9 @@ def community_favorite_rm(request, community):
|
|||||||
|
|
||||||
def community_tools(request, community):
|
def community_tools(request, community):
|
||||||
the_community = get_object_or_404(Community, id=community)
|
the_community = get_object_or_404(Community, id=community)
|
||||||
activity_feed = True if the_community.type == 4 else False
|
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
raise Http404()
|
raise Http404()
|
||||||
can_edit = the_community.can_edit_community(request)
|
can_edit = the_community.can_edit_community(request.user)
|
||||||
if not can_edit:
|
if not can_edit:
|
||||||
raise Http404()
|
raise Http404()
|
||||||
form = CommunitySettingForm(instance=the_community)
|
form = CommunitySettingForm(instance=the_community)
|
||||||
@@ -1000,7 +994,6 @@ def community_tools(request, community):
|
|||||||
'title': 'Community tools',
|
'title': 'Community tools',
|
||||||
'form': form,
|
'form': form,
|
||||||
'community': the_community,
|
'community': the_community,
|
||||||
'activity_feed': activity_feed,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
def community_tools_set(request, community):
|
def community_tools_set(request, community):
|
||||||
@@ -1008,14 +1001,15 @@ def community_tools_set(request, community):
|
|||||||
the_community = get_object_or_404(Community, id=community)
|
the_community = get_object_or_404(Community, id=community)
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
can_edit = the_community.can_edit_community(request)
|
can_edit = the_community.can_edit_community(request.user)
|
||||||
if not can_edit:
|
if not can_edit:
|
||||||
return HttpResponseForbidden()
|
return HttpResponseForbidden()
|
||||||
form = CommunitySettingForm(request.POST, request.FILES, instance=the_community)
|
form = CommunitySettingForm(request.POST, request.FILES, instance=the_community)
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return json_response(form.errors.as_text())
|
return json_response(form.errors.as_text())
|
||||||
form.save()
|
form.save()
|
||||||
AuditLog.objects.create(type=4, community=the_community, user=the_community.creator, by=request.user)
|
if not request.user == the_community.creator:
|
||||||
|
AuditLog.objects.create(type=4, community=the_community, user=the_community.creator, by=request.user)
|
||||||
return redirect(reverse('main:community-view', args=[the_community.id]))
|
return redirect(reverse('main:community-view', args=[the_community.id]))
|
||||||
else:
|
else:
|
||||||
raise Http404()
|
raise Http404()
|
||||||
|
|||||||
Reference in New Issue
Block a user