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)
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 尚未改变,暂时不更新.')
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()
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)
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)
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
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))
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)
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"
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')
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 尚未改变,暂时不更新.')