コード例 #1
0
ファイル: clmt-stats.py プロジェクト: bkarak/data_msr2015
def check_directory(path):
    from db.models import Project

    for filename in os.listdir(path):
        full_path = path + filename

        if os.path.isfile(full_path):
            try:
                (project_name, project_input) = infer_project_name(filename)
                project_name = os.path.basename(project_name)

                Project.get_or_insert(project_name)

                project_status = sanity_checks.get(project_name,
                                                   ProjectStatus(project_name))

                if project_input == 'jdepend':
                    project_status.jdepend_imported = True
                elif project_input == 'clmt':
                    project_status.clmt_imported = True
                elif project_input == 'ckjm':
                    project_status.ckjm_imported = True

                sanity_checks[project_name] = project_status
            except Exception, e:
                print '%s' % (full_path, )
コード例 #2
0
ファイル: clmt-stats.py プロジェクト: bkarak/data_msr2015
def check_directory(path):
    from db.models import Project

    for filename in os.listdir(path):
        full_path = path + filename

        if os.path.isfile(full_path):
            try:
                (project_name, project_input) = infer_project_name(filename)
                project_name = os.path.basename(project_name)

                Project.get_or_insert(project_name)

                project_status = sanity_checks.get(project_name, ProjectStatus(project_name))

                if project_input == 'jdepend':
                    project_status.jdepend_imported = True
                elif project_input == 'clmt':
                    project_status.clmt_imported = True
                elif project_input == 'ckjm':
                    project_status.ckjm_imported = True

                sanity_checks[project_name] = project_status
            except Exception, e:
                print '%s' % (full_path,)
コード例 #3
0
def create_project():
    params = request.json
    name = params['name']
    new_project = Project(name=name)
    new_project.users.append(current_user)
    g.db.add(new_project)
    return jsonify(success=True)
コード例 #4
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def accept_invitation(project_id: str, user: str) -> Optional[bool]:
    """
    Accept invitation to the project
    :param project_id: an id of the project were a user was invited
    :param user: a reference to the user
    :return:
    """
    if not (project_id or user):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    user_indeed_was_invited = False
    if user in project.invited_users and user not in project.users:
        project.users.append(user)
        user_indeed_was_invited = True

    if user in project.invited_managers and user not in project.managers:
        project.managers.append(user)
        user_indeed_was_invited = True

    project.save()
    return user_indeed_was_invited
コード例 #5
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def create_new_project(name: str, creator: str) -> Optional[str]:
    """
    Create a new project
    :param name: a name of the project
    :param creator: a creator of the project
    :return: an id of the project
    """

    if not (name and creator):
        return None
    try:
        project = Project(name=name, managers=[creator])
        project.save()
        return str(project.id)
    except Exception as e:
        logger.exception(f'Failed to create Project. Error: {e}')

    return None
コード例 #6
0
def boss_create_project(request):
    uuid = UseAes(SECRET_KEY).decodebytes(request.COOKIES.get('uuid'))
    user = Staff.objects.filter(telephone=uuid).first()
    if (not user) or (user.department_id != 1):
        return JsonResponse(data={
            "code": 0,
            "msg": "违规操作"
        },
                            json_dumps_params={'ensure_ascii': False})

    if request.method == 'GET':
        # uuid = UseAes(SECRET_KEY).decodebytes(request.COOKIES.get('uuid'))
        pro_leader = [
            staff for staff in Staff.objects.filter(
                ~Q(staff_id=user.staff_id),
                department__department_id__in=LEADER).values()
        ]
        all_pro = [pro for pro in Project.objects.all().values()]
        for pro in all_pro:
            pro['pro_leader_name'] = Staff.objects.get(
                staff_id=pro['project_leader_id']).username
            pro['pro_leader_telephone'] = Staff.objects.get(
                staff_id=pro['project_leader_id']).telephone
        data = {
            'pro_leader': pro_leader,
            'all_pro': all_pro,
        }
        return JsonResponse({
            'code': 1,
            'msg': '请求成功',
            'data': data
        },
                            json_dumps_params={'ensure_ascii': False})
    elif request.method == 'POST':
        try:
            pro_name = request.POST.get('pro_name')
            pro_leader = request.POST.get('pro_leader')
            overtime = request.POST.get('overtime')
            remarks = request.POST.get('remarks')
            new_pro = Project()
            new_pro.project_name = pro_name
            new_pro.project_leader = Staff.objects.get(staff_id=pro_leader)
            new_pro.overtime = overtime
            new_pro.note = remarks
            new_pro.save()
        except:
            return JsonResponse({
                'code': 0,
                'msg': '创建任务失败'
            },
                                json_dumps_params={'ensure_ascii': False})
        return JsonResponse({'code': 1, 'msg': '创建任务成功'})
コード例 #7
0
    def test_get_project_list(self, flask_client, session, logined_user_hou):
        # Given 프로젝트를 만들고
        project = Project(name='new_project')
        project.users.append(logined_user_hou)
        session.add(project)

        # When projects를 호출하면
        resp = flask_client.get('/projects/',
                                content_type='application/json',
                                follow_redirects=True)
        result = json.loads(resp.data.decode())

        # Then 잘들어가있다
        assert resp.status_code == 200
        assert result['success']
        assert len(result['data']['projects']) == 1
        assert result['data']['projects'][0]['name'] == project.name
