def _ImportBackupResources(self, file_name): f = file(os.path.dirname(__file__) + file_name, 'r') for res in yaml.load_all(f): try: author_key = models.Author.get_by_key_name(res['author_id']) author_key2 = None if 'author_id2' in res: author_key2 = models.Author.get_by_key_name( res['author_id2']) resource = models.Resource( title=res['title'], subtitle=res.get('subtitle') or None, description=res.get('description') or None, author=author_key, second_author=author_key2, url=unicode(res['url']), social_url=unicode(res.get('social_url') or ''), browser_support=res.get('browser_support') or [], update_date=res.get('update_date'), publication_date=res['publication_date'], tags=res['tags'], draft= False # These are previous resources. Mark them as published. ) resource.put() except TypeError: pass # TODO(ericbidelman): Not sure why this is throwing an error, but # ignore it, whatever it is. f.close()
def resource_create(uuid, resource_type, provider, endpoint, username, password, token, availability_zone, region): new_res = models.Resource(uuid, resource_type, provider, endpoint, username, password, token, availability_zone, region) db.session.add(new_res) db.session.commit()
def saveFileInfoToDb(fileInfo): is_binary = False if endsWithOneInArray(fileInfo['filename'].lower(), ['jpg', 'png', 'ico', 'jpeg', 'bmp']): file_type = 'image' is_binary = True if is_binary: f = open(fileInfo['path'], 'rb') else: f = open(fileInfo['path'], 'r') data = f.read() f.close() blob_key = docs.Blob(data).save() file_type = 'file' if endsWithOneInArray(fileInfo['filename'].lower(), ['jpg', 'png', 'ico', 'jpeg', 'bmp']): file_type = 'image' resource = models.Resource(name=fileInfo['pathname'], type=file_type, blob_key=blob_key, tags="file resource my-3d-format") db.session.add(resource) db.session.commit() return True # init_db() # map(lambda x: files.append(getFileInfo(x)), filepaths) # map(saveFileInfoToDb, files)
def addResource(request): loggedin = True if not helper.Helper().isLoggedin(request): return redirect('login') email = request.session.data.keys()[0] context = RequestContext(request) if request.method == 'POST': form = forms.ResourceForm(request.POST, request.FILES) if form.is_valid(): # save the resource to db nm = form.cleaned_data['name'] descr = form.cleaned_data['description'] tgs = form.cleaned_data['tags'].split() currdate = datetime.date.today() st = datetime.datetime.combine(currdate, form.cleaned_data['starttime']) et = datetime.datetime.combine(currdate, form.cleaned_data['endtime']) imgblob = None img = None if 'image' in request.FILES: img = request.FILES['image'] imgblob = db.Blob(img.read()) # save the resource resource = models.Resource(owner=email, name=nm, description=descr, image=imgblob, tags=tgs, postdate=currdate, starttime=st, endtime=et) resource.put() return redirect('home') else: message = form.errors form = forms.ResourceForm(initial={ 'resource_id': 0000, }) return render_to_response('addResource.html', { 'message': message, 'loggedin': loggedin, 'form': form }, context) else: form = forms.ResourceForm(initial={'resource_id': 0000}) return render_to_response('addResource.html', { 'loggedin': loggedin, 'form': form }, context)
async def create_resource(db: Session, shared: bool, file: UploadFile, title: str, exam_id: int): exam = db.query(models.Exam).get(exam_id) if exam is None: return None filename, filetype = await _store_file(file) f_info = dict() f_info["filename"] = filename f_info["exam_id"] = exam_id f_info["title"] = title f_info["filetype"] = filetype f_info["shared"] = shared db_resource = models.Resource(**f_info) db.add(db_resource) db.commit() db.refresh(db_resource) return db_resource
class DBHandler(ContentHandler): def _ImportBackupResources(self, file_name): f = file(os.path.dirname(__file__) + file_name, 'r') for res in yaml.load_all(f): try: author_key = models.Author.get_by_key_name(res['author_id']) author_key2 = None if 'author_id2' in res: author_key2 = models.Author.get_by_key_name( res['author_id2']) resource = models.Resource( title=res['title'], subtitle=res.get('subtitle') or None, description=res.get('description') or None, author=author_key, second_author=author_key2, url=unicode(res['url']), social_url=unicode(res.get('social_url') or ''), browser_support=res.get('browser_support') or [], update_date=res.get('update_date'), publication_date=res['publication_date'], tags=res['tags'], draft= False # These are previous resources. Mark them as published. ) resource.put() except TypeError: pass # TODO(ericbidelman): Not sure why this is throwing an error, but # ignore it, whatever it is. f.close() def _AddTestResources(self): #memcache.delete('tutorials') memcache.flush_all() self._ImportBackupResources('/database/tutorials.yaml') def _AddTestPlaygroundSamples(self): memcache.flush_all() self._ImportBackupResources('/database/playground.yaml') def _AddTestStudioSamples(self): memcache.flush_all() self._ImportBackupResources('/database/studio.yaml') def _AddTestAuthors(self): memcache.flush_all() f = file(os.path.dirname(__file__) + '/database/profiles.yaml', 'r') for profile in yaml.load_all(f): author = models.Author( key_name=unicode(profile['id']), given_name=unicode(profile['name']['given']), family_name=unicode(profile['name']['family']), org=unicode(profile['org']['name']), unit=unicode(profile['org']['unit']), city=profile['address']['locality'], state=profile['address']['region'], country=profile['address']['country'], google_account=str(profile.get('google')), twitter_account=profile.get('twitter'), email=profile['email'], lanyrd=profile.get('lanyrd', False), homepage=profile['homepage'], geo_location=db.GeoPt(profile['address']['lat'], profile['address']['lon'])) author.put() f.close() def _NukeDB(self): authors = models.Author.all() for author in authors: author.delete() resources = models.Resource.all() for resource in resources: resource.delete() memcache.flush_all() # /database/resource # /database/resource/1234 # /database/load_all # /database/drop_all # /database/author # /database/live def get(self, relpath, post_id=None): self._set_cache_param() if (relpath == 'live'): user = users.get_current_user() # Restrict access to this page to admins and whitelisted users. if (not users.is_current_user_admin() and user.email() not in settings.WHITELISTED_USERS): return self.redirect('/') entity = models.LiveData.all().get() if entity: live_form = models.LiveForm( entity.to_dict(), initial={'gdl_page_url': entity.gdl_page_url}) else: live_form = models.LiveForm() template_data = {'live_form': live_form} return self.render(data=template_data, template_path='database/live.html', relpath=relpath) elif (relpath == 'author'): # adds a new author information into DataStore. sorted_profiles = models.get_sorted_profiles(update_cache=True) template_data = { 'sorted_profiles': sorted_profiles, 'profile_amount': len(sorted_profiles), 'author_form': models.AuthorForm() } return self.render(data=template_data, template_path='database/author_new.html', relpath=relpath) elif (relpath == 'drop_all'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') self._NukeDB() elif (relpath == 'load_tutorials'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') self._AddTestResources() elif (relpath == 'load_authors'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') self._AddTestAuthors() elif (relpath == 'load_playground_samples'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') self._AddTestPlaygroundSamples() elif (relpath == 'load_studio_samples'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') self._AddTestStudioSamples() elif (relpath == 'load_all'): if settings.PROD: return self.response.out.write( 'Handler not allowed in production.') # TODO(ericbidelman): Make this async. self._AddTestAuthors() self._AddTestResources() self._AddTestPlaygroundSamples() self._AddTestStudioSamples() elif relpath == 'resource': tutorial_form = models.TutorialForm() if post_id: # /database/resource/1234 post = models.Resource.get_by_id(int(post_id)) if post: author_id = post.author.key().name() second_author_id = (post.second_author and post.second_author.key().name()) # Adjust browser support so it renders to the checkboxes correctly. browser_support = [ b.capitalize() for b in post.browser_support ] for b in browser_support: if len(b) == 2: browser_support[browser_support.index( b)] = b.upper() form_data = post.to_dict() form_data['tags'] = ', '.join(post.tags) form_data['author'] = author_id form_data['second_author'] = second_author_id or author_id form_data['browser_support'] = browser_support tutorial_form = models.TutorialForm(form_data) template_data = { 'tutorial_form': tutorial_form, # get_all() not used b/c we don't care about caching on this page. 'resources': (models.Resource.all().order('-publication_date').fetch( limit=settings.MAX_FETCH_LIMIT)), 'post_id': post_id and int(post_id) or '' } return self.render(data=template_data, template_path='database/resource_new.html', relpath=relpath) # Catch all to redirect to proper page. return self.redirect('/database/resource') def post(self, relpath): if relpath == 'live': # Get first (and only) result. live_data = models.LiveData.all().get() if live_data is None: live_data = models.LiveData() live_data.gdl_page_url = self.request.get('gdl_page_url') or None #if live_data.gdl_page_url is not None: live_data.put() return self.redirect('/database/live') elif relpath == 'author': try: given_name = self.request.get('given_name') family_name = self.request.get('family_name') author = models.Author( key_name=''.join([given_name, family_name]).lower(), given_name=given_name, family_name=family_name, org=self.request.get('org'), unit=self.request.get('unit'), city=self.request.get('city'), state=self.request.get('state'), country=self.request.get('country'), homepage=self.request.get('homepage') or None, google_account=self.request.get('google_account') or None, twitter_account=self.request.get('twitter_account') or None, email=self.request.get('email') or None, lanyrd=self.request.get('lanyrd') == 'on') lat = self.request.get('lat') lon = self.request.get('lon') if lat and lon: author.geo_location = db.GeoPt(float(lat), float(lon)) author.put() except db.Error, e: # TODO: Doesn't repopulate lat/lng or return errors for it. form = models.AuthorForm(self.request.POST) if not form.is_valid(): sorted_profiles = models.get_sorted_profiles( update_cache=True) template_data = { 'sorted_profiles': sorted_profiles, 'profile_amount': len(sorted_profiles), 'author_form': form } return self.render( data=template_data, template_path='database/author_new.html', relpath=relpath) else: self.redirect('/database/author') elif relpath == 'resource': author_key = models.Author.get_by_key_name( self.request.get('author')) author_key2 = models.Author.get_by_key_name( self.request.get('second_author')) if author_key.key() == author_key2.key(): author_key2 = None tags = (self.request.get('tags') or '').split(',') tags = [x.strip() for x in tags if x.strip()] browser_support = [ x.lower() for x in (self.request.get_all('browser_support') or []) ] pub = datetime.datetime.strptime( self.request.get('publication_date'), '%Y-%m-%d') update_date = self.request.get('update_date') or None tutorial = None if self.request.get('post_id'): tutorial = models.Resource.get_by_id( int(self.request.get('post_id'))) # Updating existing resource. if tutorial: try: #TODO: This is also hacky. tutorial.title = self.request.get('title') tutorial.subtitle = self.request.get('subtitle') or None tutorial.description = self.request.get('description') tutorial.author = author_key tutorial.second_author = author_key2 tutorial.url = self.request.get('url') or None tutorial.browser_support = browser_support tutorial.update_date = datetime.date.today() tutorial.publication_date = datetime.date( pub.year, pub.month, pub.day) tutorial.tags = tags tutorial.draft = self.request.get('draft') == 'on' tutorial.social_url = unicode( self.request.get('social_url') or '') except TypeError: pass else: # Create new resource. try: tutorial = models.Resource( title=self.request.get('title'), subtitle=self.request.get('subtitle') or None, description=self.request.get('description'), author=author_key, second_author=author_key2, url=self.request.get('url') or None, browser_support=browser_support, update_date=datetime.date.today(), publication_date=datetime.date(pub.year, pub.month, pub.day), tags=tags, draft=self.request.get('draft') == 'on', social_url=self.request.get('social_url') or None) except TypeError: pass tutorial.put()
def save_resource(data): m = models.Resource(**data) m.save()
if not pd.isnull(df.iloc[index, 3]): iped_ad = row['Inpatient/Ambulatory'] if len(iped_ad.split(', ')) > 1: iped_ad = 'Both' if iped_ad == 'None' or iped_ad == None: iped_ad = 'Neither' else: iped_ad = 'Neither' resource_type = row['Resource Type'] new_resource = models.Resource(title=title, institution=institution, description=description, link=link, submitter=submitter, date_added=date_added, show=show, iped_ad=iped_ad, resource_type=resource_type) cat_all = row['Tags'] if type(row['Tags']) != float else 'Miscellaneous' # cat = row['Type'] # cats = cat.split(', ') cats = re.split(', |/', cat_all) for cat in cats: if len(cat) == 0: continue cat = cat.strip() cat = cat.title() if len(
def post(self, relpath): if relpath == 'live': # Get first (and only) result. live_data = models.LiveData.all().get() if live_data is None: live_data = models.LiveData() live_data.gdl_page_url = self.request.get('gdl_page_url') or None live_data.put() return self.redirect('/database/live') elif relpath == 'author': try: given_name = self.request.get('given_name') family_name = self.request.get('family_name') author = models.Author( key_name=''.join([given_name, family_name]).lower(), given_name=given_name, family_name=family_name, org=self.request.get('org'), unit=self.request.get('unit'), city=self.request.get('city'), state=self.request.get('state'), country=self.request.get('country'), homepage=self.request.get('homepage') or None, google_account=self.request.get('google_account') or None, twitter_account=self.request.get('twitter_account') or None, email=self.request.get('email') or None, lanyrd=self.request.get('lanyrd') == 'on') lat = self.request.get('lat') lon = self.request.get('lon') if lat and lon: author.geo_location = db.GeoPt(float(lat), float(lon)) author.put() except db.Error: pass else: self.redirect('/database/author') elif relpath == 'resource': author_key = models.Author.get_by_key_name( self.request.get('author')) author_key2 = models.Author.get_by_key_name( self.request.get('second_author')) if author_key.key() == author_key2.key(): author_key2 = None tags = (self.request.get('tags') or '').split(',') tags = [x.strip() for x in tags if x.strip()] browser_support = [ x.lower() for x in (self.request.get_all('browser_support') or []) ] pub = datetime.datetime.strptime( self.request.get('publication_date'), '%Y-%m-%d') update_date = self.request.get('update_date') or None tutorial = None if self.request.get('post_id'): tutorial = models.Resource.get_by_id( int(self.request.get('post_id'))) # Updating existing resource. if tutorial: try: #TODO: This is also hacky. tutorial.title = self.request.get('title') tutorial.description = self.request.get('description') tutorial.author = author_key tutorial.second_author = author_key2 tutorial.url = self.request.get('url') or None tutorial.browser_support = browser_support tutorial.update_date = datetime.date.today() tutorial.publication_date = datetime.date( pub.year, pub.month, pub.day) tutorial.tags = tags tutorial.draft = self.request.get('draft') == 'on' tutorial.social_url = unicode( self.request.get('social_url') or '') except TypeError: pass else: # Create new resource. try: tutorial = models.Resource( title=self.request.get('title'), description=self.request.get('description'), author=author_key, second_author=author_key2, url=self.request.get('url') or None, browser_support=browser_support, update_date=datetime.date.today(), publication_date=datetime.date(pub.year, pub.month, pub.day), tags=tags, draft=self.request.get('draft') == 'on', social_url=self.request.get('social_url') or None) except TypeError: pass tutorial.put() # TODO: Don't use flush_all. Use flush_all_async() or only purge tutorials. # Once new entry is saved, flush memcache. memcache.flush_all() return self.redirect('/database/')
users_collection.append( models.User(user['id'], user['name'], user['email'], user['created_at'])) roles_collection = [] for role in data.roles: roles_collection.append(models.Role(role['id'], role['name'])) action_types_collection = [] for action_type in data.action_types: action_types_collection.append( models.ActionType(action_type['id'], action_type['name'])) user_role_relation_collection = [] for user_role_relation in data.user_role_relations: user_role_relation_collection.append( models.UserRoleRelation(user_role_relation['user_id'], user_role_relation['role_id'])) action_type_role_relation_collection = [] for action_type_role_relation in data.action_type_role_relations: action_type_role_relation_collection.append( models.ActionTypeRoleRelation( action_type_role_relation['action_type_id'], action_type_role_relation['role_id'])) resource_collection = [] for resource in data.resources: resource_collection.append( models.Resource(resource['id'], resource['title'], resource['description'], resource['created_by']))