Unify concept of absolute_id and remote_id
This commit is contained in:
parent
93493fc8e4
commit
e76f96eb6c
33 changed files with 263 additions and 236 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue