Exemple #1
0
 def test1_create_project(self):
     print Colorizer.LightPurple('\n[TEST project] should create a project')
     project = Project(
         title='Prova project',
         picture='images/profile/default_user_icon.png',
         details='Prova description'
     )
     project.profile = self.user.profile
     project.save()
     self.assertTrue(Project.objects.get(title='Prova project'), Colorizer.Red('Create project Error'))
Exemple #2
0
def load_project(data):
    for project in data:
        try:
            project_form = Project.objects.get(name=project)
        except Project.DoesNotExist:
            project_form = Project(name=project)
            project_form.save()

        for ds in data[project]:
            if ds != "meta":
                try:
                    ds_form = DataSource.objects.get(parent=project, name=ds)
                except DataSource.DoesNotExist:
                    ds_form = DataSource(parent=project, name=ds)
                    ds_form.save()
                try:
                    meta_title = data[project]["meta"]["title"]
                    project_form.meta_title = meta_title
                    project_form.save()
                except KeyError:
                    pass
                
                for repo in data[project][ds]:
                    try:
                        repo_form = Repository.objects.get(parent=project, name=repo)
                    except Repository.DoesNotExist:
                        repo_form = Repository(parent=project, name=repo)
                        repo_form.save()
                    ds_form.repository.add(repo_form)
                ds_form.save()

                project_form.data_source.add(ds_form)
        project_form.save()
Exemple #3
0
def addProject(request):
    #    print "hello in project"
    if not request.user.is_authenticated(
    ) or not request.user.is_active == True:
        redirect("/auth/")
    if request.method == "POST":
        requestReceived = json.loads(request.POST.get("project"))
        json.dumps(requestReceived)
        projectName = requestReceived['projectName']
        projectDescription = requestReceived['projectDescription']
        skills = requestReceived['skills']
        branches = requestReceived['branches']
        projectImage = requestReceived['projectImage']
        shortDesc = requestReceived['shortDesc']
        skillList = []
        print len(branches)
        for skillId in skills:
            skill = Skill.objects.get(id=skillId)
            skillList.append(skill)

        contributors = requestReceived['contributers']
        contributorList = []
        for username in contributors:
            user = User.objects.get(username=username)
            contributorList.append(user)

        currentTimeStamp = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M')
        project = Project(user=request.user,
                          projectName=projectName,
                          publishedDate=currentTimeStamp,
                          projectDescription=projectDescription,
                          skillList=skillList,
                          contributorList=contributorList,
                          branchList=branches
                          )  #,shortDesc=shortDesc,projectImage=projectImage)
        project.save()
        return HttpResponse()

    else:

        users = User.objects.all()
        skills = Skill.objects.all()
        if request.user.is_authenticated():
            return render(
                request, 'dashboard/addprojects.html', {
                    'skills': skills,
                    'users': users,
                    'username': request.user.username
                })
        else:
            return redirect("/auth/")
def test_fetch_warning():

    user = User.objects.create_user('a', '*****@*****.**', 'bob')
    user.first_name = "testf"
    user.last_name = "testf"
    user.save()
    email = EmailAddress(address='*****@*****.**', user=user)
    email.save()

    ease_blog = Blog(from_feed = False)
    ease_blog.save()
    ease_repo = Repository(web_url = "http://git.gnome.org/browse/ease",
        clone_url = "git://git.gnome.org/ease",
        from_feed = False)
    ease_repo.save()
    ease = Project(title = "Ease",
        description = "A presentation application for the Gnome Desktop.",
        website = "http://www.ease-project.org",
        wiki = "http://live.gnome.org/Ease",
        blog_id = ease_blog.id,
        repository_id = ease_repo.id)
    ease.save()
    ease.authors.add(user)
    ease.save()

    ease.do_warnings()
    assert ease.blog_warn_level > 0
    assert ease.repo_warn_level > 0
Exemple #5
0
    def test2_add_project_contributor(self):
        print Colorizer.LightPurple('\n[TEST project] should add a contributor to project')
        project = Project(
            title='Prova project',
            picture='images/profile/default_user_icon.png',
            details='Prova description'
        )
        project.profile = self.user.profile
        project.save()
        project.contributors.add(self.user.profile)
        project.save()

        new_project = Project.objects.get(title='Prova project')

        self.assertGreater(len(new_project.contributors.all()), 0, Colorizer.Red('Add contributor to project error'))
Exemple #6
0
    def test6_get_interested_from_project(self):
        print Colorizer.LightPurple('\n[TEST CHALLENGE] should return a list of profile interested in a project')

        project = Project(
            title='Prova project',
            picture='images/profile/default_user_icon.png',
            details='Prova description'
        )
        project.profile = self.user.profile
        project.save()
        self.user.profile.add_interest(project)

        profiles = project.interested()

        self.assertTrue(all(isinstance(x, Profile) for x in profiles), Colorizer.Red('Challenge related interest are not a porofile list'))
