tildetown-admin/ttadmin/users/models.py

40 lines
1.2 KiB
Python

from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User
from django.db.models import TextField, BooleanField
class Townie(User):
"""Both an almost normal Django User as well as an abstraction over a
system user."""
pubkey = TextField(blank=False, null=False)
shell = TextField(max_length=50, default="/bin/bash")
pending = BooleanField(default=True)
@property
def home_path(self):
return "/home/{}".format(self.username)
def accept(self):
"""Sets self.pending to False. Indicates the user has been signed up
after review."""
self.pending = False
def ensure_shell(self):
"""Runs chsh for the user to set their shell to whatever self.shell
is."""
raise NotImplementedError()
def __init__(self):
self.set_unusable_password()
super().__init__(self)
@receiver(post_save, sender=Townie)
def sync_system_state(sender, instance, created, **kwargs):
if created:
print('TODO would create new user on system')
else:
print('TODO would update existing user on system')
return