Exemplo n.º 1
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')