示例#1
0
def adminActionRoute(action=None, id=None):
    if not loggedIn():
        return flashy('/', 'You must be logged in to do that!', 'error')
    if not action:
        return flashy('/', 'There was an error processing your request!', 'error')
    if not request.form.get('isact') and not id or id and not id.isdigit(): #Best ifstatement EVAR
        return flashy('/', 'Invalid or maliformed request!', 'error')
    if action == 'delete_proj':
        q = [i for i in Project.select().where(Project.id == int(id))]
        if not len(q):
            return flashy('/', 'Invalid Project ID (%s)' % id, 'error')
        q[0].delete_instance()
        return flashy('/', 'Deleted Project #%s!' % id, 'success')
    elif action == 'add_proj':
        q = [i for i in Project.select().where(Project.name == request.form.get('pname'))]
        if len(q): return flashy('/admin', 'There is already a project with the name "%s"' % request.form.get('pname'), 'error')
        p = Project(
            name=request.form.get('pname'),
            author=User.get(User.id==session.get('uid')),
            desc=request.form.get('pdesc'),
            url=request.form.get('purl'),
            repo_type=request.form.get('repotype'),
            repo_name=request.form.get('pgitname').lower(),
            repo_url=request.form.get('giturl'))
        p.save()
        return flashy('/admin', 'Added project "%s" (ID #%s)' % (p.name, p.id), 'success')
示例#2
0
def scrape(project_id):
    db = Database()
    if db.get_project(project_id):
        # print("Project {} exists in the datatbase".format(project_id))
        return True

    url = "https://smutba.se/project/{}/".format(project_id)
    page_html = requests.get(url)
    if page_html.status_code == 404:
        print("Project {} does not exist on the site".format(project_id))
        return False
    page_soup = soup(page_html.content, "html5lib")

    project = Project(project_id)
    project.title = page_soup.find("h1", {"id": "file_title"}).text
    images_e = page_soup.find_all("img", {"class": "project-detail-image-main"})
    for e in images_e:
        project.images.append(BASE_URL + e["src"])
    project.description = page_soup.find("div", {"class": "panel__body"}).decode_contents()

    user_id = page_soup.find("h4", {"class": "panel__avatar-title"}).find("a").get("href", "").split("/")[-2]
    user = User(user_id)
    user.name = page_soup.find("span", {"class": "username"}).text
    user.add_user()
    project.user = user

    info = page_soup.find("div", {"class": "panel__footer"}).find_all("dd")
    project.posted = info[0].text
    project.views = info[1].text
    project.category = info[2].text
    project.licence = info[3].text

    trs = page_soup.find("tbody").find_all("tr")
    for i in range(0, len(trs), 2):
        tr = trs[i].find_all("td")
        if len(tr) < 4:
            break
        filename = tr[0].strong.text
        downloads = tr[1].text
        created = tr[2].text
        filesize = tr[3].text
        links = trs[i+1].find_all("a")

        download = Download(filename)
        download.downloads = downloads
        download.created = created
        download.filesize = filesize
        download.project_id = project.id

        for link in links:
            download.urls.append(BASE_URL + link.get("href", ""))
        download.add_download()
    success = project.add_project()
    if not success:
        print("Project {} was not successfully added to the database".format(project_id))
    print("Project {} added to the database".format(project_id))
示例#3
0
def projectView(id=None):
    if not id: redirect('/')
    v = getView()
    q = [i for i in Project.select().where(Project.id == id)]
    if not len(q): return flashy('/', "No project with ID #%s" % id, 'error')
    v.proj = q[0]
    return render_template('project.html', v=v)
示例#4
0
def getView():
    v = Obj()
    v.title = "Home"
    v.loggedin = loggedIn()
    v.projects = [i for i in Project.select().where(Project.active == True)]
    v.stat_total_builds = len([i for i in Build.select().where(Build.built==True)])
    v.stat_total_projects = len(v.projects)
    v.stat_total_downloads = 0
    v.stat_total_success = len([i for i in Build.select().where((Build.built==True) & (Build.success==True))])
    v.stat_total_failure = len([i for i in Build.select().where((Build.built==True) & (Build.success==False))])
    return v
