Ejemplo n.º 1
0

# Class to update the student's TopicProgress
class TopicProgressUpdate(Resource):
    method_decorators = [
        roles_accepted("Student"), topic_exists, module_exists
    ]

    # Function to update the student's completed module
    @module_is_complete
    @module_in_inprogress
    def put(self, topic_id, module_id):
        user_data = session["profile"]
        student = Student.query.get(user_data["student_id"])
        module = Module.query.get(module_id)
        student.completed_modules.append(module)
        student.inprogress_modules.remove(module)

        db.session.commit()

        return {
            "message": "Successfully updated student completed modules"
        }, 202


api.add_resource(TopicProgress, "/topics/<int:topic_id>/progress")
api.add_resource(TopicProgressAdd,
                 "/topics/<int:topic_id>/progress/<int:module_id>/add")
api.add_resource(TopicProgressUpdate,
                 "/topics/<int:topic_id>/progress/<int:module_id>")
Ejemplo n.º 2
0
from flask import render_template
from flask import redirect
from flask import send_from_directory
from backend import app
from backend import rest
from backend import api
import os
import logging


logger = logging.getLogger(__name__)

api.add_resource(rest.Users, '/users')
api.add_resource(rest.User, '/users/<string:username>')
# api.add_resource(rest.ChangePassword,
#                  '/users/<string:username>/set_password')
# api.add_resource(rest.ResetPassword,
# '/users/<string:username>/reset_password')
api.add_resource(rest.Groups, '/groups')
api.add_resource(rest.Group, '/groups/<string:group_name>')
api.add_resource(rest.Images, '/images')
api.add_resource(rest.Image, '/images/<string:id>')
api.add_resource(rest.Sessions, '/sessions')
api.add_resource(rest.Session, '/sessions/<string:session_id>')
api.add_resource(rest.Computers, '/computers')
api.add_resource(rest.Computer, '/computers/<string:computer_id>')
api.add_resource(rest.Bookings, '/bookings')
api.add_resource(rest.Booking, '/bookings/<string:booking_id>')


@app.route('/')
Ejemplo n.º 3
0
from backend import api, resources, app
from random import randint

import requests
from flask import render_template, jsonify


@app.route('/api/random')
def random_number():
    response = {'randomNumber': randint(1, 100)}
    return jsonify(response)


@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
    if app.debug:
        return requests.get('http://localhost:8080/{}'.format(path)).text
    return render_template("index.html")


api.add_resource(resources.UserRegistration, '/api/registration')
api.add_resource(resources.UserLogin, '/api/login')
api.add_resource(resources.AuditCheck, '/api/audit')
Ejemplo n.º 4
0
        student.inprogress_topics.append(topic)
        student.incomplete_topics.remove(topic)

        db.session.commit()

        return {"message": "Topic added!"}, 201


# Class to update a track progress
class TrackProgressUpdate(Resource):
    method_decorators = [roles_accepted("Student"), topic_exists]

    # Function to update the student's completed topic
    @can_complete_topic
    @has_completed_topic
    def put(self, topic_id):
        user_data = session["profile"]
        student = Student.query.get(user_data["student_id"])
        topic = Topic.query.get(topic_id)
        student.completed_topics.append(topic)
        student.inprogress_topics.remove(topic)

        db.session.commit()

        return {"message": "Student topic successfully updated!"}


api.add_resource(TrackProgress, "/tracks/<int:track_id>/progress")
api.add_resource(TrackProgressAdd, "/tracks/progress/<int:topic_id>/add_topic")
api.add_resource(TrackProgressUpdate, "/tracks/progress/<int:topic_id>")
Ejemplo n.º 5
0
        db.session.commit()

        return {"message": "Activity successfully updated"}, 200

    # Function to delete a activity!!
    @activity_exists_in_github
    def delete(self):
        data = request.get_json()
        activity = Activity.query.filter_by(filename=data["filename"]).first()

        db.session.delete(activity)
        db.session.commit()

        return {"message": "Activity successfully deleted"}, 200


# This class is used to get a specific activity based on id
class ActivityGetSpecific(Resource):
    method_decorators = [user_session_exists, activity_exists]

    def get(self, activity_id):
        activity = Activity.query.get(activity_id)
        activity.cards.sort(key=lambda x: x.order)

        return ActivitySerializer(activity).data


