Exemplo n.º 1
0
def get_materials():
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 50)

    name = request.args.get('name', '')
    specification = request.args.get('specification', '')
    category = request.args.get('category', '')
    code = request.args.get('code', '')

    query = Material.query
    if name is not None and len(name.strip()) > 0:
        query = query.filter(Material.name.like('%%%s%%' % name))
    if category is not None and len(category.strip()) > 0:
        query = query.filter(Material.category.like('%%%s%%' % category))
    if code is not None and len(code.strip()) > 0:
        query = query.filter(Material.code.like('%%%s%%' % code))
    if specification is not None and len(specification.strip()) > 0:
        query = query.filter(
            Material.specification.like('%%%s%%' % specification))

        #query = query.filter(or_(Material.name.like('%%%s%%'%keyword),Material.specification.like('%%%s%%'%keyword)))

# print(str(query))
    data = Material.to_collection_dict(query, page, per_page,
                                       'api.get_materials')

    return jsonify(data)
Exemplo n.º 2
0
def import_svn_data():
    from svn import svn
    import logging

    # 创建一个logger  
    logger = logging.getLogger('app_matemgr.main')
    logger.propagate = False
    logger.setLevel(logging.DEBUG)  
      
    #if not logger.handlers:
    # 创建一个handler,用于写入日志文件  
    fh = logging.FileHandler('D:\\imports.log')  
    fh.setLevel(logging.DEBUG)  
      
    # 定义handler的输出格式  
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
    fh.setFormatter(formatter)  
      
    # 给logger添加handler  
    logger.addHandler(fh)  

    TITLE = 'BOM Revision'
    repo_root = u'http://svn.ygct.com:82/svn/YGCT'
    path = u'/Temporary/机电产品线/知识库/物料汇总表.xls'
    username='******'
    password='******'

    last_rev = SystemInfo.query.filter_by(title=TITLE).first()

    if last_rev is None:
        last_rev = SystemInfo(title=TITLE)
        db.session.add(last_rev)

    filename = os.path.join(app.config['TMP_FOLDER'], "tmp.xls")

    svn = svn(repo_root, username, password)

    rev = svn.fetch_revision(path)
    logger.info('Rev of BOM is %s' % (rev))
    
    if last_rev.value is None or int(last_rev.value) != rev:
        logger.info(u'当前Revision:%s, 可以更新。' % (last_rev.value or '-'))

        filename = svn.export_file(path, filename)
        if filename:
            logger.info(u'BOM 已经导出:%s' % (filename))
            
            succ, count = Material.importFromExcel(filename)
            if succ:
                logger.info(u'成功导入/更新%d个物料' % count)

                last_rev.value = rev
                db.session.commit()

            else:
                logger.info(u'导入失败')
        else:
            logger.info(u'下载文件失败')
    else:
        logger.info(u'Revsion 尚未改变,暂时不更新.')
Exemplo n.º 3
0
def import_material_file(filename):
  wb = load_workbook(filename)    #打开excel表格
  sheets = wb.get_sheet_names()  # 获取所有的表格
  sheets_first = sheets[0]    # 获取第一个表
  sheet = wb.get_sheet_by_name(sheets_first)  #根据工作表名获取工作表
  i = 0 
  objects=[]
  fileds=['id','code','name','category','specification','unit','','']
  row_cout=sheet.rows
  for row in sheet.rows:
    i += 1
    id=row[0].value
    category = row[1].value
    code =row[2].value
    name =row[3].value
    specification = row[4].value
    unit = row[5].value
    m= Material(id=id,category=category,code=code,name=name,specification=specification,unit=unit,updated_by='system')
    objects.append(m)
    if (i+1)%5 == 0:
      db.session.add_all(objects)
      db.session.commit()
      objects.clear()
    elif (i+1) == sheet.max_row:
      db.session.add_all(objects)
      db.session.commit()
      objects.clear()
Exemplo n.º 4
0
def create_material():
    data = request.get_json() or {}
    if 'code' not in data or 'name' not in data or 'specification' not in data:
        return bad_request('must inlcude code,name,specification fields.')
    if 'code' in data and Material.query.filter_by(code=data['code']).first():
        return bad_request('please use a different code.')
    # if 'name' in data and Material.query.filter_by(name=data['name']).first():
    #     return bad_request('plase use a different name.')

    material = Material()
    material.from_dict(data, new_material=True)
    db.session.add(material)
    db.session.commit()
    response = jsonify(material.to_dict())
    response.status_code = 201
    data = {'code': 200, 'msg': '添加成功!'}
    return jsonify(data)
Exemplo n.º 5
0
def add_material():
    form = AddMaterialForm()
    if form.validate_on_submit():
        material = Material(name=form.name.data,
                            section=form.section.data.lower(),
                            keywords=form.keywords.data,
                            files='',
                            date=date.today().isoformat())
        db.session.add(material)
        db.session.commit()
        #send_email_to_everyone(material)
        return redirect(url_for('add_files', id=material.id, text='txt',
                                num=0))
    return render_template('add_material.html', form=form)
