def parseRestoreMsg(msg):
        # Get group name
        parts = msg.split(BackendManager.CMD_MARKER)
        if len(parts) < 2:
            # Nothing to restore
            return None

        # Get groupname
        groupName = parts[0]

        # Get user section, count users, and create group data structure
        userData = parts[1].split(BackendManager.USR_MARKER)
        numUsers = len(userData)-1
        group = PhotoGroup(groupName, numUsers, 0)

        # Get info for each user
        for user in userData:
            splitData = user.split(BackendManager.DATA_MARKER)
            if len(splitData) == 1:
                continue

            # Update group members with stored status
            userName = splitData[0]
            userStatus = splitData[1]
            group.setStatus(userName, userStatus)

        return group
Beispiel #2
0
def login():
    # Logout
    session.pop('username', None)

    if request.method == 'POST':
        # Validate input
        if (request.form['userName'] == ''):
            return redirect(url_for('errorPage', errorMsg="userNotSelected"))
        if (request.form['groupName'] == ''):
            return redirect(url_for('errorPage', errorMsg="groupNotSelected"))

        # Create group if leader
        if request.form['loginType'] == 'Create':
            if (request.form['groupSize'] == ''):
                return redirect(url_for('errorPage', errorMsg="sizeNotSelected"))

            # Trim and get group size
            try:
                groupSize = str(int(request.form['groupSize']))
            except:
                return redirect(url_for('errorPage', errorMsg="groupSizeNotValid"))

            # Create object to store group information
            group = PhotoGroup(request.form['groupName'], groupSize, 0)
            setGroup(group)

            # Create folder for grup images
            groupPath = group.getGroupFSPath()
            if not os.path.exists(groupPath): 
                os.makedirs(groupPath)
            cleanAllFiles(groupPath)

            # Notify backend
            BackendManager.createGroup()

        # Before joining, check group exists
        groupName = request.form['groupName']
        group = getGroup(groupName)
        if (group is None):
            return redirect(url_for('errorPage', errorMsg="nonExistentGroup"))

        # Now check if there are spaces available
        if(not group.isInGroup(request.form['userName'])) and (not group.isSpaceAvailable()):
            return redirect(url_for('errorPage', errorMsg="maxUsersReached"))

        # Setup session, joining group
        userName = request.form['userName']
        session['username'] = userName            
        
        # Depending on status from current Group, redirect to page that the user was before
        if group.isUserSubmitted(userName):
            return redirect(url_for('waitForMontage', groupName=groupName))
        elif group.isUserApproved(userName):
            return redirect(url_for('waitForApproval', groupName=groupName))
        elif group.isUserDone(userName):
            return redirect(url_for('commitMontage', groupName=groupName))
        else:
            # Join group and go to upload page
            group.setStatusReady(userName)
            return redirect(url_for('upload', groupName=groupName))
    else:
        return render_template('login.html')