~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/apps/userservice/__init__.py

  • Committer: dcoles
  • Date: 2008-08-10 02:33:32 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1004
Groups: Now you can add people to a group as well as creating groups from the 
/groups page. Note: Still no way of removing people yet and probably should use 
transactions on a few of the database calls (in case creating the repository 
fails).

Show diffs side-by-side

added added

removed removed

Lines of Context:
125
125
# Optional:
126
126
#   nick
127
127
 
 
128
# userservice/get_group_membership
 
129
# Required cap: None
 
130
# Returns two lists. One of people in the group and one of people not in the 
 
131
# group (but enroled in the offering)
 
132
# Required:
 
133
#   groupid
 
134
 
128
135
# userservice/assign_to_group
129
136
# Required cap: CAP_MANAGEGROUPS
130
137
# Assigns a user to a project group
131
 
# Required: loginid, groupid
 
138
# Required: login, groupid
132
139
 
133
140
import os
134
141
import sys
637
644
    if projectsetid is None or groupnm is None:
638
645
        req.throw_error(req.HTTP_BAD_REQUEST,
639
646
            "Required: projectsetid, groupnm")
640
 
    projectsetid = int(projectsetid)
 
647
    try:
 
648
        projectsetid = int(projectsetid)
 
649
    except:
 
650
        req.throw_error(req.HTTP_BAD_REQUEST,
 
651
            "projectsetid must be an int")
641
652
    # Get optional fields
642
653
    nick = fields.getfirst('nick')
643
654
 
705
716
    req.content_type = "text/plain"
706
717
    req.write(response)
707
718
 
 
719
def handle_get_group_membership(req, fields):
 
720
    """ Required cap: None
 
721
    Returns two lists. One of people in the group and one of people not in the 
 
722
    group (but enroled in the offering)
 
723
    Required:
 
724
        groupid, offeringid
 
725
    """
 
726
    # Get required fields
 
727
    groupid = fields.getfirst('groupid')
 
728
    offeringid = fields.getfirst('offeringid')
 
729
    if groupid is None or offeringid is None:
 
730
        req.throw_error(req.HTTP_BAD_REQUEST,
 
731
            "Required: groupid, offeringid")
 
732
    try:
 
733
        groupid = int(groupid)
 
734
    except:
 
735
        req.throw_error(req.HTTP_BAD_REQUEST,
 
736
            "groupid must be an int")
 
737
    try:
 
738
        offeringid = int(offeringid)
 
739
    except:
 
740
        req.throw_error(req.HTTP_BAD_REQUEST,
 
741
            "offeringid must be an int")
 
742
 
 
743
    db = common.db.DB()
 
744
    try:
 
745
        offeringmembers = db.get_offering_members(offeringid)
 
746
        groupmembers = db.get_projectgroup_members(groupid)
 
747
    finally:
 
748
        db.close()
 
749
    
 
750
    # Make sure we don't include members in both lists
 
751
    for member in groupmembers:
 
752
        if member in offeringmembers:
 
753
            offeringmembers.remove(member)
 
754
 
 
755
    response = cjson.encode(
 
756
        {'groupmembers': groupmembers, 'available': offeringmembers})
 
757
 
 
758
    req.content_type = "text/plain"
 
759
    req.write(response)
 
760
 
708
761
def handle_assign_group(req, fields):
709
762
    """ Required cap: CAP_MANAGEGROUPS
710
763
    Assigns a user to a project group
771
824
    "get_enrolments": handle_get_enrolments,
772
825
    "get_active_offerings": handle_get_active_offerings,
773
826
    "get_project_groups": handle_get_project_groups,
 
827
    "get_group_membership": handle_get_group_membership,
774
828
    "create_project_set": handle_create_project_set,
775
829
    "create_project": handle_create_project,
776
830
    "create_group": handle_create_group,