def add_project(pid=None): user = get_user() if not is_admin(user): return redirect(url_for('front')) if pid: project = Project.get(Project.id == pid) else: project = Project() return render_template('newproject.html', project=project)
def create_project(): body = json.loads(request.data) if (body.get('title') == None or body.get('description') == None): return failure_response('One or more fields is missing.') else: new_project = Project(title=body.get('title'), description=body.get('description')) db.session.add(new_project) db.session.commit() formatted_project = new_project.serialize() formatted_project['tasks'] = [ t.serialize() for t in Task.query.filter_by( project_id=formatted_project.get('id')).all() ] formatted_project['users'] = [u.serialize() for u in new_project.users] return success_response(formatted_project, 201)
def create_user(user): #user = body user["api_key"] = uuid.uuid4() user["pwd"] = pbkdf2_sha256.using(rounds=200000, salt_size=16).hash(user["pwd"]) if ("username" in user and len(user["username"]) == 0) or not "username" in user and "email" in user: user["username"] = user["email"].split("@")[0] print(user) created_user, code = model.post(Model, user) if 'X-Api-Key' in request.headers and request.headers[ 'X-Api-Key'] is not None: from_anon = request.headers['X-Api-Key'] anon_user = db_session.query(User).filter( User.api_key == from_anon).one_or_none() if anon_user: print('deleting user') db_session.execute( "update submissions set user_id='{1}' where user_id='{0}'". format(anon_user.id, created_user.id)) db_session.query(User).filter(User.id == anon_user.id).delete() db_session.commit() if code == 201: if (created_user.info is not None and created_user.info['anonymous'] is False): user_project = { 'name': created_user.username, 'description': 'Default space for {}'.format(created_user.username), 'active': True, 'owned_by': created_user.id } p = Project(**user_project) created_user.member_of.append(p) db_session.add(created_user) db_session.commit() db_session.refresh(created_user) return created_user.dump(), code else: return created_user, 409
def upload_project(): def add_flash(pid, msg): flash(msg) return redirect(url_for('add_project', pid=pid)) user = get_user() if not is_admin(user): return redirect(url_for('front')) pid = request.form['pid'] if pid: pid = int(pid) project = Project.get(Project.id == pid) if not is_admin(user, project): return redirect(url_for('front')) update_audit(project) else: pid = None project = Project() project.feature_count = 0 project.bbox = '' project.owner = user project.name = request.form['name'].strip() if not project.name: return add_flash(pid, 'Empty name - bad') project.title = request.form['title'].strip() if not project.title: return add_flash(pid, 'Empty title - bad') project.url = request.form['url'].strip() if not project.url: project.url = None project.description = request.form['description'].strip() project.can_validate = request.form.get('validate') is not None project.validate_modified = request.form.get('validate_modified') is not None project.hidden = request.form.get('is_hidden') is not None if 'json' not in request.files or request.files['json'].filename == '': if not pid: return add_flash(pid, 'Would not create a project without features') features = [] else: try: features = json.load(codecs.getreader('utf-8')(request.files['json'])) except ValueError as e: return add_flash(pid, 'Error in the uploaded features file: {}'.format(e)) if 'features' not in features or not features['features']: return add_flash(pid, 'No features found in the JSON file') features = features['features'] audit = None if 'audit' in request.files and request.files['audit'].filename: try: audit = json.load(codecs.getreader('utf-8')(request.files['audit'])) except ValueError as e: return add_flash(pid, 'Error in the uploaded audit file: {}'.format(e)) if not audit: return add_flash(pid, 'No features found in the audit JSON file') proj_audit = json.loads(project.audit or '{}') if audit: proj_audit.update(audit) project.audit = json.dumps(proj_audit, ensure_ascii=False) if features or audit or not project.updated: project.updated = datetime.datetime.utcnow().date() project.save() if features: with database.atomic(): update_features(project, features, proj_audit) if project.feature_count == 0: project.delete_instance() return add_flash('Zero features in the JSON file') return redirect(url_for('project', name=project.name))
# -*- coding: utf-8 -*- """ Created on Fri Nov 10 16:11:37 2017 @author: Frank """ import os from db import ProjectInfo, Finance, Company, Project, HumanResource project_info = ProjectInfo() company = Company(os.path.join(os.getcwd(), 'db\\公司.xlsx')) human = HumanResource(os.path.join(os.getcwd(), 'db\\员工.xlsx')) finance = Finance(os.path.join(os.getcwd(), 'db\\财务.xlsx')) projects_done = Project(os.path.join(os.getcwd(), 'db\\往期工程.xlsx')) projects_being = Project(os.path.join(os.getcwd(), 'db\\正在建设项目.xlsx')) db = {} db['project_info'] = project_info db['company'] = company db['project_members'] = {} db['human'] = human db['finance'] = finance db['projects_done'] = projects_done db['projects_being'] = projects_being db['公司信息路径'] = os.path.join(os.getcwd(), 'db') db['人员证件路径'] = os.path.join(os.getcwd(), 'img\\证件\\人员') db['公司证件路径'] = os.path.join(os.getcwd(), 'img\\证件\\公司') PATH = ['公司信息路径', '人员证件路径', '公司证件路径'] POSITION = [