1
0
Fork 0

Unify concept of absolute_id and remote_id

This commit is contained in:
Mouse Reeve 2020-05-12 18:56:28 -07:00
parent 93493fc8e4
commit e76f96eb6c
33 changed files with 263 additions and 236 deletions

View file

@ -1,5 +1,6 @@
''' base model with default fields '''
from django.db import models
from django.dispatch import receiver
from fedireads.settings import DOMAIN
@ -7,18 +8,24 @@ class FedireadsModel(models.Model):
''' fields and functions for every model '''
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
remote_id = models.CharField(max_length=255, null=True)
@property
def absolute_id(self):
''' constructs the absolute reference to any db object '''
if hasattr(self, 'remote_id') and self.remote_id:
return self.remote_id
def get_remote_id(self):
''' generate a url that resolves to the local object '''
base_path = 'https://%s' % DOMAIN
if hasattr(self, 'user'):
base_path = self.user.absolute_id
base_path = self.user.remote_id
model_name = type(self).__name__.lower()
return '%s/%s/%d' % (base_path, model_name, self.id)
class Meta:
abstract = True
@receiver(models.signals.post_save, sender=FedireadsModel)
def execute_after_save(sender, instance, created, *args, **kwargs):
''' set the remote_id after save (when the id is available) '''
if not created:
return
instance.remote_id = instance.get_remote_id()
instance.save()