Example #1
0
    def test_increment_slots_remaining(self):

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")

        j1.save()

        s1 = Shift(date = "2012-10-23",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 0,
                    job = j1)

        s1.save()

        self.assertEqual(s1.slots_remaining, 0)
        increment_slots_remaining(s1)

        self.assertEqual(s1.slots_remaining, 1)
        increment_slots_remaining(s1)

        self.assertEqual(s1.slots_remaining, 2)
        increment_slots_remaining(s1)

        self.assertEqual(s1.slots_remaining, 3)
        increment_slots_remaining(s1)

        self.assertEqual(s1.slots_remaining, 4)
Example #2
0
    def test__when_slug_name_duplicate__should_raise_error(self):
        slug = Job(slug='peace-maker-c57fe949')
        slug1 = Job(slug='peace-maker-c57fe949')

        with self.assertRaises(IntegrityError):
            slug.save()
            slug1.save()
Example #3
0
def create(request, project_id):
    project = get_object_or_404(
        Project,
        id=project_id,
        is_active=True,
        author=request.user
    )
    if request.method == 'POST':
        form = JobForm(request.POST)
        if form.is_valid():
            job = Job(
                project=project,
                title=form.cleaned_data['title'],
                area=form.cleaned_data['area'],
                description=form.cleaned_data['description']
            )
            job.save()
            return redirect(
                request,
                'project-read',
                [project.id],
                {request.url_name: 'True'}
            )
    else:
        form = JobForm()
    params = {'project': project, 'form': form}
    params.update(csrf(request))
    return response(request, params)
Example #4
0
    def test_get_shift_slots_remaining(self):
        """ Test get_shift_slots_remaining(s_id) """

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j1.save()

        s1 = Shift(date="2012-12-10", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-6-25", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-1-9", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1)

        s1.save()
        s2.save()
        s3.save()

        self.assertIsNotNone(get_shift_slots_remaining(s1.id))
        self.assertIsNotNone(get_shift_slots_remaining(s2.id))
        self.assertIsNotNone(get_shift_slots_remaining(s3.id))
Example #5
0
    def test_get_event_by_shift_id(self):
        e1 = Event(
                name="Open Source Event",
                start_date="2012-10-22",
                end_date="2012-10-23"
                )

        e1.save()

        j1 = Job(
                name="Software Developer",
                start_date="2012-10-22",
                end_date="2012-10-23",
                description="A software job",
                event=e1
                )

        j2 = Job(
                name="Systems Administrator",
                start_date="2012-9-1",
                end_date="2012-10-26",
                description="A systems administrator job",
                event=e1
                )

        j1.save()
        j2.save()

        s1 = Shift(
                date="2012-10-23",
                start_time="9:00",
                end_time="3:00",
                max_volunteers=1,
                job=j1
                )

        s2 = Shift(
                date="2012-10-23",
                start_time="10:00",
                end_time="4:00",
                max_volunteers=2,
                job=j1
                )

        s3 = Shift(
                date="2012-10-23",
                start_time="12:00",
                end_time="6:00",
                max_volunteers=4,
                job=j2
                )

        s1.save()
        s2.save()
        s3.save()
        
        self.assertIsNotNone(get_event_by_shift_id(s1.id))
        self.assertIsNotNone(get_event_by_shift_id(s2.id))
        self.assertIsNotNone(get_event_by_shift_id(s3.id))
Example #6
0
def postjob(request):
    if request.method == 'POST':
        obj2 = Job(jtitle=request.POST['jtitle'],
                   jcname=request.POST['jcompany'],
                   jobtype=request.POST['job-type'],
                   jstate=request.POST['jstate'],
                   jdistrict=request.POST['jdistrict'],
                   jdesc=request.POST['jdesc'])
        obj2.save()
    return render(request, 'adminpanel/postjob.html')
Example #7
0
    def test_get_shifts_with_open_slots(self):
        """ Test get_shifts_with_open_slots(j_id) """
        u1 = User.objects.create_user("Yoshi")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v1.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        self.assertIsNotNone(get_shifts_with_open_slots(j1.id))
        self.assertIsNotNone(get_shifts_with_open_slots(j2.id))
Example #8
0
def create_job_with_details(job):
    """
    Creates and returns job with passed name and dates
    """

    j1 = Job(name=job['name'],
             start_date=job['start_date'],
             end_date=job['end_date'],
             description=job['description'],
             event=job['event'])

    j1.save()
    return j1
Example #9
0
def create_job_with_details(job):
    """
    Creates and returns job with passed name and dates
    """

    j1 = Job(name=job[0],
             start_date=job[1],
             end_date=job[2],
             description=job[3],
             event=job[4])

    j1.save()
    return j1
Example #10
0
    def run(self):
        counter = 0
        for job in self.jobs:
            new_job = Job(
                title=job.title,
                description=job.description,
                employer=self.profile,
                availability=job.availability,
                experience=job.experience,
                education=job.education,
                employment_type=job.employment_type,
                overtime=job.overtime,
                latitude=job.latitude,
                longitude=job.longitude,
            )
            new_job.save()
            new_job.workday = job.workday.all()
            new_job.industry = job.industry.all()
            new_job.save()

            new_location = JobLocation(
                business_name=job.location.business_name,
                business_address1=job.location.business_address1,
                business_address2=job.location.business_address2,
                city=job.location.city,
                zip_code=job.location.zip_code,
                latitude=job.location.latitude,
                longitude=job.location.longitude,
                job=new_job,
            )
            new_location.save()

            for existing_profile in self.profiles:
                rec = JobRecommendation(
                    job=new_job,
                    applicant=existing_profile,
                    state=(JobRecommendation.NEW_REC_SENT if counter > 2 else JobRecommendation.APPLIED_REC),
                )
                rec.save()

                if counter <= 2:
                    application = ApplicantJob(job=new_job, applicant=existing_profile, send_email=False)
                    application.save()

                if existing_profile.id == 24 and job.id == 12:
                    application = ApplicantJob(job=new_job, applicant=existing_profile, send_email=False)
                    application.save()

                counter = counter + 1

            counter = 0
