summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coip/apps/invitation/models.py7
-rw-r--r--coip/apps/link/models.py17
-rw-r--r--coip/apps/membership/models.py8
-rw-r--r--coip/apps/name/models.py1
-rw-r--r--coip/apps/scim/__init__.py5
-rw-r--r--coip/apps/scim/urls.py2
6 files changed, 28 insertions, 12 deletions
diff --git a/coip/apps/invitation/models.py b/coip/apps/invitation/models.py
index 22a4492..40a324d 100644
--- a/coip/apps/invitation/models.py
+++ b/coip/apps/invitation/models.py
@@ -7,11 +7,9 @@ from django.db import models
from django.contrib.auth.models import User
from coip.apps.name.models import Name, lookup
from django.core.mail import send_mail
-import logging
from coip.settings import PREFIX_URL, NOREPLY
-from coip.apps.scim.schema import scim_simple_attribute, ScimAttribute,\
+from coip.apps.scim.schema import scim_simple_attribute,\
scim_reference_attribute
-from coip.apps.scim import types
from coip.apps.resource.models import object_for_uuid
from coip.apps.auth.utils import nonce
from django.dispatch.dispatcher import receiver
@@ -19,6 +17,7 @@ from django.db.models.signals import post_save
from actstream.signals import action
from django.core.exceptions import ObjectDoesNotExist
from iso8601 import iso8601
+from coip.apps import scim
class Invitation(models.Model):
'''
@@ -109,4 +108,4 @@ class InvitationSchema():
invitation,created = Invitation.objects.get_or_create(inviter=user,nonce=nonce(),name=name,email=d['mail'],expires=expires)
return invitation
-types.register(Invitation,"Invitations",[InvitationSchema()]) \ No newline at end of file
+scim.register(Invitation,"Invitations",[InvitationSchema()]) \ No newline at end of file
diff --git a/coip/apps/link/models.py b/coip/apps/link/models.py
index ada194d..b81215d 100644
--- a/coip/apps/link/models.py
+++ b/coip/apps/link/models.py
@@ -5,14 +5,27 @@ Created on Aug 4, 2010
'''
from django.db import models
from coip.apps.name.models import Name
+from django.contrib.contenttypes import generic
+from django.contrib.contenttypes.models import ContentType
class Link(models.Model):
- name = models.ForeignKey(Name,related_name='links')
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ content_object = generic.GenericForeignKey('content_type', 'object_id')
url = models.CharField(max_length=255)
tag = models.CharField(max_length=255)
text = models.CharField(max_length=255)
timecreated = models.DateTimeField(auto_now_add=True)
lastupdated = models.DateTimeField(auto_now=True)
+ class Meta:
+ unique_together = ('content_type','content_id','url','tag')
+
def __unicode__(self):
- return "%s:%s (%s) on %s" % (self.tag,self.url,self.text,self.name) \ No newline at end of file
+ return "%s:%s (%s) on %s" % (self.tag,self.url,self.text,self.name)
+
+
+def add_link(o,url,tag,text):
+ typ = ContentType.objects.get_for_model(o)
+ r,cr = Link.objects.get_or_create(object_id=o.id,content_type=typ,url=url,tag=tag)
+ return r \ No newline at end of file
diff --git a/coip/apps/membership/models.py b/coip/apps/membership/models.py
index 6e5dbe5..ea502b9 100644
--- a/coip/apps/membership/models.py
+++ b/coip/apps/membership/models.py
@@ -13,8 +13,7 @@ from coip.settings import NOREPLY
from coip.extensions.templatetags.userdisplay import userdisplay
from coip.apps.userprofile.models import UserProfile
from actstream.signals import action
-from coip.apps.scim import types
-import logging
+from coip.apps import scim
STATUS = {UserProfile.INTERNAL:'internal',
UserProfile.ENTITY:'entity',
@@ -173,6 +172,5 @@ class UserSchema():
externalId = scim_simple_attribute('username')
userName = scim_simple_attribute('username')
-
-types.register(Name, "Groups", [GroupSchema()])
-types.register(User,"Users",[UserSchema()])
+scim.register(Name, "Groups", [GroupSchema()])
+scim.register(User,"Users",[UserSchema()])
diff --git a/coip/apps/name/models.py b/coip/apps/name/models.py
index eecfa2a..94e9acd 100644
--- a/coip/apps/name/models.py
+++ b/coip/apps/name/models.py
@@ -229,6 +229,7 @@ class NameLink(models.Model):
access_control = 0
part_of = 1
access_control_policy = 2
+ service_of = 3
def __unicode__(self):
return "%s -> %s [%s %s]" % (self.src,self.dst,self.type,self.data)
diff --git a/coip/apps/scim/__init__.py b/coip/apps/scim/__init__.py
index 0520e65..0dec0fa 100644
--- a/coip/apps/scim/__init__.py
+++ b/coip/apps/scim/__init__.py
@@ -83,4 +83,7 @@ class ObjectTypeRegistry(object):
self._registry[prefix] = ObjectHandler(model,schemas)
-types = ObjectTypeRegistry() \ No newline at end of file
+types = ObjectTypeRegistry()
+
+def register(model,prefix,schemas):
+ return types.register(model, prefix, schemas) \ No newline at end of file
diff --git a/coip/apps/scim/urls.py b/coip/apps/scim/urls.py
index 2802586..d188347 100644
--- a/coip/apps/scim/urls.py
+++ b/coip/apps/scim/urls.py
@@ -11,6 +11,8 @@ from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('coip.apps.scim.views',
url(r'^(?P<prefix>[^\/]+)/?$',view='scim_v1'),
url(r'^(?P<prefix>[^\/]+)/?(?P<uuid>[^\/]+)/?$',view='scim_v1'),
+ url(r'^(?P<nid>.+)/(?P<prefix>[^\/]+)/?$',view='scim_v1'),
+ url(r'^(?P<nid>.+)/(?P<prefix>[^\/]+)/?(?P<uuid>[^\/]+)/?$',view='scim_v1'),
)
#(?:^(?P<nid>[0-9]+)/)? \ No newline at end of file