コード例 #8
0
    def test_get_project(self, flask_client, session, logined_user_hou):
        # Given 프로젝트를 만들고 id를 준비한다.
        project_name = 'new_project'
        project = Project(name=project_name)
        project.users.append(logined_user_hou)
        session.add(project)
        new_project= session.query(Project) \
            .filter(Project.name == project_name).first()
        project_id = new_project.id

        # When 프로젝트 id를 path에 추가하여 정보를 요청하면
        resp = flask_client.get('/projects/{}'.format(project_id),
                                content_type='application/json',
                                follow_redirects=True)

        # Then 잘돌려준다
        result = json.loads(resp.data.decode())
        assert resp.status_code == 200
        assert result['success']
        assert result['data']['project']['name'] == project_name
コード例 #9
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def get_project_activities(project_id: str, user: str,
                           **filters) -> Union[int, None, List[Activity]]:
    """
    Return activities of all users in a project
    :param project_id: an id of the project
    :param user: a reference to the user asking, should have a manager role
    :param filters: filters for find_activities method
    :return:
    """
    if not (project_id or user):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    if user not in project.managers:
        return None

    if not project.users:
        return []
    else:
        return find_activities(user_ids=project.users, **filters)
コード例 #10
0
ファイル: project.py プロジェクト: theMavl/InnoMetrics
def invite_user(project_id: str,
                user_email: str,
                invitor: str,
                manager: bool = False) -> Optional[bool]:
    """
    Invite a user to the project
    :param manager: if a person invited for manager role
    :param invitor: an user reference to invitor
    :param project_id: an id of the project
    :param user_email: a user's email
    :return:
    """
    if not (project_id and user_email and invitor):
        return None

    project = Project.objects(id=project_id).first()
    if not project:
        return None

    if invitor not in project.managers:
        return None

    user = User.objects(email=user_email).first()
    if not user:
        return None

    if manager:
        if user.to_dbref() not in project.invited_managers:
            project.invited_managers.append(user.to_dbref())
    else:
        if user.to_dbref() not in project.invited_users:
            project.invited_users.append(user.to_dbref())

    project.save()

    return True
コード例 #11
0
ファイル: clmt-stats.py プロジェクト: bkarak/data_msr2015
def import_json(project_name, project_input, json_obj):
    from db.models import Filenames, Category, Project, Measurement, MeasurementType

    info('Importing Project: %s (%s)' % (project_name, project_input))
    _project_obj = Project.get_or_insert(project_name)

    if _project_obj == -1:
        error('Could not import Project: %s (%s)' % (project_name, project_input))
        return

    for element in json_obj:
        try:
            # retrieve id
            _id = element['id']
            _category = element['category']
            _filename = element['filename']

            # retrieve ids
            _id_obj = Filenames.get_or_insert(_id)

            if _id_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' % (_id, _filename))
                continue

            # retrieve categories
            _category_obj = Category.get_or_insert(_category)

            if _category_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' % (_id, _filename))
                continue

            # retrieve filenames
            _filename_obj = Filenames.get_or_insert(_filename)

            if _filename_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' % (_id, _filename))
                continue

            from db.internals import Session

            db_session = Session()

            for measurements in element.get('measurement', []):
                try:
                    try:
                        _name = measurements[u'name']
                    except Exception, e:
                        _name = measurements[u'Name']

                    _mt_obj = MeasurementType.get_or_insert(_name + '_' + project_input)

                    if _mt_obj == -1:
                        warning('Invalid Measurement Type: %s' % (_name + '_' + project_input,))
                        continue

                    _value = str(measurements['value'])

                    meas_object = Measurement()
                    meas_object.cat_pk = _category_obj
                    meas_object.prj_pk = _project_obj
                    meas_object.meas_id = _id_obj
                    meas_object.meas_filename = _filename_obj
                    meas_object.meas_value = _value
                    meas_object.mt_pk = _mt_obj
                    db_session.add(meas_object)
                except Exception, e:
                    warning('Invalid Measurement: %s (%s)' % (measurements, e.message))
                    continue
コード例 #12
0
ファイル: clmt-stats.py プロジェクト: bkarak/data_msr2015
def import_json(project_name, project_input, json_obj):
    from db.models import Filenames, Category, Project, Measurement, MeasurementType

    info('Importing Project: %s (%s)' % (project_name, project_input))
    _project_obj = Project.get_or_insert(project_name)

    if _project_obj == -1:
        error('Could not import Project: %s (%s)' %
              (project_name, project_input))
        return

    for element in json_obj:
        try:
            # retrieve id
            _id = element['id']
            _category = element['category']
            _filename = element['filename']

            # retrieve ids
            _id_obj = Filenames.get_or_insert(_id)

            if _id_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' %
                        (_id, _filename))
                continue

            # retrieve categories
            _category_obj = Category.get_or_insert(_category)

            if _category_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' %
                        (_id, _filename))
                continue

            # retrieve filenames
            _filename_obj = Filenames.get_or_insert(_filename)

            if _filename_obj == -1:
                warning('Invalid Element (id, filename): (%s, %s)' %
                        (_id, _filename))
                continue

            from db.internals import Session

            db_session = Session()

            for measurements in element.get('measurement', []):
                try:
                    try:
                        _name = measurements[u'name']
                    except Exception, e:
                        _name = measurements[u'Name']

                    _mt_obj = MeasurementType.get_or_insert(_name + '_' +
                                                            project_input)

                    if _mt_obj == -1:
                        warning('Invalid Measurement Type: %s' %
                                (_name + '_' + project_input, ))
                        continue

                    _value = str(measurements['value'])

                    meas_object = Measurement()
                    meas_object.cat_pk = _category_obj
                    meas_object.prj_pk = _project_obj
                    meas_object.meas_id = _id_obj
                    meas_object.meas_filename = _filename_obj
                    meas_object.meas_value = _value
                    meas_object.mt_pk = _mt_obj
                    db_session.add(meas_object)
                except Exception, e:
                    warning('Invalid Measurement: %s (%s)' %
                            (measurements, e.message))
                    continue