Example #11
0
    def get_shifts_ordered_by_date(self):

        e1 = Event(name = "Open Source Event",
                start_date = "2012-10-22",
                end_date = "2012-10-23")

        e1.save()

        j1 = Job(name = "Software Developer",
            start_date = "2012-10-22",
            end_date = "2012-10-23",
            description = "A software job",
            event = e1)

        j1.save()

        s1 = Shift(date = "2012-1-10",
            start_time = "9:00",
            end_time = "3:00",
            max_volunteers = 1,
            job = j1)

        s2 = Shift(date = "2012-6-25",
            start_time = "10:00",
            end_time = "4:00",
            max_volunteers = 2,
            job = j1)

        s3 = Shift(date = "2012-12-9",
            start_time = "12:00",
            end_time = "6:00",
            max_volunteers = 4,
            job = j1)

        s1.save()
        s2.save()
        s3.save()

        #test typical case
        shift_list = get_shifts_ordered_by_date(j1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)

        #test order
        self.assertEqual(shift_list[0].date, s1.date)
        self.assertEqual(shift_list[1].date, s2.date)
        self.assertEqual(shift_list[2].date, s3.date)
Example #12
0
    def get_shifts_ordered_by_date(self):

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j1.save()

        s1 = Shift(date="2012-1-10",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-6-25",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-12-9",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j1)

        s1.save()
        s2.save()
        s3.save()

        #test typical case
        shift_list = get_shifts_ordered_by_date(j1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)

        #test order
        self.assertEqual(shift_list[0].date, s1.date)
        self.assertEqual(shift_list[1].date, s2.date)
        self.assertEqual(shift_list[2].date, s3.date)
Example #13
0
    def test_get_shift_by_id(self):

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j1.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1)

        s1.save()
        s2.save()
        s3.save()

        # test typical cases
        self.assertIsNotNone(get_shift_by_id(s1.id))
        self.assertIsNotNone(get_shift_by_id(s2.id))
        self.assertIsNotNone(get_shift_by_id(s3.id))

        self.assertEqual(get_shift_by_id(s1.id), s1)
        self.assertEqual(get_shift_by_id(s2.id), s2)
        self.assertEqual(get_shift_by_id(s3.id), s3)

        # test non-existant cases
        self.assertIsNone(get_shift_by_id(100))
        self.assertIsNone(get_shift_by_id(200))
        self.assertIsNone(get_shift_by_id(300))
        self.assertIsNone(get_shift_by_id(400))

        self.assertNotEqual(get_shift_by_id(100), s1)
        self.assertNotEqual(get_shift_by_id(100), s2)
        self.assertNotEqual(get_shift_by_id(100), s3)
        self.assertNotEqual(get_shift_by_id(200), s1)
        self.assertNotEqual(get_shift_by_id(200), s2)
        self.assertNotEqual(get_shift_by_id(200), s3)
        self.assertNotEqual(get_shift_by_id(300), s1)
        self.assertNotEqual(get_shift_by_id(300), s2)
        self.assertNotEqual(get_shift_by_id(300), s3)
Example #14
0
    def get_shifts_by_date(self):

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")
        
        j1.save()

        s1 = Shift(date = "2012-1-10",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 1,
                    job = j1)

        s2 = Shift(date = "2012-6-25",
                    location = "Infinite Loop",
                    start_time = "10:00",
                    end_time = "4:00",
                    max_volunteers = 2,
                    slots_remaining = 2,
                    job = j1)

        s3 = Shift(date = "2012-12-9",
                    location = "Loopy Loop Road",
                    start_time = "12:00",
                    end_time = "6:00",
                    max_volunteers = 4,
                    slots_remaining = 4,
                    job = j1)

        s1.save()
        s2.save()
        s3.save()

        #test typical case
        shift_list = get_shifts_by_date(j1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)

        #test order
        self.assertEqual(shift_list[0].date, s1.date)
        self.assertEqual(shift_list[1].date, s2.date)
        self.assertEqual(shift_list[2].date, s3.date)
Example #15
0
File: utils.py Project: systers/vms
def create_job_with_details(job):
    """
    Creates and returns job with passed name and dates
    """

    j1 = Job(
        name=job[0],
        start_date=job[1],
        end_date=job[2],
        description=job[3],
        event=job[4])

    j1.save()
    return j1
Example #16
0
    def post(self, request, *args, **kwargs):
        job_data = json.loads(request.body)
        if 'company_id' in job_data or 'company' in job_data:
            raise serializers.ValidationError('Unexpected Company/Company Id.')
        if 'title' not in job_data or not job_data['title']:
            raise serializers.ValidationError('Title is required.')
        if 'vacancy' not in job_data or not job_data['vacancy']:
            raise serializers.ValidationError('Vacancy is required.')
        if 'address' not in job_data or not job_data['address']:
            raise serializers.ValidationError('Address is required.')
        if 'job_site' not in job_data or not job_data['job_site']:
            raise serializers.ValidationError('Job site is required.')
        if 'job_nature' not in job_data or not job_data['job_nature']:
            raise serializers.ValidationError('Job nature is required.')
        if 'job_type' not in job_data or not job_data['job_type']:
            raise serializers.ValidationError('Job type is required.')
        if 'status' in job_data:
            if job_data['status'] != 'DRAFT' and job_data[
                    'status'] != 'POSTED' and job_data['status'] != '':
                raise serializers.ValidationError('Invalid status.')
        if 'salary_min' in job_data and job_data[
                'salary_min'] and 'salary_max' in job_data and job_data[
                    'salary_max']:
            if int(job_data['salary_min']) > int(job_data['salary_max']):
                raise serializers.ValidationError(
                    'Minimum salary cannot be greater than maximum salary')

        company = Company.objects.get(user_id=request.user.id)
        job_data['company'] = company
        try:
            skills = job_data['skills']
            del job_data['skills']
        except KeyError:
            skills = None

        job_obj = Job(**job_data)
        populate_user_info(request, job_obj, False, False)
        job_obj.save()
        if skills:
            skill_list = skills.split(',')
            for skill in skill_list:
                try:
                    skill_obj = Skill.objects.get(name=skill)
                except Skill.DoesNotExist:
                    skill_obj = None
                if skill_obj:
                    job_obj.job_skills.add(skill_obj)
        return Response(HTTP_200_OK)
Example #17
0
class ReadTest(TestCase):
    def setUp(self):
        self.client = Client()
        self.username = '******'
        self.email = '*****@*****.**'
        self.passwd = 'passwd'
        self.title = 'Test'
        self.area = 'DESIGN'
        self.description = 'Testing...'
        user = User.objects.create_user(self.username, self.email, self.passwd)
        self.project = Project(author=user)
        self.project.save()
        self.job = Job(project=self.project, title=self.title, area=self.area,
                       description=self.description)
        self.job.save()
        self.client.login(username=self.username, password=self.passwd)

    def test_login_required(self):
        self.client.logout()
        response = self.client.get(READ_URL % self.job.id)
        self.assertRedirects(response, LOGIN_URL + '?next=' + READ_URL % self.job.id)

    def test_get(self):
        response = self.client.get(READ_URL % self.job.id)
        self.assertEqual(response.status_code, 200)

    def test_invalid_id(self):
        response = self.client.get(READ_URL % '2')
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project(self):
        self.project.is_active = False
        self.project.save()
        response = self.client.get(READ_URL % self.job.id)
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project_author(self):
        username = '******'
        email = '*****@*****.**'
        passwd = 'abc'
        user = User.objects.create_user(username, email, passwd)
        self.client.logout()
        self.client.login(username=username, password=passwd)
        self.project.author.is_active = False
        self.project.author.save()
        response = self.client.get(READ_URL % self.job.id)
        self.assertEqual(response.status_code, 404)
