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
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')