def update_category(self): inputs = self.get_input() if web.ctx.method == "GET": category_id = inputs.get("category_id") category = Categories.get_or_none(Categories.id == category_id) category_list = Categories.select().where(Categories.status == 0) self.private_data["category"] = category self.private_data["category_list"] = category_list return self.display("admin/update_category") else: category_id = inputs.get('category_id') name = inputs.get('name') desc = inputs.get('desc') parent_id = inputs.get("parent_id") category = Categories.get_or_none(Categories.id == category_id) try: category.update(name=name, description=desc, parent_id=parent_id). \ where(Categories.id == category_id).execute() self.private_data["create_success"] = True return web.seeother(self.make_url('category_list')) except Exception as e: log.error('update category failed %s' % traceback.format_exc()) log.error('input params %s' % inputs) self.private_data["update_success"] = False return self.display("admin/update_category")
def setUp(self): """Defining setUp() method that runs prior to each test.""" self.newCat = Categories() self.newCat.category_register("category", "*****@*****.**") self.newCat.category_edit("category", "category_one", "*****@*****.**") app.config['TESTING'] = True self.test_app = app.test_client()
def setUp(self): """Defining setUp() method that runs prior to each test.""" self.newRecipe = Recipe() self.newCategory = Categories() self.recipe_register = self.newRecipe.recipe_register( "category", "recipe", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.newCategory.category_register("category_one", "*****@*****.**") app.config['TESTING'] = True self.test_app = app.test_client()
def __init__(self): db.connect() tables = [ Albums, ArticleComments, Articles, Categories, Images, Users, Version, ] if not Version.table_exists(): db.create_tables(tables) self.version, _ = Version.get_or_create(description="0.1") self.default_thumbnail = "data:image/jpg;base64,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" # self.default_thumbnail = base64.b64encode( # buffer(Imaging.default_thumbnail())) self.sys_categories, _ = Categories.get_or_create( name='系统分类', description='初始父类!', thumbnail=self.default_thumbnail, ) self.article_categories = Categories.create( name='文章', description='文章', thumbnail=self.default_thumbnail, parent=self.sys_categories) self.admin, _ = Users.get_or_create( name='admin', cellphone='19999999999', email='*****@*****.**', address='陕西西安', birthday='2020.9', password='******', gender=0, description='系统管理员!', avatar=self.default_thumbnail) self.sys_album, _ = Albums.get_or_create( name='系统专辑', description='系统专辑!', thumbnail=self.default_thumbnail, owner=self.admin) self.sys_image, _ = Images.get_or_create( description='系统图片!', thumbnail=self.default_thumbnail, owner=self.admin, album=self.sys_album, uuid='default')
def __init__(self): self.connection_manager = ConnectionManager() self.database = Database() self.records = Records() self.categories = Categories() self.products = Products() self.substitutes = Substitutes() self.abandon = Abandon() self.menu = Menu() self.register = Register() self.research = Research() self.tests = Tests() self.initialize_database()
def post(self): name_category = self.request.get("name_c") if (name_category == 'all'): self.redirect('/projects') else: if (name_category): category = Categories.by_name(name_category) projects = Projects.query(Projects.category_name == name_category).fetch() categories = Categories.query(Categories.user == self.user).fetch() self.render('projects.html', category_filter = category, projects = projects, categories = categories)
def get(self): if self.user: # skills skills = Skills.query(Skills.user == self.user).fetch() # recent projects recent = Projects.query(Projects.user == self.user).fetch(limit=5) # create dictionary to hold categories with their projects data = {} # holds the categories which are meant to be shown on homepage featured_categories = [] categories = Categories.query(Categories.user == self.user).fetch() for i in categories: if (i.feature == True): featured_categories.append(i) data['{}'.format(i.name)] = Projects.query( Projects.category_name == i.name and Projects.feature == True and Projects.user == self.user).fetch() self.render('welcome.html', recent=recent, data=data, categories=featured_categories, skills=skills, user=self.user) else: self.redirect('/login')
def search_list(self): """ 文章搜索列表 :return: """ inputs = self.get_input() page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) keywords = inputs.get('keywords', None) self.private_data['article_list'] = [] self.private_data['current_page'] = 1 self.private_data['total_page'] = 0 self.private_data['category_list'] = [] self.private_data['keywords'] = keywords try: category_list = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()) if keywords: article_query = Articles.select().where( Articles.name.contains(keywords)) total_count = article_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['total_page'] = total_page self.private_data['current_page'] = page self.private_data['category_list'] = category_list self.private_data['article_list'] = article_query.\ paginate(page, page_size) return self.display('front/search_list') except Exception as e: log.info('Failed to get search result. Keywords is %s. Error msg is', keywords, e) log.error(traceback.format_exc()) return self.display('front/search_list')
def post(self): if self.user: name = self.request.get('category_name') feature = self.request.get("c_feature") if name: c = Categories(parent = categories_key(), name = name, user = self.user) if (feature and feature == 'true'): c.feature = True c.put() self.redirect('/main') else: self.render('errorpage.html', error = "No Category Given") else: self.redirect('/login')
def get_all_categories(): # Open a connection to the database with sqlite3.connect("./rare.db") as conn: # Just use these. It's a Black Box. conn.row_factory = sqlite3.Row db_cursor = conn.cursor() # Write the SQL query to get the information you want db_cursor.execute(""" SELECT c.id, c.label FROM categories c """) # Initialize an empty list to hold all animal representations categories = [] # Convert rows of data into a Python list dataset = db_cursor.fetchall() # Iterate list of data returned from database for row in dataset: category = Categories(row['id'], row['label']) categories.append(category.__dict__) # Use `json` package to properly serialize list as JSON return json.dumps(categories)
def get(self): projects = Projects.query(Projects.user == self.user).fetch() categories = Categories.query(Categories.user == self.user).fetch() skills = Skills.query(Skills.user == self.user).fetch() self.render('projects.html', projects=projects, categories=categories, skills=skills)
def get(self, user_name): user_other = User.by_name(user_name) projects = Projects.query(Projects.user == user_other).fetch() categories = Categories.query(Categories.user == user_other).fetch() self.render('visitprojects.html', projects=projects, categories=categories, user_other=user_other)
def create_article(self): if web.ctx.method == "GET": category_list = Categories.select().where(Categories.status == 0) self.private_data["category_list"] = category_list return self.display("admin/create_article") else: inputs = self.get_input() title = inputs.get('name') content = inputs.get('content') summary = inputs.get("summary") category_id = inputs.get("category_id") source_url = inputs.get("source_url", "") keywords = str(inputs.get("keywords", "")).strip() image = Images.get_or_none() category = Categories.get_or_none(Categories.id == category_id) try: tags_list = keywords.split(",") if keywords else [] if tags_list: got_tags = Tags.select().where(Tags.name.in_(tags_list)) tmp_list = [] for tag in got_tags: tmp_list.append(tag.name) for tag_str in tags_list: if tag_str not in tmp_list: t = Tags(name=tag_str) t.save() db = TinyDB('settings/db.json') db.truncate() db.close() article = Articles(name=title, content=content, summary=summary, category=category, original_address=source_url, keywords=keywords, thumbnail=image) article.save() self.private_data["create_success"] = True return web.seeother(self.make_url('articles')) except Exception as e: log.error('create article failed %s' % traceback.format_exc()) log.error('input params %s' % inputs) self.private_data["create_success"] = False return self.display("admin/create_article")
def __init__(self): db.connect() self.version = None self.admin = None self.sys_category = None self.default_thumbnail = None self.sys_image = None if not Version.table_exists(): tables = [ Version, Categories, Products, News, Notifications, Images, Orders, OrderDetails, Users, Contacts, Accountings, AccountIncommings, AccountOutgoings, Questions, Answers, Albums ] db.create_tables(tables) self.version=Version.create(description=open('VERSION').read()) self.default_thumbnail = base64.b64encode(buffer(imaging.default_thumbnail())) self.sys_category = Categories.create( name = '系统预置分类', description = '预置的初始父类!', ) self.sys_image = Images.create( description = '预置的系统图片!', thumbnail = self.default_thumbnail, uuid = 'default' ) self.admin = Users.create( name = 'admin', cellphone = '13912345678', email = '*****@*****.**', password = '******', gender = 0, avatur = self.sys_image, description = '系统管理员', weixin= '0', address= 'sv', )
def post(self, project_id): if not self.user: self.redirect('/login') key = ndb.Key('Projects', int(project_id), parent=post_key()) p = key.get() title = self.request.get("title") link = self.request.get("link") description = self.request.get("description") programming_language = self.request.get("programming_language") category = self.request.get("name_category") add_category = self.request.get("add_category") feature = self.request.get("p_feature") error = "NEEDS A TITLE!" if (p and p.user.name == self.user.name): if (title): p.title = title if (link): p.link = link else: p.link = '[None]' if (description): p.description = description else: p.description = '[None]' if (programming_language): p.programming_language = programming_language if (category): p.category_name = category if (add_category): c = Categories(name=add_category, user=self.user) c.put() if (feature and feature == "true"): p.feature = True else: p.feature = False p.put() self.redirect('/main') else: self.render('editproject.html', project=p, error=error) else: self.redirect('/login')
def product_prices(self): inputParams = self.getInput() try: productsList = Products.select().where(Products.category==int(inputParams['category'])).order_by(Products.id.desc()) self.privData['PRODUCTS_LIST'] = productsList self.privData['ORDER'] = int(inputParams['order']) if inputParams.has_key('order') else -1 self.privData['CATEGORY'] = Categories.get(Categories.id==int(inputParams['category'])) return self.display('product-prices') except Exception, e: print e return self.error(msg='获取产品价格列表失败!')
def categories(self): inputParams = self.getInput() try: parent = inputParams['parent'] order = int(inputParams['order']) if inputParams.has_key('order') else -1 categoriesList = Categories.select().where(Categories.parent==parent) self.privData['CATEGORIES_LIST'] = categoriesList self.privData['ORDER'] = order return self.display('categories-list') except Exception, e: return self.error(msg='获取分类列表失败: %s' % e)
def resume(self): """标签下文章列表:return:""" self.private_data['category_list'] = [] try: category_list = Categories.select().where(Categories.status == 0).\ order_by(Categories.id.desc()) self.private_data['category_list'] = category_list return self.display('front/resume') except Exception as e: log.info('Failed to get search result.tag is%s.Error msg is', e) log.error(traceback.format_exc()) return self.display('front/resume')
def _lastcateids(parent, iditem): try: id_item = iditem cate = Categories.select().where(Categories.id == parent) for item in cate: if item.children.count() == 0: id_item.append(item.id) elif item.children.count(): _getchildren(item, id_item) return id_item except Exception: return False
def get(self): if self.user: projects = Projects.query(Projects.user == self.user).fetch( limit=5) categories = Categories.query(Categories.user == self.user).fetch() skills = Skills.query(Skills.user == self.user).fetch() self.render('welcome.html', projects=projects, categories=categories, skills=skills) else: self.redirect('/login')
def get(self, project_id): if not self.user: self.redirect('/login') key = ndb.Key('Projects', int(project_id), parent=post_key()) project = key.get() categories = Categories.query(Categories.user == self.user).fetch() if (project and project.user.name == self.user.name): self.render('editproject.html', project=project, categories=categories) else: self.redirect('/login')
def post(self, user_name): user_other = User.by_name(user_name) if user_other: name_category = self.request.get("name_c") if (name_category == 'all'): self.redirect('/visit/projects/%s' % (user_other.name)) else: if (name_category): category = Categories.by_name(name_category) projects = Projects.query( Projects.category_name == name_category).fetch() categories = Categories.query( Categories.user == user_other).fetch() self.render('visitprojects.html', category_filter=category, user_other=user_other, projects=projects, categories=categories) else: self.render('errorpage.html', error="Sorry, that information could not be found.")
def post(self): title = self.request.get("title") link = self.request.get("link") description = self.request.get("description") programming_language = self.request.get("programming_language") category = self.request.get("name_category") add_category = self.request.get("add_category") feature = self.request.get("p_feature") error = "Need Title, Link, and Description!" if self.user: if (title): p = Projects(parent=post_key(), title=title, link='[None]', description='[None]', user=self.user) if (link): p.link = link if (description): p.description = description if (programming_language): p.programming_language = programming_language if (category): p.category_name = category if (add_category): c = Categories(name=add_category, user=self.user) c.put() if (feature and feature == "true"): p.feature = True else: p.feature = False p.put() self.redirect('/main') else: self.redirect('/main') else: self.redirect('/login')
def articles(self): """ 文章分类列表 :return: """ inputs = self.get_input() page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) category_id = int(inputs.get('category_id', 2)) self.private_data['article_list'] = [] self.private_data['current_page'] = 1 self.private_data['total_page'] = 0 self.private_data['category_list'] = [] self.private_data['current_category'] = None try: category = Categories.get(Categories.id == category_id) category_list = Categories.select().where(Categories.status == 0).\ order_by(Categories.id.desc()) article_query = Articles.select().where( Articles.category == category.id).order_by(Articles.id.desc()) article_list = article_query.paginate(page, page_size) total_count = article_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['article_list'] = article_list self.private_data['current_category'] = category self.private_data['current_page'] = page self.private_data['category_list'] = category_list self.private_data['total_page'] = total_page return self.display('front/article_list') except Exception as e: log.error('Failed to get category articles data. ' 'Category_id is %s Error msg %s', category_id, e) log.error(traceback.format_exc()) # return self.error(msg="获取列表信息失败!", url=self.make_url('/views/home')) return self.display('front/article_list')
def about(self): """ 文章详情信息 :return: """ self.private_data['category_list'] = [] try: category_list = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()).execute() self.private_data['category_list'] = category_list return self.display('front/about') except Exception as e: log.info('Failed to get article info. Error msg ' 'is', e) log.error(traceback.format_exc()) return self.display('front/about')
def get(self, user_name): user_other = User.by_name(user_name) if user_other: other_projects = Projects.query( Projects.user.name == user_name).fetch() other_categories = Categories.query( Categories.user.name == user_name).fetch() recent_projects = Projects.query( Projects.user.name == user_name).fetch(limit=6) other_skills = Skills.query(Skills.user.name == user_name).fetch() self.render('visitmain.html', recent_projects=recent_projects, other_projects=other_projects, other_categories=other_categories, user_other=user_other, other_skills=other_skills) else: self.render('errorpage.html', error="Sorry, that user could not be found.")
def article_tag_list(self): """标签下文章列表:return:""" inputs = self.get_input() tag = inputs.get('tag', None) self.private_data['category_list'] = [] self.private_data['tag'] = tag self.private_data['article_list'] = [] try: category_list = Categories.select().where(Categories.status == 0).\ order_by(Categories.id.desc()) if tag: article_query = Articles.select().where(Articles.keywords.contains(tag)) self.private_data['category_list'] = category_list self.private_data['article_list'] = article_query.paginate(1, 20) return self.display('front/tags_list') except Exception as e: log.info('Failed to get search result.tag is%s.Error msg is', tag, e) log.error(traceback.format_exc()) return self.display('front/tags_list') \
def add_expense(raw_message: str) -> Expense: parsed_message = _parse_message(raw_message) category = Categories().get_category(parsed_message.category_text) with connect() as conn, conn.cursor() as cur: cur.execute( """ INSERT INTO expense(amount, created, category_codename, raw_text) VALUES (%s, NOW(), %s, %s) """, ( parsed_message.amount, category.codename, parsed_message.category_text, ), ) return Expense( id=None, amount=parsed_message.amount, category_name=category.name )
def category_list(self): inputs = self.get_input() page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) self.private_data['current_page'] = page self.private_data['total_page'] = 0 self.private_data['category_list'] = [] try: category_query = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()) total_count = category_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['category_list'] = \ category_query.paginate(page, page_size).execute() self.private_data['total_page'] = total_page return self.display("admin/category_list") except Exception as e: log.error('Failed to get category list data. Error msg %s', e) log.error(traceback.format_exc()) return self.display('admin/category_list')
def GET(self): """ 首页 :return: """ inputs = self.get_input() page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) self.private_data['article_list'] = [] self.private_data['current_page'] = 1 self.private_data['total_page'] = 0 self.private_data['category_list'] = [] try: album = Albums.get(Albums.is_show == 1) images = Images.select().where(Images.status == 0, Images.album == album.id) images_dict_list = [] for image in images.dicts().iterator(): image_dict = { 'link': image.get("link"), 'url': config.WEB_URL + 'static/uploads/' + image.get("uuid") + '.jpeg' } images_dict_list.append(image_dict) category_list = Categories.select().where( Categories.status == 0). \ order_by(Categories.id.desc()) article_query = Articles.select().where(Articles.status == 0). \ order_by(Articles.id.desc()) article_list = article_query.paginate(page, page_size) total_count = article_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['article_list'] = article_list.execute() self.private_data['current_page'] = page self.private_data['total_page'] = total_page self.private_data['images_list'] = images_dict_list self.private_data['category_list'] = category_list.execute() except Exception as e: log.error('Failed to get home data. Error msg %s', e) log.error(traceback.format_exc()) return self.display('front/index')
def article_info(self): """ 文章详情信息 :return: """ inputs = self.get_input() article_id = int(inputs.get('article_id', 1)) self.private_data['article'] = None self.private_data['category_list'] = [] try: category_list = Categories.select().where(Categories.status == 0). \ order_by(Categories.id.desc()).execute() article = Articles.get(Articles.id == article_id) self.private_data['article'] = article self.private_data['category_list'] = category_list return self.display('front/article_info') except Exception as e: log.info('Failed to get article info. Article id is %s. Error msg ' 'is', article_id, e) log.error(traceback.format_exc()) return self.display('front/article_info')
class CategoryTest(unittest.TestCase, Users): """ Class performing unit testing for class Recipe""" def setUp(self): """Defining setUp() method that runs prior to each test.""" self.newCat = Categories() self.newCat.category_register("category", "*****@*****.**") self.newCat.category_edit("category", "category_one", "*****@*****.**") app.config['TESTING'] = True self.test_app = app.test_client() def test_category_register_route(self): """ Test to check if category register route works""" response = self.test_app.get('/cat_register') self.assertEqual(response.status_code, 200) def test_view_category_route(self): """ Test to check if view category route works""" response = self.test_app.get('/view_category/Lunch') self.assertEqual(response.status_code, 200) def test_category_registration(self): """ Test to check succesful category creation""" category_registration = self.newCat.category_register( "category_one", "*****@*****.**") self.assertEqual("Successfully created category", category_registration) def test_category_exists(self): """ Test to check if category_name exists """ category_exists = self.newCat.category_register( "category", "*****@*****.**") self.assertEqual("Category exists", category_exists) def test_null_category(self): """ Test to test creation of a null category name""" category_registration = self.newCat.category_register( "", "*****@*****.**") self.assertEqual("Category name is null", category_registration) def test_edit_category_route(self): """ Test to check if view category route works""" response = self.test_app.get('/category_edit/Lunch') self.assertEqual(response.status_code, 200) def test_delete_category_route(self): """ Test to check if view category route works""" response = self.test_app.get('/category_delete') self.assertEqual(response.status_code, 200) def test_invalid_category_name(self): """Test to check if category_name follows the one specified by regex""" category_registration = self.newCat.category_register( "&#*", "*****@*****.**") self.assertEqual("category name has special characters", category_registration) def test_update_category_regex(self): """ Test for category name regex pattern name on update """ category_check_regex = self.newCat.category_edit( "category_one", "@@@", "mwaz") self.assertIn("category name has special characters", category_check_regex) def test_update_category_exists(self): """ Test for invalid category name on update """ category_exists = self.newCat.category_edit("categoryone", "category", "mwaz") self.assertEqual("category name exists", category_exists)
class RecipeTest(unittest.TestCase, Categories): """ Class performing unit testing for class Recipe""" def setUp(self): """Defining setUp() method that runs prior to each test.""" self.newRecipe = Recipe() self.newCategory = Categories() self.recipe_register = self.newRecipe.recipe_register( "category", "recipe", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.newCategory.category_register("category_one", "*****@*****.**") app.config['TESTING'] = True self.test_app = app.test_client() def test_recipe_register_route(self): """ Test to check if recipe register route works""" response = self.test_app.get('/recipe_register') self.assertEqual(response.status_code, 200) def test_recipe_registration(self): """ Test for method create recipe """ recipe_success_registration = self.newRecipe.recipe_register( "category_one", "recipee", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.assertEqual("successfully created recipe", recipe_success_registration) def test_recipe_regex_match(self): """ Test for recipe name regex match """ recipe_name_regex_format = self.newRecipe.recipe_register( "category", "@@@", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.assertEqual("Recipe name has special characters", recipe_name_regex_format) def test_recipe_null_name(self): """ Test for null recipe name """ recipe_null_name = self.newRecipe.recipe_register( "category", "", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.assertEqual("Null recipe name", recipe_null_name) def test_recipe_null_ingredients(self): """ Test for null recipe ingredients """ recipe_null_ingredients = self.newRecipe.recipe_register( "category", "recipe_name", "*****@*****.**", "", "recipe_methods") self.assertEqual("Null recipe ingredients", recipe_null_ingredients) def test_recipe_null_methods(self): """ Test for null recipe preparation methods """ recipe_null_methods = self.newRecipe.recipe_register( "category", "recipe_name", "*****@*****.**", "recipe_ingredients", "") self.assertEqual("Null recipe method", recipe_null_methods) def test_recipe_exists(self): """ Test for method if recipe exists """ recipe_exists = self.newRecipe.recipe_register("category", "recipe", "*****@*****.**", "recipe_ingredients", "recipe_methods") self.assertEqual("Recipe exists", recipe_exists) def test_recipe_edit_route(self): """ Test to check if recipe edit route works""" response = self.test_app.get('/recipe_edit/Panckakes') self.assertEqual(response.status_code, 200) def test_edit_recipe_regex_format(self): """ Test for recipe name regex pattern name on update """ edit_recipe_regex = self.newRecipe.recipe_edit("@@@", "recipe_name", "category_one", "mwaz", "recipe_ingredients", "recipe_methods") self.assertEqual("Recipe name has special characters", edit_recipe_regex) def test_edit_recipe_is_null(self): """ Test for null recipe name on update """ recipe_edit_is_null = self.newRecipe.recipe_edit( "", "categoryone", "recipe_name", "mwaz", "recipe_ingredients", "recipe_methods") self.assertEqual("Null recipe name", recipe_edit_is_null) def succss_recipe_name_edit(self): """ Test for successful recipe name on update """ recipe_edit_success = self.newRecipe.recipe_edit( "new_recipe", "categoryone", "recipe_name", "mwaz", "recipe_ingredients", "recipe_methods") self.assertEqual("Successfully edited recipe", recipe_edit_success) def test_recipe_delete_route(self): """ Test to check if recipe delete route works""" response = self.test_app.get('/recipe_delete') self.assertEqual(response.status_code, 200)
def __init__(self): db.connect() if not Version.table_exists(): tablesName = [ Version, Albums, Chatrooms, Categories, ProductComments, ProductFavorites, ProductRankings, ProductPayments, Products, GroupComments, GroupFavorites, GroupRankings, GroupPayments, Groups, Images, Roles, Transactions, Users, Articles, Answners, Questions, ] for i in tablesName: i.create_table() self.version=Version.get_or_create(description=open('VERSION').read()) self.admin_role = Roles.get_or_create(type=1, description='系统管理员') self.assistant_role = Roles.get_or_create(type=10, description='班级管理员') self.student_role = Roles.get_or_create(type=100, description='注册学员') self.default_thumbnail = base64.b64encode(buffer(imaging.default_thumbnail())) self.sys_categories = Categories.get_or_create( name = '系统预置分类', description = '预置的初始父类!', thumbnail = self.default_thumbnail, ) self.admin = Users.get_or_create( name = 'admin', cellphone = '13912345678', email = '*****@*****.**', password = '******', gender = 0, role = self.admin_role, description = '预置的系统管理员!', avatur = self.default_thumbnail ) self.sys_album = Albums.get_or_create( name = '系统专辑', description = '预置的系统专辑!', thumbnail = self.default_thumbnail, owner = self.admin ) self.sys_image = Images.get_or_create( description = '预置的系统图片!', thumbnail = self.default_thumbnail, owner = self.admin, album = self.sys_album, uuid = 'default' )