Example #18
0
    def test_delete_shift(self):
        """ Test delete_shift(shift_id) """
        u1 = User.objects.create_user("Yoshi")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v1.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j1.save()

        s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2011-11-11", start_time="11:00", end_time="12:00", max_volunteers=3, job=j1)

        s1.save()
        s2.save()

        self.assertTrue(delete_shift(s1.id))
        self.assertFalse(delete_shift(100))

        register(v1.id, s2.id)
        self.assertFalse(delete_shift(s2.id))
Example #19
0
 def post(self, request, *args, **kwargs):
     job_name = request.POST.get('job_name')
     job_desc = request.POST.get('job_desc')
     job_type = request.POST.get('job_type')
     job_content = request.POST.get('job_content')
     extra_vars = request.POST.get('extra_vars')
     if job_type == 'python':
         job_name = job_name + ".py"
     elif job_type == "shell":
         job_name = job_name + ".sh"
     elif job_type == "playbook":
         job_name = job_name
     job = Job(job_name=job_name,
               job_desc=job_desc,
               job_type=job_type,
               job_content=job_content,
               extra_vars=extra_vars)
     job.save()
     return JsonResponse({'message': 'add job {} success'.format(job_name)})
def add_job(job_db_id, user):
    job_db_obj = get_job_db_by_id(job_db_id)
    try:
        new_job_seen = Job(
            company=job_db_obj.company,
            location=job_db_obj.location,
            position=job_db_obj.position,
            description=job_db_obj.description,
            html_description=job_db_obj.html_description,
            link=job_db_obj.link,
            user=user
        )
        print("error 1")
        new_job_seen.save()
        print("error 2")
        return new_job_seen
    except Exception as e:
        print("Error during creating Job object, error is: ", e)
        return None
Example #21
0
    def save(self, data, element_object=None):
        if element_object == None:
            job = Job()
            uid = self.generateUID()
            job.uid = uid
        else:
            job = element_object

        uid_env = self.parseData(data, "environnement")
        environnement = self.getEnv(uid_env)

        if not environnement == None:
            job.name = self.parseData(data, "name")
            job.command = self.parseData(data, "command")
            job.type = self.parseData(data, "type")
            job.schedule = self.parseData(data, "schedule")
            job.restart_policy = self.parseData(data, "restart_policy")
            job.back_off_limit = self.parseData(data, "back_off_limit")
            job.container_image = self.parseData(data, "container_image")
            job.environnement = environnement
            #job.config = self.parseData(data, "config")

            job.save()

            uid_container = self.parseData(data, "container")
            container_item = self.getContainer(uid_container)
            if not container_item == None:
                job.container.add(container_item)

            return {
                "status": "success",
                "message": "Saved",
                "element": "job",
                "uid": job.uid
            }
        else:
            return {
                "status": "error",
                "message": "Environnement Not exist",
                "element": "job"
            }
def JobAdd(request):
    data = {"added": False, "message": "", "job": None}

    if request.method == "POST":
        input_data = request.POST.copy()
        print(input_data)

        if "id" in request.GET:
            if request.GET["id"] != "":
                pass
            else:
                # Add
                job = Job.objects.filter(title=input_data["title"])
                if job:
                    data["message"] = "The job already exists"
                else:
                    input_data["experience_year"] = int(
                        input_data["experience_year"])
                    input_data["salary"] = int(input_data["salary"])
                    print(input_data)
                    job = Job(title=input_data["title"],
                              description=input_data["description"],
                              category=input_data["category"],
                              location=input_data["location"],
                              qualification=input_data["qualification"],
                              experience_year=input_data["experience_year"],
                              salary=input_data["salary"],
                              job_type=input_data["job_type"],
                              deadline=input_data["deadline"],
                              skills=input_data["skills"])
                    job.save()
                    data["added"] = True
                pass

    if "id" in request.GET:
        try:
            data["job"] = Job.objects.get(id=request.GET["id"])
        except:
            pass
    return render(request, "job-add.html", data)
Example #23
0
    def setUp(self):
        company = Company(name='Ishraak Solutions',
                          web_address='www.ishraak.com')
        company.save()
        self.company = company

        job_gender = JobGender(name='Male')
        job_gender.save()
        self.job_gender = job_gender

        experience = Experience(name='Part Time')
        experience.save()
        self.experience = experience

        qualification = Qualification(name='Graduate')
        qualification.save()
        self.qualification = qualification

        job = Job(
            title='Software Engineer',
            experience=1,
            salary_min=5000.00,
            salary_max=10000.00,
            qualification=self.qualification,
            job_gender=self.job_gender,
            application_deadline='2020-03-29',
            description='Test job',
            responsibilities='Web developer',
            education='Computer Science',
            other_benefits='Apple Watch',
            company=self.company,
            latitude=3.00,
            longitude=4.00,
        )
        job.save()
        self.jb = job

        user = User(username='******', password='******')
        user.save()
        self.usr = user
