def delete(self, idx, idx1):
        leader_id = idx
        activity_id = idx1
        activity = Activity.objects(activity_id=activity_id).first()

        if activity.leader_id == leader_id:
            Activity.objects(activity_id=activity_id).delete()
            return jsonify("The activity is deleted")
        return jsonify("You do not have authority")
    def post(self, idx, idx1):  # Apply a new activity
        applicant_id = idx
        activity_id = idx1

        # Search if the applicanttion has already existed in
        #  MongoDB collection 'Application'
        applications_exist = Application.objects(applicant_id=applicant_id)
        for application_exist in applications_exist:
            if application_exist.activity_id == activity_id:
                return jsonify("You already applied", 400)

        # Obtain applicant's information from collection 'User'
        user = User.objects(use_id=applicant_id).first()
        applicant_name = user.username

        # Obtain activity information from collection 'Activity'
        activity = Activity.objects(activity_id=activity_id).first()
        activity_name = activity.activity_name

        apply_id = Application.objects.count()
        apply_id += 1
        application = Application(apply_id=apply_id,
                                  applicant_id=applicant_id,
                                  applicant_name=applicant_name,
                                  activity_id=activity_id,
                                  activity_name=activity_name,
                                  status=0)
        application.save()
        return jsonify("Successfully apply", 200)
    def get(self):
        serachByLeader = request.form.get("leader")
        serachByActivity = request.form.get("activity")
        searchString = request.form.get("search")

        if serachByLeader:
            activities = Activity.objects(leader_name__startswith=searchString)
            #return jsonify(activities)
            return jsonify(activities)

        if serachByActivity:
            activities = Activity.objects(
                activity_name__startswith=searchString)

            return jsonify(activities)

        return jsonify(Activity.objects.all())
    def put(self, idx, idx1):
        use_id = idx
        activity_id = int(idx1)
        activity = Activity.objects(activity_id=activity_id).first()
        if activity.leader_name == use_id:
            activity_id = idx1
            activity_name = request.form.get("activity")
            start_date_str = request.form.get("start")
            skills = request.form.get("skills")
            genre = request.form.get("genre")
            description = request.form.get("description")

            if not start_date_str:
                Activity.objects(activity_id=activity_id).update(
                    activity_name=activity_name,
                    genre=genre,
                    skills=skills,
                    description=description)

                return jsonify(Activity.objects(activity_id=activity_id))

            start_date_datetime = datetime.strptime(start_date_str,
                                                    '%Y-%m-%d %H:%M:%S')
            Activity.objects(activity_id=activity_id).update(
                activity_name=activity_name,
                start_date=start_date_datetime,
                genre=genre,
                skills=skills,
                description=description)

            return add_cors(jsonify(Activity.objects(activity_id=activity_id)))
        return jsonify("You do not have the authority")
    def post(self, idx):
        # activity_id is useful when all the activiteis to be shown ==>To be confirm
        use_id = idx
        user = User.objects(use_id=use_id).first()

        leader_id = user.user_id

        activities = Activity.objects.all()
        n = len(activities)
        activity_id = 0
        if n != 0:
            activity_id = activities[n - 1].activity_id
            activity_id += 1

        activity_name = request.form.get("activity")
        start_date_str = request.form.get("start")
        skills = request.form.get("skills")
        genre = request.form.get("genre")
        description = request.form.get("description")

        start_date_datetime = datetime.strptime(start_date_str,
                                                '%Y-%m-%d %H:%M:%S')

        #check if there is the same activity name
        isPresent = Activity.objects(activity_name=activity_name).first()
        if isPresent:
            return jsonify("Please select another name")

        activity = Activity(leader_id=leader_id,
                            activity_id=activity_id,
                            activity_name=activity_name,
                            leader_name=username,
                            open_date=datetime.utcnow(),
                            start_date=start_date_datetime,
                            genre=genre,
                            skills=skills,
                            description=description)
        activity.save()
        return (jsonify("Successfully build a new activity"))
    def post(self, idx):
        # The activities the user attended
        user_id = idx  # idx = user_id
        applications = Application.objects(applicant_id=user_id)
        apply_activities = []

        if applications:
            for application in applications:
                activity_id = application.activity_id
                activity_id = activity_id
                status = application.status

                activity = Activity.objects(activity_id=activity_id).first()

                activity_name = activity.activity_name
                open_date = activity.open_date
                genre = activity.genre
                leader_name = activity.leader_name

                open_date_local = time.local(open_date)
                format_time = time.strftime("%Y-%m-%d %H:%M:%S",
                                            open_date_local)

                apply_activity_dict = {
                    "Project_Name": activity_name,
                    "Deadline": open_date,
                    "Deadline": format_time,
                    "Major": genre,
                    "Leader": leader_name,
                    "Application Status": status
                }

                apply_activities.append(apply_activity_dict)

            return jsonify(apply_activities, 200)

        return jsonify("You don't have any applied acticities", 400)
    def get(self, idx):  # idx = user_id
        user_id = idx
        activities = Activity.objects(leader_id=user_id).all()
        create_activities = []

        if activities:
            for activity in activities:

                activity_name = activity.activity_name
                applications = Application.objects(
                    activity_name=activity_name).all()
                application_list_zero = []
                application_list_one = []
                for application in applications:
                    if application.status == 0:
                        application_list_zero.append(application.applicant_id)
                    elif application.status == 1:
                        application_list_one.append(application.applicant_id)
                activity_id = activity.activity_id
                activity_name = activity.activity_name
                open_date = activity.open_date
                genre = activity.genre

                # '0': the application has not been decided by the leader
                # '1': the application is successful
                create_activity_dict = {
                    "Project_Name": activity_name,
                    "Deadline": open_date,
                    "Major": genre,
                    "0": application_list_zero,
                    "1": application_list_one
                }

                create_activities.append(create_activity_dict)
            return jsonify(create_activities, 200)

        return add_cors(jsonify("You do not have any created acticities", 400))
 def get(self, idx, idx1):
     return jsonify(Activity.objects(activity_id=idx1))
Beispiel #9
0
 def delete(self, idx):
     Activity.objects(act_id=idx).delete()
     return jsonify( message='Activity was successfully deleted!')
Beispiel #10
0
 def get(self, idx: int):
     return jsonify(Activity.objects(act_id=idx))