コード例 #1
0
    def get_fields(self, model=None, edit=False, id=None):
        session = Session()

        models = {
            'pages': StaticPageModel,
            'redirect': UrlMapping,
            'catalog_section': CatalogSectionModel,
            'catalog_element': CatalogItemModel,
            'accounts': User,
            'data': NonRelationData
        }

        fields = db_inspector.get_columns(models[model].__tablename__)

        # TODO :: refactoring
        types_map = {
            'BOOLEAN': 'checkbox',
            'TEXT': 'html',
            'VARCHAR(4096)': 'text',
            'VARCHAR(8192)': 'text',
            'VARCHAR(1024)': 'text',
            'VARCHAR(5000)': 'password',
            'JSON': (lambda: 'data_fields' if model == 'data' else 'files')(),
            'INTEGER': 'text'
        }
        vidgets = []

        for field in fields:
            try:
                if 'id' in field['name']:
                    continue
                vidget = {
                    'name': field['name'],
                    'type': types_map[str(field['type'])],
                    'default_val': field['default']
                }
                vidgets.append(vidget)
            except KeyError:
                continue

        values = None
        if edit and id is not None:
            try:
                data = session.query(models[model]).filter_by(id=id).one()
            except Exception as e:
                session.close()
                print('adm/AdminMainHandler.get_fields(): '+\
                 'cannot get fields by "%s" model and id #%s:\n' % (model, id),\
                 e, file=sys.stderr)
                raise e
            values = data.item

            if model == 'catalog_element':
                values.update({'section_id': data.section_id})

        if model == 'catalog_element':
            try:
                sections = session.query(CatalogSectionModel).all()
            except Exception as e:
                session.close()
                print('adm/AdminMainHandler.get_fields(): '+\
                 'cannot get catalog sections list:\n',\
                 e, file=sys.stderr)
                raise e

            vidgets.append({
                'name':
                'section_id',
                'type':
                'select',
                'default_val':
                None,
                'list_values': [{
                    'title': x.title,
                    'value': x.id
                } for x in sections]
            })

        session.close()

        try:
            del values['create_date']
            del values['last_change']
            del values['_sa_instance_state']
            del values['password']
        except Exception:
            pass

        return self.json_response({
            'status': 'success',
            'fields_list': vidgets,
            'values_list': values
        })
コード例 #2
0
ファイル: actions.py プロジェクト: Romanches/avto-lux161
	def get_fields(self, model=None, edit=False, id=None):
		session = Session()
		
		models = {
			'pages': StaticPageModel,
			'redirect': UrlMapping,
			'catalog_section': CatalogSectionModel,
			'catalog_element': CatalogItemModel,
			'accounts': User,
			'data': NonRelationData
		}
		
		fields = db_inspector.get_columns(
			models[model].__tablename__
		)
		
		# TODO :: refactoring
		types_map = {
			'BOOLEAN': 'checkbox',
			'TEXT': 'html',
			'VARCHAR(4096)': 'text',
			'VARCHAR(8192)': 'text',
			'VARCHAR(1024)': 'text',
			'VARCHAR(5000)': 'password',
			'JSON': (
				lambda: 'data_fields'
					if model == 'data'
					else 'files'
				)(),
			'INTEGER': 'text'
		}
		vidgets = []
		
		for field in fields:
			try:
				if 'id' in field['name']:
					continue
				vidget = {
					'name': field['name'],
					'type': types_map[str(field['type'])],
					'default_val': field['default']
				}
				vidgets.append(vidget)
			except KeyError:
				continue
		
		values = None
		if edit and id is not None:
			try:
				data = session.query(
					models[model]).filter_by(id=id).one()
			except Exception as e:
				session.close()
				print('adm/AdminMainHandler.get_fields(): '+\
					'cannot get fields by "%s" model and id #%s:\n' % (model, id),\
					e, file=sys.stderr)
				raise e
			values = data.item
			
			if model == 'catalog_element':
				values.update({'section_id': data.section_id})
		
		if model == 'catalog_element':
			try:
				sections = session.query(CatalogSectionModel).all()
			except Exception as e:
				session.close()
				print('adm/AdminMainHandler.get_fields(): '+\
					'cannot get catalog sections list:\n',\
					e, file=sys.stderr)
				raise e
			
			vidgets.append({
				'name': 'section_id',
				'type': 'select',
				'default_val': None,
				'list_values': [{
					'title': x.title,
					'value': x.id} for x in sections]
				})
		
		session.close()
		
		try:
			del values['create_date']
			del values['last_change']
			del values['_sa_instance_state']
			del values['password']
		except Exception:
			pass
		
		return self.json_response({
			'status': 'success',
			'fields_list': vidgets,
			'values_list': values
		})
