Skip to content
Snippets Groups Projects
Commit 7753f719 authored by Calum Mackervoy's avatar Calum Mackervoy
Browse files

allow_add_backlinks on model prevent superfluous backlinks

parent 2f5c7fdd
No related branches found
Tags v0.6.25
No related merge requests found
......@@ -21,6 +21,9 @@ class ActivityPubService(object):
model = type(instance)
info = model_meta.get_field_info(model)
if not hasattr(instance, 'urlid'):
return
obj = {
"@type": Model.get_model_rdf_type(model),
"@id": instance.urlid
......@@ -88,10 +91,8 @@ class ActivityPubService(object):
inbox = target['@id'] + "inbox/"
# send request
print('starting thread..')
t = threading.Thread(target=cls.do_post, args=[inbox, activity])
t.start()
print('not in thread')
print()
print()
......@@ -106,7 +107,7 @@ class ActivityPubService(object):
@receiver([post_save])
def check_object_for_backlinks(sender, instance, **kwargs):
if kwargs['created'] is True:
if kwargs['created'] is True and getattr(instance, 'allow_create_backlink', False):
print('-save_listener-')
print(str(sender))
info = model_meta.get_field_info(sender)
......@@ -161,7 +162,7 @@ def check_m2m_for_backlinks(sender, instance, action, *args, **kwargs):
query_set = member_model.objects.filter(pk__in=pk_set)
targets = []
for obj in query_set:
if Model.is_external(obj):
if Model.is_external(obj) and getattr(instance, 'allow_create_backlink', False):
targets.append({
"@type": member_rdf_type,
"@id": obj.urlid
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2020-04-29 13:46
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('djangoldp', '0006_activity'),
]
operations = [
migrations.AddField(
model_name='activity',
name='allow_create_backlink',
field=models.BooleanField(default=True, help_text='set to False to disable backlink creation after Model save'),
),
migrations.AddField(
model_name='ldpsource',
name='allow_create_backlink',
field=models.BooleanField(default=True, help_text='set to False to disable backlink creation after Model save'),
),
]
......@@ -25,6 +25,8 @@ class LDPModelManager(models.Manager):
class Model(models.Model):
urlid = LDPUrlField(blank=True, null=True, unique=True)
allow_create_backlink = models.BooleanField(default=True,
help_text='set to False to disable backlink creation after Model save')
objects = LDPModelManager()
def __init__(self, *args, **kwargs):
......@@ -146,12 +148,11 @@ class Model(models.Model):
@classonlymethod
def get_or_create(cls, model, urlid, **field_tuples):
try:
print('get_or_create ' + str(model) + ' backlink ' + str(urlid))
return model.objects.get(urlid=urlid)
except model.DoesNotExist:
backlink = model(urlid=urlid, **field_tuples)
backlink._backlink_created = True
backlink.save()
return backlink
print('creating..')
return model.objects.create(urlid=urlid, allow_create_backlink=False, **field_tuples)
@classonlymethod
def get_model_rdf_type(cls, model):
......
......@@ -6,7 +6,7 @@ from django.conf.urls import url, include
from django.contrib.auth import get_user_model
from django.core.exceptions import FieldDoesNotExist
from django.core.urlresolvers import get_resolver
from django.http import JsonResponse, HttpResponseNotAllowed, HttpRequest, Http404
from django.http import JsonResponse, Http404
from django.shortcuts import get_object_or_404
from django.utils.decorators import classonlymethod
from django.views import View
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment