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')
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))
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)
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
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"))
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 })
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')
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")
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
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
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'))
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'
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)
def save_project(self, client, details): p = Project(details) p.save()
# 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()
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()