# Creates the routes for the classes
api.add_resource(ActivityCRUD, "/activities")
api.add_resource(ActivityGetSpecific, "/activities/<int:activity_id>")
Ejemplo n.º 6
0
        user_data = session["profile"]
        checkpoint_prog = CheckpointProgress.query.filter_by(
            checkpoint_id=checkpoint_id,
            student_id=user_data["student_id"]).first()

        return get_checkpoint_data(checkpoint_prog)

    # Function to return data on a single checkpoint
    @checkpoint_progress_exist
    @valid_checkpoint_progress_data
    @multiple_choice_is_completed
    def put(self, checkpoint_id):
        data = request.form
        user_data = session["profile"]
        checkpoint_prog = CheckpointProgress.query.filter_by(
            checkpoint_id=checkpoint_id,
            student_id=user_data["student_id"]).first()
        fill_in_checkpoint_progress(data, checkpoint_prog)

        db.session.commit()
        is_activity_completed(checkpoint_prog.activity_progress_id,
                              checkpoint_prog.student_id)
        db.session.commit()

        return get_checkpoint_data(checkpoint_prog)


# Creates the routes for the classes
api.add_resource(CheckpointProgressSubmit,
                 "/checkpoints/<int:checkpoint_id>/progress")
Ejemplo n.º 7
0
# This class is used to delete an badge with a POST request
class BadgeDelete(Resource):
    method_decorators = [badge_delete]

    # Function to delete a badge!!
    def post(self):
        contentful_data = request.get_json()
        badge = Badge.query.filter_by(
            contentful_id=contentful_data["entityId"]).first()

        db.session.delete(badge)
        db.session.commit()

        return {"message": "Badge successfully deleted"}, 200


# Function to get a specific Badge based on badge id
class BadgeGetSpecific(Resource):
    method_decorators = [badge_exists, user_session_exists]

    def get(self, badge_id):
        badge = Badge.query.get(badge_id)

        return badge_schema.dump(badge)


# Creates the routes for the classes
api.add_resource(BadgeCRUD, "/badges")
api.add_resource(BadgeDelete, "/badges/delete")
api.add_resource(BadgeGetSpecific, "/badges/<int:badge_id>")
Ejemplo n.º 8
0
class CardGetHints(Resource):
    method_decorators = [
        user_session_exists,
        roles_accepted("Student"), activity_prog_exists, card_exists,
        card_exists_in_activity
    ]

    # Function to unlock the next card
    # @card_is_unlockable
    def put(self, activity_id, card_id):
        user_data = session["profile"]
        card = Card.query.get(card_id)
        student_activity_prog = ActivityProgress.query.filter_by(
            student_id=user_data["student_id"],
            activity_id=activity_id).first()
        unlock_card(student_activity_prog, card)
        student_activity_prog.last_card_unlocked = card.id
        db.session.commit()
        is_activity_completed(student_activity_prog.id,
                              user_data["student_id"])
        db.session.commit()

        return {"message": "Card successfully updated"}, 200


# Creates the routes for the classes
api.add_resource(CardCRUD, "/cards")
api.add_resource(CardGetSpecific, "/cards/<int:card_id>")
api.add_resource(CardGetHints,
                 "/activities/<int:activity_id>/cards/<int:card_id>")
Ejemplo n.º 9
0
                "suggested_activity"] = update_student_suggested_activity(
                    student)
            student.meta.user.last_seen = datetime.utcnow()
            db.session.commit()
        else:
            student_data = StudentSerializer(student).data
            student_data[
                "suggested_activity"] = update_student_suggested_activity(
                    student)

        return student_data

    # Function to edit student_data
    @is_same_student
    @valid_update_data
    def put(self, student_id):
        data = request.get_json()
        student = Student.query.get(student_id)
        student.suggested_activity_id = data["suggested_activity"]["id"]
        student.suggested_module_id = data["suggested_activity"]["module_id"]
        student_data = StudentSerializer(student).data
        student_data["suggested_activity"] = data["suggested_activity"]
        db.session.commit()

        return student_data


# Creates the routes for the classes
api.add_resource(StudentData, "/students/<int:student_id>")
api.add_resource(StudentClassroom, "/students/classrooms")
Ejemplo n.º 10
0
    # Function to edit a criteria
    @valid_criteria_form
    @criteria_exists_in_github
    def put(self):
        data = request.get_json()
        criteria = Criteria.query.filter_by(
            checkpoint_id=data["checkpoint_id"],
            criteria_key=data["criteria_key"]).first()
        edit_criteria(criteria, data)

        db.session.commit()

        return {"message": "Criteria successfully updated"}, 200

    # Function to delete a criteria
    @criteria_exists_in_github
    def delete(self):
        data = request.get_json()
        criteria = Criteria.query.filter_by(
            checkpoint_id=data["checkpoint_id"],
            criteria_key=data["criteria_key"]).first()

        db.session.delete(criteria)
        db.session.commit()

        return {"message": "Criteria successfully deleted"}, 200


# Creates the routes for the classes
api.add_resource(CriteriaCRUD, "/criteria")
Ejemplo n.º 11
0
        db.session.commit()

        return {"message": "MCChoice successfully updated"}, 200

    # Function to delete a mc_choice!!
    @mc_choice_exists_in_github
    def delete(self):
        data = request.get_json()
        mc_choice = get_mc_choice(data)

        db.session.delete(mc_choice)
        db.session.commit()

        return {"message": "MCChoice successfully deleted"}, 200


# Function to get a specific MCChoice based on mc_choice id
class MCChoiceGetSpecific(Resource):
    method_decorators = [user_session_exists, mc_choice_exists]

    def get(self, mc_choice_id):
        mc_choice = MCChoice.query.get(mc_choice_id)

        return mc_choice_schema.dump(mc_choice)


# Creates the routes for the classes
api.add_resource(MCChoiceCRUD, "/mc_choices")
api.add_resource(MCChoiceGetSpecific, "/mc_choices/<int:mc_choice_id>")
Ejemplo n.º 12
0
    method_decorators = [user_session_exists, event_exists]

    # Function to let a user rsvp for an event
    @has_rsvp
    def put(self, event_id):
        user_data = session["profile"]
        user = User.query.get(user_data["user_id"])
        event = Event.query.get(event_id)
        event.rsvp_list.append(user)
        db.session.commit()

        return {"message": user.name + " has RSVP'd for " + event.name}, 201

    # Function to let a user leave an event
    @in_rsvp
    def delete(self, event_id):
        user_data = session["profile"]
        user = User.query.get(user_data["user_id"])
        event = Event.query.get(event_id)
        event.rsvp_list.remove(user)
        db.session.commit()

        return {"message": "Successfully left the RSVP list"}, 200


# Creates the routes for the classes
api.add_resource(EventCRUD, "/events/<int:event_id>")
api.add_resource(EventCreate,
                 "/organizations/<int:organization_id>/events/create")
api.add_resource(EventJoin, "/events/<int:event_id>/rsvp")
Ejemplo n.º 13
0
from backend.users.schemas import UserSerializer
from backend.models import User
from flask import Blueprint, session
from flask_restful import Resource

# Blueprint for users
user_bp = Blueprint("user", __name__)


# Class to handle information regarding the User model
class UserData(Resource):
    method_decorators = [user_session_exists, user_exists]

    def get(self, user_id):
        user = User.query.get(user_id)

        return UserSerializer(user).data


# Class to return the user meta data
class MetaData(Resource):
    def get(self):
        if "profile" in session:
            return session["profile"]
        else:
            return {}, 401


api.add_resource(UserData, "/users/<int:user_id>")
api.add_resource(MetaData, "/meta")
Ejemplo n.º 14
0
        }, 200


# Class to handle the activity progress' hints
class ActivityProgressHints(Resource):
    method_decorators = [
        user_session_exists,
        roles_accepted("Student"), activity_exists, hint_exists
    ]

    # Function to unlock a hint by its hint_id
    @activity_prog_exists
    def put(self, activity_id, hint_id):
        user_data = session["profile"]
        student_activity_prog = ActivityProgress.query.filter_by(
            student_id=user_data["student_id"],
            activity_id=activity_id).first()
        hint = Hint.query.get(hint_id)
        unlock_message = unlock_hint(student_activity_prog, hint)

        db.session.commit()

        return {"message": unlock_message}, 200


# Creates the routes for the classes
api.add_resource(ActivityProgressUpdate,
                 "/activities/<int:activity_id>/progress")
api.add_resource(ActivityProgressHints,
                 "/activities/<int:activity_id>/hints/<int:hint_id>")
Ejemplo n.º 15
0
        db.session.commit()

        return {"message": "Track successfully deleted"}, 200


# Class to get all tracks
class TrackFetchAll(Resource):
    method_decorators = [user_session_exists]

    # Function to get all tracks
    def get(self):
        tracks = Track.query.all()

        return tracks_schema.dump(tracks)


