def scrape_projects_for_brigade(brigade_object): next_page = CFA_ORGANIZATIONS_PROJECTS_API_ENDPOINT.format( brigade_object.id) while next_page: try: page = requests.get(next_page).json() except ValueError, e: raise e # maybe do error handling later, but for now let's just note this can throw ValueError if page.get('pages', None): next_page = page.get('pages').get('next', None) else: next_page = None objects = page.get('objects', list()) for project in objects: project_object = Project.objects.filter( id=project.get('id')).first() if not project_object: project_object = Project(id=project.get('id')) project_object.name = project.get('name') project_object.description = project.get('description') project_object.link_url = project.get('link_url') project_object.code_url = project.get('code_url') project_object.status = project.get('status') project_object.tags = project.get('tags') project_object.organization_name = project.get('organization_name') project_object.last_updated = dateutil.parser.parse( project.get('last_updated')) project_object.brigade_id = brigade_object.id project_object.save() ProjectSnapshot().create_snapshot(project_object)
def scrape_projects_for_brigade(brigade_object): next_page = CFA_ORGANIZATIONS_PROJECTS_API_ENDPOINT.format(brigade_object.id) while next_page: try: page = requests.get(next_page).json() except ValueError, e: raise e # maybe do error handling later, but for now let's just note this can throw ValueError if page.get('pages', None): next_page = page.get('pages').get('next', None) else: next_page = None objects = page.get('objects', list()) for project in objects: project_object = Project.objects.filter(id=project.get('id')).first() if not project_object: project_object = Project(id=project.get('id')) project_object.name = project.get('name') project_object.description = project.get('description') project_object.link_url = project.get('link_url') project_object.code_url = project.get('code_url') project_object.status = project.get('status') project_object.tags = project.get('tags') project_object.organization_name = project.get('organization_name') project_object.last_updated = dateutil.parser.parse(project.get('last_updated')) project_object.brigade_id = brigade_object.id project_object.save() ProjectSnapshot().create_snapshot(project_object)
def post(self): """ Endpoint to create new project""" data = request.get_json() title = data.get('title') user = get_jwt_identity() project_exist = Project.find_by_title_and_user(title=title, user_id=user.get('id')) if project_exist: raise ValidationError( { "message": serialization_messages['exists'].format( 'Project with title') }, 409) data['createdBy'] = user.get("id") project = Project() user_list = assign_user(data.get('assignees')) convert_date_to_date_time(data['due_date']) data['assignees'] = user_list if user_list is not None else [] assignee_ids = data['assignees'] del data['assignees'] schema = ProjectSchema() project_data = schema.load_object_into_schema(data) project.created_by = data['createdBy'] project.title = data['title'] project.description = data['description'] project.due_date = data['due_date'] project.assignees = assignee_ids project.save() return response('success', message=success_messages['created'].format('Project'), data=schema.dump(project).data, status_code=201)
def make_projects(): #takes bad csv and converts to usable models with open("PublicLEEDProjectDirectory.csv", encoding='ISO-8859-1') as infile: reader = csv.reader(infile) for row in reader: if row[5] in states_list: project = Project() project.id = row[0] project.is_confidential = row[1] project.name = row[2] project.street = row[3] project.city = row[4] project.state_id = State.objects.get(abbreviation = row[5]) project.zip_code = row[6] project.country = row[7] project.leed_version = row[8] if (row[9] != "") and (row[9] != " "): project.points_achieved = int(float(row[9])) project.certification_level = row[10] project.certification_date = fix_time(row[11].split(" ")[0]) project.owner_types = row[13] if (row[14] != "") and (row[15] != " "): project.gross_square_foot = int(float(row[14])) if (row[15] != "") and (row[15] != " "): project.total_property_area = int(float(row[15])) project.project_types = row[16].split(",")[0] project.registration_date = fix_time(row[18].split(" ")[0]) project.save() print(project.name)
def add_project(self, name, mailing_list="", git_repo=""): p = Project(name=name, mailing_list=mailing_list, git=git_repo or self.create_git_repo(name)) p.save() push_repo = self.create_git_repo(name + "_push") p.set_property("git.push_to", push_repo) p.set_property("git.public_repo", push_repo) p.set_property("git.url_template", push_repo) return p
def import_projects(request): if request.method == 'POST': Project.objects.all().delete() req_body = request.FILES['file'].read() projects_dict = simplexml.loads(req_body)['projects'] for p in projects_dict: project_tosave = Project(name=p['name'], description=p['description']) project_tosave.save() return HttpResponse(status=200) return HttpResponse(status=400)
def add_project(self, name, mailing_list="", git_repo=""): p = Project( name=name, mailing_list=mailing_list, git=git_repo or self.create_git_repo(name), ) push_repo = self.create_git_repo(name + "_push") p.config = { "git": { "push_to": push_repo, "public_repo": push_repo, "url_template": push_repo, } } p.save() return p
def scrape_brigades_and_projects(): next_page = CFA_ORGANIZATIONS_API_ENDPOINT while next_page: try: page = requests.get(next_page).json() except ValueError, e: raise e # maybe do error handling later, but for now let's just note this can throw ValueError if page.get('pages', None): next_page = page.get('pages').get('next', None) else: next_page = None objects = page.get('objects', list()) for brigade in objects: brigade_object = Brigade.objects.filter(id=brigade.get('id')).first() if not brigade_object: brigade_object = Brigade(id=brigade.get('id')) brigade_object.name = brigade.get('name') brigade_object.city = brigade.get('city') brigade_object.latitude = brigade.get('latitude') brigade_object.longitude = brigade.get('longitude') brigade_object.started_on = brigade.get('started_on') brigade_object.website = brigade.get('website') brigade_object.type = brigade.get('type') brigade_object.events_url = brigade.get('events_url') brigade_object.rss = brigade.get('rss') brigade_object.save() BrigadeSnapshot().create_snapshot(brigade_object) for project in brigade.get('current_projects', list()): project_object = Project.objects.filter(id=project.get('id')).first() if not project_object: project_object = Project(id=project.get('id')) project_object.name = project.get('name') project_object.description = project.get('description') project_object.link_url = project.get('link_url') project_object.code_url = project.get('code_url') project_object.status = project.get('status') project_object.tags = project.get('tags') project_object.organization_name = project.get('organization_name') project_object.last_updated = dateutil.parser.parse(project.get('last_updated')) project_object.brigade_id = brigade_object.id project_object.save() ProjectSnapshot().create_snapshot(project_object)
class ModelTestCase(TestCase): """ This test case defines the test suite for project model. """ def setUp(self): """ Defining test client and other test variables """ self.project_name = "New Project 1" self.project_description = "Awesome Project" self.project = Project(name=self.project_name, description=self.project_description) def test_model_can_create_project(self): """ Test the project model can create a project """ old_count = Project.objects.count() self.project.save() new_count = Project.objects.count() self.assertNotEqual(old_count, new_count)
def projects(): if request.method == "POST": title = str(request.data.get('title', '')) email = str(request.data.get('email', '')) short_description = str(request.data.get('short_description','')) description = str(request.data.get('description', '')) url = str(request.data.get('url', '')) creator_name = str(request.data.get('description', '')) twitter = str(request.data.get('description', '')) instagram = str(request.data.get('description', '')) facebook = str(request.data.get('description', '')) portfolio = str(request.data.get('description', '')) image_url = str(request.data.get('image_url', '')) slug = str(request.data.get('slug', '')) if title and email and short_description and url: project = Project(title=title, email=email, short_description=short_description, description=description, url=url, creator_name=creator_name, twitter=twitter, instagram=instagram, facebook=facebook, portfolio=portfolio, slug=slug) project.save() response = jsonify({ 'id': project.id, 'url': '/' + project.slug, 'date_created': project.date_created, 'date_modified': project.date_modified }) response.status_code = 201 return response else: response = jsonify({'error': 'Missing required fields'}) response.status_code = 401 return response else: #GET projects = Project.get_all() results = [] for project in projects: results.append(project.to_dict()) response = jsonify(results) response.status_code = 200 return response
def test_basic(self): prj = Project(name="TestProject") prj.save() prj.set_property("testing.tests.a.timeout", 3600) prj.set_property("testing.tests.a.enabled", True) prj.set_property("testing.tests.a.script", "#!/bin/bash\ntrue") prj.set_property("testing.tests.a.requirements", "") prj.set_property("testing.tests.a.users", "") prj.set_property("testing.tests.a.tester", "") msg = Message(project=prj, date=datetime.datetime.now(), is_series_head=True, is_patch=True) msg.save() msg.set_property("git.repo", "dummy repo") msg.set_property("git.tag", "dummy tag") msg.set_property("git.base", "dummy base") self.api_login() td = self.api_call("testing-get", project="TestProject", tester="dummy tester", capabilities=[]) self.assertIn("head", td)
def create(self, validated_data): user = self.context.get('request').user.profile project = Project(**validated_data) project.creator = user project.save() return project