Merge of aai and admin apps.
authorAntony Chazapis <chazapis@gmail.com>
Wed, 19 Oct 2011 09:55:10 +0000 (12:55 +0300)
committerAntony Chazapis <chazapis@gmail.com>
Wed, 19 Oct 2011 09:55:10 +0000 (12:55 +0300)
23 files changed:
pithos/admin/static/banner.png [deleted file]
pithos/admin/templates/base.html [deleted file]
pithos/im/__init__.py [moved from pithos/aai/__init__.py with 100% similarity]
pithos/im/fixtures/auth_test_data.json [moved from pithos/aai/fixtures/auth_test_data.json with 89% similarity]
pithos/im/models.py [moved from pithos/aai/models.py with 71% similarity]
pithos/im/shibboleth.py [moved from pithos/aai/functions.py with 70% similarity]
pithos/im/static/banner.png [new file with mode: 0644]
pithos/im/static/bootstrap.css [moved from pithos/admin/static/bootstrap.css with 100% similarity]
pithos/im/static/jquery.js [moved from pithos/admin/static/jquery.js with 100% similarity]
pithos/im/static/jquery.tablesorter.js [moved from pithos/admin/static/jquery.tablesorter.js with 100% similarity]
pithos/im/static/main.js [moved from pithos/admin/static/main.js with 100% similarity]
pithos/im/templates/admin.html [moved from pithos/admin/templates/index.html with 100% similarity]
pithos/im/templates/base.html [new file with mode: 0644]
pithos/im/templates/index.html [new file with mode: 0644]
pithos/im/templates/users_create.html [moved from pithos/admin/templates/users_create.html with 95% similarity]
pithos/im/templates/users_info.html [moved from pithos/admin/templates/users_info.html with 90% similarity]
pithos/im/templates/users_list.html [moved from pithos/admin/templates/users_list.html with 86% similarity]
pithos/im/urls.py [moved from pithos/aai/shibboleth.py with 52% similarity]
pithos/im/util.py [moved from pithos/aai/util.py with 97% similarity]
pithos/im/views.py [moved from pithos/admin/views.py with 92% similarity]
pithos/middleware/auth.py
pithos/settings.py.dist
pithos/urls.py

