Exemplo n.º 1
0
def projects():
    if 'session_id' not in session:
        return redirect(url_for('auth.auth'))
    projects = Project.get_users_projects()
    invitations = Project.get_users_invitations()
    return render_template('projects.html',
                           projects=projects,
                           invitations=invitations)
Exemplo n.º 2
0
def getActiveProjects() -> list:
    """Get active projects
    """
    cursor = connection.cursor()
    cursor.execute(SQLQueries.ACTIVE_PROJECT_GET)
    queryResult = cursor.fetchall()
    if (len(queryResult) == 0):
        return None
    projectList = []
    for project in queryResult:
        projectData = Project()
        projectData.projectId = project[0]
        projectData.projectName = project[1]
        projectList.append(projectData)
    return projectList
Exemplo n.º 3
0
 def getStudentProject(self, StudentID):
     return [
         Project(tuple) for tuple in
         self._db.execute("""select * from Project where ProjectID = 
             (select ProjectID from Student where StudentID = {id});""".
                          format(id=StudentID)).fetchall()
     ][0]
Exemplo n.º 4
0
def removeUserFromProject(token, userId, projectId):
    """
    <span class="card-title">>This Call will remove a user from a project</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'<br>
        - userId: 0987654321,<br>
        - 'projectId': 1234567890<br>
    <br>
    <br>
    <b>Payload</b><br>
     - NONE
     {<br>
    }<br>
    <br>
    <b>Response</b>
    <br>
    200 - User updated
    <br>
    400 - Bad Request
    """

    requestingUser = get_user_by_token(token)
    if requestingUser is None:
        return bad_request("Bad User Token")

    try:
        userToRemove = User.get_by_id(int(userId))
    except Exception as e:
        return bad_request("Bad id format")


    if userToRemove is None:
        return bad_request("No such user to remove")

    #check project Exists
    project = Project.get_by_id(int(projectId))
    if project is None:
        return bad_request("No such Project!")

    #check if user is owner of project
    if requestingUser.key().id() != project.master_id:
        # check if user want to delete itself
        if requestingUser.key().id() != userToRemove.key().id():
            return forbidden("No permission to delete user")

    try:
        userToRemove.projects_id_list.remove(projectId)
        project.membersId.remove(userToRemove.key().id())
    except Exception as e:
        return bad_request("user is not listed to this project")



    db.put(userToRemove)
    db.put(project)
    db.save
    return Response(response=userToRemove.to_JSON(),
                            status=200,
                            mimetype="application/json")  # Real response!
Exemplo n.º 5
0
def get_stats(user):
    from models.Project import Project
    from models.Message import Message

    labels = ["Commits", "Open Issues Assigned", "Messages", "Unfinished Tasks"]
    data = [0, 0, 0, 0]
    for pid in user.projects_id_list:
        project = Project.get_by_id(int(pid))
        info = json.loads(project.info)
        stats = info["stats"]["micro"]
        p_data = stats["data"]
        p_series = stats["series"]
        try:
            user_index = p_series.index(user.username)
            # adding commits
            data[0] = data[0] + p_data[user_index][0]
            # adding open issues
            data[1] = data[1] + p_data[user_index][1]
        except Exception:
            pass
    messages = Message.all().filter("master_id =", user.key().id())
    for m in messages.run():
        data[2] = data[2] + 1

    # need to do tasks
    ####

    data = [data]
    return {"data": data, "labels": labels}
Exemplo n.º 6
0
def projects_leave():
    if request.method == 'POST':
        if 'session_id' not in session:
            return redirect(url_for('auth.auth'))
        json_body = {"ProjectId": request.form['action']}
        response = Project.leave_project(json_body)
        flash(response['Message'])
    return redirect(url_for('projects.projects'))
