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, )
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,)
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)
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
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
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': '创建任务成功'})
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
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
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)
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
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
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