# Function to get a specific Track based on track id
class TrackGetSpecific(Resource):
    method_decorators = [user_session_exists, track_exists]

    def get(self, track_id):
        track = Track.query.get(track_id)

        return track_schema.dump(track)


# Creates the routes for the classes
api.add_resource(TrackCRUD, "/tracks")
api.add_resource(TrackFetchAll, "/tracks/all")
api.add_resource(TrackGetSpecific, "/tracks/<int:track_id>")
Ejemplo n.º 16
0
class HintGetSpecific(Resource):
    method_decorators = [user_session_exists, hint_exists]

    def get(self, hint_id):
        hint = Hint.query.get(hint_id)

        return hint_schema.dump(hint)


# Function to handle data on HintStatus
class HintStatusData(Resource):
    method_decorators = [user_session_exists, hint_exists]

    def get(self, hint_id):
        user_data = session["profile"]
        hint = Hint.query.get(hint_id)
        activity_id = get_activity_id(hint)
        activity_prog = ActivityProgress.query.filter_by(
            student_id=user_data["student_id"],
            activity_id=activity_id).first()
        hint_status = HintStatus.query.filter_by(
            activity_progress_id=activity_prog.id, hint_id=hint_id).first()

        return hint_status_schema.dump(hint_status)


# Creates the routes for the classes
api.add_resource(HintCRUD, "/hints")
api.add_resource(HintGetSpecific, "/hints/<int:hint_id>")
api.add_resource(HintStatusData, "/hints/<int:hint_id>/progress")
Ejemplo n.º 17
0
        db.session.commit()

        return {"message": "Topic successfully updated"}, 200

    # Function to delete a topic!!
    @topic_exists_in_github
    def delete(self):
        data = request.get_json()
        topic = Topic.query.filter_by(filename=data["filename"]).first()

        db.session.delete(topic)
        db.session.commit()

        return {"message": "Topic successfully deleted"}, 200


# Function to get a specific Topic based on topic id
class TopicGetSpecific(Resource):
    method_decorators = [user_session_exists, topic_exists]

    def get(self, topic_id):
        topic = Topic.query.get(topic_id)

        return TopicSerializer(topic).data


# Creates the routes for the classes
api.add_resource(TopicCRUD, "/topics")
api.add_resource(TopicGetSpecific, "/topics/<int:topic_id>")
Ejemplo n.º 18
0
        db.session.commit()

        return {"message": "Module successfully updated"}, 200

    # Function to delete a module!!
    @module_exists_in_github
    def delete(self):
        data = request.get_json()
        module = Module.query.filter_by(filename=data["filename"]).first()

        db.session.delete(module)
        db.session.commit()

        return {"message": "Module successfully deleted"}, 200


# Function to get a specific Module based on module id
class ModuleGetSpecific(Resource):
    method_decorators = [user_session_exists, module_exists]

    def get(self, module_id):
        module = Module.query.get(module_id)

        return module_schema.dump(module)


# Creates the routes for the classes
api.add_resource(ModuleCRUD, "/modules")
api.add_resource(ModuleGetSpecific, "/modules/<int:module_id>")
Ejemplo n.º 19
0
        teacher = Teacher.query.get(teacher_id)

        return TeacherSerializer(teacher).data


# Class to grade the Student's assignments
class TeacherAssignments(Resource):
    method_decorators = [user_session_exists, roles_required("Teacher")]

    # This route is used to grade an activity
    @activity_prog_grading_format
    @submitted_activity_prog_exist
    @is_activity_graded
    def put(self, activity_id):
        data = request.get_json()
        activity_progress = ActivityProgress.query.filter_by(
            activity_id=activity_id, student_id=data["student_id"]).first()
        grade_activity(activity_progress, data)
        complete_modules(activity_progress)
        db.session.commit()

        # send_graded_activity_email(activity_progress.student.username)
        # pusher_activity(activity_progress)

        return {"message": "Student Activity has been graded"}, 200


# Creates the routes for the classes
api.add_resource(TeacherAssignments, "/teachers/<int:activity_id>/grade")
api.add_resource(TeacherFetchData, "/teachers/<int:teacher_id>")
Ejemplo n.º 20
0
        db.session.commit()

        return {"message": "Concept successfully updated"}, 200

    # Function to delete a concept!!
    @concept_exists_in_github
    def delete(self):
        data = request.get_json()
        concept = Concept.query.filter_by(filename=data["filename"]).first()

        db.session.delete(concept)
        db.session.commit()

        return {"message": "Concept successfully deleted"}, 200