示例#5
0
def process_mission_form_function():
    from database import db, Project, Competence
    nom = flask.request.form["nom"]
    description = flask.request.form["description"]
    id_competence1 = flask.request.form.get('id_competence1')
    id_competence2 = flask.request.form.get('id_competence2')
    competence1 = Competence.query.filter_by(id=id_competence1).first()
    competence2 = Competence.query.filter_by(id=id_competence2).first()

    project = Project()

    if project is None:
        flask.redirect(flask.url_for("index"), 404)
    else:

        project.name = nom
        project.description = description
        project.id_employee = "<null>"
        project.state = 0
        project.competences.append(competence1)
        project.competences.append(competence2)

        db.session.add(project)
        db.session.commit()

    return flask.redirect(flask.url_for("accueil_affaire"))
示例#6
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('project_name',
                            type=str,
                            required=True,
                            help='Name of project')
        parser.add_argument('users', type=str, action='append')
        args = parser.parse_args()

        project_name = args['project_name']
        all_users = args['users']

        project = Project(project_name=project_name,
                          date_added=datetime.datetime.now())
        session.add(project)

        all_names = get_all_usernames()
        user_objects = []
        for name in all_users:
            if name in all_names:
                user_objects.append(get_user(name))
            else:
                abort(404, {'message': 'Username %s does not exist' % name})
        project.add_users(user_objects)

        try:
            session.commit()
        except Exception as project_exception:
            session.rollback()
            abort(404, {'message': str(project_exception)})

        return jsonify({
            'project':
            'http://%s:%s/project/%s' % (HOST, PORT, project_name),
            'users':
            all_users
        })
示例#7
0
def create_project():
    # are we logged in?
    if 'username' not in login_session:
        return redirect('/login')

    # check for POST data
    if request.method == 'POST':
        # create new Project and send it to db
        project = Project(name=request.form['project_name'],
                          user_id=login_session['userid'])
        session.add(project)
        session.commit()
        return redirect(url_for('view_project', project_id=project.id))
    else:
        return render_template('createproject.html')
示例#8
0
def projectSubmit():
    projectForm = ProjectSubmissionForm(request.form)

    if(projectForm.validate()):
        newProject = Project()
        projectForm.populate_obj(newProject)

        projectMaker = Maker.query.filter_by(id=newProject.maker_id).first()
        projectCategory = ProjectCategory.query.filter_by(id=newProject.projectCategory_id).first()
        projectType = ProjectType.query.filter_by(id=newProject.projectType_id).first()

        newProject.maker = projectMaker
        newProject.projectCategory = projectCategory
        newProject.projectType = projectType

        db.session.add(newProject)
        db.session.commit()
        return Response(response=json.dumps({'status':'OK', 'projectId': newProject.id}),
                        status=200,
                        mimetype="application/json")
    else:
        return Response(response=json.dumps({'status':'ERROR', 'errors': projectForm.errors}),
                        status=400,
                        mimetype="application/json")
示例#9
0
文件: alfie.py 项目: cydanil/alfie
async def create():
    """Create a new project in the database."""

    form = await request.form
    name = form.get('name')

    async with Database(app.config['DATABASE']) as db:
        project_id = await db.fetch_one(
            query='SELECT ProjectId FROM Project WHERE Name = :name',
            values={'name': name})

        if name is None:
            await flash('Did not specify a project name')
        elif project_id is not None:
            await flash('This project already exists')
        else:
            await db.execute(query=Project.insert(), values={'Name': name})
            await flash(f'{name} successfully added')

    ret = redirect(f'{url_for("index")}#{name}')
    return ret
示例#10
0
文件: alfie.py 项目: cydanil/alfie
async def index():
    projects = {}
    entries_retrieve = ('SELECT DocumentId FROM ProjectEntry '
                        'WHERE ProjectId = :pid')
    document_retrieve = ('SELECT Name, Location, Description FROM Document '
                         'WHERE DocumentId = :did')

    async with Database(app.config['DATABASE']) as db:
        for proj in await db.fetch_all(query=Project.select()):
            pid, pname = proj
            content = {}
            entries = await db.fetch_all(entries_retrieve, {'pid': pid})
            if entries:
                coros = [db.fetch_one(document_retrieve, {'did': did})
                         for did, in entries]
                ret = await gather(*coros)
                content = {name: _ for (name, *_) in ret}
            projects[pname] = content

    html = await render_template('index.html', projects=projects)
    return html
示例#11
0
def createProject():
  if request.method == 'POST':
      nieuwProject = Project(titel = request.form['titel'], datum = request.form['datum'], afbeeldingUrl = request.form['afbeeldingUrl'])
      session.add(nieuwProject)
      session.commit()
      return redirect(url_for('projecten'))
