コード例 #1
0
ファイル: views.py プロジェクト: Nystya/IDP
def CreateJob(request):
    serializer = CreateJobSerializer(data=request.data)
    if serializer.is_valid():
        serviceCategories = []
        skillCategories = []

        for serviceCategory in serializer.validated_data.get(
                "serviceCategories"):
            serviceCategories.append(
                pb.ServiceCategory(ID=pb.ID(ID=serviceCategory.get("id"))))

        for skillCategory in serializer.validated_data.get("skillCategories"):
            skillCategories.append(
                pb.SkillCategory(ID=pb.ID(ID=skillCategory.get("id"))))

        job = pb.CreateJob(
            EUID=pb.ID(ID=request.user.id.__str__()),
            serviceCategories=serviceCategories,
            skillCategories=skillCategories,
            wage=serializer.validated_data.get("wage"),
            places=serializer.validated_data.get("places"),
            exp=serializer.validated_data.get("exp"),
            description=serializer.validated_data.get("description"),
            title=serializer.validated_data.get("title"))

        err = jobApi.PostJob(job)
    else:
        print(serializer.errors)

    return Response(data={"ID": err.ID.ID}, status=status.HTTP_200_OK)
コード例 #2
0
ファイル: views.py プロジェクト: Nystya/IDP
def EditFreelancerProfile(request):
    serializer = FreelancerSerializer(data=request.data)
    if serializer.is_valid():
        skillCategories = []
        skills = []

        for skillCategory in serializer.validated_data.get("skillCategories"):
            skillCategories.append(
                pb.SkillCategory(ID=pb.ID(
                    ID=skillCategory.get("id").__str__())))

        for skill in serializer.validated_data.get("skills"):
            skills.append(
                pb.Skill(category=pb.SkillCategory(ID=pb.ID(
                    ID=skill.get("skcid").__str__())),
                         skill=skill.get("skill")))

        profile = pb.EditFreelancerProfileRequest(
            FUID=pb.ID(ID=request.user.id.__str__()),
            lastName=serializer.validated_data.get("lastName"),
            firstName=serializer.validated_data.get("firstName"),
            description=serializer.validated_data.get("description"),
            skillCategories=skillCategories,
            skills=skills)
        try:
            err = profilesApi.EditFreelancerProfile(profile)
        except Exception as e:
            print(e.__str__())
            return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    else:
        print(serializer.errors)

    return Response(status=status.HTTP_200_OK)
コード例 #3
0
ファイル: views.py プロジェクト: Nystya/IDP
def SelectForJob(request, jid, fid):
    selection = pb.JobSelection(JID=pb.ID(ID=jid), FUID=pb.ID(ID=fid))

    try:
        err = jobApi.SelectForJob(selection)
    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(status=status.HTTP_200_OK)
コード例 #4
0
ファイル: views.py プロジェクト: Nystya/IDP
def ApplyForJob(request, id):
    application = pb.JobApplication(JID=pb.ID(ID=id),
                                    FUID=pb.ID(ID=request.user.id.__str__()))
    try:
        err = jobApi.ApplyForJob(application)
    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)

    return Response(status=status.HTTP_200_OK)
コード例 #5
0
ファイル: views.py プロジェクト: Nystya/IDP
def FinishJob(request, id):
    try:
        err = jobApi.FinishJob(pb.ID(ID=id))
    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(status=status.HTTP_200_OK)
