Esempio n. 1
0
    def save(self, user, site):

        if not self.cleaned_data['is_hub']:
            place = get_or_create_root_location()
            group = site.create_TgGroup(
                group_name=self.cleaned_data['group_name'],
                display_name=self.cleaned_data['display_name'],
                group_type=self.cleaned_data['group_type'],
                level='member',
                user=user,
                description=self.cleaned_data['description'],
                permission_prototype=self.cleaned_data['permissions_set'],
                place=place,
            )
        else:
            group = site.create_hub(
                location_name=self.
                cleaned_data['display_name'],  # not location, 
                group_name=self.cleaned_data['group_name'],
                display_name=self.cleaned_data['display_name'],
                group_type=self.cleaned_data['group_type'],
                level='member',
                user=user,
                description=self.cleaned_data['description'],
                address=self.cleaned_data['address'],
                permission_prototype=self.cleaned_data['permissions_set'],
            )

        group.save()
        return group
Esempio n. 2
0
def get_or_create(group_name=None, display_name=None, place=None, level=None, user=None, 
                  group_type='interest', description='', permission_prototype='public', address='') :
    """get or create a group
    """
    # note : we can't use get_or_create for TgGroup, because the created date clause won't match on a different day
    # from the day the record was created.

    if not user:
        raise TypeError("We must have a user to create a group, since otherwise it will be inaccessible")
    if not place:
        place = get_or_create_root_location()

    xs = TgGroup.objects.filter(group_name=group_name)
    if len(xs) > 0 :
        group = xs[0]
        created = False
    else :
        created = True
        group = TgGroup(group_name=group_name, display_name=display_name, level=level, 
                        place=place, description=description, group_type=group_type, address=address)
        group.save()

        group_post_create(group, user, permission_prototype)

    return group, created
def patch_in_profiles():
    """create profiles and setup security hubspace users 
    """

    site_members_group = get_all_members_group()
    site_members = site_members_group.users.all()

    users = User.objects.all()
    for user in users:
        if user not in site_members and user.username != 'anon':
            site_members_group.users.add(user)
        if not user.homeplace :
            user.homeplace = get_or_create_root_location()
            user.save()
            print "%s at %s" % (user.username, user.homeplace)

    users = User.objects.filter(profile__isnull=True)
    no_of_users = users.count()

    for user in users:
        print user.username
        create_reference(User, user)
        setup_user_security(user,'public')
        profile = user.create_Profile(user, user=user)
        profile.save()
        print `profile`

    print "patched %s users to have profiles" % str(no_of_users)
Esempio n. 4
0
    def save(self, user, site):

        if not self.cleaned_data['is_hub'] :
            place = get_or_create_root_location()
            group = site.create_TgGroup(
                group_name=self.cleaned_data['group_name'],
                display_name=self.cleaned_data['display_name'],
                group_type = self.cleaned_data['group_type'],
                level = 'member',
                user = user,
                description = self.cleaned_data['description'],
                permission_prototype = self.cleaned_data['permissions_set'],
                place = place,
                )
        else :
            group = site.create_hub(
                location_name = self.cleaned_data['display_name'], # not location, 
                group_name=self.cleaned_data['group_name'],
                display_name=self.cleaned_data['display_name'],
                group_type = self.cleaned_data['group_type'],
                level = 'member',
                user = user,
                description = self.cleaned_data['description'],
                address = self.cleaned_data['address'],
                permission_prototype = self.cleaned_data['permissions_set'],
                )

        group.save()
        return group
Esempio n. 5
0
def on_user_change(request, data):
    print "in on_user_changed"
    u = User.objects.plus_get(request.user, id=data['id'])

    if not u.homehub or u.homehub.place != u.homeplace:
        from apps.plus_permissions.default_agents import get_or_create_root_location, get_all_members_group
        if u.homeplace == get_or_create_root_location():
            u.homehub = get_all_members_group()
        else:
            u.homehub = TgGroup.objects.get(place=u.homeplace, level='member')

    u.save()
    u.post_save()
    print "user %s was changed by an external application" % u.username