示例#12
0
def apiRoute(action=None):
    if action == 'put_build':
        p = Project.get(Project.id==int(request.form.get('pid')))
        q = [i for i in Build.select().where((Build.build_id == request.form.get('id')) & (Build.built==False) & (Build.project==p))]
        if not len(q): return 'Error!'
        b = q[0]
        b.built = True
        b.success = bool(int(request.form.get('success')))
        b.result = request.form.get('result').replace('\n', '<br />')
        b.finish_time = datetime.now()
        f = request.files.get('build')
        if not f or not f.filename.endswith('.tar.gz'):
            print "Invalid file!"
        else: b.build_url = 'http://'+saveBuild(b, f)
        b.save()

    if action == "github":
        d = request.form
        q = [i for i in Project.select().where((Project.repo_name==d['repository']['name'].lower()) &(Project.active==True))]
        if len(q):
            commits = []
            for i in d['commits']:
                com = [i for i in Commit.select().where((Commit.sha==i['id'][:6]))]
                if len(com):
                    commits.append(com[0])
                else:
                    c = Commit(
                        project=q[0],
                        info=i['message'],
                        author=i['author']['name'],
                        url=i['url'],
                        sha=i['id'][:6])
                    c.save()
                    commits.append(c)

            if not len(commits):
                print "No commits! %s" % d
                return 'Hi :3'
            b = Build(
                project=q[0],
                commit=commits[-1],
                build_id=q[0].getBuildId(),
                built=False,
                time=datetime.now())
            b.save()
            addBuild(b)
        else:
            print 'Invalid build info! %s' % d

    if action == 'gitlab':
        d = request.json
        q = [i for i in Project.select().where((Project.repo_name==request.json['repository']['name'].lower()) &(Project.active==True))]
        if len(q):
            commits = []
            for i in request.json['commits']:
                com = [i for i in Commit.select().where((Commit.sha==i['id'][:6]))]
                if len(com):
                    commits.append(com[0])
                    continue
                c = Commit(
                    project=q[0],
                    info=i['message'],
                    author=i['author']['name'],
                    url='http://git.'+i['url'],
                    sha=i['id'][:6])
                c.save()
                commits.append(c)
            if not len(commits):
                print 'No commits?', d
                return ':3'
            b = Build(
                project=q[0],
                commit=commits[-1],
                build_id=q[0].getBuildId(),
                built=False,
                time=datetime.now())
            b.save()
            addBuild(b)
        else:
            print 'Invalid build info!', d, q
    return ':3'
示例#13
0
def before_request():
  g.db = connect_db(app.config['DB'])
  User.set_db(g.db)
  Task.set_db(g.db)
  Comment.set_db(g.db)
  Project.set_db(g.db)
示例#14
0
 def save_project(self, client, details):
     p = Project(details)
     p.save()
示例#15
0
# and represents a "staging zone" for all the objects loaded into the
# database session object. Any change made against the objects in the
# session won't be persisted into the database until you call
# session.commit(). If you're not happy about the changes, you can
# revert all of them back to the last commit by calling
# session.rollback()
session = DBSession()

user1 = User(name="Luki", email="*****@*****.**")

session.add(user1)
session.commit()

items = []

items.append(Project(user_id=1, name="Project 1"))

items.append(
    Task(user_id=1,
         project_id=1,
         title="Ein Titel",
         description="Eine Beschreibung"))
items.append(
    Task(user_id=1,
         project_id=1,
         title="Noch Ein Titel",
         description="Noch Eine Beschreibung"))
for item in items:
    session.add(item)
    session.commit()
示例#16
0
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database import Project, Base
from flask import session

engine = create_engine('sqlite:///projecten.db')

Base.metadata.bind = engine

DBSession = sessionmaker(bind=engine)

project1 = Project(
    id=1,
    datum=200804,
    titel="Portfolio Website",
    afbeeldingUrl="screen portfolio.jpg",
    beschrijving=
    "In Semester 1 (jaar 1) van Open-ICT werd de opdracht gegeven om een portfoliowebsite te maken waar de student al zijn/haar vaardigheden kon vertonen. Deze website moest bestaan uit meerder interactieve pagina's met een database. Ik heb gekozen om mijn website kalm en zakelijk te houden, omdat ik professionaliteit uit wil stralen. Hierboven het resultaat van de website."
)

print('ada')

session = DBSession()

session.add(project1)
session.commit()