actually let's just not bother with Register

thingy_objects
Marnanel Thurman 2018-08-20 00:10:19 +01:00
rodzic e1a3aca719
commit 8e9b36696a
6 zmienionych plików z 345 dodań i 4 usunięć

Wyświetl plik

@ -0,0 +1,78 @@
# Generated by Django 2.0.6 on 2018-08-19 17:34
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
('django_kepi', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Register',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('object_id', models.PositiveIntegerField()),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
],
),
migrations.AddField(
model_name='accept',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='add',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='create',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='delete',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='follow',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='like',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='reject',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='remove',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='tombstone',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='undo',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AddField(
model_name='update',
name='register',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
]

Wyświetl plik

@ -0,0 +1,69 @@
# Generated by Django 2.0.6 on 2018-08-19 17:49
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('django_kepi', '0002_auto_20180819_1734'),
]
operations = [
migrations.AlterField(
model_name='accept',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='add',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='create',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='delete',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='follow',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='like',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='reject',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='remove',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='tombstone',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='undo',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
migrations.AlterField(
model_name='update',
name='register',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='django_kepi.Register'),
),
]

Wyświetl plik

@ -0,0 +1,164 @@
# Generated by Django 2.0.6 on 2018-08-19 18:07
from django.db import migrations, models
import django_kepi.models
class Migration(migrations.Migration):
dependencies = [
('django_kepi', '0003_auto_20180819_1749'),
]
operations = [
migrations.RemoveField(
model_name='register',
name='content_type',
),
migrations.RemoveField(
model_name='accept',
name='id',
),
migrations.RemoveField(
model_name='accept',
name='register',
),
migrations.RemoveField(
model_name='add',
name='id',
),
migrations.RemoveField(
model_name='add',
name='register',
),
migrations.RemoveField(
model_name='create',
name='id',
),
migrations.RemoveField(
model_name='create',
name='register',
),
migrations.RemoveField(
model_name='delete',
name='id',
),
migrations.RemoveField(
model_name='delete',
name='register',
),
migrations.RemoveField(
model_name='follow',
name='id',
),
migrations.RemoveField(
model_name='follow',
name='register',
),
migrations.RemoveField(
model_name='like',
name='id',
),
migrations.RemoveField(
model_name='like',
name='register',
),
migrations.RemoveField(
model_name='reject',
name='id',
),
migrations.RemoveField(
model_name='reject',
name='register',
),
migrations.RemoveField(
model_name='remove',
name='id',
),
migrations.RemoveField(
model_name='remove',
name='register',
),
migrations.RemoveField(
model_name='tombstone',
name='id',
),
migrations.RemoveField(
model_name='tombstone',
name='register',
),
migrations.RemoveField(
model_name='undo',
name='id',
),
migrations.RemoveField(
model_name='undo',
name='register',
),
migrations.RemoveField(
model_name='update',
name='id',
),
migrations.RemoveField(
model_name='update',
name='register',
),
migrations.AddField(
model_name='accept',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='add',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='create',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='delete',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='follow',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='like',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='reject',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='remove',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='tombstone',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='undo',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.AddField(
model_name='update',
name='numeric_id',
field=models.PositiveIntegerField(default=django_kepi.models.Cobject.random_number, editable=False, primary_key=True, serialize=False),
),
migrations.DeleteModel(
name='Register',
),
]

Wyświetl plik

@ -3,6 +3,7 @@ from django_kepi import object_type_registry
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.conf import settings
from random import randint
import json
import datetime
import warnings
@ -13,12 +14,20 @@ import warnings
RESOLVE_FAILSAFE = 10
SERIALIZE = 'serialize'
URL_IDENTIFIER = 'url_identifier'
class Cobject(models.Model):
class Meta:
abstract = True
def random_number():
return randint(0, 2**32)
numeric_id = models.PositiveIntegerField(
primary_key = True,
default = random_number,
editable = False)
verified = models.BooleanField(default=False)
remote_id = models.URLField(blank=True, null=True, default=None)
published = models.DateTimeField(default=datetime.datetime.now)
@ -30,7 +39,7 @@ class Cobject(models.Model):
else:
return settings.KEPI['URL_FORMAT'] % {
'type': self.__class__.__name__.lower(),
'pk': self.pk,
'id': self.numeric_id,
}
def is_local(self):
@ -104,6 +113,9 @@ class Cobject(models.Model):
default=json_default,
)
def matches_type(self, t):
return t==self.__class__.__name__.lower()
class Activity_with_actor_and_fobject(Cobject):
class Meta:
@ -165,6 +177,9 @@ class Delete(Activity_with_actor_and_fobject):
class Tombstone(Cobject):
deleted = models.DateTimeField(default=datetime.datetime.now)
def matches_type(self, t):
return True # XXX probably more complicated than that
class Follow(Activity_with_actor_and_fobject):
pass
@ -185,3 +200,18 @@ class Accept(Activity_with_fobject):
class Reject(Activity_with_fobject):
pass
def deserialize(s):
try:
del s['id']
except AttributeError:
pass
if 'type' not in s:
raise ValueError("can't deserialize without a type")
raise ValueError("nyi")
def lookup(ftype, pk):
pass

Wyświetl plik

@ -1,7 +1,7 @@
from django.urls import path, include
KEPI = {
'URL_FORMAT': 'https://example.com/activities/%(type)s/%(pk)d',
'URL_FORMAT': 'https://example.com/activities/%(type)s/%(id)x',
}
INSTALLED_APPS = (

Wyświetl plik

@ -1,5 +1,5 @@
from django.test import TestCase, Client
from django_kepi.models import Create, Like
from django_kepi.models import Create, Like, Update
from things_for_testing.models import ThingUser, ThingArticle
class UserTests(TestCase):