Esempio n. 6
0
def on_user_change(request, data) :
    print "in on_user_changed"
    u = User.objects.plus_get(request.user, id=data['id'])

    if not u.homehub or u.homehub.place != u.homeplace :
        from apps.plus_permissions.default_agents import get_or_create_root_location, get_all_members_group
        if u.homeplace == get_or_create_root_location() :
            u.homehub = get_all_members_group()
        else :
            u.homehub = TgGroup.objects.get(place=u.homeplace,level='member')

    u.save()
    u.post_save()
    print "user %s was changed by an external application" % u.username
Esempio n. 7
0
    def save(self, user, site):
        if not self.cleaned_data['is_hub'] :
            place = get_or_create_root_location()
        else :
            place,created = Location.objects.get_or_create(name=self.cleaned_data['location'])

        group = site.create_TgGroup(
            group_name=self.cleaned_data['group_name'],
            display_name=self.cleaned_data['display_name'],
            group_type = self.cleaned_data['group_type'],
            level = 'member',
            user = user,
            description = self.cleaned_data['description'],
            permission_prototype = self.cleaned_data['permissions_set'],
            place = place,
            )
        group.save()
        return group
Esempio n. 8
0
def get_or_create(group_name=None, display_name=None, place=None, level=None, user=None, 
                  group_type='interest', description='', permission_prototype='public') :
    """get or create a group
    """
    # note : we can't use get_or_create for TgGroup, because the created date clause won't match on a different day
    # from the day the record was created.
    
    if not user:
        raise TypeError("We must have a user to create a group, since otherwise it will be inaccessible")
    if not place:
        place = get_or_create_root_location()


    xs = TgGroup.objects.filter(group_name=group_name)
    if len(xs) > 0 :
        group = xs[0]
        created = False
    else :
        created = True
        group = TgGroup(group_name=group_name, display_name=display_name, level=level, 
                        place=place, description=description, group_type=group_type)
        group.save()

        if level == 'member':
            admin_group, created = TgGroup.objects.get_or_create(
                group_name=group_name + "_hosts", 
                display_name=display_name + " Hosts", 
                level='host',
                place=place,
                user=user, 
                description="Admin Group for %s" % display_name, 
                )

            setup_group_security(group, group, admin_group, user, permission_prototype)
        elif level == 'host':
            setup_group_security(group, group, group, user, 'private')

            if group.group_name != "all_members_hosts" :
                group.add_member(get_all_members_group().get_admin_group())

    return group, created
Esempio n. 9
0
def get_or_create(group_name=None,
                  display_name=None,
                  place=None,
                  level=None,
                  user=None,
                  group_type='interest',
                  description='',
                  permission_prototype='public',
                  address=''):
    """get or create a group
    """
    # note : we can't use get_or_create for TgGroup, because the created date clause won't match on a different day
    # from the day the record was created.

    if not user:
        raise TypeError(
            "We must have a user to create a group, since otherwise it will be inaccessible"
        )
    if not place:
        place = get_or_create_root_location()

    xs = TgGroup.objects.filter(group_name=group_name)
    if len(xs) > 0:
        group = xs[0]
        created = False
    else:
        created = True
        group = TgGroup(group_name=group_name,
                        display_name=display_name,
                        level=level,
                        place=place,
                        description=description,
                        group_type=group_type,
                        address=address)
        group.save()

        group_post_create(group, user, permission_prototype)

    return group, created
Esempio n. 10
0
            user = User.objects.get(username=username)
        except :
            user = User.objects.get(email_address=email)
    
    user.set_password('password')
    if description : 
        user.description = description
    elif biography :
        user.description = biography

    if not user.homeplace :
        if location :
            p,flag = Location.objects.get_or_create(name=location)
            user.homeplace = p
        else :
            user.homeplace = get_or_create_root_location()
    
    if " " in fullname :
        first, last = fullname.rsplit(' ',1)
    elif "." in fullname :
        first, last = fullname.rsplit('.',1)
    else :
        first = fullname
        last = ''        

    user.first_name = first[:30]
    user.last_name = last[:30]
    user.psn_id = psn_id

    user.save()
