本文整理汇总了Python中weasyl.define.common_page_start函数的典型用法代码示例。如果您正苦于以下问题:Python common_page_start函数的具体用法?Python common_page_start怎么用?Python common_page_start使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了common_page_start函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: GET
def GET(self, name=""):
form = web.input(userid="", name="", backid=None, nextid=None)
form.name = name if name else form.name
form.userid = define.get_int(form.userid)
config = define.get_config(self.user_id)
rating = define.get_rating(self.user_id)
otherid = profile.resolve(self.user_id, form.userid, form.name)
if not otherid:
raise WeasylError("userRecordMissing")
elif not self.user_id and "h" in define.get_config(otherid):
return define.errorpage(self.user_id, errorcode.no_guest_access)
userprofile = profile.select_profile(otherid, images=True, viewer=self.user_id)
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
page_title = u"%s's journals" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(self.user_id, title=page_title)
page.append(define.render(template.user_journals, [
# Profile information
userprofile,
# User information
profile.select_userinfo(otherid, config=userprofile['config']),
# Relationship
profile.select_relation(self.user_id, otherid),
# Journals list
# TODO(weykent): use select_user_list
journal.select_list(self.user_id, rating, 250, otherid=otherid, config=config),
# Latest journal
journal.select_latest(self.user_id, rating, otherid=otherid),
]))
return define.common_page_end(self.user_id, page)
开发者ID:0x15,项目名称:weasyl,代码行数:34,代码来源:profile.py
示例2: shouts_
def shouts_(request):
form = request.web_input(userid="", name="", backid=None, nextid=None)
form.name = request.matchdict.get('name', form.name)
form.userid = define.get_int(form.userid)
otherid = profile.resolve(request.userid, form.userid, form.name)
if not otherid:
raise WeasylError("userRecordMissing")
elif not request.userid and "h" in define.get_config(otherid):
return Response(define.errorpage(request.userid, errorcode.no_guest_access))
userprofile = profile.select_profile(otherid, images=True, viewer=request.userid)
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
page_title = u"%s's shouts" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(request.userid, title=page_title)
page.append(define.render('user/shouts.html', [
# Profile information
userprofile,
# User information
profile.select_userinfo(otherid, config=userprofile['config']),
# Relationship
profile.select_relation(request.userid, otherid),
# Myself
profile.select_myself(request.userid),
# Comments
shout.select(request.userid, ownerid=otherid),
# Feature
"shouts",
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:33,代码来源:profile.py
示例3: staffnotes_
def staffnotes_(request):
form = request.web_input(userid="")
otherid = profile.resolve(request.userid, define.get_int(form.userid), request.matchdict.get('name', None))
if not otherid:
raise WeasylError("userRecordMissing")
userprofile = profile.select_profile(otherid, images=True, viewer=request.userid)
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
page_title = u"%s's staff notes" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(request.userid, title=page_title)
userinfo = profile.select_userinfo(otherid, config=userprofile['config'])
reportstats = profile.select_report_stats(otherid)
userinfo['reportstats'] = reportstats
userinfo['reporttotal'] = sum(reportstats.values())
page.append(define.render('user/shouts.html', [
# Profile information
userprofile,
# User information
userinfo,
# Relationship
profile.select_relation(request.userid, otherid),
# Myself
profile.select_myself(request.userid),
# Comments
shout.select(request.userid, ownerid=otherid, staffnotes=True),
# Feature
"staffnotes",
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:32,代码来源:profile.py
示例4: GET
def GET(self, charid=""):
form = web.input(charid="", ignore="", anyway="")
rating = define.get_rating(self.user_id)
charid = define.get_int(charid) if charid else define.get_int(form.charid)
try:
item = character.select_view(
self.user_id, charid, rating,
ignore=define.text_bool(form.ignore, True), anyway=form.anyway
)
except WeasylError as we:
if we.value in ("UserIgnored", "TagBlocked"):
we.errorpage_kwargs['links'] = [
("View Character", "?ignore=false"),
("Return to the Home Page", "/index"),
]
raise
canonical_url = "/character/%d/%s" % (charid, slug_for(item["title"]))
page = define.common_page_start(self.user_id, canonical_url=canonical_url, title=item["title"])
page.append(define.render('detail/character.html', [
# Profile
profile.select_myself(self.user_id),
# Character detail
item,
# Violations
[i for i in macro.MACRO_REPORT_VIOLATION if 2000 <= i[0] < 3000],
]))
return define.common_page_end(self.user_id, page)
开发者ID:hyena,项目名称:weasyl,代码行数:32,代码来源:detail.py
示例5: GET
def GET(self, journalid=""):
form = web.input(journalid="", ignore="", anyway="")
rating = define.get_rating(self.user_id)
journalid = define.get_int(journalid) if journalid else define.get_int(form.journalid)
try:
item = journal.select_view(
self.user_id, rating, journalid,
ignore=define.text_bool(form.ignore, True), anyway=form.anyway
)
except WeasylError as we:
if we.value in ("UserIgnored", "TagBlocked"):
we.errorpage_kwargs['links'] = [
("View Journal", "?ignore=false"),
("Return to the Home Page", "/index"),
]
raise
canonical_url = "/journal/%d/%s" % (journalid, slug_for(item["title"]))
page = define.common_page_start(self.user_id, options=["pager"], canonical_url=canonical_url, title=item["title"])
page.append(define.render(template.detail_journal, [
# Myself
profile.select_myself(self.user_id),
# Journal detail
item,
# Violations
[i for i in macro.MACRO_REPORT_VIOLATION if 3000 <= i[0] < 4000],
]))
return define.common_page_end(self.user_id, page)
开发者ID:0x15,项目名称:weasyl,代码行数:32,代码来源:detail.py
示例6: journal_
def journal_(request):
form = request.web_input(journalid="", ignore="", anyway="")
rating = define.get_rating(request.userid)
journalid = define.get_int(request.matchdict.get('journalid', form.journalid))
try:
item = journal.select_view(
request.userid, rating, journalid,
ignore=define.text_bool(form.ignore, True), anyway=form.anyway
)
except WeasylError as we:
if we.value in ("UserIgnored", "TagBlocked"):
we.errorpage_kwargs['links'] = [
("View Journal", "?ignore=false"),
("Return to the Home Page", "/index"),
]
raise
canonical_url = "/journal/%d/%s" % (journalid, slug_for(item["title"]))
page = define.common_page_start(request.userid, canonical_url=canonical_url, title=item["title"])
page.append(define.render('detail/journal.html', [
# Myself
profile.select_myself(request.userid),
# Journal detail
item,
# Violations
[i for i in macro.MACRO_REPORT_VIOLATION if 3000 <= i[0] < 4000],
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:kfkitsune,项目名称:weasyl,代码行数:32,代码来源:detail.py
示例7: submission_
def submission_(request):
username = request.matchdict.get('name')
submitid = request.matchdict.get('submitid')
form = request.web_input(submitid="", ignore="", anyway="")
rating = define.get_rating(request.userid)
submitid = define.get_int(submitid) if submitid else define.get_int(form.submitid)
extras = {
"pdf": True,
}
if define.user_is_twitterbot():
extras['twitter_card'] = submission.twitter_card(submitid)
try:
item = submission.select_view(
request.userid, submitid, rating,
ignore=define.text_bool(form.ignore, True), anyway=form.anyway
)
except WeasylError as we:
we.errorpage_kwargs = extras
if 'twitter_card' in extras:
extras['options'] = ['nocache']
if we.value in ("UserIgnored", "TagBlocked"):
extras['links'] = [
("View Submission", "?ignore=false"),
("Return to the Home Page", "/index"),
]
raise
login = define.get_sysname(item['username'])
canonical_path = request.route_path('submission_detail_profile', name=login, submitid=submitid, slug=slug_for(item['title']))
if request.GET.get('anyway'):
canonical_path += '?anyway=true'
if login != username:
raise httpexceptions.HTTPMovedPermanently(location=canonical_path)
extras["canonical_url"] = canonical_path
extras["title"] = item["title"]
page = define.common_page_start(request.userid, **extras)
page.append(define.render('detail/submission.html', [
# Myself
profile.select_myself(request.userid),
# Submission detail
item,
# Subtypes
macro.MACRO_SUBCAT_LIST,
# Violations
[i for i in macro.MACRO_REPORT_VIOLATION if 2000 <= i[0] < 3000],
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:56,代码来源:detail.py
示例8: submission_tag_history_
def submission_tag_history_(request):
submitid = int(request.matchdict['submitid'])
page_title = "Tag updates"
page = define.common_page_start(request.userid, title=page_title)
page.append(define.render('detail/tag_history.html', [
submission.select_view_api(request.userid, submitid),
searchtag.tag_history(submitid),
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:kfkitsune,项目名称:weasyl,代码行数:10,代码来源:detail.py
示例9: collections_
def collections_(request):
form = request.web_input(userid="", name="", backid=None, nextid=None,
folderid=None)
form.name = request.matchdict.get('name', form.name)
form.userid = define.get_int(form.userid)
config = define.get_config(request.userid)
rating = define.get_rating(request.userid)
otherid = profile.resolve(request.userid, form.userid, form.name)
if not otherid:
raise WeasylError("userRecordMissing")
elif not request.userid and "h" in define.get_config(otherid):
return Response(define.errorpage(request.userid, errorcode.no_guest_access))
userprofile = profile.select_profile(otherid, images=True, viewer=request.userid)
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
page_title = u"%s's collections" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(request.userid, title=page_title)
url_format = "/collections?userid={userid}&%s".format(userid=userprofile['userid'])
result = pagination.PaginatedResult(
collection.select_list, collection.select_count, 'submitid', url_format, request.userid, rating, 66,
otherid=otherid, backid=define.get_int(form.backid), nextid=define.get_int(form.nextid), config=config)
page.append(define.render('user/collections.html', [
# Profile information
userprofile,
# User information
profile.select_userinfo(otherid, config=userprofile['config']),
# Relationship
profile.select_relation(request.userid, otherid),
# Collections
result,
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:37,代码来源:profile.py
示例10: favorites_
def favorites_(request):
def _FEATURE(target):
if target == "submit":
return 10
elif target == "char":
return 20
elif target == "journal":
return 30
else:
return 0
form = request.web_input(userid="", name="", feature="", backid=None, nextid=None)
form.name = request.matchdict.get('name', form.name)
form.userid = define.get_int(form.userid)
config = define.get_config(request.userid)
rating = define.get_rating(request.userid)
otherid = profile.resolve(request.userid, form.userid, form.name)
# TODO(hyena): Why aren't more of these WeasylErrors?
if not otherid:
raise WeasylError("userRecordMissing")
elif not request.userid and "h" in define.get_config(otherid):
return Response(define.errorpage(request.userid, errorcode.no_guest_access))
elif request.userid != otherid and 'v' in define.get_config(otherid):
return Response(define.errorpage(
request.userid,
"You cannot view this page because the owner does not allow anyone to see their favorites."))
userprofile = profile.select_profile(otherid, images=True, viewer=request.userid)
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
page_title = u"%s's favorites" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(request.userid, title=page_title)
if form.feature:
nextid = define.get_int(form.nextid)
backid = define.get_int(form.backid)
url_format = (
"/favorites?userid={userid}&feature={feature}&%s".format(userid=userprofile['userid'], feature=form.feature))
id_field = form.feature + "id"
count_function = None
if form.feature == "submit":
select_function = favorite.select_submit
count_function = favorite.select_submit_count
elif form.feature == "char":
select_function = favorite.select_char
elif form.feature == "journal":
select_function = favorite.select_journal
else:
raise httpexceptions.HTTPNotFound()
faves = pagination.PaginatedResult(
select_function, count_function,
id_field, url_format, request.userid, rating, 60,
otherid=otherid, backid=backid, nextid=nextid, config=config)
else:
faves = {
"submit": favorite.select_submit(request.userid, rating, 22, otherid=otherid, config=config),
"char": favorite.select_char(request.userid, rating, 22, otherid=otherid, config=config),
"journal": favorite.select_journal(request.userid, rating, 22, otherid=otherid, config=config),
}
page.append(define.render('user/favorites.html', [
# Profile information
userprofile,
# User information
profile.select_userinfo(otherid, config=userprofile['config']),
# Relationship
profile.select_relation(request.userid, otherid),
# Feature
form.feature,
# Favorites
faves,
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:77,代码来源:profile.py
示例11: submission_
def submission_(request):
username = request.matchdict.get('name')
submitid = request.matchdict.get('submitid')
form = request.web_input(submitid="", ignore="", anyway="")
rating = define.get_rating(request.userid)
submitid = define.get_int(submitid) if submitid else define.get_int(form.submitid)
extras = {}
if not request.userid:
# Only generate the Twitter/OGP meta headers if not authenticated (the UA viewing is likely automated).
twit_card = submission.twitter_card(submitid)
if define.user_is_twitterbot():
extras['twitter_card'] = twit_card
# The "og:" prefix is specified in page_start.html, and og:image is required by the OGP spec, so something must be in there.
extras['ogp'] = {
'title': twit_card['title'],
'site_name': "Weasyl",
'type': "website",
'url': twit_card['url'],
'description': twit_card['description'],
# >> BUG AVOIDANCE: https://trello.com/c/mBx51jfZ/1285-any-image-link-with-in-it-wont-preview-up-it-wont-show-up-in-embeds-too
# Image URLs with '~' in it will not be displayed by Discord, so replace ~ with the URL encoded char code %7E
'image': twit_card['image:src'].replace('~', '%7E') if 'image:src' in twit_card else define.cdnify_url(
'/static/images/logo-mark-light.svg'),
}
try:
item = submission.select_view(
request.userid, submitid, rating,
ignore=define.text_bool(form.ignore, True), anyway=form.anyway
)
except WeasylError as we:
we.errorpage_kwargs = extras
if we.value in ("UserIgnored", "TagBlocked"):
extras['links'] = [
("View Submission", "?ignore=false"),
("Return to the Home Page", "/index"),
]
raise
login = define.get_sysname(item['username'])
canonical_path = request.route_path('submission_detail_profile', name=login, submitid=submitid, slug=slug_for(item['title']))
if request.GET.get('anyway'):
canonical_path += '?anyway=true'
if login != username:
raise httpexceptions.HTTPMovedPermanently(location=canonical_path)
extras["canonical_url"] = canonical_path
extras["title"] = item["title"]
submission_files = item["sub_media"].get("submission")
submission_file = submission_files[0] if submission_files else None
extras["pdf"] = bool(submission_file) and submission_file["file_type"] == "pdf"
page = define.common_page_start(request.userid, **extras)
page.append(define.render('detail/submission.html', [
# Myself
profile.select_myself(request.userid),
# Submission detail
item,
# Subtypes
macro.MACRO_SUBCAT_LIST,
# Violations
[i for i in macro.MACRO_REPORT_VIOLATION if 2000 <= i[0] < 3000],
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:kfkitsune,项目名称:weasyl,代码行数:71,代码来源:detail.py
示例12: profile_
def profile_(request):
form = request.web_input(userid="", name="")
form.name = request.matchdict.get('name', form.name)
form.userid = define.get_int(form.userid)
config = define.get_config(request.userid)
rating = define.get_rating(request.userid)
otherid = profile.resolve(request.userid, form.userid, form.name)
if not otherid:
raise WeasylError("userRecordMissing")
userprofile = profile.select_profile(otherid, images=True, viewer=request.userid)
extras = {
"canonical_url": "/~" + define.get_sysname(form.name)
}
if not request.userid:
# Only generate the Twitter/OGP meta headers if not authenticated (the UA viewing is likely automated).
twit_card = profile.twitter_card(otherid)
if define.user_is_twitterbot():
extras['twitter_card'] = twit_card
# The "og:" prefix is specified in page_start.html, and og:image is required by the OGP spec, so something must be in there.
extras['ogp'] = {
'title': twit_card['title'],
'site_name': "Weasyl",
'type': "website",
'url': twit_card['url'],
'description': twit_card['description'],
'image': twit_card['image:src'] if 'image:src' in twit_card else define.cdnify_url('/static/images/logo-mark-light.svg'),
}
if not request.userid and "h" in userprofile['config']:
return Response(define.errorpage(
request.userid,
"You cannot view this page because the owner does not allow guests to view their profile.",
**extras))
has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != ''
extras['title'] = u"%s's profile" % (userprofile['full_name'] if has_fullname else userprofile['username'],)
page = define.common_page_start(request.userid, **extras)
define.common_view_content(request.userid, otherid, "profile")
if 'O' in userprofile['config']:
submissions = collection.select_list(
request.userid, rating, 11, otherid=otherid, options=["cover"], config=config)
more_submissions = 'collections'
featured = None
elif 'A' in userprofile['config']:
submissions = character.select_list(
request.userid, rating, 11, otherid=otherid, options=["cover"], config=config)
more_submissions = 'characters'
featured = None
else:
submissions = submission.select_list(
request.userid, rating, 11, otherid=otherid, options=["cover"], config=config,
profile_page_filter=True)
more_submissions = 'submissions'
featured = submission.select_featured(request.userid, otherid, rating)
if userprofile['show_favorites_bar']:
favorites = favorite.select_submit(request.userid, rating, 11, otherid=otherid, config=config)
else:
favorites = None
statistics, show_statistics = profile.select_statistics(otherid)
page.append(define.render('user/profile.html', [
# Profile information
userprofile,
# User information
profile.select_userinfo(otherid, config=userprofile['config']),
macro.SOCIAL_SITES,
# Relationship
profile.select_relation(request.userid, otherid),
# Myself
profile.select_myself(request.userid),
# Recent submissions
submissions, more_submissions,
favorites,
featured,
# Folders preview
folder.select_preview(request.userid, otherid, rating, 3),
# Latest journal
journal.select_latest(request.userid, rating, otherid=otherid, config=config),
# Recent shouts
shout.select(request.userid, ownerid=otherid, limit=8),
# Statistics information
statistics,
show_statistics,
# Commission information
commishinfo.select_list(otherid),
# Friends
lambda: frienduser.has_friends(otherid),
]))
return Response(define.common_page_end(request.userid, page))
开发者ID:Weasyl,项目名称:weasyl,代码行数:99,代码来源:profile.py
示例13: GET
def GET(self):
now = time.time()
page = define.common_page_start(self.user_id, options=["homepage"], title="Home")
page.append(define.render("etc/index.html", index.template_fields(self.user_id)))
return define.common_page_end(self.user_id, page, now=now)
开发者ID:hyena,项目名称:weasyl,代码行数:5,代码来源:general.py
示例14: index_
def index_(request):
page = define.common_page_start(request.userid, options=["homepage"], title="Home")
page.append(define.render("etc/index.html", index.template_fields(request.userid)))
return Response(define.common_page_end(request.userid, page))
开发者ID:Syfaro,项目名称:weasyl,代码行数:4,代码来源:general.py
示例15: search_
def search_(request):
rating = define.get_rating(request.userid)
form = request.web_input(q="", find="", within="", rated=[], cat="", subcat="", backid="", nextid="")
page = define.common_page_start(request.userid, title="Browse and search")
if form.q:
find = form.find
if find not in ("submit", "char", "journal", "user"):
find = "submit"
q = form.q.strip()
search_query = search.Query.parse(q, find)
meta = {
"q": q,
"find": search_query.find,
"within": form.within,
"rated": set('gap') & set(form.rated),
"cat": int(form.cat) if form.cat else None,
"subcat": int(form.subcat) if form.subcat else None,
"backid": int(form.backid) if form.backid else None,
"nextid": int(form.nextid) if form.nextid else None,
}
if search_query.find == "user":
query = search.select_users(q)
next_count = back_count = 0
else:
search_query.ratings.update(ratings.CHARACTER_MAP[rating_code].code for rating_code in meta["rated"])
query, next_count, back_count = search.select(
userid=request.userid,
rating=rating,
limit=63,
search=search_query,
within=meta["within"],
cat=meta["cat"],
subcat=meta["subcat"],
backid=meta["backid"],
nextid=meta["nextid"])
page.append(define.render("etc/search.html", [
# Search method
{"method": "search"},
# Search metadata
meta,
# Search results
query,
next_count,
back_count,
# Submission subcategories
macro.MACRO_SUBCAT_LIST,
search.COUNT_LIMIT,
]))
elif form.find:
query = search.browse(request.userid, rating, 66, form)
meta = {
"find": form.find,
"cat": int(form.cat) if form.cat else None,
}
page.append(define.render("etc/search.html", [
# Search method
{"method": "browse"},
# Search metadata
meta,
# Search results
query,
0,
0,
]))
else:
page.append(define.render("etc/search.html", [
# Search method
{"method": "summary"},
# Search metadata
None,
# Search results
{
"submit": search.browse(request.userid, rating, 22, form, find="submit"),
"char": search.browse(request.userid, rating, 22, form, find="char"),
"journal": search.browse(request.userid, rating, 22, form, find="journal"),
},
]))
return Response(define.common_page_end(request.userid, page, options={'search'}))
开发者ID:Syfaro,项目名称:weasyl,代码行数:90,代码来源:general.py
示例16: GET
def GET(self):
rating = define.get_rating(self.user_id)
form = web.input(q="", find="", within="", rated=[], cat="", subcat="", backid="", nextid="")
page = define.common_page_start(self.user_id, title="Browse and search")
if form.q:
find = form.find
if find not in ("submit", "char", "journal", "user"):
find = "submit"
meta = {
"q": form.q.strip(),
"find": find,
"within": form.within,
"rated": set('gmap') & set(form.rated),
"cat": int(form.cat) if form.cat else None,
"subcat": int(form.subcat) if form.subcat else None,
"backid": int(form.backid) if form.backid else None,
"nextid": int(form.nextid) if form.nextid else None,
}
query, next_count, back_count = search.select(self.user_id, rating, limit=63, **meta)
page.append(define.render("etc/search.html", [
# Search method
{"method": "search"},
# Search metadata
meta,
# Search results
query,
next_count,
back_count,
# Submission subcategories
macro.MACRO_SUBCAT_LIST,
]))
elif form.find:
query = search.browse(self.user_id, rating, 66, form)
meta = {
"find": form.find,
"cat": int(form.cat) if form.cat else None,
}
page.append(define.render("etc/search.html", [
# Search method
{"method": "browse"},
# Search metadata
meta,
# Search results
query,
0,
0,
]))
else:
page.append(define.render("etc/search.html", [
# Search method
{"method": "summary"},
# Search metadata
None,
# Search results
{
"submit": search.browse(self.user_id, rating, 22, form, find="submit"),
"char": search.browse(self.user_id, rating, 22, form, find="char"),
"journal": search.browse(self.user_id, rating, 22, form, find="journal"),
},
]))
return define.common_page_end(self.user_id, page, rating, options={'search'})
开发者ID:0x15,项目名称:weasyl,代码行数:71,代码来源:general.py
注:本文中的weasyl.define.common_page_start函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论