# Function to get a specific Concept based on concept id
class ConceptGetSpecific(Resource):
    method_decorators = [user_session_exists, concept_exists]

    def get(self, concept_id):
        concept = Concept.query.get(concept_id)

        return concept_schema.dump(concept)


# Creates the routes for the classes
api.add_resource(ConceptCRUD, "/concepts")
api.add_resource(ConceptGetSpecific, "/concepts/<int:concept_id>")
Ejemplo n.º 21
0
module_progresses_bp = Blueprint("module_progresses", __name__)


# Class for module progress
class ModuleProgressData(Resource):
    method_decorators = [roles_required("Student"), module_prog_exists]

    # Function to display a student's module progress
    def get(self, module_id):
        user_data = session["profile"]
        module_progress = ModuleProgress.query.filter_by(module_id=module_id,
                                                         student_id=user_data["student_id"]).first()

        return ModuleProgressSerializer(module_progress).data

    # Function to update a student's completed activities
    @valid_update_data
    @activity_projects_exists
    def put(self, module_id):
        data = request.get_json()
        user_data = session["profile"]
        module_progress = ModuleProgress.query.filter_by(module_id=module_id,
                                                         student_id=user_data["student_id"]).first()
        module_progress.chosen_projects = update_chosen_projects(data["chosen_project_ids"])
        db.session.commit()

        return ModuleProgressSerializer(module_progress).data


api.add_resource(ModuleProgressData, "/modules/<int:module_id>/progress")
Ejemplo n.º 22
0
from flask import render_template
from flask import redirect
from flask import send_from_directory
from backend import app
from backend import rest
from backend import api
import os
import logging

logger = logging.getLogger(__name__)

api.add_resource(rest.Users, '/users')
api.add_resource(rest.User, '/users/<string:username>')
# api.add_resource(rest.ChangePassword,
#                  '/users/<string:username>/set_password')
# api.add_resource(rest.ResetPassword,
# '/users/<string:username>/reset_password')
api.add_resource(rest.Groups, '/groups')
api.add_resource(rest.Group, '/groups/<string:group_name>')
api.add_resource(rest.Images, '/images')
api.add_resource(rest.Image, '/images/<string:id>')
api.add_resource(rest.Sessions, '/sessions')
api.add_resource(rest.Session, '/sessions/<string:session_id>')
api.add_resource(rest.Computers, '/computers')
api.add_resource(rest.Computer, '/computers/<string:computer_id>')
api.add_resource(rest.Bookings, '/bookings')
api.add_resource(rest.Booking, '/bookings/<string:booking_id>')


@app.route('/')
@app.route('/index.html')
Ejemplo n.º 23
0
from backend import app, api

# Controllers Imports
from backend.api.User.Controller.UserController import UserController
from backend.api.Alerts.Controller.AlertsController import AlertsController
from backend.api.Devices.Controller.DevicesController import DevicesController
from backend.api.Monitor.Controller.MonitorController import MonitorController
from backend.api.RecoverPassword.Controller.RecoverPasswordController import RecoverPasswordController
from backend.api.ResultsMetrics.Controller.ResultsMetricsController import ResultsMetricsController
from backend.api.Sensor.Controller.SensorController import SensorController
from backend.api.UserSettings.Controller.UserSettingsController import UserSettingsController
from backend.api.HealthCheck import HealthCheck

# Locals Imports
import backend.constants as const

api.add_resource(AlertsController, '/api/alerts/')
api.add_resource(DevicesController, '/api/devices/')
api.add_resource(MonitorController, '/api/monitor/')
api.add_resource(RecoverPasswordController, '/api/recoverpassword/')
api.add_resource(ResultsMetricsController, '/api/resultsmetrics/')
api.add_resource(SensorController, '/api/sensor/')
api.add_resource(HealthCheck, '/api/')
api.add_resource(UserController, '/api/user/', '/api/user/<int:id_cliente>')
api.add_resource(UserSettingsController, '/api/usersettings/')

if __name__ == '__main__':
    app.run(debug=False, host=const.HOST_DEFAULT, port=const.PORT_DEFAULT)