Example #24
0
    def test_get_jobs_ordered_by_title(self):

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")

        j2 = Job(job_title = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job")

        j3 = Job(job_title = "Project Manager",
                start_date = "2012-1-2",
                end_date = "2012-2-2",
                description = "A management job")

        j1.save()
        j2.save()
        j3.save()       
                    
        #test typical case
        job_list = get_jobs_ordered_by_title()
        self.assertIsNotNone(job_list)
        self.assertNotEqual(job_list, False)
        self.assertEqual(len(job_list), 3)
        self.assertIn(j1, job_list)
        self.assertIn(j2, job_list)
        self.assertIn(j3, job_list)

        #test order
        self.assertEqual(job_list[0].job_title, j3.job_title)
        self.assertEqual(job_list[1].job_title, j1.job_title)
        self.assertEqual(job_list[2].job_title, j2.job_title)
Example #25
0
def _do_import_entries_v2(job: Job):
    user: User = job.user
    entity: Entity = Entity.objects.get(id=job.target.id)
    import_serializer = EntryImportEntitySerializer(data=json.loads(job.params))
    import_serializer.is_valid()
    context = {"request": DRFRequest(user)}

    total_count = len(import_serializer.validated_data["entries"])
    err_msg = []
    for index, entry_data in enumerate(import_serializer.validated_data["entries"]):
        job.text = "Now importing... (progress: [%5d/%5d])" % (index + 1, total_count)
        job.save(update_fields=["text"])

        # abort processing when job is canceled
        if job.is_canceled():
            job.status = Job.STATUS["CANCELED"]
            job.save(update_fields=["status"])
            return

        entry_data["schema"] = entity
        entry = Entry.objects.filter(name=entry_data["name"], schema=entity, is_active=True).first()
        if entry:
            serializer = EntryUpdateSerializer(instance=entry, data=entry_data, context=context)
        else:
            serializer = EntryCreateSerializer(data=entry_data, context=context)
        try:
            serializer.is_valid(raise_exception=True)
            serializer.save()
        except ValidationError:
            err_msg.append(entry_data["name"])

    if err_msg:
        text = "Imported Entry count: %d, Failed import Entry: %s" % (total_count, err_msg)
        job.update(status=Job.STATUS["WARNING"], text=text)
    else:
        text = "Imported Entry count: %d" % total_count
        job.update(status=Job.STATUS["DONE"], text=text)
Example #26
0
    def test_get_job_by_id(self):

        e1 = Event(name = "Software Conference",
                start_date = "2012-10-22",
                end_date = "2012-10-25")

        e1.save()

        j1 = Job(name = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job",
                event = e1)

        j2 = Job(name = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job",
                event = e1)

        j3 = Job(name = "Project Manager",
                start_date = "2012-1-2",
                end_date = "2012-2-2",
                description = "A management job",
                event = e1)

        j1.save()
        j2.save()
        j3.save()

        #test typical cases
        self.assertIsNotNone(get_job_by_id(j1.id))
        self.assertIsNotNone(get_job_by_id(j2.id))
        self.assertIsNotNone(get_job_by_id(j3.id))

        self.assertEqual(get_job_by_id(j1.id), j1)
        self.assertEqual(get_job_by_id(j2.id), j2)
        self.assertEqual(get_job_by_id(j3.id), j3)

        #test non-existant cases
        self.assertIsNone(get_job_by_id(100))
        self.assertIsNone(get_job_by_id(200))
        self.assertIsNone(get_job_by_id(300))
        self.assertIsNone(get_job_by_id(400))

        self.assertNotEqual(get_job_by_id(100), j1)
        self.assertNotEqual(get_job_by_id(100), j2)
        self.assertNotEqual(get_job_by_id(100), j3)
        self.assertNotEqual(get_job_by_id(200), j1)
        self.assertNotEqual(get_job_by_id(200), j2)
        self.assertNotEqual(get_job_by_id(200), j3)
        self.assertNotEqual(get_job_by_id(300), j1)
        self.assertNotEqual(get_job_by_id(300), j2)
        self.assertNotEqual(get_job_by_id(300), j3)
Example #27
0
    def test_get_jobs_by_event_id(self):
        """ Test get_jobs_by_event_id(e_id) """

        e1 = Event(
                name="Software Conference",
                start_date="2012-10-22",
                end_date="2012-10-25"
                )

        e1.save()

        j1 = Job(
                name="Software Developer",
                start_date="2012-10-22",
                end_date="2012-10-23",
                description="A software job",
                event=e1
                )

        j2 = Job(
                name="Systems Administrator",
                start_date="2012-9-1",
                end_date="2012-10-26",
                description="A systems administrator job",
                event=e1
                )

        j3 = Job(
                name="Project Manager",
                start_date="2012-1-2",
                end_date="2012-2-2",
                description="A management job",
                event=e1
                )

        j1.save()
        j2.save()
        j3.save()

        # test typical case
        job_list = get_jobs_by_event_id(e1.id)
        self.assertIsNotNone(job_list)
        self.assertNotEqual(job_list, False)
        self.assertEqual(len(job_list), 3)
        self.assertIn(j1, job_list)
        self.assertIn(j2, job_list)
        self.assertIn(j3, job_list)
Example #28
0
    def test_delete_job(self):
        """ Test delete_job(job_id) """

        e1 = Event(
                name="Software Conference",
                start_date="2012-10-22",
                end_date="2012-10-25"
                )

        e1.save()

        j1 = Job(
                name="Software Developer",
                start_date="2012-10-22",
                end_date="2012-10-23",
                description="A software job",
                event=e1
                )

        j2 = Job(
                name="Systems Administrator",
                start_date="2012-9-1",
                end_date="2012-10-26",
                description="A systems administrator job",
                event=e1
                )

        j3 = Job(
                name="Project Manager",
                start_date="2012-1-2",
                end_date="2012-2-2",
                description="A management job",
                event=e1
                )

        j1.save()
        j2.save()
        j3.save()

        # test typical cases
        self.assertTrue(delete_job(j1.id))
        self.assertTrue(delete_job(j2.id))
        self.assertTrue(delete_job(j3.id))
        self.assertFalse(delete_job(100))
        self.assertFalse(delete_job(200))
        self.assertFalse(delete_job(300))
Example #29
0
    def test_get_jobs_ordered_by_title(self):

        e1 = Event(name = "Software Conference",
                start_date = "2012-10-22",
                end_date = "2012-10-25")

        e1.save()

        j1 = Job(name = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job",
                event = e1)

        j2 = Job(name = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job",
                event = e1)

        j3 = Job(name = "Project Manager",
                start_date = "2012-1-2",
                end_date = "2012-2-2",
                description = "A management job",
                event = e1)

        j1.save()
        j2.save()
        j3.save()       
                    
        #test typical case
        job_list = get_jobs_ordered_by_title()
        self.assertIsNotNone(job_list)
        self.assertNotEqual(job_list, False)
        self.assertEqual(len(job_list), 3)
        self.assertIn(j1, job_list)
        self.assertIn(j2, job_list)
        self.assertIn(j3, job_list)

        #test order
        self.assertEqual(job_list[0].name, j3.name)
        self.assertEqual(job_list[1].name, j1.name)
        self.assertEqual(job_list[2].name, j2.name)
Example #30
0
    def test_edit_shift_hours(self):

        u1 = User.objects.create_user('Yoshi')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v1.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j1.save()

        s1 = Shift(date="2012-10-23",
                   start_time="1:00",
                   end_time="12:00",
                   max_volunteers=1,
                   job=j1)

        s1.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=11, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=4, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=4, minute=15)
        end_time = datetime.time(hour=12, minute=35)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=2, minute=5)
        end_time = datetime.time(hour=4, minute=15)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=5, minute=30)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Example #31
