本文整理汇总了Python中c3smembership.models.C3sMember.get_by_code方法的典型用法代码示例。如果您正苦于以下问题:Python C3sMember.get_by_code方法的具体用法?Python C3sMember.get_by_code怎么用?Python C3sMember.get_by_code使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类c3smembership.models.C3sMember
的用法示例。
在下文中一共展示了C3sMember.get_by_code方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: regenerate_pdf
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def regenerate_pdf(request):
"""
staffers can regenerate a users pdf
"""
_code = request.matchdict['code']
_member = C3sMember.get_by_code(_code)
if _member is None: # that memberid did not produce good results
return HTTPFound( # back to base
request.route_url('dashboard_only'))
_appstruct = {
'firstname': _member.firstname,
'lastname': _member.lastname,
'address1': _member.address1,
'address2': _member.address2,
'postcode': _member.postcode,
'city': _member.city,
'email': _member.email,
'email_confirm_code': _member.email_confirm_code,
'country': _member.country,
'_LOCALE_': _member.locale,
'membership_type': _member.membership_type,
'num_shares': _member.num_shares,
'date_of_birth': _member.date_of_birth,
'date_of_submission': _member.date_of_submission,
}
log.info(
"%s regenerated the PDF for code %s" % (
authenticated_userid(request), _code))
return generate_pdf(_appstruct)
示例2: verify_mailaddress_conf
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def verify_mailaddress_conf(request):
'''
let member confirm her email address by clicking a link
'''
user_email = request.matchdict['email']
refcode = request.matchdict['refcode']
token = request.matchdict['token']
# try to get entry from DB
afm = C3sMember.get_by_code(refcode)
if isinstance(afm, NoneType): # no entry?
#print "entry not found"
return {
'confirmed': False,
'firstname': 'foo',
'lastname': 'bar',
'result_msg': 'bad URL / bad codes. please contact [email protected]c!',
}
# check token
if ('_used' in afm.email_confirm_token): # token was invalidated already
#print "the token is empty"
return {
'confirmed': False,
'firstname': afm.firstname,
'lastname': afm.lastname,
'result_msg': 'your token is invalid. please contact [email protected]!',
}
try:
assert(afm.email_confirm_token in token)
assert(token in afm.email_confirm_token)
assert(afm.email in user_email)
assert(user_email in afm.email)
except:
return {
'confirmed': False,
'firstname': 'foo',
'lastname': 'bar',
'result_msg': 'bad token/email. please contact [email protected]!',
}
afm.email_is_confirmed = True
afm.email_confirm_token += u'_used'
DBSession.flush()
# notify staff
message = Message(
subject='[C3S Yes!] afm email confirmed',
sender='[email protected]',
recipients=[request.registry.settings['c3smembership.mailaddr'], ],
body=u'see {}/detail/{}'.format(
request.registry.settings['c3smembership.url'],
afm.id)
)
mailer = get_mailer(request)
mailer.send(message)
return {
'confirmed': True,
'firstname': afm.firstname,
'lastname': afm.lastname,
'result_msg': u'',
}
示例3: regenerate_pdf
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def regenerate_pdf(request):
"""
Staffers can regenerate an applicants PDF and send it to her.
"""
code = request.matchdict['code']
member = C3sMember.get_by_code(code)
if member is None:
return get_dashboard_redirect(request)
appstruct = {
'firstname': member.firstname,
'lastname': member.lastname,
'address1': member.address1,
'address2': member.address2,
'postcode': member.postcode,
'city': member.city,
'email': member.email,
'email_confirm_code': member.email_confirm_code,
'country': member.country,
'_LOCALE_': member.locale,
'membership_type': member.membership_type,
'num_shares': member.num_shares,
'date_of_birth': member.date_of_birth,
'date_of_submission': member.date_of_submission,
}
LOG.info(
"%s regenerated the PDF for code %s",
authenticated_userid(request),
code)
return generate_pdf(appstruct)
示例4: search_codes
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def search_codes(request):
'''
Search for Reference Codes
We use a form with autocomplete to let staff find entries faster.
'''
# check for input from "find people" form
if 'code_to_show' in request.POST:
try:
_code = request.POST['code_to_show']
# print u"_code = {}".format(_code)
_code_ = _code.split(' ')[0]
# print u"_code_ = {}".format(_code_)
_entry = C3sMember.get_by_code(_code_)
# print _entry
return HTTPFound(
location=request.route_url(
'detail',
memberid=_entry.id)
)
except:
pass
'''
we use another form with autocomplete to let staff find entries faster
'''
class AutocompleteRefCodeForm(colander.MappingSchema):
code_to_show = colander.SchemaNode(
colander.String(),
title='Code finden (quicksearch; Groß-/Kleinschreibung beachten!)',
widget=deform.widget.AutocompleteInputWidget(
min_length=1,
css_class="form-inline",
values=request.route_path(
'autocomplete_input_values',
traverse=('autocomplete_input_values')
)
)
)
schema = AutocompleteRefCodeForm()
form = deform.Form(
schema,
css_class="form-inline",
buttons=('go!',),
)
refcodeformhtml = form.render()
return {
'refcodeform': refcodeformhtml,
}
'''
示例5: search_people
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def search_people(request):
'''
Search for people.
We use a form with autocomplete to let staff find entries faster.
'''
# check for input from "find people" form
if 'code_to_show' in request.POST:
try:
_code = request.POST['code_to_show']
# print u"_code = {}".format(_code)
_code_ = _code.split(' ')[0]
# print u"_code_ = {}".format(_code_)
_entry = C3sMember.get_by_code(_code_)
return HTTPFound(
location=request.route_url(
'detail',
memberid=_entry.id)
)
except:
pass
class AutocompleteForm(colander.MappingSchema):
code_to_show = colander.SchemaNode(
colander.String(),
title='Personen finden (Nachname: Groß-/Kleinschr. beachten!)',
widget=deform.widget.AutocompleteInputWidget(
min_length=1,
css_class="form-inline",
values=request.route_path(
'autocomplete_people_search',
traverse=('autocomplete_people_search')
)
)
)
schema = AutocompleteForm()
form = deform.Form(
schema,
css_class="form-inline",
buttons=('go!',),
)
autoformhtml = form.render()
return {
'autoform': autoformhtml,
}
示例6: success_verify_email
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def success_verify_email(request):
"""
This view is called via links sent in mails to verify mail addresses.
It extracts both email and verification code from the URL
and checks if there is a match in the database.
"""
#dbsession = DBSession()
# collect data from the URL/matchdict
user_email = request.matchdict['email']
#print(user_email)
confirm_code = request.matchdict['code']
#print(confirm_code)
# get matching dataset from DB
member = C3sMember.get_by_code(confirm_code) # returns a member or None
#print(member)
# check if info from DB makes sense
# -member
from types import NoneType
if isinstance(member, NoneType):
# member not found: FAIL!
#print("a matching entry for this code was not found.")
not_found_msg = _(u"""Not found. check URL.
If all seems right, please use the form again.""")
return {
#'firstname': '',
#'lastname': '',
'namepart': '',
'result_msg': not_found_msg,
}
elif (member.email == user_email):
#print("-- found member, code matches. COOL!")
# set the email_is_confirmed flag in the DB for this signee
member.email_is_confirmed = True
#dbsession.flush()
namepart = member.firstname + member.lastname
import re
PdfFileNamePart = re.sub( # replace characters
'[^a-zA-Z0-9]', # other than these
'_', # with an underscore
namepart)
#activities = []
#if signee.is_composer:
# activities.append(u'composer')
#if signee.is_lyricist:
# activities.append(u'lyricist')
#if signee.is_producer:
# activities.append(u'music producer')
#if signee.is_remixer:
# activities.append(u'remixer')
#if signee.is_dj:
# activities.append(u'dj')
appstruct = {
'firstname': member.firstname,
'lastname': member.lastname,
'email': member.email,
'address1': member.address1,
'address2': member.address2,
'postcode': member.postcode,
'city': member.city,
'country': member.country,
'_LOCALE_': member.locale,
'date_of_birth': member.date_of_birth,
'date_of_submission': member.date_of_submission,
#'activity': set(activities),
'invest_member': u'yes' if member.invest_member else u'no',
'member_of_colsoc': u'yes' if member.member_of_colsoc else 'no',
'name_of_colsoc': member.name_of_colsoc,
#'opt_band': signee.opt_band,
#'opt_URL': signee.opt_URL,
'num_shares': member.num_shares,
}
request.session['appstruct'] = appstruct
return {
'firstname': member.firstname,
'lastname': member.lastname,
'namepart': PdfFileNamePart,
'result_msg': _("Success. Load your PDF!")
}
# else: code did not match OR SOMETHING...
return {
'firstname': '',
'lastname': '',
'namepart': '',
'result_msg': "something went wrong."
}
示例7: success_verify_email
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def success_verify_email(request):
"""
This view is called via links sent in mails to verify mail addresses.
It extracts both email and verification code from the URL.
It will ask for a password
and checks if there is a match in the database.
If the password matches, and all is correct,
the view shows a download link and further info.
"""
# collect data from the URL/matchdict
user_email = request.matchdict['email']
confirm_code = request.matchdict['code']
# if we want to ask the user for her password (through a form)
# we need to have a url to send the form to
post_url = '/verify/' + user_email + '/' + confirm_code
if 'submit' in request.POST:
# print("the form was submitted")
request.session.pop_flash('message_above_form')
request.session.pop_flash('message_above_login')
# check for password ! ! !
if 'password' in request.POST:
_passwd = request.POST['password']
# get matching dataset from DB
member = C3sMember.get_by_code(confirm_code) # returns member or None
if isinstance(member, NoneType):
# member not found: FAIL!
not_found_msg = _(
u"Not found. Check verification URL. "
"If all seems right, please use the form again.")
return {
'correct': False,
'namepart': '',
'result_msg': not_found_msg,
}
# check if the password is valid
try:
correct = C3sMember.check_password(member.id, _passwd)
except AttributeError:
correct = False
request.session.flash(
_(u'Wrong Password!'),
'message_above_login')
# check if info from DB makes sense
# -member
if (member.email == user_email) and correct:
# print("-- found member, code matches, password too. COOL!")
# set the email_is_confirmed flag in the DB for this signee
member.email_is_confirmed = True
# dbsession.flush()
namepart = member.firstname + member.lastname
import re
pdf_file_name_part = re.sub( # replace characters
'[^a-zA-Z0-9]', # other than these
'_', # with an underscore
namepart)
appstruct = {
'firstname': member.firstname,
'lastname': member.lastname,
'email': member.email,
'email_confirm_code': member.email_confirm_code,
'address1': member.address1,
'address2': member.address2,
'postcode': member.postcode,
'city': member.city,
'country': member.country,
'_LOCALE_': member.locale,
'date_of_birth': member.date_of_birth,
'date_of_submission': member.date_of_submission,
# 'activity': set(activities),
# 'invest_member': u'yes' if member.invest_member else u'no',
'membership_type': member.membership_type,
'member_of_colsoc':
u'yes' if member.member_of_colsoc else u'no',
'name_of_colsoc': member.name_of_colsoc,
# 'opt_band': signee.opt_band,
# 'opt_URL': signee.opt_URL,
'num_shares': member.num_shares,
}
request.session['appstruct'] = appstruct
# log this person in, using the session
log.info('verified code and password for id %s', member.id)
request.session.save()
return {
'firstname': member.firstname,
'lastname': member.lastname,
'code': member.email_confirm_code,
'correct': True,
'namepart': pdf_file_name_part,
'result_msg': _("Success. Load your PDF!")
}
# else: code did not match OR SOMETHING...
#.........这里部分代码省略.........
示例8: membership_status_fixer
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def membership_status_fixer(request):
'''
let member confirm her email membership details by filling a form
'''
user_email = request.matchdict['email']
refcode = request.matchdict['refcode']
token = request.matchdict['token']
# try to get entry from DB
afm = C3sMember.get_by_code(refcode)
if isinstance(afm, NoneType): # no entry?
#print "entry not found"
request.session.flash(
'bad URL / bad codes. please contact [email protected]!',
'message_above_form'
)
return {
'form': '',
'confirmed': False,
'firstname': 'foo',
'lastname': 'bar',
'result_msg': 'bad URL / bad codes. please contact [email protected]!',
}
# check token
#if isinstance(afm.mtype_confirm_token, NoneType):
# #request.session.flash('no ')
# #return HTTPFound(request.route_url('dashboard_only'))
# check token even more
if len(afm.mtype_confirm_token) == 0: # token was invalidated already
# #print "the token is empty"
request.session.flash(
'your token is invalid. please contact [email protected]!',
'message_above_form'
)
return {
'form': '',
'confirmed': False,
# 'firstname': afm.firstname,
# 'lastname': afm.lastname,
'result_msg': 'your token is invalid. please contact [email protected]!',
}
try:
print "token: {}".format(token)
assert(afm.mtype_confirm_token in token)
assert(token in afm.mtype_confirm_token)
assert(afm.email in user_email)
assert(user_email in afm.email)
except:
request.session.flash(
'bad token/email. please contact [email protected]!',
'message_above_form')
return {
'form': '',
'confirmed': False,
# 'firstname': 'foo',
# 'lastname': 'bar',
'result_msg': 'bad token/email. please contact [email protected]!',
}
# construct a form
class MembershipInfo(colander.Schema):
yes_no = ((u'yes', _(u'Yes')),
(u'no', _(u'No')))
membership_type = colander.SchemaNode(
colander.String(),
title=_(u'I want to become a ... (choose '
'membership type, see C3S SCE statute sec. 4)'),
description=_(u'choose the type of membership.'),
widget=deform.widget.RadioChoiceWidget(
values=(
(u'normal',
_(u'FULL member. Full members have to be natural persons '
'who register at least three works with C3S they '
'created themselves. This applies to composers, '
'lyricists and remixers. They get a vote.')),
(u'investing',
_(u'INVESTING member. Investing members can be natural '
'or legal entities or private companies that do not '
'register works with C3S. They do not get a vote, '
'but may counsel.'))
),
)
)
member_of_colsoc = colander.SchemaNode(
colander.String(),
title=_(
u'Currently, I am a member of (at least) one other '
'collecting society.'),
validator=colander.OneOf([x[0] for x in yes_no]),
widget=deform.widget.RadioChoiceWidget(values=yes_no),
oid="other_colsoc",
#validator=colsoc_validator
)
name_of_colsoc = colander.SchemaNode(
colander.String(),
title=_(u'If so, which one(s)? (comma separated)'),
description=_(
u'Please tell us which collecting societies '
'you are a member of. '
'If more than one, please separate them by comma(s).'),
#.........这里部分代码省略.........
示例9: accountants_desk
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def accountants_desk(request):
"""
This view lets accountants view applications and set their status:
has their signature arrived? how about the payment?
"""
_number_of_datasets = C3sMember.get_number()
try: # check if page number, orderby and order were supplied with the URL
_page_to_show = int(request.matchdict['number'])
_order_by = request.matchdict['orderby']
_order = request.matchdict['order']
except:
#print("Using default values")
_page_to_show = 0
_order_by = 'id'
_order = 'asc'
# check for input from "find dataset by confirm code" form
if 'code_to_show' in request.POST:
try:
_code = request.POST['code_to_show']
log.info(
"%s searched for code %s" % (
authenticated_userid(request), _code))
_entry = C3sMember.get_by_code(_code)
return HTTPFound(
location=request.route_url(
'detail',
memberid=_entry.id)
)
except:
pass
"""
num_display determines how many items are to be shown on one page
"""
if 'num_to_show' in request.POST:
try:
_num = int(request.POST['num_to_show'])
if isinstance(_num, type(1)):
num_display = _num
except:
# choose default
num_display = 20
elif 'num_display' in request.cookies:
#print("found it in cookie")
num_display = int(request.cookies['num_display'])
else:
#print("setting default")
num_display = request.registry.settings[
'c3smembership.dashboard_number']
'''
we use a form with autocomplete to let staff find entries faster
'''
#the_codes = C3sMember.get_all_codes()
#print("the codes: %s" % the_codes)
class AutocompleteForm(colander.MappingSchema):
code_to_show = colander.SchemaNode(
colander.String(),
title='Code finden (quicksearch; Groß-/Kleinschreibung beachten!)',
#title='',
widget=deform.widget.AutocompleteInputWidget(
min_length=1,
css_class="form-inline",
#values=the_codes, # XXX input matching ones only
values=request.route_path(
'autocomplete_input_values',
traverse=('autocomplete_input_values')
)
)
)
schema = AutocompleteForm()
form = deform.Form(
schema,
css_class="form-inline",
buttons=('go!',),
)
autoformhtml = form.render()
"""
base_offset helps us to minimize impact on the database
when querying for results.
we can choose just those results we need for the page to show
"""
base_offset = int(_page_to_show) * int(num_display)
# get data sets from DB
_members = C3sMember.member_listing(
_order_by, how_many=num_display, offset=base_offset, order=_order)
# calculate next-previous-navi
next_page = (int(_page_to_show) + 1)
if (int(_page_to_show) > 0):
previous_page = int(_page_to_show) - 1
else:
previous_page = int(_page_to_show)
_last_page = int(math.ceil(_number_of_datasets / int(num_display)))
if next_page > _last_page:
#.........这里部分代码省略.........
示例10: accountants_desk
# 需要导入模块: from c3smembership.models import C3sMember [as 别名]
# 或者: from c3smembership.models.C3sMember import get_by_code [as 别名]
def accountants_desk(request):
"""
This view lets accountants view applications and set their status:
has their signature arrived? how about the payment?
"""
_number_of_datasets = C3sMember.get_number()
try: # check if page number, orderby and order were supplied with the URL
_page_to_show = int(request.matchdict['number'])
_order_by = request.matchdict['orderby']
_order = request.matchdict['order']
except:
print("Using default values")
_page_to_show = 0
_order_by = 'id'
_order = 'asc'
# check for input from "find dataset by confirm code" form
if 'code_to_show' in request.POST:
try:
_code = request.POST['code_to_show']
log.info(
"%s searched for code %s" % (
authenticated_userid(request), _code))
_entry = C3sMember.get_by_code(_code)
return HTTPFound(
location=request.route_url(
'detail',
memberid=_entry.id)
)
except:
pass
"""
num_display determines how many items are to be shown on one page
"""
if 'num_to_show' in request.POST:
try:
_num = int(request.POST['num_to_show'])
if isinstance(_num, type(1)):
num_display = _num
except:
# choose default
num_display = 20
elif 'num_display' in request.cookies:
#print("found it in cookie")
num_display = int(request.cookies['num_display'])
else:
#print("setting default")
num_display = request.registry.settings[
'c3smembership.dashboard_number']
"""
base_offset helps us to minimize impact on the database
when querying for results.
we can choose just those results we need for the page to show
"""
base_offset = int(_page_to_show) * int(num_display)
# get data sets from DB
_members = C3sMember.member_listing(
_order_by, how_many=num_display, offset=base_offset, order=_order)
# calculate next-previous-navi
next_page = (int(_page_to_show) + 1)
if (int(_page_to_show) > 0):
previous_page = int(_page_to_show) - 1
else:
previous_page = int(_page_to_show)
_last_page = int(math.ceil(_number_of_datasets / int(num_display)))
if next_page > _last_page:
next_page = _last_page
# store info about current page in cookie
request.response.set_cookie('on_page', value=str(_page_to_show))
request.response.set_cookie('num_display', value=str(num_display))
request.response.set_cookie('order', value=str(_order))
request.response.set_cookie('orderby', value=str(_order_by))
_message = None
if 'message' in request.GET:
_message = request.GET['message']
return {'_number_of_datasets': _number_of_datasets,
'members': _members,
'num_display': num_display,
'next': next_page,
'previous': previous_page,
'current': _page_to_show,
'orderby': _order_by,
'order': _order,
'message': _message,
'last_page': _last_page,
'is_last_page': _page_to_show == _last_page,
'is_first_page': _page_to_show == 0,
}