diff options
author | Leif Johansson <leifj@sunet.se> | 2012-05-08 13:38:39 +0200 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2012-05-08 13:38:39 +0200 |
commit | ddf84f22c6fdd19c6ab1c3c35a48f4a0cea011a9 (patch) | |
tree | b5afc87d948f2213a42294dc35a31b9cccb7208f | |
parent | 0f0aad4b5114e784cd8f56d98226dcfef8badc15 (diff) |
scim
-rw-r--r-- | coip/apps/invitation/models.py | 7 | ||||
-rw-r--r-- | coip/apps/link/models.py | 17 | ||||
-rw-r--r-- | coip/apps/membership/models.py | 8 | ||||
-rw-r--r-- | coip/apps/name/models.py | 1 | ||||
-rw-r--r-- | coip/apps/scim/__init__.py | 5 | ||||
-rw-r--r-- | coip/apps/scim/urls.py | 2 |
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 |