本文整理汇总了Python中inphosite.model.meta.Session.flush方法的典型用法代码示例。如果您正苦于以下问题:Python Session.flush方法的具体用法?Python Session.flush怎么用?Python Session.flush使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inphosite.model.meta.Session
的用法示例。
在下文中一共展示了Session.flush方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _evaluate
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def _evaluate(self, evaltype, id, id2=None, uid=None, username=None, degree=-1, maxdegree=4):
"""
Function to submit an evaluation. Takes a POST request containing the consequesnt id and
all or none of: generality, relatedness, hyperrank, hyporank.
"""
if not h.auth.is_logged_in():
abort(401)
id2 = request.params.get('id2', id2)
uid = request.params.get('uid', uid)
username = request.environ.get('REMOTE_USER', username)
print "grabbing eval for", username, uid
if request.environ.get('REMOTE_USER', False):
evaluation = self._get_evaluation(id, id2, None, username)
else:
evaluation = self._get_anon_evaluation(id, id2, request.environ.get('REMOTE_ADDR', '0.0.0.0'))
# Populate proper generality, relatedness, hyperrank and hyporank values
# Attempt to convert to integers, if unable, throw HTTP 400
try:
setattr(evaluation, evaltype,
int(request.params.get('degree', getattr(evaluation, evaltype))))
except TypeError:
abort(400)
# Create and commit evaluation
Session.flush()
Session.commit()
# Issue an HTTP success
response.status_int = 200
return "OK"
示例2: _delete_evaluation
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def _delete_evaluation(self, evaltype, id, id2, uid=None, username=None):
if not h.auth.is_logged_in():
abort(401)
id2 = request.params.get('id2', id2)
uid = request.params.get('uid', uid)
username = request.params.get('username', username)
evaluation = self._get_evaluation(id, id2, uid, username, autoCreate=False)
if not evaluation:
abort(404)
current_uid = h.get_user(request.environ['REMOTE_USER']).ID
if evaluation.uid != current_uid or not h.auth.is_admin():
abort(401)
setattr(evaluation, evaltype, -1)
# Delete evaluation if this eliminates both settings, new db schema
# will eliminate this need
if evaluation.generality == -1 and evaluation.relatedness == -1:
h.delete_obj(evaluation)
else:
# save change in evaluation
Session.flush()
Session.commit()
response.status_int = 200
return "OK"
示例3: create
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def create(self):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
valid_params = ["sep_dir", "wiki"]
params = request.params.mixed()
if '_method' in params:
del params['_method']
if 'name' in params:
name = params['name']
del params['name']
else:
abort(400)
for k in params.keys():
if k not in valid_params:
abort(400)
thinker = Thinker(name, **params)
Session.add(thinker)
Session.flush()
# Issue an HTTP success
response.status_int = 302
response.headers['location'] = h.url(controller='thinker',
action='view', id=thinker.ID)
return "Moved temporarily"
示例4: create
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def create(self):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
valid_params = ["sep_dir", "searchstring", "searchpattern"]
params = request.params.mixed()
if '_method' in params:
del params['_method']
if 'label' in params:
label = params['label']
del params['label']
else:
abort(400)
for k in params.keys():
if k not in valid_params:
abort(400)
idea = Idea(label)
Session.add(idea)
Session.flush()
# Issue an HTTP success
response.status_int = 302
response.headers['location'] = h.url(controller='idea',
action='view', id=idea.ID)
return "Moved temporarily"
示例5: complete_mining
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def complete_mining(entity_type=Idea, filename='graph.txt', root='./'):
occur_filename = root + "graph-" + filename
edge_filename = root + "edge-" + filename
sql_filename = root + "sql-" + filename
print "processing articles..."
process_articles(entity_type, occur_filename)
print "running apriori miner..."
dm.apriori(occur_filename, edge_filename)
print "processing edges..."
edges = dm.process_edges(occur_filename, edge_filename)
ents = dm.calculate_node_entropy(edges)
edges = dm.calculate_edge_weight(edges, ents)
print "creating sql files..."
with open(sql_filename, 'w') as f:
for edge, props in edges.iteritems():
ante,cons = edge
row = "%s::%s" % edge
row += "::%(confidence)s::%(jweight)s::%(weight)s\n" % props
f.write(row)
print "updating term entropy..."
for term_id, entropy in ents.iteritems():
term = Session.query(Idea).get(term_id)
if term:
term.entropy = entropy
Session.flush()
Session.commit()
示例6: create
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def create(self):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
valid_params = ["ISSN", "noesisInclude", "URL", "source",
"abbr", "language", "student", "active"]
params = request.params.mixed()
if '_method' in params:
del params['_method']
if 'name' in params:
name = params['name']
del params['name']
else:
abort(400)
for k in params.keys():
if k not in valid_params:
abort(400)
journal = Journal(name, **params)
Session.add(journal)
Session.flush()
# Issue an HTTP success
response.status_int = 302
response.headers['location'] = h.url(controller='journal',
action='view', id=journal.ID)
return "Moved temporarily"
示例7: delete_obj
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def delete_obj(obj):
"""
Deletes any arbitrary object from the SQLAlchemy Session and cascades deletes to evaluations.
:param obj: object to delete
"""
Session.delete(obj)
Session.flush()
示例8: update_obj
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def update_obj(obj, attributes, params):
"""
Updates any arbitrary object. Takes a list of attributes and a dictionary of update
parameters. Checks if each key is in the list of approved attributes and then attempts
to set it. If the object does not have that key, throw an HTTP 400 Bad Request
:param obj: object to update
:param attributes: list of approved attributes
:param params: dictionary of update parameters
"""
for key in params.keys():
if key in attributes:
try:
set_attribute(obj, key, params[key])
except:
abort(400)
Session.flush()
示例9: _thinker_evaluate
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def _thinker_evaluate(self, evaltype=None, id=None, id2=None,
uid=None, username=None,
degree=1, maxdegree=1):
"""
Private method to handle generic evaluations. See ``teacher_of`` and ``has_influenced``
for use.
"""
id2 = request.params.get('id2', id2)
uid = request.params.get('uid', uid)
username = request.params.get('username', username)
evaluation = self._get_evaluation(evaltype, id, id2, uid, username)
try:
evaluation.degree = int(request.params.get('degree', degree))
except TypeError:
abort(400)
# Create and commit evaluation
Session.flush()
# Issue an HTTP success
response.status_int = 200
return "OK"
示例10: process
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def process(self):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
c.sepdirnew = False
c.alreadysepdir = False
action = request.params.get('action', None)
action2 = request.params.get('action2', None)
if action2:
action = action2
q = request.params.get('label', None)
label = q
searchpattern = request.params.get('searchpattern', None)
searchstring = request.params.get('searchstring', None)
sep_dir = request.params.get('sep_dir', None)
ioru = request.params.get('ioru', 'u')
print "***"
print "sep_dir is "
print sep_dir
print "and label is "
print q
print "***"
values = dict(request.params)
c.found = values.get('found', False)
c.custom = values.get('custom', False)
c.new = values.get('new', False)
#ADD ACTION -- add a new entity (id/label cannot already exist)
if action=='Add':
#lowercase label and check to see whether it is valid
#if so commit idea with standard pluralizations as searchpattern and give user a message that add was successful
q = q.lower()
#check to see whether label already exists
idea_q = Session.query(Idea)
# Check for query
o = Idea.label.like(q)
idea_q = idea_q.filter(o)
# if 0 results, proceed to add idea
if idea_q.count() == 0:
print "***action add, idea q count == 0"
#if no exact match for label, create new object with that label to add
idea_add = Idea(q)
#add searchstring = label
idea_add.searchstring = q
#add pluralizations to existing searchpatterns
idea_add.searchpatterns = idea_add.pluralize()
#setup the search string list
c.idea = idea_add
c.search_string_list = c.idea.setup_SSL()
#setup sep_dir if present
if sep_dir:
c.idea.sep_dir = sep_dir
#commit
#take user to disambiguation page if the label contains an 'and'
#otherwise, commit idea
Session.add(idea_add)
Session.flush()
Session.commit()
c.found = True
something = 1
else:
#already a match; give user error message that they should edit the preexisting page, and send them back to the submit idea
#for edit page
print "****action add, idea_q.count() not equal 0"
c.message = "Idea with that name already exists in database; please edit the existing entry (returned below) or try a new label."
c.idea = idea_q.first()
c.search_string_list = c.idea.setup_SSL()
return render('admin/idea-edit.html')
c.message = "Idea added successfully."
return render('admin/idea-edit.html')
#Modify action -- edit an existing entry, id must exist
elif action == 'Modify':
#retrieve entity corresponding to id
c.idea = h.fetch_obj(Idea, values['ID'])
changed = False
#generate searchpattern from searchstring if not already provided; current value stored in searchpattern, generate from searchstring if null
#update parameters with form values
if c.idea.sep_dir != values['sep_dir']:
c.idea.sep_dir = values['sep_dir']
changed = True
#.........这里部分代码省略.........
示例11: getentries
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def getentries(db_dir):
#to do feb 10: do something more elegant than just delete existing and rewrite...perhaps only write new?
#first, clear out the current table
#Session.query(SEPEntry).delete()
#Session.flush()
#Session.commit()
entries = defaultdict(lambda: {'title' : '', 'published' : False, 'status' : ''})
pars = HTMLParser.HTMLParser()
#get published entries
published = open('/Users/inpho/SitesOld/dev/entries-published.txt')
status = open(os.path.join(db_dir , 'entrystatus.txt'))
entrylist = open(os.path.join(db_dir, 'entries.txt'))
#set up entries dict
for line in entrylist:
line = line.split('::')
sep_dir = pars.unescape(re.sub('<(/)?[a-zA-Z]*>', '', line[0]))
title = re.sub("\\\\\'", "'", pars.unescape(re.sub('<(/)?[a-zA-Z]*>', '', line[1])))
entries[sep_dir]['title'] = title
for line in published:
line = re.sub('\\n', '', line)
if entries[line]['title']:
entries[line]['published'] = True
else:
print "uh-oh, " + line + "doesn't appear to be in dict object"
for line in status:
line = line.split('::')
if entries[line[0]]['title']:
entries[line[0]]['status'] = line[1]
#print "status = " + line[1] + ' for ' + line[0]
else:
print "uh-oh, " + line[0] + "doesn't appear to be in dict object"
for key in entries.keys():
#so, what I should really do here is figure out whether the entry already has a place in the table; if so, update its existing stats; if not,
#insert a new one;
#also need to check if old entries in sepentries table are no longer in file...
entry_q = Session.query(SEPEntry)
o = SEPEntry.title.like(entries[key]['title'])
entry_q = entry_q.filter(o)
# if only 1 result, go ahead and view that idea
if entry_q.count() == 0:
entry_add = SEPEntry(entries[key]['title'], key, entries[key]['published'], entries[key]['status'])
Session.add(entry_add)
elif entry_q.count() == 1:
#replace data from most recent from SEPMirror
entry = entry_q.first()
entry.title = entries[key]['title']
entry.published = entries[key]['published']
entry.status = entries[key]['status']
#need to really add something here to delete entries no longer in the DB...
entry_q2 = Session.query(SEPEntry)
for entry in entry_q2:
if not entries[entry.sep_dir]['title']:
print str(entry.title) + " appears to have been deleted from SEPMirror; deleting from InPhO database."
Session.delete(entry)
Session.flush()
Session.commit()
示例12: process
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def process(self, id=None):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
c.sepdirnew = False
c.alreadysepdir = False
label = request.params.get('label', None)
id = request.params.get('ID', id)
sep_dir = request.params.get('sep_dir', None)
URL = request.params.get('URL', None)
language = request.params.get('language', None)
queries = [request.params.get('queries', None)]
openAccess = request.params.get('openAccess', None)
active = request.params.get('active', None)
student = request.params.get('student', None)
ISSN = request.params.get('ISSN', None)
action = request.params.get('action', None)
action2 = request.params.get('action2', None)
if action2:
action = action2
values = dict(request.params)
#abbrs = [request.params.get('abbrs', None)]
abbrs = []
queries = []
for k, v in values.items():
key = ""
if k.startswith('abbrs'):
varname, num = k.split('.')
key = 'delabbr.%s'%(num)
keyval = request.params.get(key, False)
if not keyval:
abbrs.append(v)
elif k.startswith('queries'):
varname, num = k.split('.')
key = 'delquer.%s'%(num)
keyval = request.params.get(key, False)
if not keyval:
queries.append(v)
if action=="Add":
journal_add = Journal()
journal_add.label = label
#setup search string and search pattern
journalname = journal_add.label
journalname_q = Session.query(Entity)
o = Entity.searchpattern.like('( '+ journalname + ' )')
journalname_q = journalname_q.filter(o).order_by(func.length(Entity.label))
if journalname_q.count() == 0:
journal_add.searchpattern = "( " + journalname + " )"
journal_add.searchstring = journalname
else:
journal_add.searchpattern = "( " + label + " )"
journal_add.searchcstring = label
#reset old journal pattern to whole name too to avoid conflict
oldjournal = h.fetch_obj(Journal, journalname_q.first().ID)
oldjournal.searchpattern = "( " + oldjournal.label + " )"
oldjournal.searchstring = oldjournal.label
Session.add(oldjournal)
if sep_dir:
journal_add.sep_dir = sep_dir
c.journal = journal_add
Session.add(journal_add)
Session.flush()
Session.commit()
c.found = True
c.message = "Journal " + c.journal.label + " added successfully."
return render ('admin/journal-edit.html')
elif action=="Modify":
c.journal = h.fetch_obj(Journal, id)
c.found = True
changed = False
#set values from form
if c.journal.label != label:
c.journal.label = label
changed = True
if c.journal.sep_dir != sep_dir:
c.journal.sep_dir = sep_dir
changed = True
if c.journal.URL != URL:
c.journal.URL = URL
changed = True
if c.journal.language != language:
c.journal.language = language
changed = True
if c.journal.abbrs != abbrs:
c.journal.abbrs = abbrs
changed = True
if c.journal.queries != queries:
c.journal.queries = queries
changed = True
#.........这里部分代码省略.........
示例13: process
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def process(self, id=None):
if not h.auth.is_logged_in():
abort(401)
if not h.auth.is_admin():
abort(403)
c.sepdirnew = False
c.alreadysepdir = False
label = request.params.get('label', None)
id = request.params.get('ID', id)
sep_dir = request.params.get('sep_dir', None)
action = request.params.get('action', None)
action2 = request.params.get('action2', None)
if action2:
action = action2
values = dict(request.params)
if action=="Add":
thinker_add = Thinker(label)
thinker_add.label = label
#setup search string and search pattern
lastname = thinker_add.label.split(' ').pop()
lastname_q = Session.query(Entity)
o = Entity.searchstring.like(lastname)
lastname_q = lastname_q.filter(o).order_by(func.length(Entity.label))
if lastname_q.count() == 0:
#if there's no match currently to last name, can use last name alone as searchpattern/searchstring
thinker_add.searchpatterns.append(lastname)
thinker_add.searchstring = lastname
else:
#otherwise, we need to use the whole name for both, and reset the other pattern to full name too
thinker_add.searchpatterns.append(label)
thinker_add.searchstring = label
#reset old thinker pattern to whole name too to avoid conflict
oldthinker = h.fetch_obj(Thinker, lastname_q.first().ID)
oldthinker.searchpatterns = [oldthinker.label]
oldthinker.searchstring = oldthinker.label
Session.add(oldthinker)
if sep_dir:
thinker_add.sep_dir = sep_dir
c.thinker = thinker_add
Session.add(thinker_add)
Session.flush()
Session.commit()
c.found = True
c.message = "Thinker " + c.thinker.label + " added successfully."
return render ('admin/thinker-edit.html')
elif action=="Modify":
c.thinker = h.fetch_obj(Thinker, id)
c.found = True
changed = False
searchpatterns = []
for k, v in values.items():
key = ""
if k.startswith('searchpatterns'):
varname, num = k.split('.')
key = 'delsearchpattern.%s'%(num)
keyval = request.params.get(key, False)
if not keyval:
searchpatterns.append(v)
if values['newsearchpattern']:
searchpatterns.append(values['newsearchpattern'])
changed = True
#do manually edited searchpatterns first, so we don't write over them with the new default ones if the searchstring has been changed
if c.thinker.searchpatterns != searchpatterns:
c.thinker.searchpatterns = searchpatterns
changed = True
#set values from form
if c.thinker.name != values['name']:
c.thinker.name = values['name']
changed = True
if c.thinker.label != values['label']:
c.thinker.name = values['label']
changed = True
if c.thinker.searchstring != values['searchstring']:
c.thinker.searchstring = values['searchstring']
changed = True
if c.thinker.sep_dir != values['sep_dir']:
c.thinker.sep_dir = values['sep_dir']
changed = True
if c.thinker.wiki != values['wiki']:
c.thinker.wiki = values['wiki']
changed = True
if c.thinker.birth_day != values['birth_day']:
c.thinker.birth_day = values['birth_day']
changed = True
c.thinker.birth_day = values['birth_day']
#.........这里部分代码省略.........
示例14: fuzzymatchall
# 需要导入模块: from inphosite.model.meta import Session [as 别名]
# 或者: from inphosite.model.meta.Session import flush [as 别名]
def fuzzymatchall(SEPEntrieslist):
#takes outputs from addlist() and saves all fuzzy match IDs to SEPEntry.fuzzymatch with verdicts (percent of words matched)
#now change so that it only updates ones that don't currently have a fuzzymatchlist
#clear out fuzzymatch table--otherwise old fuzzies will accumulate, and nobody wants that
delquery = Session.query(Fuzzymatch)
delquery.delete()
Session.flush()
Session.commit()
for SEPEntry in SEPEntrieslist:
print "working on " + SEPEntry.title.encode('utf-8') + "\n"
entities = Session.query(Entity)
#exclude journals and nodes from fuzzy matching
entities = entities.filter(Entity.typeID != 2)
entities = entities.filter(Entity.typeID != 4)
#reset fuzzymatches for that entry
#SEPEntry.fuzzymatches = ""
##string1 = string1.decode('utf8')
for entity in entities:
php = PHP("set_include_path('/usr/lib/php/');")
php = PHP("require 'fuzzymatch.php';")
#php = PHP()
#print "testing " + entity.label.encode('utf8') + " against " + string1.encode('utf8') + "\n"
code = '$string1 = utf8_decode("' + SEPEntry.title.encode('utf8') + '");'
#code = code + "$string2 = '" + entity.label.encode('latin-1', 'replace') + "';"
#code = code + "print $string1; print $string2;"
#print code + '$string2 = utf8_decode("' + entity.label.encode('utf8') + '");'
code = code + '$string2 = utf8_decode("' + entity.label.encode('utf8') + '");'
code = code + """print fuzzy_match($string1, $string2, 2);"""
verdict = php.get_raw(code)
#print "verdict is " + verdict + "\n"
verdict = verdict.split(',')
if float(verdict[0])>=.20:
#print entity.label + " is a match!\n"
#entity.matchvalue = verdict
#string = SEPEntry.fuzzymatches + "|" + str(entity.ID) + "," + verdict
#if len(string) < 400:
# SEPEntry.fuzzymatches = SEPEntry.fuzzymatches + "|" + str(entity.ID) + "," + verdict
#else:
# print "sorry, too many matches! Can't add " + str(entity.ID) + " to fuzzy matches; over 400 chars."
fmatch = Fuzzymatch(entity.ID)
fmatch.sep_dir = SEPEntry.sep_dir
fmatch.strength = verdict[0]
fmatch.edits = verdict[1]
SEPEntry.fmatches.append(fmatch)
Session.flush()
Session.commit()