diff --git a/pithos/admin/static/banner.png b/pithos/admin/static/banner.png
deleted file mode 100644 (file)
index d5c27f4..0000000
Binary files a/pithos/admin/static/banner.png and /dev/null differ
diff --git a/pithos/admin/templates/base.html b/pithos/admin/templates/base.html
deleted file mode 100644 (file)
index 3ff435a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8" />
-  <title>{{ title|default:"Pithos Admin" }}</title>
-  <link rel="stylesheet" href="/admin/static/bootstrap.css">
-  <script src="/admin/static/jquery.js"></script>
-  <script src="/admin/static/jquery.tablesorter.js"></script>
-  <script src="/admin/static/main.js"></script>
-  {% block head %}{% endblock %}
-</head>
-<body>
-  <div class="container">
-    <div style="padding: 5px 0px 0px 0px">
-      <img src="/admin/static/banner.png" width="900" height="200">
-    </div>
-
-    <ul class="tabs">
-      <li{% ifequal tab "home" %} class="active"{% endifequal %}>
-        <a href="{% url admin.views.index %}">Home</a>
-      </li>
-      <li{% ifequal tab "users" %} class="active"{% endifequal %}>
-        <a href="{% url admin.views.users_list %}">Users</a>
-      </li>
-    </ul>
-
-    {% block body %}{% endblock %}
-  </div>
-</body>
-</html>
similarity index 100%
rename from pithos/aai/__init__.py
rename to pithos/im/__init__.py
similarity index 89%
rename from pithos/aai/fixtures/auth_test_data.json
rename to pithos/im/fixtures/auth_test_data.json
index 6190739..90625a0 100644 (file)
@@ -1,6 +1,6 @@
 [
     {
 [
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 1,
         "fields": {
             "uniq": "test",
         "pk": 1,
         "fields": {
             "uniq": "test",
@@ -12,7 +12,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 2,
         "fields": {
             "uniq": "verigak",
         "pk": 2,
         "fields": {
             "uniq": "verigak",
@@ -24,7 +24,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 3,
         "fields": {
             "uniq": "chazapis",
         "pk": 3,
         "fields": {
             "uniq": "chazapis",
@@ -36,7 +36,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 4,
         "fields": {
             "uniq": "gtsouk",
         "pk": 4,
         "fields": {
             "uniq": "gtsouk",
@@ -48,7 +48,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 5,
         "fields": {
             "uniq": "papagian",
         "pk": 5,
         "fields": {
             "uniq": "papagian",
@@ -60,7 +60,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 6,
         "fields": {
             "uniq": "louridas",
         "pk": 6,
         "fields": {
             "uniq": "louridas",
@@ -72,7 +72,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 7,
         "fields": {
             "uniq": "chstath",
         "pk": 7,
         "fields": {
             "uniq": "chstath",
@@ -84,7 +84,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 8,
         "fields": {
             "uniq": "pkanavos",
         "pk": 8,
         "fields": {
             "uniq": "pkanavos",
@@ -96,7 +96,7 @@
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 9,
         "fields": {
             "uniq": "mvasilak",
         "pk": 9,
         "fields": {
             "uniq": "mvasilak",
            }
     },
     {
            }
     },
     {
-        "model": "aai.PithosUser",
+        "model": "im.User",
         "pk": 10,
         "fields": {
             "uniq": "διογένης",
         "pk": 10,
         "fields": {
             "uniq": "διογένης",
similarity index 71%
rename from pithos/aai/models.py
rename to pithos/im/models.py
index f5bf291..8aebc89 100644 (file)
 
 import datetime
 
 
 import datetime
 
+from django.conf import settings
 from django.db import models
 
 from django.db import models
 
-from pithos import settings
 
 
-
-class PithosUser(models.Model):
+class User(models.Model):
+    
+    ACCOUNT_STATE = (
+        ('ACTIVE', 'Active'),
+        ('DELETED', 'Deleted'),
+        ('SUSPENDED', 'Suspended')
+    )
+    
     uniq = models.CharField('Unique ID', max_length=255, null=True)
     uniq = models.CharField('Unique ID', max_length=255, null=True)
+    
     realname = models.CharField('Real Name', max_length=255, default='')
     realname = models.CharField('Real Name', max_length=255, default='')
-    is_admin = models.BooleanField('Admin', default=False)
+    email = models.CharField('Email', max_length=255, default='')
     affiliation = models.CharField('Affiliation', max_length=255, default='')
     affiliation = models.CharField('Affiliation', max_length=255, default='')
+    state = models.CharField('Account state', choices=ACCOUNT_STATE, max_length=16, default='ACTIVE')
+    
+    # Lose these...
     quota = models.BigIntegerField('Storage Limit', default=settings.DEFAULT_QUOTA)
     quota = models.BigIntegerField('Storage Limit', default=settings.DEFAULT_QUOTA)
+    max_invitations = models.IntegerField('Max number of invitations', null=True)
+    
+    is_admin = models.BooleanField('Admin', default=False)
+    
     auth_token = models.CharField('Authentication Token', max_length=32, null=True)
     auth_token_created = models.DateTimeField('Time of auth token creation')
     auth_token_expires = models.DateTimeField('Time of auth token expiration')
     auth_token = models.CharField('Authentication Token', max_length=32, null=True)
     auth_token_created = models.DateTimeField('Time of auth token creation')
     auth_token_expires = models.DateTimeField('Time of auth token expiration')
+    
     created = models.DateTimeField('Time of creation')
     updated = models.DateTimeField('Time of last update')
     
     created = models.DateTimeField('Time of creation')
     updated = models.DateTimeField('Time of last update')
     
@@ -57,10 +72,25 @@ class PithosUser(models.Model):
                 self.auth_token_created = datetime.datetime.now()
                 self.auth_token_expires = datetime.datetime.now()
             self.updated = datetime.datetime.now()
                 self.auth_token_created = datetime.datetime.now()
                 self.auth_token_expires = datetime.datetime.now()
             self.updated = datetime.datetime.now()
-        super(PithosUser, self).save()
+        super(User, self).save()
     
     class Meta:
     
     class Meta:
-        verbose_name = u'Pithos User'
+        verbose_name = u'User'
     
     def __unicode__(self):
         return self.uniq
     
     def __unicode__(self):
         return self.uniq
+
+class Invitation(models.Model):
+    source = models.ForeignKey(User, related_name="source")
+    target = models.ForeignKey(User, related_name="target")
+    accepted = models.BooleanField('Is the invitation accepted?', default=False)
+    level = models.IntegerField('Invitation depth level', null=True)
+    
+    created = models.DateTimeField(auto_now_add=True)
+    updated = models.DateTimeField(auto_now=True)
+
+    class Meta:
+        verbose_name = u'Invitation'
+
+    def __unicode__(self):
+        return "From: %s, To: %s" % (self.source, self.target)
similarity index 70%
rename from pithos/aai/functions.py
rename to pithos/im/shibboleth.py
index 3d993a2..050c545 100644 (file)
 
 import datetime
 
 
 import datetime
 
-from time import time, mktime
-
-from django.conf import settings
 from django.http import HttpResponse, HttpResponseBadRequest
 from django.utils.http import urlencode
 from django.http import HttpResponse, HttpResponseBadRequest
 from django.utils.http import urlencode
-from django.utils.cache import patch_vary_headers
+#from django.utils.cache import patch_vary_headers
+
+from models import User
+from util import register_user, create_auth_token
+
 
 
-from models import PithosUser
-from shibboleth import Tokens, register_shibboleth_user
-from util import create_auth_token
+class Tokens:
+    # these are mapped by the Shibboleth SP software
+    SHIB_EPPN = "HTTP_EPPN" # eduPersonPrincipalName
+    SHIB_NAME = "HTTP_SHIB_INETORGPERSON_GIVENNAME"
+    SHIB_SURNAME = "HTTP_SHIB_PERSON_SURNAME"
+    SHIB_CN = "HTTP_SHIB_PERSON_COMMONNAME"
+    SHIB_DISPLAYNAME = "HTTP_SHIB_INETORGPERSON_DISPLAYNAME"
+    SHIB_EP_AFFILIATION = "HTTP_SHIB_EP_AFFILIATION"
+    SHIB_SESSION_ID = "HTTP_SHIB_SESSION_ID"
 
 
 def login(request):
 
 
 def login(request):
@@ -60,14 +67,26 @@ def login(request):
     """
     
     try:
     """
     
     try:
-        user = PithosUser.objects.get(uniq=request.META[Tokens.SHIB_EPPN])
+        user = User.objects.get(uniq=request.META[Tokens.SHIB_EPPN])
     except:
         user = None
     if user is None:
         try:
     except:
         user = None
     if user is None:
         try:
-            user = register_shibboleth_user(request.META)
-        except:
-            return HttpResponseBadRequest('Missing necessary Shibboleth headers')
+            eppn = tokens[Tokens.SHIB_EPPN]
+        except KeyError:
+            return HttpResponseBadRequest("Missing unique token in request")
+        
+        if Tokens.SHIB_DISPLAYNAME in tokens:
+            realname = tokens[Tokens.SHIB_DISPLAYNAME]
+        elif Tokens.SHIB_CN in tokens:
+            realname = tokens[Tokens.SHIB_CN]
+        elif Tokens.SHIB_NAME in tokens and Tokens.SHIB_SURNAME in tokens:
+            realname = tokens[Tokens.SHIB_NAME] + ' ' + tokens[Tokens.SHIB_SURNAME]
+        else:
+            return HttpResponseBadRequest("Missing user name in request")
+        
+        affiliation = tokens.get(Tokens.SHIB_EP_AFFILIATION, '')
+        user = register_user(eppn, realname, affiliation)
     
     if 'renew' in request.GET or user.auth_token_expires < datetime.datetime.now():
         create_auth_token(user)
     
     if 'renew' in request.GET or user.auth_token_expires < datetime.datetime.now():
         create_auth_token(user)
diff --git a/pithos/im/static/banner.png b/pithos/im/static/banner.png
new file mode 100644 (file)
index 0000000..98bbc45
Binary files /dev/null and b/pithos/im/static/banner.png differ
diff --git a/pithos/im/templates/base.html b/pithos/im/templates/base.html
new file mode 100644 (file)
index 0000000..46e6bec
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8" />
+  <title>{{ title|default:"User Admin" }}</title>
+  <link rel="stylesheet" href="/im/static/bootstrap.css">
+  <script src="/im/static/jquery.js"></script>
+  <script src="/im/static/jquery.tablesorter.js"></script>
+  <script src="/im/static/main.js"></script>
+  {% block head %}{% endblock %}
+</head>
+<body>
+  <div class="container">
+    <div style="padding: 5px 0px 0px 0px">
+      <img src="/im/static/banner.png" width="900" height="200">
+    </div>
+
+    <ul class="tabs">
+      <li{% ifequal tab "home" %} class="active"{% endifequal %}>
+        <a href="{% url pithos.im.views.admin %}">Home</a>
+      </li>
+      <li{% ifequal tab "users" %} class="active"{% endifequal %}>
+        <a href="{% url pithos.im.views.users_list %}">Users</a>
+      </li>
+    </ul>
+
+    {% block body %}{% endblock %}
+  </div>
+</body>
+</html>
diff --git a/pithos/im/templates/index.html b/pithos/im/templates/index.html
new file mode 100644 (file)
index 0000000..308632e
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8" />
+  <title>{{ title|default:"User Login" }}</title>
+  <link rel="stylesheet" href="/im/static/bootstrap.css">
+  <script src="/im/static/jquery.js"></script>
+  <script src="/im/static/jquery.tablesorter.js"></script>
+  <script src="/im/static/main.js"></script>
+</head>
+<body>
+  <div class="container">
+    Welcome! Choose how to login.
+  </div>
+</body>
+</html>
similarity index 95%
rename from pithos/admin/templates/users_create.html
rename to pithos/im/templates/users_create.html
index 05c7cda..7c4a99d 100644 (file)
@@ -2,7 +2,7 @@
 
 {% block body %}
 
 
 {% block body %}
 
-<form action="{% url admin.views.users_create %}" method="post">
+<form action="{% url im.views.users_create %}" method="post">
   <div class="clearfix">
     <label for="user-uniq">Uniq</label>
     <div class="input">
   <div class="clearfix">
     <label for="user-uniq">Uniq</label>
     <div class="input">
similarity index 90%
rename from pithos/admin/templates/users_info.html
rename to pithos/im/templates/users_info.html
index 2148f03..fe04720 100644 (file)
@@ -2,7 +2,7 @@
 
 {% block body %}
 
 
 {% block body %}
 
-<form action="{% url admin.views.users_modify user.id %}" method="post">
+<form action="{% url im.views.users_modify user.id %}" method="post">
   <div class="clearfix">
     <label for="user-id">ID</label>
     <div class="input">
   <div class="clearfix">
     <label for="user-id">ID</label>
     <div class="input">
     <button type="submit" class="btn primary">Save Changes</button>
     <button type="reset" class="btn">Reset</button>
         &nbsp;&nbsp;
     <button type="submit" class="btn primary">Save Changes</button>
     <button type="reset" class="btn">Reset</button>
         &nbsp;&nbsp;
-    <a class="btn danger needs-confirm" href="{% url admin.views.users_delete user.id %}">Delete User</a>
+    <a class="btn danger needs-confirm" href="{% url im.views.users_delete user.id %}">Delete User</a>
   </div>
 
   <div class="alert-message block-message error">
     <p><strong>WARNING:</strong> Are you sure you want to delete this user?</p>
     <div class="alert-actions">
   </div>
 
   <div class="alert-message block-message error">
     <p><strong>WARNING:</strong> Are you sure you want to delete this user?</p>
     <div class="alert-actions">
-      <a class="btn danger" href="{% url admin.views.users_delete user.id %}">Delete</a>
+      <a class="btn danger" href="{% url im.views.users_delete user.id %}">Delete</a>
       <a class="btn alert-close">Cancel</a>
     </div>
   </div>
       <a class="btn alert-close">Cancel</a>
     </div>
   </div>
similarity index 86%
rename from pithos/admin/templates/users_list.html
rename to pithos/im/templates/users_list.html
index 0642806..7abfd46 100644 (file)
@@ -27,8 +27,8 @@
   <tbody>
     {% for user in users %}
     <tr>
   <tbody>
     {% for user in users %}
     <tr>
-      <td><a href="{% url admin.views.users_info user.id %}">{{ user.id }}</a></td>
-      <td><a href="{% url admin.views.users_info user.id %}">{{ user.uniq }}</a></td>
+      <td><a href="{% url im.views.users_info user.id %}">{{ user.id }}</a></td>
+      <td><a href="{% url im.views.users_info user.id %}">{{ user.uniq }}</a></td>
       <td>{{ user.realname }}</td>
       <td>{{ user.is_admin }}</td>
       <td>{{ user.affiliation }}</td>
       <td>{{ user.realname }}</td>
       <td>{{ user.is_admin }}</td>
       <td>{{ user.affiliation }}</td>
@@ -61,6 +61,6 @@
 </div>
 {% endif %}
 
 </div>
 {% endif %}
 
-<a class="btn success" href="{% url admin.views.users_create %}">Create a user</a>
+<a class="btn success" href="{% url im.views.users_create %}">Create a user</a>
 <br /><br />
 {% endblock body %}
 <br /><br />
 {% endblock body %}
similarity index 52%
rename from pithos/aai/shibboleth.py
rename to pithos/im/urls.py
index 0b6a477..ea8c178 100644 (file)
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
 # interpreted as representing official policies, either expressed
 # or implied, of GRNET S.A.
 
-from util import register_user
+from django.conf import settings
+from django.conf.urls.defaults import patterns
 
 
 
 
-class Tokens:
-    # these are mapped by the Shibboleth SP software
-    SHIB_EPPN = "HTTP_EPPN" # eduPersonPrincipalName
-    SHIB_NAME = "HTTP_SHIB_INETORGPERSON_GIVENNAME"
-    SHIB_SURNAME = "HTTP_SHIB_PERSON_SURNAME"
-    SHIB_CN = "HTTP_SHIB_PERSON_COMMONNAME"
-    SHIB_DISPLAYNAME = "HTTP_SHIB_INETORGPERSON_DISPLAYNAME"
-    SHIB_EP_AFFILIATION = "HTTP_SHIB_EP_AFFILIATION"
-    SHIB_SESSION_ID = "HTTP_SHIB_SESSION_ID"
-
-
-class NoUniqueToken(BaseException):
-    def __init__(self, msg):
-        self.msg = msg
-
-
-class NoRealName(BaseException):
-    def __init__(self, msg):
-        self.msg = msg
-
-
-def register_shibboleth_user(tokens):
-    """Registers a Shibboleth user using the input hash as a source for data."""
-    
-    try:
-        eppn = tokens[Tokens.SHIB_EPPN]
-    except KeyError:
-        raise NoUniqueToken("Authentication does not return a unique token")
-    
-    if Tokens.SHIB_DISPLAYNAME in tokens:
-        realname = tokens[Tokens.SHIB_DISPLAYNAME]
-    elif Tokens.SHIB_CN in tokens:
-        realname = tokens[Tokens.SHIB_CN]
-    elif Tokens.SHIB_NAME in tokens and Tokens.SHIB_SURNAME in tokens:
-        realname = tokens[Tokens.SHIB_NAME] + ' ' + tokens[Tokens.SHIB_SURNAME]
-    else:
-        raise NoRealName("Authentication does not return the user's name")
+urlpatterns = patterns('pithos.im.views',
+    (r'^$', 'index'),
+    (r'^login/?$', 'index'),
     
     
-    affiliation = tokens.get(Tokens.SHIB_EP_AFFILIATION, '')
+    (r'^admin/?$', 'admin'),
     
     
-    return register_user(eppn, realname, affiliation)
+    (r'^admin/users/?$', 'users_list'),
+    (r'^admin/users/(\d+)/?$', 'users_info'),
+    (r'^admin/users/create$', 'users_create'),
+    (r'^admin/users/(\d+)/modify/?$', 'users_modify'),
+    (r'^admin/users/(\d+)/delete/?$', 'users_delete'),
+)
+
+urlpatterns += patterns('',
+    (r'^login/shibboleth/?$', 'pithos.im.shibboleth.login')
+)
+
+urlpatterns += patterns('',
+    (r'^/static/(?P<path>.*)$', 'django.views.static.serve', {
+                    'document_root': settings.PROJECT_PATH + '/im/static'})
+)
similarity index 97%
rename from pithos/aai/util.py
rename to pithos/im/util.py
index 6c16c01..6a4d7ef 100644 (file)
@@ -40,12 +40,12 @@ from base64 import b64encode
 from django.conf import settings
 from django.db import transaction
 
 from django.conf import settings
 from django.db import transaction
 
-from models import PithosUser
+from models import User
 
 
 @transaction.commit_on_success
 def register_user(uniq, realname, affiliation):
 
 
 @transaction.commit_on_success
 def register_user(uniq, realname, affiliation):
-    user = PithosUser()
+    user = User()
     user.uniq = uniq
     user.realname = realname
     user.affiliation = affiliation
     user.uniq = uniq
     user.realname = realname
     user.affiliation = affiliation
similarity index 92%
rename from pithos/admin/views.py
rename to pithos/im/views.py
index 76366c9..9b3cd81 100644 (file)
@@ -40,7 +40,7 @@ from django.utils.http import urlencode
 from django.shortcuts import redirect
 from django.template.loader import render_to_string
 
 from django.shortcuts import redirect
 from django.template.loader import render_to_string
 
-from pithos.aai.models import PithosUser
+from models import User
 
 
 def render_response(template, tab=None, status=200, **kwargs):
 
 
 def render_response(template, tab=None, status=200, **kwargs):
@@ -65,16 +65,22 @@ def requires_admin(func):
     return wrapper
 
 
     return wrapper
 
 
-@requires_admin
 def index(request):
     stats = {}
 def index(request):
     stats = {}
-    stats['users'] = PithosUser.objects.count()
+    stats['users'] = User.objects.count()
     return render_response('index.html', tab='home', stats=stats)
 
 
 @requires_admin
     return render_response('index.html', tab='home', stats=stats)
 
 
 @requires_admin
+def admin(request):
+    stats = {}
+    stats['users'] = User.objects.count()
+    return render_response('admin.html', tab='home', stats=stats)
+
+
+@requires_admin
 def users_list(request):
 def users_list(request):
-    users = PithosUser.objects.order_by('id')
+    users = User.objects.order_by('id')
     
     filter = request.GET.get('filter', '')
     if filter:
     
     filter = request.GET.get('filter', '')
     if filter:
@@ -107,7 +113,7 @@ def users_create(request):
     if request.method == 'GET':
         return render_response('users_create.html')
     if request.method == 'POST':
     if request.method == 'GET':
         return render_response('users_create.html')
     if request.method == 'POST':
-        user = PithosUser()
+        user = User()
         user.uniq = request.POST.get('uniq')
         user.realname = request.POST.get('realname')
         user.is_admin = True if request.POST.get('admin') else False
         user.uniq = request.POST.get('uniq')
         user.realname = request.POST.get('realname')
         user.is_admin = True if request.POST.get('admin') else False
@@ -120,13 +126,13 @@ def users_create(request):
 
 @requires_admin
 def users_info(request, user_id):
 
 @requires_admin
 def users_info(request, user_id):
-    user = PithosUser.objects.get(id=user_id)
+    user = User.objects.get(id=user_id)
     return render_response('users_info.html', user=user)
 
 
 @requires_admin
 def users_modify(request, user_id):
     return render_response('users_info.html', user=user)
 
 
 @requires_admin
 def users_modify(request, user_id):
-    user = PithosUser.objects.get(id=user_id)
+    user = User.objects.get(id=user_id)
     user.uniq = request.POST.get('uniq')
     user.realname = request.POST.get('realname')
     user.is_admin = True if request.POST.get('admin') else False
     user.uniq = request.POST.get('uniq')
     user.realname = request.POST.get('realname')
     user.is_admin = True if request.POST.get('admin') else False
@@ -139,6 +145,6 @@ def users_modify(request, user_id):
 
 @requires_admin
 def users_delete(request, user_id):
 
 @requires_admin
 def users_delete(request, user_id):
-    user = PithosUser.objects.get(id=user_id)
+    user = User.objects.get(id=user_id)
     user.delete()
     return redirect(users_list)
     user.delete()
     return redirect(users_list)
index c9aa8f4..ea0b232 100644 (file)
@@ -35,7 +35,7 @@ from time import time, mktime
 
 from django.conf import settings
 
 
 from django.conf import settings
 
-from pithos.aai.models import PithosUser
+from pithos.im.models import User
 
 
 class AuthMiddleware(object):
 
 
 class AuthMiddleware(object):
@@ -53,7 +53,7 @@ class AuthMiddleware(object):
         
         # Token was found, retrieve user from backing store.
         try:
         
         # Token was found, retrieve user from backing store.
         try:
-            user = PithosUser.objects.get(auth_token=token)
+            user = User.objects.get(auth_token=token)
         except:
             return
         
         except:
             return
         
index b581eec..456e3e8 100644 (file)
@@ -147,8 +147,7 @@ INSTALLED_APPS = (
 #    'django.contrib.messages',
 #    'django.contrib.admin',
 #    'django.contrib.admindocs',
 #    'django.contrib.messages',
 #    'django.contrib.admin',
 #    'django.contrib.admindocs',
-    'pithos.aai',
-    'pithos.admin',
+    'pithos.im',
     'pithos.api',
     'pithos.public'
 )
     'pithos.api',
     'pithos.public'
 )
index ef7d7bc..c2f1b41 100644 (file)
@@ -37,6 +37,5 @@ urlpatterns = patterns('',
     (r'^v1(?:$|/)', include('pithos.api.urls')),
     (r'^v1\.0(?:$|/)', include('pithos.api.urls')),
     (r'^public(?:$|/)', include('pithos.public.urls')),
     (r'^v1(?:$|/)', include('pithos.api.urls')),
     (r'^v1\.0(?:$|/)', include('pithos.api.urls')),
     (r'^public(?:$|/)', include('pithos.public.urls')),
-    (r'^login(?:$|/)', 'pithos.aai.functions.login'),
-    (r'^admin', include('pithos.admin.urls'))
+    (r'^im(?:$|/)', include('pithos.im.urls'))
 )
 )