Thing.create() takes params as params rather than as a dict, like its Django core counterparts.

2019-08-17
Marnanel Thurman 2019-05-29 11:34:43 +01:00
rodzic 243e1d9ca0
commit 1a9e124e57
4 zmienionych plików z 26 dodań i 28 usunięć

Wyświetl plik

@ -180,12 +180,11 @@ class Thing(models.Model):
# XXX this causes a warning; add param to disable it
)
accept_the_request = create({
'to': [self['actor']],
'type': 'Accept',
'actor': self['object'],
'object': self.url,
},
accept_the_request = create(
f_to = [self['actor']],
f_type = 'Accept',
f_actor = self['object'],
f_object = self.url,
run_side_effects = False,
)
@ -228,13 +227,21 @@ class Thing(models.Model):
}
@classmethod
def create(cls, value,
def create(cls,
sender=None,
run_side_effects=True):
run_side_effects=True,
**value):
# First, let's fix the types of keys and values.
# Remove the "f_" prefix, which exists so that we can write
# things like f_type or f_object without using reserved keywords.
for k,v in value.copy().items():
if k.startswith('f_'):
value[k[2:]] = v
del value[k]
for k,v in value.items():
# Now, let's fix the types of keys and values.
for k,v in value.copy().items():
if not isinstance(k, str):
raise ValueError('Things can only have keys which are strings: %s',
str(k))
@ -385,13 +392,13 @@ class Thing(models.Model):
str(self.activity_form))
logger.debug('We must create a Create wrapper for it.')
wrapper = Thing.create({
'type': 'Create',
'actor': self.activity_actor,
'to': self.activity_to,
'cc': self.activity_cc,
'object': self.activity_id,
})
wrapper = Thing.create(
f_type = 'Create',
f_actor = self.activity_actor,
to = self.activity_to,
cc = self.activity_cc,
f_object = self.activity_id,
)
wrapper.save()
logger.debug('Created wrapper %s',

Wyświetl plik

@ -178,14 +178,6 @@ def validate(
sign_header = 'Signature',
)
logger.debug('%s', {
'Content-Type': message.content_type,
'Date': message.date,
'Signature': message.signature,
'Host': message.host,
'path': message.path,
},)
if not hv.verify():
logger.info('%s: spoofing attempt; message dropped',
message)
@ -194,8 +186,8 @@ def validate(
logger.debug('%s: validation passed!', message)
result = django_kepi.models.thing.Thing.create(
value=message.activity_form,
sender=actor,
**(message.activity_form),
)
logger.debug('%s: produced new Thing %s', message, result )
return result

Wyświetl plik

@ -1,5 +1,4 @@
from django_kepi import ATSIGN_CONTEXT
from django_kepi.models import create
import django_kepi.validation
from django_kepi.find import find
from django.shortcuts import render, get_object_or_404

Wyświetl plik

@ -65,7 +65,7 @@ def create_local_person(name,
actor_fields[extra] = spec[extra]
del spec[extra]
result = create(spec)
result = create(**spec)
actor = Actor(
thing=result,