server icon

This commit is contained in:
Corban-Lee Jones 2024-03-31 20:19:58 +01:00
parent 1ce3dda0ba
commit 5b2da20947
12 changed files with 50 additions and 133 deletions

View File

@ -147,4 +147,4 @@ class UserServerLinkSerializer(DynamicModelSerializer):
class Meta:
model = UserServerLink
fields = ("id", "server_id", "user", "name", "permissions")
fields = ("id", "server_id", "user", "name", "icon", "icon_url", "permissions")

View File

@ -14,4 +14,4 @@ class DiscordUserAdmin(admin.ModelAdmin):
@admin.register(UserServerLink)
class UserServerLink(admin.ModelAdmin):
list_display = ["id", "user", "name", "permissions"]
list_display = ["id", "user", "name", "permissions", "icon"]

View File

@ -1,7 +1,8 @@
# Generated by Django 5.0.1 on 2024-03-11 17:38
# Generated by Django 5.0.1 on 2024-03-27 11:13
import apps.authentication.managers
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
@ -30,8 +31,16 @@ class Migration(migrations.Migration):
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_superuser', models.BooleanField(default=False, help_text='Designates whether the user has unrestricted site control.', verbose_name='superuser status')),
],
managers=[
('objects', apps.authentication.managers.DiscordUserOAuth2Manager()),
),
migrations.CreateModel(
name='UserServerLink',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('server_id', models.PositiveBigIntegerField()),
('name', models.CharField(max_length=64)),
('permissions', models.IntegerField()),
('icon', models.CharField(help_text="the guild's icon hash", max_length=64, verbose_name='icon')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-13 13:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('authentication', '0001_initial'),
]
operations = [
migrations.AlterModelManagers(
name='discorduser',
managers=[
],
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 5.0.1 on 2024-03-27 11:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authentication', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='userserverlink',
name='icon',
field=models.CharField(blank=True, help_text="the guild's icon hash", max_length=64, null=True, verbose_name='icon'),
),
]

View File

@ -1,24 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-17 22:51
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authentication', '0002_alter_discorduser_managers'),
]
operations = [
migrations.CreateModel(
name='UserServerLink',
fields=[
('id', models.PositiveBigIntegerField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=64)),
('perm_flags', models.IntegerField()),
('user_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-17 23:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authentication', '0003_userserverlink'),
]
operations = [
migrations.AlterField(
model_name='userserverlink',
name='perm_flags',
field=models.IntegerField(blank=True, null=True),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-20 10:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('authentication', '0004_alter_userserverlink_perm_flags'),
]
operations = [
migrations.RenameField(
model_name='userserverlink',
old_name='perm_flags',
new_name='permissions',
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-20 10:37
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('authentication', '0005_rename_perm_flags_userserverlink_permissions'),
]
operations = [
migrations.RenameField(
model_name='userserverlink',
old_name='user_id',
new_name='user',
),
]

View File

@ -1,30 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-20 11:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('authentication', '0006_rename_user_id_userserverlink_user'),
]
operations = [
migrations.AddField(
model_name='userserverlink',
name='server_id',
field=models.PositiveBigIntegerField(default=1),
preserve_default=False,
),
migrations.AlterField(
model_name='userserverlink',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
migrations.AlterField(
model_name='userserverlink',
name='permissions',
field=models.IntegerField(default=1),
preserve_default=False,
),
]

View File

@ -135,10 +135,25 @@ class UserServerLink(models.Model):
user = models.ForeignKey(to=DiscordUser, on_delete=models.CASCADE)
name = models.CharField(max_length=64)
permissions = models.IntegerField()
icon = models.CharField(
_("icon"),
max_length=64,
help_text=_("the guild's icon hash"),
null=True,
blank=True
)
def __str__(self):
return self.name
@property
def icon_url(self):
if not self.icon: # TODO: review this
return "/static/images/placeholder-100x100.png"
return f"https://cdn.discordapp.com/icons/{self.server_id}/{self.icon}.webp?size=80"
# @property
# def is_admin(self):
# return self.perm_flags & 0x0000000000000008

View File

@ -117,7 +117,8 @@ class GuildsView(View):
server_id=server["id"],
user=user,
name=server["name"],
permissions=server["permissions"]
permissions=server["permissions"],
icon=server["icon"]
)
for server in content
]