Changeset 457

Show
Ignore:
Timestamp:
01/22/08 10:59:59 (6 years ago)
Author:
arthur
Message:

Changes to make this work with TG 1.0.4

Location:
trunk/honeysnap-web
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/honeysnap-web/honeysnap_web/config/app.cfg

    r413 r457  
    6262# Database class to use for visit tracking 
    6363visit.saprovider.model = "honeysnap_web.model.Visit" 
     64identity.saprovider.model.visit = "honeysnap_web.model.VisitIdentity" 
     65 
    6466 
    6567# IDENTITY 
     
    100102identity.saprovider.model.group="honeysnap_web.model.Group" 
    101103identity.saprovider.model.permission="honeysnap_web.model.Permission" 
    102 identity.saprovider.model.visit="honeysnap_web.model.VisitIdentity" 
    103104 
    104105# The password encryption algorithm used when comparing passwords against what's 
  • trunk/honeysnap-web/honeysnap_web/model.py

    r401 r457  
    1818################################################################################ 
    1919                                                                               
    20 import socket 
    2120from datetime import datetime 
    22 from sqlalchemy import * 
     21from turbogears.database import metadata, mapper 
     22from sqlalchemy import Table, Column, ForeignKey 
     23from sqlalchemy.orm import relation 
     24from sqlalchemy import String, Unicode, Integer, DateTime 
     25from turbogears import identity 
    2326 
    24 from sqlalchemy.ext.assignmapper import assign_mapper 
    25 from sqlalchemy.ext.selectresults import SelectResults  
    26 from turbogears.database import session 
    27 from turbogears import identity  
    28           
    29 # honeysnap stuff   
    30 # DO NOT ADD DATA TABLES HERE! Add them to honeysnap.model.model instead 
    31     
    32 from honeysnap.model.model import * 
    3327 
    34 # The identity schema. 
     28# the identity schema 
     29 
    3530visits_table = Table('visit', metadata, 
    3631    Column('visit_key', String(40), primary_key=True), 
     
    6762 
    6863user_group_table = Table('user_group', metadata, 
    69     Column('user_id', Integer, ForeignKey('tg_user.user_id')), 
    70     Column('group_id', Integer, ForeignKey('tg_group.group_id')) 
     64    Column('user_id', Integer, ForeignKey('tg_user.user_id', 
     65        onupdate='CASCADE', ondelete='CASCADE')), 
     66    Column('group_id', Integer, ForeignKey('tg_group.group_id', 
     67        onupdate='CASCADE', ondelete='CASCADE')) 
    7168) 
    7269 
    7370group_permission_table = Table('group_permission', metadata, 
    74     Column('group_id', Integer, ForeignKey('tg_group.group_id')), 
    75     Column('permission_id', Integer, ForeignKey('permission.permission_id')) 
     71    Column('group_id', Integer, ForeignKey('tg_group.group_id', 
     72        onupdate='CASCADE', ondelete='CASCADE')), 
     73    Column('permission_id', Integer, ForeignKey('permission.permission_id', 
     74        onupdate='CASCADE', ondelete='CASCADE')) 
    7675) 
    7776 
    7877 
     78# the identity model 
     79 
     80 
    7981class Visit(object): 
    80     def lookup_visit(cls, visit_key): 
    81         return Visit.get(visit_key) 
     82    """ 
     83    A visit to your site 
     84    """ 
     85    def lookup_visit(cls, visit_key):  
     86        print "*******" 
     87        print cls 
     88        print type(cls) 
     89        return cls.query.get(visit_key) 
    8290    lookup_visit = classmethod(lookup_visit) 
    8391 
     92 
    8493class VisitIdentity(object): 
     94    """ 
     95    A Visit that is link to a User object 
     96    """ 
    8597    pass 
     98 
    8699 
    87100class Group(object): 
     
    91104    pass 
    92105 
     106 
    93107class User(object): 
    94108    """ 
    95     Reasonably basic User definition. Probably would want additional 
    96     attributes. 
     109    Reasonably basic User definition. 
     110    Probably would want additional attributes. 
    97111    """ 
    98112    def permissions(self): 
    99113        perms = set() 
    100114        for g in self.groups: 
    101             perms = perms | set(g.permissions) 
     115            perms |= set(g.permissions) 
    102116        return perms 
    103117    permissions = property(permissions) 
    104118 
     119    def by_email_address(cls, email): 
     120        """ 
     121        A class method that can be used to search users 
     122        based on their email addresses since it is unique. 
     123        """ 
     124        return cls.query.filter_by(email_address=email).first() 
     125 
     126    by_email_address = classmethod(by_email_address) 
     127 
     128    def by_user_name(cls, username): 
     129        """ 
     130        A class method that permits to search users 
     131        based on their user_name attribute. 
     132        """ 
     133        return cls.query.filter_by(user_name=username).first() 
     134 
     135    by_user_name = classmethod(by_user_name) 
     136 
     137    def _set_password(self, password): 
     138        """ 
     139        encrypts password on the fly using the encryption 
     140        algo defined in the configuration 
     141        """ 
     142        self._password = identity.encrypt_password(password) 
     143 
     144    def _get_password(self): 
     145        """ 
     146        returns password 
     147        """ 
     148        return self._password 
     149 
     150    password = property(_get_password, _set_password) 
     151 
     152 
    105153class Permission(object): 
     154    """ 
     155    A relationship that determines what each Group can do 
     156    """ 
    106157    pass 
    107158 
    108 assign_mapper(session.context, Visit, visits_table) 
    109 assign_mapper(session.context, VisitIdentity, visit_identity_table, 
    110           properties=dict(users=relation(User, backref='visit_identity'))) 
    111 assign_mapper(session.context, User, users_table) 
    112 assign_mapper(session.context, Group, groups_table, 
    113           properties=dict(users=relation(User,secondary=user_group_table, backref='groups'))) 
    114 assign_mapper(session.context, Permission, permissions_table, 
    115           properties=dict(groups=relation(Group,secondary=group_permission_table, backref='permissions'))) 
    116159 
     160# set up mappers between identity tables and classes 
     161 
     162mapper(Visit, visits_table) 
     163 
     164mapper(VisitIdentity, visit_identity_table, 
     165        properties=dict(users=relation(User, backref='visit_identity'))) 
     166 
     167mapper(User, users_table, 
     168        properties=dict(_password=users_table.c.password)) 
     169 
     170mapper(Group, groups_table, 
     171        properties=dict(users=relation(User, 
     172                secondary=user_group_table, backref='groups'))) 
     173 
     174mapper(Permission, permissions_table, 
     175        properties=dict(groups=relation(Group, 
     176                secondary=group_permission_table, backref='permissions'))) 
     177 
     178 
     179# honeysnap stuff   
     180# DO NOT ADD DATA TABLES HERE! Add them to honeysnap.model.model instead 
     181 
     182from honeysnap.model.model import *   
  • trunk/honeysnap-web/start-honeysnap_web.py

    r413 r457  
    11#!/usr/bin/env python 
     2 
     3import os 
     4os.environ["MACOSX_DEPLOYMENT_TARGET"] = "10.5" 
     5 
     6 
    27import pkg_resources 
    38pkg_resources.require("TurboGears")