Esempio n. 11
0
from apps.profiles.models import Profile
from apps.plus_permissions.default_agents import get_or_create_root_location, get_virtual_members_group

rootloc = get_or_create_root_location()
virtual_members = get_virtual_members_group()

for p in Profile.objects.all() :
    print p.user.username, p.first_name.encode('utf-8'), p.last_name.encode('utf-8'), p.homehub,
    if p.homeplace : 
        print p.homeplace.name
    else :
        print
    if not p.homehub :
        if p.homeplace != rootloc:
            # we can't currently infer from, say, Nepal to Asia
            print "not virtual ... "
        else :
            print "virtual "
            virtual_members.add_member(p.user)
            p.homehub = virtual_members
            p.save()
            p.user.save()
Esempio n. 12
0
from django.contrib.auth.models import User
from apps.plus_permissions.default_agents import get_all_members_group, get_virtual_members_group, get_or_create_root_location

default_home = get_all_members_group()
default_home.location = get_or_create_root_location()

virtual_group = get_virtual_members_group()


def patch_home_hubs():
    for u in User.objects.all():
        if (not u.homehub) or (u.homehub == virtual_group):
            u.homehub = default_home
            default_home.join(u)
            if not u.homeplace:
                u.homeplace = u.homehub.location
            print u.username, u.homeplace.name, u.homehub
            u.save()


patch_home_hubs()
Esempio n. 13
0
from django.contrib.auth.models import User
from apps.plus_permissions.default_agents import get_all_members_group, get_virtual_members_group, get_or_create_root_location

default_home = get_all_members_group()
default_home.location = get_or_create_root_location()

virtual_group = get_virtual_members_group()

def patch_home_hubs() :
    for u in User.objects.all() :
        if (not u.homehub) or (u.homehub == virtual_group):
            u.homehub = default_home
            default_home.join(u)
            if not u.homeplace :
                u.homeplace = u.homehub.location
            print u.username, u.homeplace.name, u.homehub
            u.save()

patch_home_hubs()
Esempio n. 14
0
def patch_in_profiles():
    """create profiles and setup security hubspace users 
    """
    site_members_group = get_all_members_group()
    all_members_hosts = site_members_group.get_admin_group()
    site_members = site_members_group.users.all()
    root_location = get_or_create_root_location()
    
    def patch_user(user):
        print "%s at %s" % (user.username, user.homeplace)
        
        if user not in site_members and user.username != 'anon':
            site_members_group.users.add(user)
        if user.homeplace:
            user.homehub = user.homeplace.tggroup_set.get(level='member')
        else:
            user.homeplace = root_location
            user.homehub = site_members_group
        
        user.save()
        create_reference(User, user)

        if user.active:
            if user.public_field:
                setup_user_security(user,'public')
            else:
                setup_user_security(user,'members_only')
        else:
            setup_user_security(user,'inactive')
            # inactive users should NOT be public...
            if user.public_field:
                user.public_field = 0
                user.save()

        if not user.hostinfo_set.count():
            hi = user.create_HostInfo(user, user=user)
            hi.save()

        if not user.public_field:
            user.public_field = 0 # its sometimes NULL atm
        user.save()
        profile = user.create_Profile(user, user=user)
        profile.save()

    users = User.objects.all().order_by('id')
    cnt = User.objects.count()
    batch_size = 50
    start = 0
    end = 50
    all = set([])
    def process_user_slice(users):
        for user in users:    
            patch_user(user)

    from threading import Thread
    while True:
        # memory wasn't getting released in the loop...no idea why, so I decided to batch it in 100 user threads which we wait to rejoin before processing another batch...appears to work in keeping mem usage down
        t = Thread(target=process_user_slice, args=[users[start:end]])
        t.start()
        t.join()
        if end == cnt:
            break
        start = end
        end = min(end + batch_size, cnt)

    print "patched %s users to have profiles" % str(users.count())
Esempio n. 15
0
# run from django manage as in 
# python manage.py execfile psn_import/group.py

import pickle
from apps.plus_groups.models import TgGroup, Location
from apps.plus_lib.utils import make_name
from apps.plus_permissions.default_agents import get_admin_user, get_site, get_or_create_root_location