Exemplo n.º 6
0
def entrymat(form, material_id=None, material=None):
    if form.validate_on_submit():
        #f = request.files['photo']
        if material_id == None:
            material = Material(name=form.name.data,
                                price=form.price.data,
                                info=form.info.data,
                                photo=form.photo.data
                                #photo=f.read()
                                )
            db.session.add(material)
        else:
            form.populate_obj(material)
        db.session.commit()
    else:
        errors = form.errors
Exemplo n.º 7
0
def manage_material():
    if not current_user.is_administrator:
        return render_template('error/401.html')

    form = AddMaterial()
    if form.validate_on_submit():
        material = Material(id=int(t) + random.randint(0, 10),
                            name=form.name.data,
                            rest=form.rest.data)
        db.session.add(material)
        db.session.commit()
        flash('物料添加成功')
    return render_template('material/material.html',
                           form=form,
                           materials=db.session.query(Material.id,
                                                      Material.name,
                                                      Material.rest))
Exemplo n.º 8
0
def upload():
    form = UploadForm()
    if form.validate_on_submit():
        material = Material(name=form.material.data)
        db.session.add(material)
        db.session.commit()
        file = form.file.data
        filename = secure_filename(file.filename)
        file.save(os.path.join('uploads', filename))
        df = pd.read_csv(os.path.join('uploads', filename), 
                        sep="\t", names=['wavelength', 'n_value', 'k_value'])
        df.to_csv('uploads/test.csv')
        for row in df.iterrows():
            data = row[1]
            nk_values = NKValues(wavelength=data.wavelength, 
                                n_value=data.n_value, 
                                k_value=data.k_value, 
                                material_id = material.id)
            db.session.add(nk_values)
        db.session.commit()
        flash("Upload successful!", "success")
        return redirect(url_for('home'))
    return render_template('upload.html', form=form)
Exemplo n.º 9
0
def HnadleSubmitMaterialAddForm(material):
    mater = Material(name=material["name"], purity=material["purity"], manufacturer=material["manufacturer"],
                      note=material["note"])
    db.session.add(mater)
    db.session.commit()
    return "success"
