Example #1
0
 def addpu(self, user):
     userId = user.get('userId', 0)
     if not userId:
         return 4
     user = User.query.filter_by(isDelete=False, id=userId).first()
     flag = True if user.power == 1 else False
     if not user:
         return 5
     data = self.getjson()
     try:
         userid = int(data.get('id', 0))
         projectid = int(data.get('projectid'))
         isAdmin = int(data.get('isAdmin', 0))
     except:
         return 2
     if not all([userid, projectid]):
         return 1
     puadmin = ProjectUser.query.filter_by(isDelete=False,
                                           userid=user.id,
                                           projectid=projectid).first()
     if not puadmin and not flag:  #判断权限
         return 5
     if not puadmin.isAdmin and not flag:  #判断权限
         return 5
     pu = ProjectUser.query.filter_by(isDelete=False,
                                      userid=userid,
                                      projectid=projectid).first()
     if pu:
         return 3
     pu = ProjectUser()
     pu.userid = userid
     pu.projectid = projectid
     pu.isAdmin = isAdmin
     self.create(pu)
     return 3
def update_project(project_id):
    new_project = request.get_json()
    try:
        project = Project.get(Project.id == project_id)
    except models.DoesNotExist:
        return jsonify({ 'message': 'Project not found' }), 400
    if new_project['id'] != project.id:
        return jsonify({ 'message': 'Cannot update project at this url' }), 400
    try:
        if new_project['markerOptions']:
            marker_options = new_project['markerOptions']
            for marker_name in marker_options:
                try:
                    marker_option = MarkerOption.get(MarkerOption.name == marker_name)
                    ProjectMarkerOption.get(ProjectMarkerOption.project == project.id,
                                            ProjectMarkerOption.marker_option == marker_option.id)
                except models.DoesNotExist:
                    ProjectMarkerOption.create(project = project, marker_option = marker_option)
        if new_project['users']:
            users = new_project['users']
            for user in users:
                try:
                    project_user = ProjectUser.get(ProjectUser.app_user == user['id'],
                                                    ProjectUser.project == project)
                except models.DoesNotExist:
                    ProjectUser.create(app_user = user['id'], project = project)
        if new_project['stacks']:
            stacks = new_project['stacks']
            with db.atomic():
                for stack in stacks:
                    try:
                        project_stack = ProjectStack.get(ProjectStack.stack == stack['id'],
                                                        ProjectStack.project == project)
                    except models.DoesNotExist:
                        project_stack = ProjectStack.create(project=project, stack = stack['id'])
                        probe_setting = stack['probeSettings']
                        probe_position = json.loads(probe_setting['position'])
                        ProbeSetting.create(x_offset=int(probe_position['xOffset']),
                                            y_offset=int(probe_position['yOffset']),
                                            project_stack=project_stack,
                                            label=probe_position['label']
                                        )
        message = "Project updated"
    except Exception as ex:
        print ex
    project = Project.get(Project.id == project_id)
    return jsonify({ 'message': 'Project updated', 'project': project.deep_serialized() }), 200
Example #3
0
def populate():
    p1 = Person('Alice')
    p2 = Person('Anamika')
    p3 = Person('Annie')
    p4 = Person('Anson')
    p5 = Person('Bob')
    p6 = Person('Carol')
    p7 = Person('Don')
    p8 = Person('Evi')

    session.add_all([p1, p2, p3, p4, p5, p6, p7, p8])

    orders = [(p1, 'veggies', 120), (p2, 'veggies', 20), (p3, 'veggies', 120),
              (p4, 'veggies', 10), (p5, 'veggies', 280), (p1, 'ketchup', 80),
              (p1, 'spices', 220), (p1, 'tissues', 50), (p1, 'notebooks', 90),
              (p5, 'ketchup', 80)]
    for person, name, price in orders:
        order = Order(person, name, price)
        session.add(order)

    p1 = Project('BSNL billing', 'alice')
    p2 = Project('BSNL payroll', 'bob')
    p3 = Project('ABC Institute', 'bob')

    pu1 = ProjectUser(p1, 'alice')
    pu2 = ProjectUser(p1, 'carol')
    pu3 = ProjectUser(p1, 'don')
    pu4 = ProjectUser(p2, 'alice')
    pu5 = ProjectUser(p2, 'carol')
    pu6 = ProjectUser(p3, 'don')
    pu7 = ProjectUser(p3, 'carol')

    session.add_all([p1, p2, p3, pu1, pu2, pu3, pu4, pu5, pu6, pu7])

    session.commit()
