コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: model.py プロジェクト: CitizenScienceCenter/backend
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
コード例 #4
0
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))
コード例 #5
0
# -*- 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 = [