Exemplo n.º 10
0
def add_material(request):
    igreja = None
    aluno = None
    professor = None
    categoria = int(request.session['categoria'])
    if categoria == 1:
        professor = Pessoa.objects.get(
            email=request.session['email']).professor_set.first()
    elif categoria == 2:
        aluno = Pessoa.objects.get(
            email=request.session['email']).aluno_set.first()
    else:
        igreja = Igreja.objects.get(email_responsavel=request.session['email'])
    if request.method == 'GET':
        return render_to_response('add_material.html', {
            'igreja': igreja,
            'aluno': aluno,
            'professor': professor
        },
                                  context_instance=RequestContext(request))
    elif request.method == 'POST':
        data = request.POST
        file = ''
        if data['categoria'] == 'Imagem':
            CLIENT_ID = "cdadf801dc167ab"
            data = b64encode(request.FILES['file'].read())
            client = pyimgur.Imgur(CLIENT_ID)
            r = client._send_request('https://api.imgur.com/3/image',
                                     method='POST',
                                     params={'image': data})
            file = r['link']
        else:
            url = "https://content.dropboxapi.com/2/files/upload"
            name = "/" + str(request.FILES['file'].name)
            headers = {
                "Authorization":
                "Bearer M6iN1nYzh_YAAAAAAACHm34PsRKmgPWvVI6uSALYMTqZxGUcopC4pr7K7OkfFfaZ",
                "Content-Type": "application/octet-stream",
                "Dropbox-API-Arg": "{\"path\":\"" + name + "\"}"
            }
            data = b64encode(request.FILES['file'].read())
            r = requests.post(url, headers=headers, data=data)
            print r.json()
            if r.status_code == 200 or r.status_code == 201:
                url = "https://api.dropboxapi.com/2/sharing/create_shared_link"
                headers = {
                    "Authorization":
                    "Bearer M6iN1nYzh_YAAAAAAACHmqe-TsJhb-Dur_EB09HNKaguknUwnq2a_PprLOwiSS3W",
                    "Content-Type": "application/json"
                }
                data = {
                    "path": "/Apps/pagseguroarquivos" + name,
                    "short_url": False
                }
                print json.dumps(data)
                r = requests.post(url, headers=headers, data=json.dumps(data))
                file = r.json()['url']
            else:
                url = "https://content.dropboxapi.com/2/files/upload"
                name = "/" + str(uuid.uuid4()) + str(
                    request.FILES['file'].name)
                headers = {
                    "Authorization":
                    "Bearer M6iN1nYzh_YAAAAAAACHm34PsRKmgPWvVI6uSALYMTqZxGUcopC4pr7K7OkfFfaZ",
                    "Content-Type": "application/octet-stream",
                    "Dropbox-API-Arg": "{\"path\":\"" + name + "\"}"
                }
                data = b64encode(request.FILES['file'].read())
                r = requests.post(url, headers=headers, data=data)
                print r.json()
                if r.status_code == 200 or r.status_code == 201:
                    url = "https://api.dropboxapi.com/2/sharing/create_shared_link"
                    headers = {
                        "Authorization":
                        "Bearer M6iN1nYzh_YAAAAAAACHmqe-TsJhb-Dur_EB09HNKaguknUwnq2a_PprLOwiSS3W",
                        "Content-Type": "application/json"
                    }
                    data = {
                        "path": "/Apps/pagseguroarquivos" + name,
                        "short_url": False
                    }
                    print json.dumps(data)
                    r = requests.post(url,
                                      headers=headers,
                                      data=json.dumps(data))
                    file = r.json()['url']
        try:
            if categoria == 0:
                try:
                    autor = Pessoa.objects.get(email=request.session['email'])
                except:
                    autor = Pessoa(nome=igreja.nome_igreja,
                                   sexo='',
                                   nome_pai='',
                                   nome_mae='',
                                   data_nascimento=datetime.datetime.now(),
                                   estado_civil='',
                                   idade=0,
                                   email=request.session['email'],
                                   telefone_residencial=igreja.telefone,
                                   telefone_comercial=igreja.telefone,
                                   telefone_celular=igreja.telefone,
                                   endereco='',
                                   numero='',
                                   bairro='',
                                   cidade='',
                                   cep='',
                                   estado='')
                    autor.save()
            else:
                autor = Pessoa.objects.get(email=request.session['email'])

            new_material = Material(titulo=request.POST['titulo'],
                                    descricao=request.POST['descricao'],
                                    file=file,
                                    categoria=request.POST['categoria'],
                                    autor=autor)
            new_material.save()
            if categoria == 1:
                professor = Pessoa.objects.get(
                    email=request.session['email']).professor_set.first()
                igreja = professor.igreja_set.first()
                igreja.materiais.add(new_material)
                igreja.save()
                classe = professor.classe_set.first()
                classe.materiais.add(new_material)
                classe.save()
                messages.success(request, 'Material adicionado com sucesso.')
                return redirect('/materiais')
            elif categoria == 2:
                aluno = Pessoa.objects.get(
                    email=request.session['email']).aluno_set.first()
                igreja = aluno.igreja_set.first()
                igreja.materiais.add(new_material)
                igreja.save()
                classe = aluno.classe_set.first()
                classe.materiais.add(new_material)
                classe.save()
                messages.success(request, 'Material adicionado com sucesso.')
                return redirect('/materiais')
            else:
                igreja = Igreja.objects.get(
                    email_responsavel=request.session['email'])
                igreja.materiais.add(new_material)
                igreja.save()
                messages.success(request, 'Material adicionado com sucesso.')
                return redirect('/materiais')
        except:
            messages.error(request, 'Houve algum erro.')
            return redirect('/add-material')
Exemplo n.º 11
0
def import_svn_data():
    from svn import svn
    import logging

    # 创建一个logger
    logger = logging.getLogger('app_matemgr.main')
    logger.propagate = False
    logger.setLevel(logging.DEBUG)

    #if not logger.handlers:
    # 创建一个handler,用于写入日志文件
    fh = logging.FileHandler('D:\\imports.log')
    fh.setLevel(logging.DEBUG)

    # 定义handler的输出格式
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)

    # 给logger添加handler
    logger.addHandler(fh)

    TITLE = 'BOM Revision'
    repo_root = u'http://svn.ygct.com:82/svn/YGCT'
    path = u'/Temporary/机电产品线/知识库/物料汇总表.xls'
    username = '******'
    password = '******'

    last_rev = SystemInfo.query.filter_by(title=TITLE).first()

    if last_rev is None:
        last_rev = SystemInfo(title=TITLE)
        db.session.add(last_rev)

    filename = os.path.join(app.config['TMP_FOLDER'], "tmp.xls")

    svn = svn(repo_root, username, password)

    rev = svn.fetch_revision(path)
    logger.info('Rev of BOM is %s' % (rev))

    if last_rev.value is None or int(last_rev.value) != rev:
        logger.info(u'当前Revision:%s, 可以更新。' % (last_rev.value or '-'))

        filename = svn.export_file(path, filename)
        if filename:
            logger.info(u'BOM 已经导出:%s' % (filename))

            succ, count = Material.importFromExcel(filename)
            if succ:
                logger.info(u'成功导入/更新%d个物料' % count)

                last_rev.value = rev
                db.session.commit()

            else:
                logger.info(u'导入失败')
        else:
            logger.info(u'下载文件失败')
    else:
        logger.info(u'Revsion 尚未改变,暂时不更新.')