def create_project(nonprofit, name): address = create_address() project = Project(nonprofit=nonprofit, name=name, published=True, googleaddress=address) project.save() work = Work(project=project) work.save() return project
def test_edit_projec_view_with_changing_roles(self): """ Project edit with deleting and adding new roles. """ project = { 'name': "Name", 'details': 'This needs to be big', 'description': 'This needs to be big', 'responsible': 'Marjori', 'phone': '123123', 'email': '*****@*****.**', 'skills': [1], 'causes': [2], 'job': { 'start_date': 20140416, 'end_date': 20140417 }, 'nonprofit': 1 } factory = APIRequestFactory() n = self.create_nonprofit() r = Role(name="role name") r.save() p = Project(nonprofit=n, name='name', slug="name") p.save() p.roles.add(r) project['id'] = p.id request = factory.put("/save/project/", {'project': project}) force_authenticate(request, user=n.user) response = views.save_project(request) newP = Project.objects.get(id=p.id) self.assertEqual(newP.roles.count(), 0) self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def test_edit_project_view_with_only_required_fields_job(self): """ Project edit job with only required fields and no availabilites. """ factory = APIRequestFactory() project = { 'name': "Name", 'details': 'This needs to be big', 'description': 'This needs to be big', 'responsible': 'Marjori', 'phone': '123123', 'email': '*****@*****.**', 'skills': [1], 'causes': [2], 'job': { 'start_date': 20140416, 'end_date': 20140417 }, 'nonprofit': 1 } n = self.create_nonprofit() p = Project(nonprofit=n, name=project['name'], slug="name", details=project['details']) p.save() project['id'] = p.id request = factory.put("/save/project/", {'project': project}) force_authenticate(request, user=n.user) response = views.save_project(request) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
def create_project(self): u = User(email="*****@*****.**", name="what", slug="hahah") u.save() n = Nonprofit(user=u, name="hahah") n.save() from random import randint random = randint(1,100) project = Project(nonprofit=n, name='name' + str(random)) project.nonprofit = n project.save() project.job = Job(start_date=datetime.now().replace(tzinfo=pytz.timezone("America/Sao_Paulo")), end_date=datetime.now().replace(tzinfo=pytz.timezone("America/Sao_Paulo"))) project.job.save() return project
def create_project(self): u = User(email="*****@*****.**", name="what", slug="hahah") u.save() n = Nonprofit(user=u, name="hahah") n.save() from random import randint random = randint(1, 100) project = Project(nonprofit=n, name='name' + str(random)) project.nonprofit = n project.save() project.job = Job(start_date=datetime.now().replace( tzinfo=pytz.timezone("America/Sao_Paulo")), end_date=datetime.now().replace( tzinfo=pytz.timezone("America/Sao_Paulo"))) project.job.save() return project
def test_comment_deletion(self): """ Tests Comment deletion. """ u1 = User(email='test', slug='user1') u1.save() n = Nonprofit(user=u1) n.save() p = Project(name='Project 1', nonprofit=n) p.save() u = User(email='*****@*****.**', slug='email') u.save() c = self.create_comment(p, u, 'Comment nro 1') c.save() c.delete() self.assertTrue(c.deleted) self.assertTrue(c.deleted_date)
def test_comment_deletion(self): """ Tests Comment deletion. """ u1 = User(email="test", slug="user1") u1.save() n = Nonprofit(user=u1) n.save() p = Project(name="Project 1", nonprofit=n) p.save() u = User(email="*****@*****.**", slug="email") u.save() c = self.create_comment(p, u, "Comment nro 1") c.save() c.delete() self.assertTrue(c.deleted) self.assertTrue(c.deleted_date)
def test_comment_creation(self): """ Tests Comment creation. """ u1 = User(email='test', slug='user1') u1.save() n = Nonprofit(user=u1) n.save() p = Project(name='Project 1', nonprofit=n) p.save() u = User(email='*****@*****.**', slug='email') u.save() c = self.create_comment(p, u, 'Comment nro 1') c.save() now = datetime.utcnow().replace(tzinfo=pytz.timezone('America/Sao_Paulo')) self.assertTrue(isinstance(c, Comment)) self.assertEqual(c.__unicode__(), '(Project 1) [email protected]: Comment nro 1') self.assertTrue(datesAreEqual(c.created_date, now))
def test_comment_creation(self): """ Tests Comment creation. """ u1 = User(email="test", slug="user1") u1.save() n = Nonprofit(user=u1) n.save() p = Project(name="Project 1", nonprofit=n) p.save() u = User(email="*****@*****.**", slug="email") u.save() c = self.create_comment(p, u, "Comment nro 1") c.save() now = datetime.utcnow().replace(tzinfo=pytz.timezone("America/Sao_Paulo")) self.assertTrue(isinstance(c, Comment)) self.assertEqual(c.__unicode__(), "(Project 1) [email protected]: Comment nro 1") self.assertTrue(datesAreEqual(c.created_date, now))
def test_comment_creation(self): """ Tests Comment creation. """ u1 = User(email="test", slug="user1") u1.save() n = Nonprofit(user=u1) n.save() p = Project(name="Project 1", nonprofit=n) p.save() u = User(email="*****@*****.**", slug="email") u.save() c = self.create_comment(p, u, "Comment nro 1") c.save() now = datetime.utcnow().replace( tzinfo=pytz.timezone("America/Sao_Paulo")) self.assertTrue(isinstance(c, Comment)) self.assertEqual(c.__unicode__(), "(Project 1) [email protected]: Comment nro 1") self.assertTrue(datesAreEqual(c.created_date, now))
def test_edit_project_view_with_changing_roles_one_stays(self): """ Project edit with deleting 1 role but keeping another. """ project = { 'name': "Name", 'details': 'This needs to be big', 'description': 'This needs to be big', 'responsible': 'Marjori', 'phone': '123123', 'email': '*****@*****.**', 'skills': [{'id': 1}], 'causes': [{'id': 1}], 'job': { 'start_date': 20140416, 'end_date': 20140417, 'can_be_done_remotely': True, }, 'nonprofit': 1 } factory = APIRequestFactory() n = self.create_nonprofit() r = Role(name="role name") r.save() r1 = Role(name="role name 1") r1.save() p = Project(nonprofit=n, name='name', slug="name") p.save() p.roles.add(r) p.roles.add(r1) project['id'] = p.id project['roles'] = [{'id': r.id}] request = factory.put("/save/project/", {'project': json.dumps(project)}) force_authenticate(request, user=n.user) with transaction.atomic(): response = views.save_project(request) newP = Project.objects.get(id=p.id) #self.assertEqual(newP.roles.count(), 1) self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def create_project(request, format=None): nonprofit = None # Need a nonprofit user try: nonprofit = request.user.nonprofit except Exception as e: if not request.user.is_staff: error = "ERROR - %d - %s" % (sys.exc_traceback.tb_lineno, e) return Response({"User not authenticated. " + error}, status.HTTP_403_FORBIDDEN) try: obj = json.loads(request.DATA["project"]) except: obj = request.DATA["project"] project = Project() try: # Getting required field if nonprofit: project.nonprofit = nonprofit else: project.nonprofit = Nonprofit.objects.get(id=obj["nonprofit"]) project.name = obj["name"] project.slug = create_project_slug(project.name) project.details = obj["details"] project.description = obj["description"] project.responsible = obj["responsible"] project.phone = obj["phone"] project.email = obj["email"] project.save() skills = obj["skills"] for s in skills: project.skills.add(Skill.objects.get(id=s)) causes = obj["causes"] for c in causes: project.causes.add(Cause.objects.get(id=c)) if obj.get("work", None): work = Work() work.project = project work.weekly_hours = obj["work"].get("weekly_hours", 0) work.can_be_done_remotely = obj["work"].get("can_be_done_remotely", False) work.save() availabilities = obj["work"].get("availabilities", None) if availabilities: for a in availabilities: availability = Availability() availability.weekday = a["weekday"] availability.period = a["period"] availability.save() work.availabilities.add(availability) work.save() elif obj.get("job", None): job = Job() job.project = project job.start_date = datetime.utcfromtimestamp(obj["job"]["start_date"] / 1000).replace( tzinfo=pytz.timezone("America/Sao_Paulo") ) job.end_date = datetime.utcfromtimestamp(obj["job"]["end_date"] / 1000).replace( tzinfo=pytz.timezone("America/Sao_Paulo") ) job.save() has_work = False has_job = False try: project.work has_work = True except: pass try: project.job has_job = True except: pass if not has_job and not has_work: return Response({"detail": "Needs to have project or work."}, status.HTTP_400_BAD_REQUEST) # Doing not required fields try: obja = obj.get("address", None) if obja: address = Address() address.addressline = obja.get("addressline", None) address.addressline2 = obja.get("addressline2", None) address.addressnumber = obja.get("addressnumber", None) address.neighborhood = obja.get("neighborhood", None) address.zipcode = obja.get("zipcode", None) if obja.get("city", None) and obja["city"].get("id", None): address.city = City.objects.get(id=obja["city"]["id"]) address.save() project.address = address project.save() project.facebook_event = obj.get("facebook_event", None) project.image = request.FILES.get("image") project.image_small = request.FILES.get("image") project.image_medium = request.FILES.get("image") project.image_large = request.FILES.get("image") roles = obj.get("roles", None) if roles: for r in roles: role = Role() role.name = r["name"] role.prerequisites = r["prerequisites"] role.details = r["details"] role.vacancies = r["vacancies"] role.save() project.roles.add(role) except Exception as e: error = "ERROR - %d - %s" % (sys.exc_traceback.tb_lineno, e) print error except Exception as e: error = "ERROR - %d - %s" % (sys.exc_traceback.tb_lineno, e) return Response({"detail": error}, status.HTTP_400_BAD_REQUEST) project.save() return Response({"detail": "Project succesfully created.", "slug": project.slug}, status.HTTP_201_CREATED)
def create_project(request, format=None): # Need a nonprofit user try: request.user.nonprofit except Exception as e: error = "ERROR - %d - %s" % (sys.exc_traceback.tb_lineno, e) return Response({"User not authenticated. " + error}, status.HTTP_403_FORBIDDEN) try: obj = json.loads(request.DATA['project']) except: obj = request.DATA['project'] project = Project() try: # Getting required field project.nonprofit = request.user.nonprofit project.name = obj['name'] project.slug = create_project_slug(project.name) project.details = obj['details'] project.description = obj['description'] project.responsible = obj['responsible'] project.phone = obj['phone'] project.email = obj['email'] project.save() skills = obj['skills'] for s in skills: project.skills.add(Skill.objects.get(id=s)) causes = obj['causes'] for c in causes: project.causes.add(Cause.objects.get(id=c)) if obj.get('work', None): work = Work() work.project = project work.weekly_hours = obj['work'].get('weekly_hours', 0) work.can_be_done_remotely = obj['work'].get('can_be_done_remotely', False) work.save() availabilities = obj['work'].get('availabilities', None) if availabilities: for a in availabilities: availability = Availability() availability.weekday = a['weekday'] availability.period = a['period'] availability.save() work.availabilities.add(availability) work.save() elif obj.get('job', None): job = Job() job.project = project job.start_date = datetime.utcfromtimestamp(obj['job']['start_date']/1000).replace(tzinfo=pytz.timezone("America/Sao_Paulo")) job.end_date = datetime.utcfromtimestamp(obj['job']['end_date']/1000).replace(tzinfo=pytz.timezone("America/Sao_Paulo")) job.save() has_work = False has_job = False try: project.work has_work = True except: pass try: project.job has_job = True except: pass if not has_job and not has_work: return Response({'detail': 'Needs to have project or work.'}, status.HTTP_400_BAD_REQUEST) # Doing not required fields try: project.facebook_event = obj.get('facebook_event', None) obja = obj['address'] project.address = Address() project.address.addressline = obja['addressline'] project.address.addressline2 = obja['addressline2'] project.address.addressnumber = obja['addressnumber'] project.address.neighborhood = obja['neighborhood'] project.address.zipcode = obja['zipcode'] project.address.city = City.objects.get(id=obja['city']['id']) project.address.save() project.image = request.FILES.get('image') roles = obj['roles'] for r in roles: role = Role() role.name = r['name'] role.prerequisites = r['prerequisites'] role.details = r['details'] role.vacancies = r['vacancies'] role.save() project.roles.add(role) except: pass project.save() except Exception as e: error = "ERROR - %d - %s" % (sys.exc_traceback.tb_lineno, e) return Response({'detail': error}, status.HTTP_400_BAD_REQUEST) return Response({'detail': 'Project succesfully created.'}, status.HTTP_201_CREATED)
def create_project(self, nonprofit, name): project = Project(nonprofit=nonprofit, name=name) project.save() return project