Ejemplo n.º 24
0
    method_decorators = [user_session_exists, organization_exists]

    # Function to remove a user from an organization
    # Only owners can kick people out
    @owns_organization
    @exist_in_organization
    def delete(self, organization_id):
        data = request.get_json()
        username = data["username"]
        user = User.query.filter_by(username=username).first()
        organization = Organization.query.get(organization_id)
        remove_user(organization, user)

        db.session.commit()

        return {
            "message": "Removed " + user.name + " from " + organization.name
        }, 200


# Creates the routes for the classes
api.add_resource(OrganizationCRUD, "/organizations/<int:organization_id>")
api.add_resource(OrganizationCreate, "/organizations/create")
api.add_resource(OrganizationInviteOwners,
                 "/organizations/<int:organization_id>/invite")
api.add_resource(OrganizationInviteConfirm, "/organizations/<string:token>")
api.add_resource(OrganizationMembership,
                 "/organizations/<int:organization_id>/membership")
api.add_resource(OrganizationRemove,
                 "/organizations/<int:organization_id>/remove")
Ejemplo n.º 25
0
        return {"message": "Checkpoint successfully updated"}, 200

    # Function to delete a checkpoint
    @checkpoint_exists_in_github
    def delete(self):
        data = request.get_json()
        checkpoint = Checkpoint.query.filter_by(
            filename=data["filename"]).first()

        db.session.delete(checkpoint)
        db.session.commit()

        return {"message": "Checkpoint successfully deleted"}, 200


# This class is used to get a specific checkpoint based on id
class CheckpointGetSpecific(Resource):
    method_decorators = [user_session_exists, checkpoint_exists]

    # Function to return data on a single checkpoint
    def get(self, checkpoint_id):
        checkpoint = Checkpoint.query.get(checkpoint_id)

        return checkpoint_schema.dump(checkpoint)


# Creates the routes for the classes
api.add_resource(CheckpointCRUD, "/checkpoints")
api.add_resource(CheckpointGetSpecific, "/checkpoints/<int:checkpoint_id>")
Ejemplo n.º 26
0

@app.before_request
def before_request():
    g.user = None
    if "id" in session:
        g.user = User.query.get(session["id"])


@app.after_request
def after_request(response):
    db.session.remove()
    return response


@github.access_token_getter
def token_getter():
    oauth_user = g.user
    if oauth_user is not None:
        return oauth_user.github_access_token


# Creates the routes for the classes
api.add_resource(Ping, "/ping")
api.add_resource(Protected, "/protected")
api.add_resource(UserIsAdmin, "/isAdmin")
api.add_resource(UserIsStudent, "/isStudent")
api.add_resource(UserIsTeacher, "/isTeacher")
api.add_resource(UserOAuthLoginHandler, "/login")
api.add_resource(UserOAuthLogoutHandler, "/logout")
Ejemplo n.º 27
0
        db.session.commit()

        return {"message": "Step successfully updated"}, 200

    # Function to delete a step!!
    @step_exists_in_github
    def delete(self):
        data = request.get_json()
        step = get_step_from_patent(data)

        db.session.delete(step)
        db.session.commit()

        return {"message": "Step successfully deleted"}, 200


# Function to get a specific Step based on step id
class StepGetSpecific(Resource):
    method_decorators = [user_session_exists, step_exists]

    def get(self, step_id):
        step = Step.query.get(step_id)

        return step_schema.dump(step)


# Creates the routes for the classes
api.add_resource(StepCRUD, "/steps")
api.add_resource(StepGetSpecific, "/steps/<int:step_id>")
Ejemplo n.º 28
0
        if data["ref"] == "refs/heads/master":
            files = get_files(data["commits"])
            files_to_change = files[0]
            files_to_delete = files[1]

            for filename in files_to_delete.keys():
                if filename in files_to_change:
                    files_to_change.pop(filename)

            stored_files = store_files(files_to_change)
            topic_files = stored_files[0]
            module_files = stored_files[1]
            activity_files = stored_files[2]
            concept_files = stored_files[3]
            card_files = stored_files[4]
            checkpoint_files = stored_files[5]
            test_case_files = stored_files[6]
            parse_files(topic_files, module_files, activity_files,
                        concept_files, card_files, checkpoint_files,
                        test_case_files)
            delete_files(files_to_delete)

            if "tracks.json" in files_to_change:
                edit_test_json(files_to_change["tracks.json"])

        return "Github Successfully Synced", 200


api.add_resource(ReceiveMerge, "/merge")