root = get_or_create_root_location()

def import_group(f_name, group_type, fn_place) :
    groups = pickle.load(open(f_name))
    admin = get_admin_user()
    site = get_site(admin)
    for g in groups:
        print g.keys()
    #print g['groupname'], g['body'], g['description'],g['joinpolicy']
        if g['joinpolicy']== 'open' :
            permission_prototype='public'
        else :
            permission_prototype='private'

        description = ""
        if g['description'] :
            description = description + g['description']
        if g['body'] :
            description = description + g['body']
        if description == "" :
            description = 'About this group'

        group_name = make_name(g['groupname'])
Esempio n. 16
0
def group_place(dict) :
    return get_or_create_root_location()
Esempio n. 17
0
def import_user(u):
    print u['uid'], u['username']
    username = u['username']
    description = u['description']
    roles = u['roles']
    fullname = u['fullname'].strip()
    biography = u['biography']
    email = u['email']
    portrait = u['portraitfile'].split('/')[-1]
    psn_id = u['uid']
    location = u['location']

    if not user_exists(username, email):
        user = create_user(username, email_address=email, password='******')
    else:
        user = User.objects.get(username=username)

    user.set_password('password')
    if description:
        user.description = description
    elif biography:
        user.description = biography

    if not user.homeplace:
        if location:
            p, flag = Location.objects.get_or_create(name=location)
            user.homeplace = p
        else:
            user.homeplace = get_or_create_root_location()

    if " " in fullname:
        first, last = fullname.rsplit(' ', 1)
    elif "." in fullname:
        first, last = fullname.rsplit('.', 1)
    else:
        first = fullname
        last = ''

    user.first_name = first[:30]
    user.last_name = last[:30]
    user.psn_id = psn_id
    c = 1
    email2 = email
    while (email_exists(email2)):
        print email2
        email2 = '%s%s' % (c, email)
        c = c + 1
    user.email = email2
    user.save()

    f = ImageFile(open('mhpss_export/user_images/%s' % portrait), 'rb')
    if f.size == 1357:
        return  # image is plone default ... we don't want it

    path = avatar_file_path(target=user, filename=portrait)

    avatar = Avatar(
        target=user.get_ref(),
        primary=True,
        avatar=path,
    )

    avatar.save()
    new_file = avatar.avatar.storage.save(path, f)
    avatar.save()
Esempio n. 18
0
def import_user(u):
    print u['uid'], u['username']
    username = u['username']
    description = u['description']
    roles = u['roles']
    fullname = u['fullname'].strip() 
    biography = u['biography']
    email = u['email']
    portrait = u['portraitfile'].split('/')[-1]
    psn_id = u['uid']
    location = u['location']
    
    if not user_exists(username, email):
        user = create_user(username, email_address=email, password='******')
    else:
        user = User.objects.get(username=username)
    
    user.set_password('password')
    if description : 
        user.description = description
    elif biography :
        user.description = biography

    if not user.homeplace :
        if location :
            p,flag = Location.objects.get_or_create(name=location)
            user.homeplace = p
        else :
            user.homeplace = get_or_create_root_location()
    
    if " " in fullname :
        first, last = fullname.rsplit(' ',1)
    elif "." in fullname :
        first, last = fullname.rsplit('.',1)
    else :
        first = fullname
        last = ''        

    user.first_name = first[:30]
    user.last_name = last[:30]
    user.psn_id = psn_id
    c = 1
    email2 = email
    while (email_exists(email2)) :
        print email2
        email2 = '%s%s'%(c,email)
        c=c+1
    user.email = email2
    user.save()

    f = ImageFile(open('mhpss_export/user_images/%s'%portrait),'rb')
    if f.size == 1357 :
        return # image is plone default ... we don't want it

    path = avatar_file_path(target=user, filename=portrait)
 
    avatar = Avatar(
        target = user.get_ref(),
        primary = True,
        avatar = path,
        )

    avatar.save()
    new_file = avatar.avatar.storage.save(path, f)
    avatar.save()
Esempio n. 19
0
def group_place(dict) :
    return get_or_create_root_location()