コード例 #6
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetJobs(request):
    filter = {}

    filter["title"] = request.GET.get("title", "")
    filter["wage"] = float(request.GET.get("wage", 0))
    filter["employer_rating"] = float(request.GET.get("employer_rating", 0))

    datas = []

    print(filter)
    pbFilter = pb.Filter(ID=pb.ID(ID="1"),
                         title=filter["title"],
                         wageMin=filter["wage"],
                         employerRating=filter["employer_rating"])

    for job in jobApi.GetJobs(pbFilter):
        data = {
            "ID": job.ID.ID,
            "EUID": job.EUID.ID,
            "wage": job.wage,
            "places": job.places,
            "title": job.title,
            "exp": job.exp,
            "description": job.description,
            "post_time": job.postTime,
            "service_categories": [],
            "skill_categories": [],
            "nr_candidates": 0,
            "erating": 0,
            "money_spent": 0
        }

        if job.nrOfCandidates:
            data["nr_candidates"] = job.nrOfCandidates

        if job.employerRating:
            data["erating"] = job.employerRating

        if job.moneySpent:
            data["money_spent"] = job.moneySpent

        for sc in job.serviceCategories:
            data["service_categories"].append({
                "ID": sc.ID.ID,
                "service": sc.service
            })

        for skc in job.skillCategories:
            data["skill_categories"].append({
                "ID": skc.ID.ID,
                "category": skc.category
            })

        datas.append(data)

    return Response(data=datas, status=status.HTTP_200_OK)
コード例 #7
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetHistory(request):
    jobs = []

    if request.user.user_type == User.EMPLOYEE:
        dispatch_func = jobApi.GetFreelancerHistoryJobs
    elif request.user.user_type == User.EMPLOYER:
        dispatch_func = jobApi.GetEmployerHistoryJobs
    else:
        return Response(status=status.HTTP_400_BAD_REQUEST)

    try:
        for job in dispatch_func(pb.ID(ID=request.user.id.__str__())):
            data = {
                "ID": job.ID.ID,
                "EUID": job.EUID.ID,
                "wage": job.wage,
                "places": job.places,
                "title": job.title,
                "exp": job.exp,
                "description": job.description,
                "post_time": job.postTime,
                "service_categories": [],
                "skill_categories": [],
                "nr_candidates": 0,
                "erating": 0,
                "money_spent": 0
            }

            if job.nrOfCandidates:
                data["nr_candidates"] = job.nrOfCandidates

            if job.employerRating:
                data["erating"] = job.employerRating

            if job.moneySpent:
                data["money_spent"] = job.moneySpent

            for sc in job.serviceCategories:
                data["service_categories"].append({
                    "ID": sc.ID.ID,
                    "service": sc.service
                })

            for skc in job.skillCategories:
                data["skill_categories"].append({
                    "ID": skc.ID.ID,
                    "category": skc.category
                })

            jobs.append(data)

    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(data=jobs, status=status.HTTP_200_OK)
コード例 #8
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetAllSkillCategories(request, serviceCategory):
    data = []

    for skillCategory in jobApi.GetAllSkillCategories(
            pb.ServiceCategory(ID=pb.ID(ID=serviceCategory))):
        data.append({
            "id": skillCategory.ID.ID,
            "category": skillCategory.category
        })

    return Response(data=data, status=status.HTTP_200_OK)
コード例 #9
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetSkillsByCategory(request, skillCategory):
    data = []

    for skill in jobApi.GetAllSkills(
            pb.SkillCategory(ID=pb.ID(ID=skillCategory))):
        data.append({
            "id": skill.ID.ID,
            "category": skill.category.ID.ID,
            "skill": skill.skill
        })

    return Response(data=data, status=status.HTTP_200_OK)
コード例 #10
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetAcceptedJobs(request):
    jobs = []

    try:
        for job in jobApi.GetAcceptedJobs(pb.ID(ID=request.user.id.__str__())):
            data = {
                "ID": job.ID.ID,
                "EUID": job.EUID.ID,
                "wage": job.wage,
                "places": job.places,
                "title": job.title,
                "exp": job.exp,
                "description": job.description,
                "post_time": job.postTime,
                "service_categories": [],
                "skill_categories": [],
                "nr_candidates": 0,
                "erating": 0,
                "money_spent": 0
            }

            if job.nrOfCandidates:
                data["nr_candidates"] = job.nrOfCandidates

            if job.employerRating:
                data["erating"] = job.employerRating

            if job.moneySpent:
                data["money_spent"] = job.moneySpent

            for sc in job.serviceCategories:
                data["service_categories"].append({
                    "ID": sc.ID.ID,
                    "service": sc.service
                })

            for skc in job.skillCategories:
                data["skill_categories"].append({
                    "ID": skc.ID.ID,
                    "category": skc.category
                })

            jobs.append(data)

    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(data=jobs, status=status.HTTP_200_OK)