0
    def test_cancel_shift_registration(self):

        u1 = User.objects.create_user("Yoshi")
        u2 = User.objects.create_user("John")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v2 = Volunteer(
            first_name="John",
            last_name="Doe",
            address="7 Alpine Street",
            city="Maplegrove",
            state="Wyoming",
            country="USA",
            phone_number="23454545",
            email="*****@*****.**",
            user=u2,
        )

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s3.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s3.id)

        # register volunteers to shifts
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)
        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        # test typical cases
        cancel_shift_registration(v1.id, s1.id)
        cancel_shift_registration(v1.id, s2.id)
        cancel_shift_registration(v1.id, s3.id)
        # cancel_shift_registration(v2.id, s1.id)
        # why is this throwing ObjectDoesNotExist?
        cancel_shift_registration(v2.id, s2.id)
        cancel_shift_registration(v2.id, s3.id)
Example #32
0
    def test_is_signed_up(self):

        u1 = User.objects.create_user("Yoshi")
        u2 = User.objects.create_user("John")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v2 = Volunteer(
            first_name="John",
            last_name="Doe",
            address="7 Alpine Street",
            city="Maplegrove",
            state="Wyoming",
            country="USA",
            phone_number="23454545",
            email="*****@*****.**",
            user=u2,
        )

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        # test cases where not signed up yet
        self.assertFalse(is_signed_up(v1.id, s1.id))
        self.assertFalse(is_signed_up(v1.id, s2.id))
        self.assertFalse(is_signed_up(v1.id, s3.id))

        # test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        self.assertTrue(is_signed_up(v1.id, s1.id))
        self.assertTrue(is_signed_up(v1.id, s2.id))
        self.assertTrue(is_signed_up(v1.id, s3.id))

        # test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertFalse(is_signed_up(v2.id, s2.id))
        self.assertFalse(is_signed_up(v2.id, s3.id))

        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertTrue(is_signed_up(v2.id, s2.id))
        self.assertTrue(is_signed_up(v2.id, s3.id))
Example #33
0
    def test_edit_shift_hours(self):
        u1 = User.objects.create_user("Yoshi")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v1.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j1.save()

        s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1)

        s1.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=11, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=4, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=4, minute=15)
        end_time = datetime.time(hour=12, minute=35)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=2, minute=5)
        end_time = datetime.time(hour=4, minute=15)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=5, minute=30)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Example #34