Example #4
0
 def process_view(self, request, view_func, view_args, view_kwargs):
     project = view_kwargs.get('project', None)
     if project is not None:
         project = get_object_or_404(Project, name=project)
         if project.public:
             return None
         else:
             if not request.user.is_authenticated():
                 return HttpResponseForbidden()
             elif not ProjectUser.can_read(request.user, project):
                 return HttpResponseForbidden()
     return None
Example #5
0
def add_new(request):
    user = request.user
    if request.method == "POST":
        form = AddProjectForm(request.POST)
        if (form.is_valid()):
            name = form.cleaned_data['name']
            project = Project()
            project.name = name
            project.user = user
            project.save()

            project_user = ProjectUser()
            project_user.project = project
            project_user.user = user
            project_user.save()

            tag = Tag()
            tag.name = '#' + name
            tag.user = user
            tag.type = 'project'
            tag.save()
            return HttpResponseRedirect('/project/' + name)

    return render(request, 'project/add_new.html', {
        'form': AddProjectForm(),
    })
def projects():
    req = request.get_json()
    message = ""
    try:
        page = req['page']
        page_size = req['pageSize']
    except (TypeError, KeyError):
        page = 1
        page_size = 20
    if request.method == 'POST':
        try:
            request_error = False
            title = req['title']
            comments = req['comments']
            stacks = req['stacks']
            probe_type = req['probeType']
        except KeyError:
            request_error = True
        if request_error:
            return jsonify({ 'message': 'Insufficient information to create project' }), 400
        try:
            project = Project.create(title=title, comments=comments, probe_type=probe_type)
            if req['markerOptions']:
                marker_options = req['markerOptions']
                for marker_name in marker_options:
                    try:
                        marker_option = MarkerOption.get(MarkerOption.name == marker_name)
                        ProjectMarkerOption.create(project = project, marker_option = marker_option)
                    except Exception as ex:
                        print("line 74")
                        print ex
            if req['users']:
                users = req['users']
                for user in users:
                    try:
                        ProjectUser.create(app_user = user['id'], project = project)
                    except Exception as ex:
                        print ex
            for stack in stacks:
                try:
                    project_stack = ProjectStack.create(project=project, stack = stack['stackId'])
                    probe_setting = stack['probeSettings']
                    probe_position = json.loads(probe_setting['position'])
                    ProbeSetting.create(x_offset=int(probe_position['xOffset']),
                                        y_offset=int(probe_position['yOffset']),
                                        project_stack=project_stack,
                                        label=probe_position['label']
                                    )
                except Exception as ex:
                    print ex
            message = "Project created"
        except Exception as ex:
            print ex
    projects = (Project.select()
        .order_by(Project.created_date.desc()))
        # .paginate(page, page_size))
    return jsonify({ 
        'message': message,
        'projects': [project.serialized for project in projects],
        'projectCount': SelectQuery(models.Project).count()
    }), 201
Example #7
0
 def addproject(self, user):
     body = self.getjson()
     name = body.get('name', '')
     pname = body.get('pname', '')
     token = body.get('token', [])
     isGit = body.get('isGit', 0)
     groupId = body.get('groupId', 0)
     groupName = body.get('groupName', '')
     if type(token) is str:
         token = [token]
     res = [
         i for i in pname if not (97 <= ord(i) <= 122 or 65 <= ord(i) <= 90)
     ]
     if res:
         return 2
     repos_url = body.get('repos_url', '')
     ip = body.get('ip', '')
     # startip = body.get('startip', '')备用 统一更新启动
     # flag = self.verip(ip)
     # if not flag or not ip:
     #     return 5
     # flag = self.verip(startip)
     # if not flag or not startip:
     #  return 5
     msg = body.get('msg', '')
     if not all([name, repos_url, token]):
         return 1
     project = Project.query.filter(
         or_(Project.repos_url == repos_url, Project.pname == pname),
         Project.isDelete == False).first()
     userId = user.get('userId', 0)
     if not userId:
         return 4
     if project:
         return 3
     pobj = Project()
     pobj.name = name
     pobj.pname = pname
     pobj.repos_url = repos_url
     pobj.ip = ip
     # pobj.startip = startip
     pobj.msg = msg
     pobj.token = json.dumps(token)
     pobj.groupId = 0
     self.create(pobj)
     if isGit:
         pobj.groupId = pobj.id
     if groupId:
         pobj.groupId = groupId
     if groupName:
         pobj.groupName = groupName
     self.update(pobj)
     pu = ProjectUser()
     pu.projectid = pobj.id
     pu.userid = userId
     pu.isAdmin = 1
     self.create(pu)
     data = {
         "name": name,
         "id": pobj.id,
         "pname": pname,
         "repos_url": repos_url,
         "ip": ip,
         "msg": msg,
         "token": token
     }
     return data