Exemplo n.º 7
0
def create_project():
    userInfo = session.get('userProfile')
    name = request.form.get('name', '')
    desc = request.form.get('desc', '')
    start_date = DATE

    new_id = db.session.query(func.max(Project.p_id)).one()
    print(new_id)
    if new_id[0] == None:
        new_id[0] = 0
    project = Project(new_id[0] + 1, name, desc, start_date, 'N/A')
    try:
        project.insert()
    except:
        print(sys.exc_info())
        abort(500)

    return redirect(url_for('get_all_projects'))
Exemplo n.º 8
0
def getDefaultProjects() -> list:
    """Creates default projects as defined in the configuration
    with default task "-".
    
    Returns:
        list -- List of Projects
    """
    projectList = []
    for projectName in DEFAULT_PROJECT:
        project = Project()
        project.projectName = projectName
        taskList = []
        task = Task()
        task.taskName = "-"
        taskList.append(task)
        project.taskList = taskList
        projectList.append(project)
    return projectList
Exemplo n.º 9
0
    def get(self, username):
        """display profile of user with username, if None, display logged in user
        """
        mode = self.request.get('mode')
        upload_url = ""

        if mode == 'add_project':
            template = 'profile/add_project.html'
            upload_url = blobstore.create_upload_url(
                '/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
        elif mode == 'edit_project':
            template = 'profile/edit_project.html'
            upload_url = blobstore.create_upload_url(
                '/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
        elif mode == 'edit':
            template = 'profile/edit.html'
        else:
            template = 'profile/profile.html'

        user = User.get_user(username)

        if not user:
            user = User.save(username, '{}@someplace.com'.format(username),
                             'some long password')

        gravatar = user.avatar_url
        friends = []

        if user:
            all, ic, cc = self.organize_courses_for(user)

            if user.dob:
                dob = user.dob.strftime('%m/%d/%Y')
            else:
                dob = None

            projects = Project.get_projects_by_ids(user.projects)

            context = {
                'user': user,
                'dob': dob,
                'username': username,
                'gravatar': gravatar,
                'friends': friends,
                'friend_btn': False,
                'courses_all': Course.courses_to_dict(),
                'courses_completed': cc,
                'courses_incomplete': ic,
                'projects': projects,
                'upload_url': upload_url,
                'errors': {}
            }

            self.render(template, context)
        else:
            self.redirect('/logout')
Exemplo n.º 10
0
    def get(self, username):
        """display profile of user with username, if None, display logged in user
        """
        mode = self.request.get('mode')
        upload_url = ""

        if mode == 'add_project':
            template = 'profile/add_project.html'
            upload_url = blobstore.create_upload_url('/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
        elif mode == 'edit_project':
            template = 'profile/edit_project.html'
            upload_url = blobstore.create_upload_url('/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
        elif mode == 'edit':
            template = 'profile/edit.html'
        else:
            template = 'profile/profile.html'

           

        user = User.get_user(username)

        if not user:
            user = User.save(username, '{}@someplace.com'.format(username), 'some long password')


        gravatar = user.avatar_url
        friends = []

        

        if user:
            all, ic, cc = self.organize_courses_for(user)

            if user.dob:
                dob = user.dob.strftime('%m/%d/%Y')
            else:
                dob = None

            projects = Project.get_projects_by_ids(user.projects)

            context = {'user': user,
                       'dob': dob,
                       'username': username,
                       'gravatar': gravatar,
                       'friends': friends,
                       'friend_btn': False,
                       'courses_all': Course.courses_to_dict(),
                       'courses_completed': cc,
                       'courses_incomplete': ic,
                       'projects': projects,
                       'upload_url': upload_url,
                       'errors': {}}

            self.render(template, context)
        else:
            self.redirect('/logout')
Exemplo n.º 11
0
def projects_make_public_or_private():
    if request.method == 'POST':
        if 'session_id' not in session:
            return redirect(url_for('auth.auth'))
        json_body = {
            "ProjectId": request.form['action'],
            "Mode": request.form['val']
        }
        response = Project.make_public(json_body)
        flash(response['Message'])
    return redirect(url_for('projects.projects'))
Exemplo n.º 12
0
def browse():
    if 'session_id' not in session:
        return redirect(url_for('auth.auth'))
    search_results = SearchItem.get_search_items(
        {'Parameters': {
            "ProjectName": 'none'
        }})
    projects = Project.get_users_projects()
    return render_template('browse.html',
                           items=search_results,
                           projects=projects,
                           session=session['session_id'])
Exemplo n.º 13
0
def get_user_history(Id):
    userInfo = session.get('userProfile', 'not set')
    if userInfo['role'] !='admin':
        abort(401)
    # Get user details
    user = Users.query.get(Id)
    user = user.format()
    
    # Get all projects of the user
    project = Project.query.join(Map_users_proj, Map_users_proj.p_id==Project.p_id)\
        .add_columns(Project.p_id.label('id'), Project.p_name.label('name'))\
            .filter(Map_users_proj.users_id==Id)

    # Get all the projects
    sql = text("""select p_id,p_name,p_desc,p_start_date, p_end_date from project where p_id
                 not in (select p_id from map_users_proj where users_id ="""+str(Id)+""")""")
    all_project = db.session.execute(sql)
    all_project = [Project.format(p) for p in all_project]

    # Get the tickets of the user/dev/manager
    ticket = ""
    #user submitted tickets
    if user['role']=='user' or user['role']=='manager':
        ticket = Ticket.query.join(Project, Ticket.p_id==Project.p_id)\
            .add_columns(Ticket.t_id.label('id'), Ticket.t_title.label('title'), Project.p_name.label('project'))\
                .filter(Ticket.submitter_email==user['email'])

    #Developer Assigned tickets
    elif user['role']=='dev':
        ticket = Ticket.query.join(Project, Ticket.p_id==Project.p_id)\
                    .add_columns(Ticket.t_id.label('id'), Ticket.t_title.label('title'), Project.p_name.label('project'))\
                    .filter(Ticket.users_id==Id)

    delete_user = False
    if Id > 21 or userInfo['id'] == 1:
        delete_user = True

    data = {
        'users' : [user],
        'projects': project,
        'all_projects': all_project,
        'ticket': ticket,
        'delete_user': delete_user,
        'user_name': userInfo['name'],
        'role': userInfo['role'],
        'page' : 'userDetail'
    }
    return render_template('user-details.html',data=data)
Exemplo n.º 14
0
def projects_create():
    if request.method == 'POST':
        if 'session_id' not in session:
            return redirect(url_for('auth.auth'))

        if 'public' in request.form:
            public = 1
        else:
            public = 0

        json_body = {
            "Name": request.form['projectName'],
            "Desc": request.form['projectDesc'],
            "Public": public
        }

        response = Project.create_project(json_body)
        flash(response['Message'])
    return redirect(url_for('projects.projects'))
Exemplo n.º 15
0
 def to_JSON(self):
     user = User.get_by_id(self.master_id)
     if self.isProject:
         group = Project.get_by_id(self.groupId)
     else:
         group = Course.get_by_id(self.groupId)
     data = {
             'groupId' : self.groupId,
             'message' : self.message,
             'date' : {
                 'year': self.msgDate.year,
                 'month': self.msgDate.month,
                 'day': self.msgDate.day,
                 'hour': self.msgDate.hour,
                 'minute': self.msgDate.minute
             },
             'id' : self.key().id(),
             'master_id' : self.master_id,
             'isProject' : self.isProject,
             'user': json.loads(user.to_JSON()),
             'group': json.loads(group.to_JSON())
     }
     return json.dumps(data)
Exemplo n.º 16
0
def get_dev_project():
    userInfo = session.get('userProfile', 'not set')
    dev_email = userInfo['email']

    if userInfo['role'] != 'dev' and userInfo['role'] != 'manager':
        abort(401)

    #fetch list of projects that the Developer is assigned to using the map table
    #join Project, map_users_proj on project id
    #join map_users_proj, users on user_id
    #The map_users_proj table contains the maping of project to user
    project = Project.query.join(Map_users_proj, Map_users_proj.p_id == Project.p_id)\
        .join(Users, Users.users_id == Map_users_proj.users_id).filter(Users.users_email == dev_email).all()
    project = [Project.format(pro) for pro in project]

    data = {
        'project': project,
        'user_name': userInfo['name'],
        'role': userInfo['role'],
        'notify': notification.notify(userInfo['id']),
        'page': 'projects'
    }
    return render_template('list.html', data=data)
Exemplo n.º 17
0
from application import db
from models.User import User
from models.Subject import Subject
from models.Project import Project
from models.Document import Document


Subject.query.delete()
Project.query.delete()


# CREATE DOMAIN OBJECTS
Engineering = Subject("Engineering")
DataScience = Subject("Data Science")

DigitalAudioEqualizer = Project(title="Digital Audio Equalizer", academic=True,
	subject=Engineering)
FuzzyLogicClusteringAlgorithm = Project(title="Fuzzy Logic Clustering Algorithm",
	academic=False, subject=DataScience)


# ADD AND COMMIT
db.session.add_all([Engineering, DataScience, DigitalAudioEqualizer,
	FuzzyLogicClusteringAlgorithm])
db.session.commit()


# PRINT
print(Subject.query.all())


# CREATE RELATIONSHIPS
Exemplo n.º 18
0
def getUsersByProject(token, projectId):
    """
    <span class="card-title">>This Call will return all users in Project</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'<br>
        - projectId: 123456789
    <br>
    <br>
    <b>Payload</b><br>
     - NONE
    <br>
    <br>
    <b>Response</b>
    <br>
    200 - JSON Example:<br>
    <code>
        {<br>
        'username': '******',<br>
        'name': 'Darth Vader',<br>
        'email': '[email protected],<br>
        'isLecturer': 'True',<br>
        'seToken': 'xxxxxx-xxxxx-xxxxx-xxxxxx',<br>
        'avatar_url': 'http://location.git.com/somthing'<br>
        'isFirstLogin': False,<br>
        'campuses_id_list': [43243532532,5325325325,532532342],<br>
        'courses_id_list': [53523,43432423,432432432432]<br>
        }
    </code>
    <br>
    403 - No User Found
    """
    if token is None:
        return no_content("Token Is Empty, No User Found")

    user = get_user_by_token(token)
    if user is None:
        return bad_request("Bad User Token")

    try:
        project = Project.get_by_id(int(projectId))
    except Exception as e:
        return bad_request("Bad id format")

    if project is None:
        return bad_request("No such Project")

    arr = []

    for u in enumerate(project.membersId):
        u = json.loads(User.get_by_id(int(u)).to_JSON())
        arr.append(dict(u))

    if len(arr) != 0:
            return Response(response=json.dumps(arr),
                            status=200,
                            mimetype="application/json")
    else:
        return Response(response=[],
                        status=200,
                        mimetype="application/json")
Exemplo n.º 19
0
    def post(self, username):
        mode = self.request.get('mode')
        if mode == 'add_project':
            blob_info = None
            fileerror = 'Screenshot is mandatory'
            upload_files = self.get_uploads('screenshot')
            if upload_files:
                blob_info = upload_files[0]
                if 'image' in blob_info.content_type:
                    screenshot = blob_info.key()
                    screenshot_url = images.get_serving_url(screenshot)
                    fileerror = ''
                else:
                    # uploaded file wasn't an images, hence remove from the blobstore
                    blobstore.delete(blob_info.key())
                    fileerror = 'Invalid image type'
            else:
                fileerror = 'Please provide a screenshot of your project (max size: 1MB)'

            title = self.request.get('title').strip()
            titleerror = validate_project_title(title)

            url = self.request.get('url').strip()
            urlerror = validate_project_url(url)

            short_description = self.request.get('short_description').strip()
            sderror = validate_project_short_description(short_description)
            
            if titleerror or urlerror or sderror or fileerror:
                if blob_info and not fileerror:
                    # blob was okay but validation of some other field failed
                    # hence remove it to avoid orphaned entry
                    # also remove the serving url
                    Project.remove_screenshot_blob(blob_info.key())

                user = User.get_user(username)
                template = 'profile/add_project.html'
                upload_url = blobstore.create_upload_url('/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
                context = { 'user': user,
                            'username': username,
                            'title': title,
                            'url': url,
                            'short_description': short_description,
                            'upload_url': upload_url,
                            'titleerror': titleerror,
                            'urlerror': urlerror,
                            'sderror': sderror,
                            'fileerror': fileerror}
                self.render(template, context)
                return
            else:
                user = User.get_user(username)
                project_id = Project.add_project(title=title, screenshot=screenshot,
                    screenshot_url=screenshot_url, url=url, short_description=short_description, 
                    author=user.key)

                User.add_project(username, project_id)
                
        elif mode == 'edit_project':
            blob_info = None
            screenshot = None
            screenshot_url = None
            fileerror = ''

            upload_files = self.get_uploads('screenshot')
            if upload_files:
                blob_info = upload_files[0]
                if 'image' in blob_info.content_type:
                    screenshot = blob_info.key()
                    screenshot_url = images.get_serving_url(screenshot)
                else:
                    # uploaded file wasn't an images, hence remove from the blobstore
                    blobstore.delete(blob_info.key())
                    fileerror = 'Invalid image type'

            project_id = self.request.get('projects_dropdown')

            title = self.request.get('title').strip()
            titleerror = validate_project_title(title)

            url = self.request.get('url').strip()
            urlerror = validate_project_url(url)

            short_description = self.request.get('short_description').strip()
            sderror = validate_project_short_description(short_description)

            if titleerror or urlerror or sderror or fileerror:
                if blob_info and not fileerror:
                    # same as above
                    Project.remove_screenshot_blob(blob_info.key())
                
                user = User.get_user(username)
                projects = Project.get_projects_by_ids(user.projects)
                upload_url = blobstore.create_upload_url('/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
                template = 'profile/edit_project.html'
                context = { 'user': user,
                            'username': username,
                            'title': title,
                            'url': url,
                            'short_description': short_description,
                            'projects': projects,
                            'upload_url': upload_url,
                            'titleerror': titleerror,
                            'urlerror': urlerror,
                            'sderror': sderror,
                            'fileerror': fileerror }
                self.render(template, context)
                return
            else:
                Project.update_project(project_id, title=title, screenshot=screenshot, 
                    screenshot_url=screenshot_url, url=url, short_description=short_description)
        elif mode == 'remove_project':
            project_id = self.request.get('project_id')
            Project.remove_project(project_id)
            User.remove_project(username, project_id)
            
        elif mode == 'edit':
            fields = self.get_params_dict((
                'real_name',
                'email',
                'short_about',
                'dob',
                'tools',
                'password',
                'password_confirm',
                'notify_on_msg'
                ))
            logging.error(fields)

            iclasses = self.request.get_all('classes_inprog')
            cclasses = self.request.get_all('classes_completed')
            fields['iclasses'] = iclasses
            fields['cclasses'] = cclasses
            fields['username'] = username

            user = Key(User, username).get()

            errors = self.clean_user_data(user, **fields)

            context = {
                'errors': errors,
                'user': user
            }

            if not errors:
                user.update(**fields)
                self.redirect('/{}'.format(username))
            else:

                if user.dob:
                    dob = user.dob.strftime('%m/%d/%Y')
                else:
                    dob = None
                all, ic, cc = self.organize_courses_for(user)
                context['courses_all'] = Course.courses_to_dict()
                context['courses_completed'] = cc
                context['courses_incomplete'] = ic
                context['dob'] = dob
                context['username'] = username
                context['gravatar'] = user.avatar_url
                context['friends'] = []
                context['friend_btn'] = False
                context['errors'] = errors
                self.render('profile/edit.html'.format(username), context)
                return
        self.redirect('/'+username)
Exemplo n.º 20
0
def removeUserFromCourse(token, userId, courseId):
    """
    <span class="card-title">>This Call will remove a user from a course</span>
    <br>
    <b>Route Parameters</b><br>
        - seToken: 'seToken'<br>
        - userId: 0987654321,<br>
        - 'courseId': 1234567890<br>
    <br>
    <br>
    <b>Payload</b><br>
     - NONE
     {<br>
    }<br>
    <br>
    <b>Response</b>
    <br>
    200 - User updated
    <br>
    400 - Bad Request
    """

    requestingUser = get_user_by_token(token)
    if requestingUser is None:
        return bad_request("Bad User Token")

    try:
        userToRemove = User.get_by_id(int(userId))
    except Exception as e:
        return bad_request("Bad id format")

    if userToRemove is None:
        return bad_request("No such user to remove")

    #check Course Exists
    course = Course.get_by_id(int(courseId))
    if course is None:
        return bad_request("No such Course!")

    #check if user is owner of Course
    if requestingUser.key().id() != course.master_id:
        # check if user want to delete itself
        if requestingUser.key().id() != userToRemove.key().id():
            return forbidden("No permission to delete user")

    try:
        userToRemove.courses_id_list.remove(courseId)
        course.membersId.remove(userToRemove.key().id())
    except Exception as e:
        return bad_request("user is not listed to this course")

    #remove user from all projects in course
    projects = Project.all().filter("courseId =", course.key().id())
    for p in projects:
        if p.key().id() in userToRemove.projects_id_list:
            userToRemove.projects_id_list.remove(p.key().id())
            p.membersId.remove(userToRemove.key().id())
            db.put(p)


    db.put(userToRemove)
    db.put(course)
    db.save
    return Response(response=userToRemove.to_JSON(),
                            status=200,
                            mimetype="application/json")  # Real response!
Exemplo n.º 21
0
    def post(self, username):
        mode = self.request.get('mode')
        if mode == 'add_project':
            blob_info = None
            fileerror = 'Screenshot is mandatory'
            upload_files = self.get_uploads('screenshot')
            if upload_files:
                blob_info = upload_files[0]
                if 'image' in blob_info.content_type:
                    screenshot = blob_info.key()
                    screenshot_url = images.get_serving_url(screenshot)
                    fileerror = ''
                else:
                    # uploaded file wasn't an images, hence remove from the blobstore
                    blobstore.delete(blob_info.key())
                    fileerror = 'Invalid image type'
            else:
                fileerror = 'Please provide a screenshot of your project (max size: 1MB)'

            title = self.request.get('title').strip()
            titleerror = validate_project_title(title)

            url = self.request.get('url').strip()
            urlerror = validate_project_url(url)

            short_description = self.request.get('short_description').strip()
            sderror = validate_project_short_description(short_description)

            if titleerror or urlerror or sderror or fileerror:
                if blob_info and not fileerror:
                    # blob was okay but validation of some other field failed
                    # hence remove it to avoid orphaned entry
                    # also remove the serving url
                    Project.remove_screenshot_blob(blob_info.key())

                user = User.get_user(username)
                template = 'profile/add_project.html'
                upload_url = blobstore.create_upload_url(
                    '/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
                context = {
                    'user': user,
                    'username': username,
                    'title': title,
                    'url': url,
                    'short_description': short_description,
                    'upload_url': upload_url,
                    'titleerror': titleerror,
                    'urlerror': urlerror,
                    'sderror': sderror,
                    'fileerror': fileerror
                }
                self.render(template, context)
                return
            else:
                user = User.get_user(username)
                project_id = Project.add_project(
                    title=title,
                    screenshot=screenshot,
                    screenshot_url=screenshot_url,
                    url=url,
                    short_description=short_description,
                    author=user.key)

                User.add_project(username, project_id)

        elif mode == 'edit_project':
            blob_info = None
            screenshot = None
            screenshot_url = None
            fileerror = ''

            upload_files = self.get_uploads('screenshot')
            if upload_files:
                blob_info = upload_files[0]
                if 'image' in blob_info.content_type:
                    screenshot = blob_info.key()
                    screenshot_url = images.get_serving_url(screenshot)
                else:
                    # uploaded file wasn't an images, hence remove from the blobstore
                    blobstore.delete(blob_info.key())
                    fileerror = 'Invalid image type'

            project_id = self.request.get('projects_dropdown')

            title = self.request.get('title').strip()
            titleerror = validate_project_title(title)

            url = self.request.get('url').strip()
            urlerror = validate_project_url(url)

            short_description = self.request.get('short_description').strip()
            sderror = validate_project_short_description(short_description)

            if titleerror or urlerror or sderror or fileerror:
                if blob_info and not fileerror:
                    # same as above
                    Project.remove_screenshot_blob(blob_info.key())

                user = User.get_user(username)
                projects = Project.get_projects_by_ids(user.projects)
                upload_url = blobstore.create_upload_url(
                    '/' + username, max_bytes_per_blob=self.MAX_IMG_SIZE)
                template = 'profile/edit_project.html'
                context = {
                    'user': user,
                    'username': username,
                    'title': title,
                    'url': url,
                    'short_description': short_description,
                    'projects': projects,
                    'upload_url': upload_url,
                    'titleerror': titleerror,
                    'urlerror': urlerror,
                    'sderror': sderror,
                    'fileerror': fileerror
                }
                self.render(template, context)
                return
            else:
                Project.update_project(project_id,
                                       title=title,
                                       screenshot=screenshot,
                                       screenshot_url=screenshot_url,
                                       url=url,
                                       short_description=short_description)
        elif mode == 'remove_project':
            project_id = self.request.get('project_id')
            Project.remove_project(project_id)
            User.remove_project(username, project_id)

        elif mode == 'edit':
            fields = self.get_params_dict(
                ('real_name', 'email', 'short_about', 'dob', 'tools',
                 'password', 'password_confirm', 'notify_on_msg'))
            logging.error(fields)

            iclasses = self.request.get_all('classes_inprog')
            cclasses = self.request.get_all('classes_completed')
            fields['iclasses'] = iclasses
            fields['cclasses'] = cclasses
            fields['username'] = username

            user = Key(User, username).get()

            errors = self.clean_user_data(user, **fields)

            context = {'errors': errors, 'user': user}

            if not errors:
                user.update(**fields)
                self.redirect('/{}'.format(username))
            else:

                if user.dob:
                    dob = user.dob.strftime('%m/%d/%Y')
                else:
                    dob = None
                all, ic, cc = self.organize_courses_for(user)
                context['courses_all'] = Course.courses_to_dict()
                context['courses_completed'] = cc
                context['courses_incomplete'] = ic
                context['dob'] = dob
                context['username'] = username
                context['gravatar'] = user.avatar_url
                context['friends'] = []
                context['friend_btn'] = False
                context['errors'] = errors
                self.render('profile/edit.html'.format(username), context)
                return
        self.redirect('/' + username)
Exemplo n.º 22
0
 def getProjects(self):
     return [
         Project(tuple)
         for tuple in self._db.execute("select * from Project").fetchall()
     ]
Exemplo n.º 23
0
 def getProject(self, ProjectID):
     return [
         Project(tuple) for tuple in self._db.execute("""
         select * from Project where ProjectID={id}""".format(
             id=ProjectID)).fetchall()
     ][0]
Exemplo n.º 24
0
 def getProjectsForTeacher(self, TeacherID):
     return [
         Project(tuple) for tuple in self._db.execute("""
                 select * from Project where TeacherID={id};""".format(
             id=TeacherID)).fetchall()
     ]