0
class UpdateTest(TestCase):
    def setUp(self):
        self.client = Client()
        self.username = '******'
        self.email = '*****@*****.**'
        self.passwd = 'passwd'
        self.title = 'Test'
        self.new_title = 'Testing'
        self.area = 'DESIGN'
        self.new_area = 'ADM'
        self.description = 'Testing...'
        self.new_description = 'Test...'
        user = User.objects.create_user(self.username, self.email, self.passwd)
        self.project = Project(author=user)
        self.project.save()
        self.job = Job(project=self.project, title=self.title, area=self.area,
                       description=self.description)
        self.job.save()
        self.client.login(username=self.username, password=self.passwd)

    def test_login_required(self):
        self.client.logout()
        response = self.client.get(UPDATE_URL % self.job.id)
        self.assertRedirects(response, LOGIN_URL + '?next=' + \
                             UPDATE_URL % self.job.id)

    def test_get(self):
        response = self.client.get(UPDATE_URL % self.job.id)
        self.assertEqual(response.status_code, 200)

    def test_post(self):
        self.client.post(UPDATE_URL % self.job.id,
                         {
                             'title': self.new_title,
                             'area': self.new_area,
                             'description': self.new_description,
                         })
        job = Job.objects.get(id=self.job.id)
        self.assertEqual(job.is_active, True)
        self.assertEqual(job.created, date.today())
        self.assertEqual(job.title, self.new_title)
        self.assertEqual(job.area, self.new_area)
        self.assertEqual(job.description, self.new_description)

    def test_next(self):
        response = self.client.post(UPDATE_URL % self.job.id + \
                                    '?next=' + LOGIN_URL, {
                                        'title': self.new_title,
                                        'area': self.new_area,
                                        'description': self.new_description,
                                    })
        self.assertRedirects(response, LOGIN_URL + '?job-update=True')

    def test_invalid_id(self):
        response = self.client.get(UPDATE_URL % '2')
        self.assertEqual(response.status_code, 404)

    def test_invalid_author(self):
        self.client.logout()
        User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc')
        self.client.login(username='******', password='******')
        response = self.client.get(UPDATE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project(self):
        self.project.is_active = False
        self.project.save()
        response = self.client.get(UPDATE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project_author(self):
        username = '******'
        email = '*****@*****.**'
        passwd = 'abc'
        user = User.objects.create_user(username, email, passwd)
        self.client.logout()
        self.client.login(username=username, password=passwd)
        self.project.author.is_active = False
        self.project.author.save()
        response = self.client.get(UPDATE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)
Example #35
0
def _do_import_entries(job: Job):
    user: User = job.user
    entity: Entity = Entity.objects.get(id=job.target.id)
    import_data = json.loads(job.params)

    # get custom_view method to prevent executing check method in every loop processing
    custom_view_handler = None
    if custom_view.is_custom("after_import_entry", entity.name):
        custom_view_handler = "after_import_entry"

    total_count = len(import_data)

    # create or update entry
    for (index, entry_data) in enumerate(import_data):
        job.text = "Now importing... (progress: [%5d/%5d] for %s)" % (
            index + 1,
            total_count,
            entity.name,
        )
        job.save(update_fields=["text"])

        # abort processing when job is canceled
        if job.is_canceled():
            return

        entry: Entry = Entry.objects.filter(name=entry_data["name"], schema=entity).first()
        if not entry:
            entry = Entry.objects.create(name=entry_data["name"], schema=entity, created_user=user)

            # create job to notify create event to the WebHook URL
            job_notify: Job = Job.new_notify_create_entry(user, entry)

        elif not user.has_permission(entry, ACLType.Writable):
            continue

        else:
            # create job to notify edit event to the WebHook URL
            job_notify = Job.new_notify_update_entry(user, entry)

        entry.complement_attrs(user)
        for attr_name, value in entry_data["attrs"].items():
            # If user doesn't have readable permission for target Attribute,
            # it won't be created.
            if not entry.attrs.filter(schema__name=attr_name).exists():
                continue

            # There should be only one EntityAttr that is specified by name and Entity.
            # Once there are multiple EntityAttrs, it must be an abnormal situation.
            # In that case, this aborts import processing for this entry and reports it
            # as an error.
            attr_query = entry.attrs.filter(
                schema__name=attr_name,
                is_active=True,
                schema__parent_entity=entry.schema,
            )
            if attr_query.count() > 1:
                Logger.error(
                    "[task.import_entry] Abnormal entry was detected(%s:%d)"
                    % (entry.name, entry.id)
                )
                break

            attr: Attribute = attr_query.last()
            if not user.has_permission(attr.schema, ACLType.Writable) or not user.has_permission(
                attr, ACLType.Writable
            ):
                continue

            input_value = attr.convert_value_to_register(value)
            if user.has_permission(attr.schema, ACLType.Writable) and attr.is_updated(input_value):
                attr.add_value(user, input_value)

            # call custom-view processing corresponding to import entry
            if custom_view_handler:
                custom_view.call_custom(custom_view_handler, entity.name, user, entry, attr, value)

        # register entry to the Elasticsearch
        entry.register_es()

        # run notification job
        job_notify.run()

    job.update(status=Job.STATUS["DONE"], text="")
Example #36
0
    def test_get_shifts_signed_up_for(self):

        u1 = User.objects.create_user('Yoshi')     

        v1 = Volunteer(first_name = "Yoshi",
                        last_name = "Turtle",
                        address = "Mario Land",
                        city = "Nintendo Land",
                        state = "Nintendo State",
                        country = "Nintendo Nation",
                        phone_number = "2374983247",
                        email = "*****@*****.**",
                        user = u1)

        v1.save()

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")

        j2 = Job(job_title = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job")
        
        j1.save()
        j2.save()

        s1 = Shift(date = "2012-10-23",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 1,
                    job = j1)

        s2 = Shift(date = "2012-10-23",
                    location = "Infinite Loop",
                    start_time = "10:00",
                    end_time = "4:00",
                    max_volunteers = 2,
                    slots_remaining = 2,
                    job = j1)

        s3 = Shift(date = "2012-10-23",
                    location = "Loopy Loop Road",
                    start_time = "12:00",
                    end_time = "6:00",
                    max_volunteers = 4,
                    slots_remaining = 4,
                    job = j2)

        s1.save()
        s2.save()
        s3.save()
    
        #sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        #test typical case
        shift_list = get_shifts_signed_up_for(v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)
Example #37
0
    def test_get_shift_by_id(self):

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")
        
        j1.save()

        s1 = Shift(date = "2012-10-23",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 1,
                    job = j1)

        s2 = Shift(date = "2012-10-23",
                    location = "Infinite Loop",
                    start_time = "10:00",
                    end_time = "4:00",
                    max_volunteers = 2,
                    slots_remaining = 2,
                    job = j1)

        s3 = Shift(date = "2012-10-23",
                    location = "Loopy Loop Road",
                    start_time = "12:00",
                    end_time = "6:00",
                    max_volunteers = 4,
                    slots_remaining = 4,
                    job = j1)

        s1.save()
        s2.save()
        s3.save()

        #test typical cases
        self.assertIsNotNone(get_shift_by_id(s1.id))
        self.assertIsNotNone(get_shift_by_id(s2.id))
        self.assertIsNotNone(get_shift_by_id(s3.id))

        self.assertEqual(get_shift_by_id(s1.id), s1)
        self.assertEqual(get_shift_by_id(s2.id), s2)
        self.assertEqual(get_shift_by_id(s3.id), s3)

        #test non-existant cases
        self.assertIsNone(get_shift_by_id(100))
        self.assertIsNone(get_shift_by_id(200))
        self.assertIsNone(get_shift_by_id(300))
        self.assertIsNone(get_shift_by_id(400))

        self.assertNotEqual(get_shift_by_id(100), s1)
        self.assertNotEqual(get_shift_by_id(100), s2)
        self.assertNotEqual(get_shift_by_id(100), s3)
        self.assertNotEqual(get_shift_by_id(200), s1)
        self.assertNotEqual(get_shift_by_id(200), s2)
        self.assertNotEqual(get_shift_by_id(200), s3)
        self.assertNotEqual(get_shift_by_id(300), s1)
        self.assertNotEqual(get_shift_by_id(300), s2)
        self.assertNotEqual(get_shift_by_id(300), s3)
Example #38
0
    def test_get_volunteer_shift_by_id(self):

        u1 = User.objects.create_user("Yoshi")
        u2 = User.objects.create_user("John")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v2 = Volunteer(
            first_name="John",
            last_name="Doe",
            address="7 Alpine Street",
            city="Maplegrove",
            state="Wyoming",
            country="USA",
            phone_number="23454545",
            email="*****@*****.**",
            user=u2,
        )

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        # test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        )

        # self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id),
        # VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id))
        # why does this throw DoesNotExist?
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)
        )
Example #39
0
    def test_clear_shift_hours(self):

        u1 = User.objects.create_user('Yoshi')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v1.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(v1.id, s2.id, start_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=6, minute=0)
        add_shift_hours(v1.id, s3.id, start_time, end_time)

        clear_shift_hours(v1.id, s1.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s2.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s2.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s3.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s3.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
Example #40
0
def write_db(fields, entry):
    j = Job()
    for key in fields:
        if entry[key] is not None and entry[key] != "":
            j.__setattr__(key, entry[key])
    j.save()
Example #41
0
    def test_get_shift_by_id(self):

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j1.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j1)

        s1.save()
        s2.save()
        s3.save()

        #test typical cases
        self.assertIsNotNone(get_shift_by_id(s1.id))
        self.assertIsNotNone(get_shift_by_id(s2.id))
        self.assertIsNotNone(get_shift_by_id(s3.id))

        self.assertEqual(get_shift_by_id(s1.id), s1)
        self.assertEqual(get_shift_by_id(s2.id), s2)
        self.assertEqual(get_shift_by_id(s3.id), s3)

        #test non-existant cases
        self.assertIsNone(get_shift_by_id(100))
        self.assertIsNone(get_shift_by_id(200))
        self.assertIsNone(get_shift_by_id(300))
        self.assertIsNone(get_shift_by_id(400))

        self.assertNotEqual(get_shift_by_id(100), s1)
        self.assertNotEqual(get_shift_by_id(100), s2)
        self.assertNotEqual(get_shift_by_id(100), s3)
        self.assertNotEqual(get_shift_by_id(200), s1)
        self.assertNotEqual(get_shift_by_id(200), s2)
        self.assertNotEqual(get_shift_by_id(200), s3)
        self.assertNotEqual(get_shift_by_id(300), s1)
        self.assertNotEqual(get_shift_by_id(300), s2)
        self.assertNotEqual(get_shift_by_id(300), s3)
Example #42
0
 def create(self, validated_data):
     validated_data['job_slug'] = slug_helper(validated_data['name'])
     job = Job(**validated_data)
     job.save()
     return job
Example #43
0
    def test_generate_report(self):
        """ Tests test_generate_report(volunteer_shift_list) """
        u1 = User.objects.create_user("Yoshi")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v1.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        shift_list = [s1, s2, s3]

        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)

        # register will return an exception on error
        # (such as when invalid parameters are passed)
        # if an exception does get raised, this test will automatically fail
        register(v1.id, s1.id)
        volunteer_shift_1 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift_1)

        register(v1.id, s2.id)
        volunteer_shift_2 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        self.assertIsNotNone(volunteer_shift_2)

        register(v1.id, s3.id)
        volunteer_shift_3 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        self.assertIsNotNone(volunteer_shift_3)

        volunteer_shift_list = [volunteer_shift_1, volunteer_shift_2, volunteer_shift_3]

        self.assertIsNotNone(generate_report(volunteer_shift_list))