コード例 #3
0
    def update_page(self, **kwargs):
        section = kwargs['section']
        del kwargs['section']
        id = kwargs['id']
        del kwargs['id']

        section_map = {
            'pages': StaticPageModel,
            'redirect': UrlMapping,
            'catalog_section': CatalogSectionModel,
            'catalog_element': CatalogItemModel,
            'data': NonRelationData
        }

        fields = db_inspector.get_columns(section_map[section].__tablename__)

        for item in (x for x in fields
                     if x['name'].startswith('is_') or x['name'].startswith(
                         'has_') or x['name'].startswith('inherit_seo_')):
            if item['name'] not in kwargs.keys():
                kwargs.update({item['name']: False})
            else:
                kwargs[item['name']] = True

        session = Session()

        try:
            data = session.query(section_map[section]).filter_by(id=id)
        except Exception as e:
            session.close()
            print('adm/AdminMainHandler.update_page(): '+\
             'cannot update page by "%s" section:\n' % str(section),\
             e, file=sys.stderr)
            raise e

        if section == 'redirect':
            permanent = (lambda: True
                         if kwargs['status'] == '301' else False)()
            from app.app import application
            counter = 0
            hndlr = application.handlers[0][1]
            for item in range(len(hndlr)):
                try:
                    if (hndlr[item].__dict__['kwargs']['url'] ==
                            data.one().new_url):
                        hndlr[item] = URLSpec(kwargs['old_url'] + '$',
                                              RedirectHandler,
                                              kwargs={
                                                  'url': kwargs['new_url'],
                                                  'permanent': permanent
                                              },
                                              name=None)
                except KeyError:
                    continue
        data.update(kwargs)

        try:
            session.commit()
        except Exception as e:
            session.close()
            print('adm/AdminMainHandler.update_page(): '+\
             'cannot commit update page by "%s" section:\n' % str(section),\
             e, file=sys.stderr)
            raise e

        session.close()

        return self.json_response({'status': 'success'})
コード例 #4
0
ファイル: actions.py プロジェクト: Romanches/avto-lux161
	def update_page(self, **kwargs):
		section = kwargs['section']
		del kwargs['section']
		id = kwargs['id']
		del kwargs['id']
		
		section_map = {
			'pages': StaticPageModel,
			'redirect': UrlMapping,
			'catalog_section': CatalogSectionModel,
			'catalog_element': CatalogItemModel,
			'data': NonRelationData
		}
		
		fields = db_inspector.get_columns(
			section_map[section].__tablename__
			)
		
		for item in (x for x
			in fields
				if x['name'].startswith('is_')
					or x['name'].startswith('has_')
						or x['name'].startswith('inherit_seo_')):
			if item['name'] not in kwargs.keys():
				kwargs.update({ item['name']: False })
			else:
				kwargs[item['name']] = True
		
		session = Session()
		
		try:
			data = session.query(
				section_map[section]
			).filter_by(id=id)
		except Exception as e:
			session.close()
			print('adm/AdminMainHandler.update_page(): '+\
				'cannot update page by "%s" section:\n' % str(section),\
				e, file=sys.stderr)
			raise e
		
		if section == 'redirect':
			permanent = (
				lambda: True if kwargs['status'] == '301' else False
				)()
			from app.app import application
			counter = 0
			hndlr = application.handlers[0][1]
			for item in range(len(hndlr)):
				try:
					if(hndlr[item].__dict__['kwargs']['url'] == data.one().new_url):
						hndlr[item] = URLSpec(
							kwargs['old_url'] + '$',
							RedirectHandler,
							kwargs={
								'url': kwargs['new_url'],
								'permanent': permanent
								},
							name=None)
				except KeyError:
					continue
		data.update(kwargs)
		
		try:
			session.commit()
		except Exception as e:
			session.close()
			print('adm/AdminMainHandler.update_page(): '+\
				'cannot commit update page by "%s" section:\n' % str(section),\
				e, file=sys.stderr)
			raise e
		
		session.close()
		
		return self.json_response({'status': 'success'})