Exemple #7
0
    def project(request, project_id=None):
        from dashboard.serializer import ProjectSerializer
        # DELETE PROJECT
        if request.method == 'DELETE' and project_id is not None:
            try:
                profile = request.user.profile
                projects = Project.objects.get(id=project_id, profile=profile)
                projects.delete()
            except ObjectDoesNotExist as e:
                print(e)
                print(not_authorized())
            return success('ok', 'project deleted', {})

        # GET ALL
        if request.method == 'GET' and project_id is None:
            try:
                profile = request.user.profile
                projects = Project.objects.filter(profile=profile)
                serialized = ProjectSerializer(projects, many=True)
                return success('ok', 'user projects', serialized.data)
            except Exception as e:
                print(e)
                return not_found()

        # GET SINGLE
        if request.method == 'GET' and project_id is not None:
            try:
                project = Project.objects.filter(id=project_id)
                serialized = ProjectSerializer(project, many=True)
                return success('ok', 'single project', serialized.data)
            except ObjectDoesNotExist as o:
                print(o)
                return not_found()
            except Exception as e:
                print(e)
                return error()

        # UPDATE
        if request.method == 'POST' and project_id is not None:
            data_to_update = {}
            data_to_update['name'] = request.POST.get('name', '')
            data_to_update['description'] = request.POST.get('description', '')
            data_to_update['start_date'] = request.POST.get('start_date', '')
            data_to_update['creator_role'] = request.POST.get(
                'creator_role', '')
            data_to_update['project_url'] = request.POST.get('project_url', '')
            end_date = request.POST.get('end_date', '')

            # check if the image needs to be updated
            if request.POST.get('picture', None) != '':
                # image to be updated
                picture = request.FILES.get('picture')
                v13.check_image(picture)
                data_to_update['picture'] = picture
            # check if is or not an ongoing project
            try:
                if end_date != '':
                    end_date = dt.strptime(end_date, '%Y-%m-%d')
                    data_to_update['start_date'] = dt.strptime(
                        data_to_update['start_date'], '%Y-%m-%d')
                    # if end_date > dt.now():
                    #     return bad_request('The project end_date cannot be in the future')
                    if end_date < data_to_update['start_date']:
                        return bad_request(
                            'The project end date cannot be before the project start date'
                        )
                    data_to_update['end_date'] = end_date
            except Exception as e:
                print(e)
                return error()
            # get the model object and check the profile owns that project
            try:
                profile = request.user.profile
                project = Project.objects.filter(id=project_id,
                                                 profile=profile).first()
                # clear and update tag
                project.set_tags(request.POST.get('tags', ''))
                # remove tag from data_to_update
                project.__dict__.update(data_to_update)
                project.save()
            except Project.DoesNotExist as e:
                print(e)
                return not_authorized()
            except Exception as e:
                print(e)
                return error()
            result = ProjectSerializer(project).data
            return success('ok', 'project updated', result)

        # CREATE
        if request.method == 'POST' and project_id is None:
            # check if fields are filled
            try:
                project_image = request.FILES.get('picture')
                project_name = request.POST['name']
                project_description = request.POST['description']
                project_start_date = dt.strptime(request.POST['start_date'],
                                                 '%Y-%m-%d')
                project_creator_role = request.POST['creator_role']
                project_url = request.POST['project_url']
                project_tags = request.POST['tags']

                # Check image
                is_image_ok = v13.check_image(project_image)
                if is_image_ok is not True:
                    return is_image_ok

            except KeyError as k:
                print(k)
                return bad_request("Please fill all the fields")
            except Exception as e:
                return bad_request(e)

            # check if is or not an ongoing project
            try:
                project_end_date = dt.strptime(request.POST['end_date'],
                                               '%Y-%m-%d')
            except KeyError:
                project_end_date = None

            # if it is not an ongoing project check dates
            if project_end_date is not None:
                if project_end_date < project_start_date:
                    return bad_request(
                        'The project END DATE cannot be before the project START DATE'
                    )

            try:
                # check user has not project with that name
                profile = request.user.profile
                projects = Project.objects.filter(profile=profile,
                                                  name=project_name)
                if len(projects) > 0:
                    return bad_request('Project name already exist')

                project = Project(profile=profile,
                                  name=project_name,
                                  picture=project_image,
                                  description=project_description,
                                  start_date=project_start_date,
                                  end_date=project_end_date,
                                  creator_role=project_creator_role,
                                  project_url=project_url)
                project.save()
                project.tags.clear()
                for tagName in [
                        x.lower().capitalize() for x in project_tags.split(",")
                ]:
                    project.tags.add(
                        Tag.objects.filter(name=tagName).first()
                        or Tag.create(name=tagName))
                project.save()
                result = ProjectSerializer(project).data
            except Exception as e:
                return bad_request(e)

            return success('ok', 'project created', result)
Exemple #8
0
def addproject(request):
    current_user = request.user
    account = get_object_or_404(Account, username=current_user)
    if request.method == "POST":
        project = Project()
        project.project_name = request.POST["project_name"]
        project.description = request.POST["editor1"]
        project.project_file = request.FILES["projectFile"]
        try:
            project.additional_file = request.FILES["additionalFile"]
        except:
            project.additional_file = None
        project.date_of_initiation = request.POST['start_date']
        project.deadline = request.POST['dead_line']
        project.save()
        return render(request, 'dashboard/addproject.html', {
            'account': account,
            'project': project
        })
    else:
        current_user = request.user
        account = get_object_or_404(Account, username=current_user)
        return render(request, 'dashboard/addproject.html',
                      {'account': account})