Example #44
0
    def test_clear_shift_hours(self):

        u1 = User.objects.create_user("Yoshi")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v1.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(v1.id, s2.id, start_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=6, minute=0)
        add_shift_hours(v1.id, s3.id, start_time, end_time)

        clear_shift_hours(v1.id, s1.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s2.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s3.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
Example #45
0
    def test_has_slots_remaining(self):

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")
        
        j1.save()

        s1 = Shift(date = "2012-10-23",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 1,
                    job = j1)

        s2 = Shift(date = "2012-10-23",
                    location = "Infinite Loop",
                    start_time = "10:00",
                    end_time = "4:00",
                    max_volunteers = 2,
                    slots_remaining = 2,
                    job = j1)

        s3 = Shift(date = "2012-10-23",
                    location = "Loopy Loop Road",
                    start_time = "12:00",
                    end_time = "6:00",
                    max_volunteers = 4,
                    slots_remaining = 4,
                    job = j1)

        s1.save()
        s2.save()
        s3.save()

        self.assertTrue(has_slots_remaining(s1))
        self.assertTrue(has_slots_remaining(s2))
        self.assertTrue(has_slots_remaining(s3))

        decrement_slots_remaining(s1)
        self.assertFalse(has_slots_remaining(s1))

        decrement_slots_remaining(s2)
        self.assertTrue(has_slots_remaining(s2))
        decrement_slots_remaining(s2)
        self.assertFalse(has_slots_remaining(s2))

        decrement_slots_remaining(s3)
        self.assertTrue(has_slots_remaining(s3))
        decrement_slots_remaining(s3)
        self.assertTrue(has_slots_remaining(s3))
        decrement_slots_remaining(s3)
        self.assertTrue(has_slots_remaining(s3))
        decrement_slots_remaining(s3)
        self.assertFalse(has_slots_remaining(s3))

        self.assertEqual(s1.slots_remaining, 0)
        self.assertEqual(s2.slots_remaining, 0)
        self.assertEqual(s3.slots_remaining, 0)
Example #46
0
    def test_get_volunteer_shift_by_id(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('John')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v2 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u2)

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        #test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s1.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s2.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s3.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) #why does this throw DoesNotExist?
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s2.id),
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s3.id),
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))
Example #47
0
    def test_register(self):

        u1 = User.objects.create_user('Yoshi')     
        u2 = User.objects.create_user('John')     

        v1 = Volunteer(first_name = "Yoshi",
                        last_name = "Turtle",
                        address = "Mario Land",
                        city = "Nintendo Land",
                        state = "Nintendo State",
                        country = "Nintendo Nation",
                        phone_number = "2374983247",
                        email = "*****@*****.**",
                        user = u1)

        v2 = Volunteer(first_name = "John",
                        last_name = "Doe",
                        address = "7 Alpine Street",
                        city = "Maplegrove",
                        state = "Wyoming",
                        country = "USA",
                        phone_number = "23454545",
                        email = "*****@*****.**",
                        user = u2)

        v1.save()
        v2.save()

        j1 = Job(job_title = "Software Developer",
                start_date = "2012-10-22",
                end_date = "2012-10-23",
                description = "A software job")

        j2 = Job(job_title = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job")
        
        j1.save()
        j2.save()

        s1 = Shift(date = "2012-10-23",
                    location = "Google Drive",
                    start_time = "9:00",
                    end_time = "3:00",
                    max_volunteers = 1,
                    slots_remaining = 1,
                    job = j1)

        s2 = Shift(date = "2012-10-23",
                    location = "Infinite Loop",
                    start_time = "10:00",
                    end_time = "4:00",
                    max_volunteers = 2,
                    slots_remaining = 2,
                    job = j1)

        s3 = Shift(date = "2012-10-23",
                    location = "Loopy Loop Road",
                    start_time = "12:00",
                    end_time = "6:00",
                    max_volunteers = 4,
                    slots_remaining = 4,
                    job = j2)

        s1.save()
        s2.save()
        s3.save()
    
        #test typical cases
        self.assertTrue(register(v1.id, s1.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        self.assertTrue(register(v1.id, s2.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        self.assertTrue(register(v1.id, s3.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #test cases where volunteer tries to sign up for a shift they are already signed up for
        self.assertFalse(register(v1.id, s1.id))
        self.assertFalse(register(v1.id, s2.id))
        self.assertFalse(register(v1.id, s3.id))

        #test case where more than one volunteer signs up for the same shift
        #v2 can't sign up for s1 because there are no slots remaining
        self.assertFalse(register(v2.id, s1.id))

        self.assertTrue(register(v2.id, s2.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        self.assertTrue(register(v2.id, s3.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        #test cases where a volunteer tries to sign up for a shift they are already signed up for
        self.assertFalse(register(v2.id, s2.id))
        self.assertFalse(register(v2.id, s3.id))        
Example #48
0
    def test_is_signed_up(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('John')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v2 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u2)

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        #test cases where not signed up yet
        self.assertFalse(is_signed_up(v1.id, s1.id))
        self.assertFalse(is_signed_up(v1.id, s2.id))
        self.assertFalse(is_signed_up(v1.id, s3.id))

        #test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        self.assertTrue(is_signed_up(v1.id, s1.id))
        self.assertTrue(is_signed_up(v1.id, s2.id))
        self.assertTrue(is_signed_up(v1.id, s3.id))

        #test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertFalse(is_signed_up(v2.id, s2.id))
        self.assertFalse(is_signed_up(v2.id, s3.id))

        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertTrue(is_signed_up(v2.id, s2.id))
        self.assertTrue(is_signed_up(v2.id, s3.id))
Example #49
0
class DeleteTest(TestCase):
    def setUp(self):
        self.client = Client()
        self.username = '******'
        self.email = '*****@*****.**'
        self.passwd = 'passwd'
        self.title = 'Test'
        self.area = 'DESIGN'
        self.description = 'Testing...'
        user = User.objects.create_user(self.username, self.email, self.passwd)
        self.project = Project(author=user)
        self.project.save()
        self.job = Job(project=self.project, title=self.title, area=self.area,
                       description=self.description)
        self.job.save()
        self.client.login(username=self.username, password=self.passwd)

    def test_login_required(self):
        self.client.logout()
        response = self.client.get(DELETE_URL % self.job.id)
        self.assertRedirects(response, LOGIN_URL + '?next=' + \
                             DELETE_URL % self.job.id)

    def test_get(self):
        response = self.client.get(DELETE_URL % self.job.id)
        self.assertEqual(response.status_code, 200)

    def test_post(self):
        self.client.post(DELETE_URL % self.job.id)
        self.assertEqual(Job.objects.filter(is_active=True).count(), 0)

    def test_next(self):
        response = self.client.post(DELETE_URL % self.job.id + '?next=' + LOGIN_URL)
        self.assertRedirects(response, LOGIN_URL + '?job-delete=True')

    def test_invalid_id(self):
        response = self.client.get(DELETE_URL % '2')
        self.assertEqual(response.status_code, 404)

    def test_invalid_author(self):
        self.client.logout()
        User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc')
        self.client.login(username='******', password='******')
        response = self.client.get(DELETE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project(self):
        self.project.is_active = False
        self.project.save()
        response = self.client.get(DELETE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)

    def test_deactivated_project_author(self):
        self.client.logout()
        user = User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc')
        self.job.author = user
        self.job.save()
        self.project.author.is_active = False
        self.project.save()
        self.client.login(username='******', password='******')
        response = self.client.get(DELETE_URL % self.job.id)
        self.assertEqual(response.status_code, 404)
Example #50
0
    def test_register(self):

        RESULT_IS_VALID = "IS_VALID"
        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('John')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v2 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u2)

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        #test typical cases
        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #test cases where volunteer tries to sign up for a shift they are already signed up for
        self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)

        #test case where more than one volunteer signs up for the same shift
        #v2 can't sign up for s1 because there are no slots remaining
        self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING)

        register(v2.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        register(v2.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        #test cases where a volunteer tries to sign up for a shift they are already signed up for
        self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
Example #51
0
    def test_get_unlogged_shifts_by_volunteer_id(self):

        u1 = User.objects.create_user('Yoshi')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v1.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        #sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        #test typical case
        shift_list = get_unlogged_shifts_by_volunteer_id(v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)
Example #52
0
    def test_register(self):

        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        u1 = User.objects.create_user("Yoshi")
        u2 = User.objects.create_user("John")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v2 = Volunteer(
            first_name="John",
            last_name="Doe",
            address="7 Alpine Street",
            city="Maplegrove",
            state="Wyoming",
            country="USA",
            phone_number="23454545",
            email="*****@*****.**",
            user=u2,
        )

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        # test typical cases
        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        # test cases where volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)

        # test case where more than one volunteer signs up for the same shift
        # v2 can't sign up for s1 because there are no slots remaining
        self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING)

        register(v2.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        register(v2.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        # test cases where a volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
Example #53
0
    def test_cancel_shift_registration(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('John')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Turtle",
                       address="Mario Land",
                       city="Nintendo Land",
                       state="Nintendo State",
                       country="Nintendo Nation",
                       phone_number="2374983247",
                       email="*****@*****.**",
                       user=u1)

        v2 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u2)

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event",
                   start_date="2012-10-22",
                   end_date="2012-10-23")

        e1.save()

        j1 = Job(name="Software Developer",
                 start_date="2012-10-22",
                 end_date="2012-10-23",
                 description="A software job",
                 event=e1)

        j2 = Job(name="Systems Administrator",
                 start_date="2012-9-1",
                 end_date="2012-10-26",
                 description="A systems administrator job",
                 event=e1)

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23",
                   start_time="9:00",
                   end_time="3:00",
                   max_volunteers=1,
                   job=j1)

        s2 = Shift(date="2012-10-23",
                   start_time="10:00",
                   end_time="4:00",
                   max_volunteers=2,
                   job=j1)

        s3 = Shift(date="2012-10-23",
                   start_time="12:00",
                   end_time="6:00",
                   max_volunteers=4,
                   job=j2)

        s1.save()
        s2.save()
        s3.save()

        #test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s3.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s3.id)

        #register volunteers to shifts
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)
        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        #test typical cases
        cancel_shift_registration(v1.id, s1.id)
        cancel_shift_registration(v1.id, s2.id)
        cancel_shift_registration(v1.id, s3.id)
        #cancel_shift_registration(v2.id, s1.id) #why is this throwing ObjectDoesNotExist?
        cancel_shift_registration(v2.id, s2.id)
        cancel_shift_registration(v2.id, s3.id)
Example #54
0
    def test_send_reminder(self):

        u1 = User.objects.create_user("Marina")
        u2 = User.objects.create_user("Anna")

        v1 = Volunteer(
            first_name="Marina",
            last_name="Tsvetaeva",
            address="MyAddress",
            city="MyCity",
            state="MyState",
            country="MyCountry",
            phone_number="2374983247",
            email="*****@*****.**",
            reminder_days=1,
            user=u1,
        )

        v2 = Volunteer(
            first_name="Anna",
            last_name="Akhmatova",
            address="MyAddress",
            city="MyCity",
            state="MyState",
            country="MyCountry",
            phone_number="2374983247",
            email="*****@*****.**",
            reminder_days=7,
            user=u2,
        )
        v1.save()
        v2.save()

        e1 = Event(name="GHC 2015", start_date="2015-07-22", end_date="2015-08-23")

        e1.save()

        j1 = Job(
            name="Volunteer Program Manager",
            start_date="2015-07-22",
            end_date="2015-08-23",
            description="Volunteer Program Manager",
            event=e1,
        )

        j2 = Job(
            name="Volunteer Coordinator",
            start_date="2015-07-22",
            end_date="2015-08-23",
            description="Volunteer Coordinator",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(
            date="2015-08-23",
            start_time="9:00",
            end_time="3:00",
            max_volunteers=1,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j1,
        )

        s2 = Shift(
            date=date.today() + timedelta(7),  # one week date
            start_time="10:00",
            end_time="4:00",
            max_volunteers=2,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j1,
        )

        s3 = Shift(
            date=date.today() + timedelta(1),  # tomorrow date
            start_time="12:00",
            end_time="6:00",
            max_volunteers=4,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j2,
        )

        s1.save()
        s2.save()
        s3.save()

        # sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)
        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        # test typical case

        result = send_reminder()

        self.assertEqual(result, 2)