kopia lustrzana https://gitlab.com/marnanel/chapeau
Thing.create() takes params as params rather than as a dict, like its Django core counterparts.
rodzic
243e1d9ca0
commit
1a9e124e57
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
Ładowanie…
Reference in New Issue