示例#1
0
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)
示例#3
0
    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)
示例#5
0
 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
示例#6
0
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)
示例#7
0
 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
示例#8
0
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)
示例#9
0
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)
示例#10
0
    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
示例#11
0
 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)
示例#12
0
 def create(self, validated_data):
     user = self.context.get('request').user.profile
     project = Project(**validated_data)
     project.creator = user
     project.save()
     return project