コード例 #11
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetFreelancerProfile(request, id):
    data = {}
    try:
        freelancer = profilesApi.GetFreelancerProfile(pb.ID(ID=id))

        data["ID"] = freelancer.FUID.ID
        data["lastName"] = freelancer.lastName
        data["firstName"] = freelancer.firstName
        data["rating"] = freelancer.rating
        data["description"] = freelancer.description
        data["photo"] = freelancer.photo

    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(data=data, status=status.HTTP_200_OK)
コード例 #12
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetEmployerProfile(request, id):
    data = {}
    try:
        employer = profilesApi.GetEmployerProfile(pb.ID(ID=id))

        data["ID"] = employer.EUID.ID
        data["lastName"] = employer.lastName
        data["firstName"] = employer.firstName
        data["rating"] = employer.rating
        data["jobs_posted"] = employer.jobsPosted
        data["money_spent"] = employer.moneySpent

    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(data=data, status=status.HTTP_200_OK)
コード例 #13
0
ファイル: views.py プロジェクト: Nystya/IDP
def EditEmployerProfile(request):
    serializer = EmployerSerializer(data=request.data)
    if serializer.is_valid():
        profile = pb.EditEmployerProfileRequest(
            EUID=pb.ID(ID=request.user.id.__str__()),
            lastName=serializer.validated_data.get("lastName"),
            firstName=serializer.validated_data.get("firstName"))
        try:
            err = profilesApi.EditEmployerProfile(profile)
        except Exception as e:
            print(e.__str__())
            return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    else:
        print(serializer.errors)

    return Response(status=status.HTTP_200_OK)
コード例 #14
0
ファイル: models.py プロジェクト: Nystya/IDP
def create_employer_profile(sender, instance=None, created=False, **kwargs):
    if created:
        print("Received signal on employer function")
        user = instance
        if user.user_type == user.EMPLOYER:
            print("Trying to create employer profile")
            try:
                employerProfile = pb.EditEmployerProfileRequest(
                    EUID=pb.ID(ID=user.id.__str__()),
                    phone="",
                    lastName="",
                    firstName="",
                )
                profilesApi.CreateEmployerProfile(employerProfile)
            except Exception as e:
                print("Could not create employer profile: ", e)
コード例 #15
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetAcceptedFreelancers(request, id):
    freelancers = []

    try:
        for freelancer in jobApi.GetAcceptedFreelancers(pb.ID(ID=id)):
            print(freelancer)
            freelancers.append({
                "ID": freelancer.FUID.ID,
                "lastName": freelancer.lastName,
                "firstName": freelancer.firstName,
                "rating": freelancer.rating,
                "description": freelancer.description,
                "photo": freelancer.photo
            })
    except Exception as e:
        print(e.__str__())
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    return Response(data=freelancers, status=status.HTTP_200_OK)
コード例 #16
0
ファイル: views.py プロジェクト: Nystya/IDP
def GetJob(request, id):
    job = jobApi.GetJob(pb.ID(ID=id))
    print(job)

    data = {
        "ID": job.ID.ID,
        "EUID": job.EUID.ID,
        "wage": job.wage,
        "places": job.places,
        "title": job.title,
        "exp": job.exp,
        "description": job.description,
        "post_time": job.postTime,
        "service_categories": [],
        "skill_categories": [],
        "nr_candidates": 0,
        "erating": 0,
        "money_spent": 0
    }

    if job.nrOfCandidates:
        data["nr_candidates"] = job.nrOfCandidates

    if job.employerRating:
        data["erating"] = job.employerRating

    if job.moneySpent:
        data["money_spent"] = job.moneySpent

    for sc in job.serviceCategories:
        data["service_categories"].append({
            "ID": sc.ID.ID,
            "service": sc.service
        })

    for skc in job.skillCategories:
        data["skill_categories"].append({
            "ID": skc.ID.ID,
            "category": skc.category
        })

    return Response(data=data, status=status.HTTP_200_OK)