def post(self, member_no): member = self.get_member(member_no) member.name = self.get_required('name') member.address = self.get_required('address') member.zipcode = self.get_required('zip') member.city = self.get_required('city') country = Country.get(self.get_required('country')) email = self.get_required('email') if email != '': member.email = db.Email(email) mobile = self.get_required('mobile') if mobile != '': member.phone = db.PhoneNumber(mobile) home = self.request.get('fixed') if home != '': member.phone_home = db.PhoneNumber(home) work = self.request.get('work') if work != '': member.phone_work = db.PhoneNumber(work) member.put() template = JINJA_ENVIRONMENT.get_template('templates/selfservice/profile_edit.html') countries = Country.all().order('order').fetch(FETCH_LIMIT) data = { 'message': 'Medlemsprofilen din er oppdatert.', 'member': member, 'countries': countries } self.response.write(template.render(data))
def apply(self): try: if self.subject is None: self.delete_instance() return False except Bot.DoesNotExist: self.delete_instance() return False if self.action == 'category': from model import Category try: cat = Category.get(Category.id == self.value) self.subject.category = cat except Category.DoesNotExist: raise AttributeError("Category to change to does not exist.") elif self.action == 'name': self.subject.name = self.value elif self.action == 'username': self.subject.username = self.value elif self.action == 'description': self.subject.description = self.value elif self.action == 'extra': self.subject.extra = self.value elif self.action == 'country': if self._value == 'None' or self._value is None: self.subject.country = None else: from model import Country try: con = Country.get(id=self._value) self.subject.country = con except Country.DoesNotExist: raise AttributeError( "Country to change to does not exist.") elif self.action == 'inlinequeries': self.subject.inlinequeries = bool(self.value) elif self.action == 'official': self.subject.official = bool(self.value) elif self.action == 'offline': self.subject.offline = bool(self.value) elif self.action == 'spam': self.subject.spam = bool(self.value) elif self.action == 'add_keyword': kw_obj = Keyword(name=self.value, entity=self.subject) kw_obj.save() elif self.action == 'remove_keyword': try: kw_obj = Keyword.get(name=self.value, entity=self.subject) kw_obj.delete_instance() except Keyword.DoesNotExist: raise AttributeError( "Keyword to delete does not exist anymore.") self.subject.save() self.executed = True self.save() return True
def post(self, country_key): if (self.request.get('cancel') == '1'): return self.redirect('/countries') country = Country.get(country_key) country.order = int(self.request.get('order')) country.name = self.request.get('countryname') country.put() return self.redirect('/countries')
def post(self): if self.request.get('store') != '1': self.redirect('/members') return try: member = Member() member.name = self.get_var('name') member.address = self.get_var('address') member.zipcode = self.get_var('zip') member.city = self.get_var('city') member.country = Country.get(self.get_var('country')) member.email = self.get_var('email', optional=True) member.mobile = self.get_var('mobile', optional=True) member.home = self.get_var('home', optional=True) member.work = self.get_var('work', optional=True) member.membertype = MemberType.get(self.get_var('type')) member.notes = self.get_var('comment', optional=True) member.status = Status.get(self.get_var('status')) member.number = dbutils.create_new_member_no() member.member_since = datetime.date.today() member.generate_access_code() mcount = self.get_var('magazine_count', optional=True) member.magazine_count = int(mcount) if mcount else 1 member.put() self.redirect('/members/%s/edit' % member.key()) return except MissingField: # TODO: Redirect template = JINJA_ENVIRONMENT.get_template( 'templates/members/new_member.html') countries = Country.all().order('order').fetch(LIMIT) statuses = Status.all().order('order').fetch(LIMIT) types = MemberType.all().order('order').fetch(LIMIT) data = {} for name in [ 'name', 'address', 'zip', 'country', 'email', 'mobile', 'home', 'work', 'type', 'comment', 'status' ]: data[name] = self.request.get(name) params = { 'countries': countries, 'statuses': statuses, 'types': types, 'data': data } self.response.write(template.render(params)) return self.redirect('/members')
def post(self): if self.request.get('store') != '1': self.redirect('/members') return try: member = Member() member.name = self.get_var('name') member.address = self.get_var('address') member.zipcode = self.get_var('zip') member.city = self.get_var('city') member.country = Country.get(self.get_var('country')) member.email = self.get_var('email', optional=True) member.mobile = self.get_var('mobile', optional=True) member.home = self.get_var('home', optional=True) member.work = self.get_var('work', optional=True) member.membertype = MemberType.get(self.get_var('type')) member.notes = self.get_var('comment', optional=True) member.status = Status.get(self.get_var('status')) member.number = dbutils.create_new_member_no() member.member_since = datetime.date.today() member.generate_access_code() mcount = self.get_var('magazine_count', optional=True) member.magazine_count = int(mcount) if mcount else 1 member.put() self.redirect('/members/%s/edit' % member.key()) return except MissingField: # TODO: Redirect template = JINJA_ENVIRONMENT.get_template('templates/members/new_member.html') countries = Country.all().order('order').fetch(LIMIT) statuses = Status.all().order('order').fetch(LIMIT) types = MemberType.all().order('order').fetch(LIMIT) data = { } for name in [ 'name', 'address', 'zip', 'country', 'email', 'mobile', 'home', 'work', 'type', 'comment', 'status']: data[name] = self.request.get(name) params = { 'countries': countries, 'statuses': statuses, 'types': types, 'data': data } self.response.write(template.render(params)) return self.redirect('/members')
def _md_plaintext(self): uname = util.escape_markdown(self.subject.username) value = self.value text = '' if self.action == 'category': from model import Category try: cat = Category.get(id=self.value) text += "move {} ➜ {}".format(uname, cat.name) except Category.DoesNotExist: raise AttributeError("Category to change to does not exist.") elif self.action == 'name': text += "set name {} ➜ {}".format(uname, str(value)) elif self.action == 'username': text += "set username {} ➜ {}".format(uname, str(value)) elif self.action == 'description': text += "change description text of {}".format(uname) elif self.action == 'extra': text += "change extra text {}".format(uname) elif self.action == 'country': text += "change country {} ➜ ".format(uname) if self._value == 'None' or self._value is None: text += "None" else: from model import Country try: con = Country.get(id=self._value) text += str(con) except Country.DoesNotExist: raise AttributeError( "Country to change to does not exist.") elif self.action == 'inlinequeries': text += "toggle inlinequeries {} ➜ {}".format(uname, str(value)) elif self.action == 'official': text += "toggle official {} ➜ {}".format(uname, str(value)) elif self.action == 'offline': text += "set {} {}".format('💤' if bool(value) else 'online', uname) elif self.action == 'spam': text += "mark {} as spammy".format(uname) elif self.action == 'add_keyword': text += "add keyword #{} to {}".format(str(value), uname) elif self.action == 'remove_keyword': text += "remove keyword #{} from {}".format(str(value), uname) return text
def value(self): # cast types from model import Category from model import Country if self._value == 'None': return None if self.action in self.BOOLEAN_ACTIONS: return bool(self._value) elif self.action == 'category': return Category.get(id=self._value) elif self.action == 'country': if self._value is None: return None return Country.get(id=self._value) else: return str(self._value) if self._value else None
def post(self, member_no): member = self.get_member(member_no) member.name = self.get_required('name') member.address = self.get_required('address') member.zipcode = self.get_required('zip') member.city = self.get_required('city') country = Country.get(self.get_required('country')) email = self.get_required('email') if email != '': member.email = db.Email(email) mobile = self.get_required('mobile') if mobile != '': member.phone = db.PhoneNumber(mobile) home = self.request.get('fixed') if home != '': member.phone_home = db.PhoneNumber(home) work = self.request.get('work') if work != '': member.phone_work = db.PhoneNumber(work) member.put() member.update_index() template = JINJA_ENVIRONMENT.get_template( 'templates/selfservice/profile_edit.html') countries = Country.all().order('order').fetch(FETCH_LIMIT) data = { 'message': 'Medlemsprofilen din er oppdatert.', 'member': member, 'countries': countries } self.response.write(template.render(data))
def post(self): complete = [] incomplete = [] values = {} # Holy crap this is ugly. There has to be a better way. name = self.request.get('name') if not name or name.strip() == '' or name.strip().startswith('http'): incomplete.append('name') else: values['name'] = name complete.append('name') address = self.request.get('address') # Spammers put URLs in the address field so we reject those right away if not address or address.strip() == '' or address.strip().startswith( 'http'): incomplete.append('address') else: values['address'] = address complete.append('address') zipcode = self.request.get('zip') if (not zipcode or zipcode.strip() == '') or len(zipcode.strip()) < 4: incomplete.append('zip') else: values['zip'] = zipcode complete.append('zip') city = self.request.get('city') if not city or city.strip() == '': incomplete.append('city') else: values['city'] = city complete.append('city') if 'zip' in incomplete or 'city' in incomplete: incomplete.append('zipcity') country_key = self.request.get('country').strip() country = Country.get(country_key) countries = Country.all().order('order').fetch(100) if not country or not country_key or country_key.strip() == '': incomplete.append('country') # retrieve countries since we're going to need them else: values['country'] = country.name complete.append('country') email = self.request.get('email') if not email or email.strip() == '' or not mail.is_email_valid(email): incomplete.append('email') else: values['email'] = email complete.append('email') mobile = self.request.get('mobile') if mobile and mobile.strip() == '': mobile = None values['mobile'] = mobile home = self.request.get('home') if home and home.strip() == '': home = None values['home'] = home work = self.request.get('work') if work and work.strip() == '': work = None values['work'] = work member_type = self.request.get('type') if not member_type or member_type.strip() == '': member_type = '1' types = MemberType.all().fetch(100) mtype = None # TODO: Custom settings? Constants at least. if member_type == '1': mtype = next(t for t in types if t.name == DEFAULT_MEMBER_NAME) else: mtype = next(t for t in types if t.name == DEFAULT_SUPPORT_MEMBER_NAME) values['type'] = mtype.name comment = self.request.get('comment') complete.append('comment') values['comment'] = comment error_message = '' # Check if member exists; existing = Member.all().filter('email', email).fetch(1) if len(existing) > 0: incomplete.append('email') error_message = 'Det er allerede registrert noen i medlemsregisteret med denne epostadressen!' # TODO: Error message if len(incomplete) > 0: # missing field, redirect to signup page again template = JINJA_ENVIRONMENT.get_template( 'templates/selfservice/signup.html') return self.response.write( template.render({ 'countries': countries, 'incomplete': incomplete, 'complete': complete, 'error_message': error_message, 'values': values })) # invariant: fields are OK, create new member, send mail, # create payment history on member. template = JINJA_ENVIRONMENT.get_template( 'templates/selfservice/signup_receipt.html') data = {'values': values, 'profile_url': PROFILE_URL} statuses = Status.all().fetch(100) # TODO: Handle existing members signing up again new_member = Member() new_member.name = name new_member.address = address new_member.zipcode = zipcode new_member.city = city new_member.notes = comment new_member.country = country new_member.membertype = mtype status = next(s for s in statuses if s.name == SIGNUP_STATUS_NAME) new_member.status = status new_member.number = dbutils.create_new_member_no() new_member.email = email new_member.member_since = datetime.date.today() if mobile: new_member.phone = mobile if work: new_member.phone_work = work if home: new_member.phone_home = home new_member.generate_access_code() new_member.member_since = datetime.date.today() new_member.member_type = mtype new_member.put() new_member.update_index() self.send_welcome_mail(new_member) self.send_notification_mails(new_member) # TODO: Invalidate counts for categories # Handle mutations on members gracefully return self.response.write(template.render(data))
def post(self): complete = [] incomplete = [] values = {} # Holy crap this is ugly. There has to be a better way. name = self.request.get('name') if not name or name.strip() == '': incomplete.append('name') else: values['name'] = name complete.append('name') address = self.request.get('address') if not address or address.strip() == '': incomplete.append('address') else: values['address'] = address complete.append('address') zipcode = self.request.get('zip') if (not zipcode or zipcode.strip() == '') or len(zipcode.strip()) < 4: incomplete.append('zip') else: values['zip'] = zipcode complete.append('zip') city = self.request.get('city') if not city or city.strip() == '': incomplete.append('city') else: values['city'] = city complete.append('city') if 'zip' in incomplete or 'city' in incomplete: incomplete.append('zipcity') country_key = self.request.get('country').strip() country = Country.get(country_key) countries = Country.all().order('order').fetch(100) if not country or not country_key or country_key.strip() == '': incomplete.append('country') # retrieve countries since we're going to need them else: values['country'] = country.name complete.append('country') email = self.request.get('email') if not email or email.strip() == '' or not mail.is_email_valid(email): incomplete.append('email') else: values['email'] = email complete.append('email') mobile = self.request.get('mobile') if mobile and mobile.strip() == '': mobile = None values['mobile'] = mobile home = self.request.get('home') if home and home.strip() == '': home = None values['home'] = home work = self.request.get('work') if work and work.strip() == '': work = None values['work'] = work member_type = self.request.get('type') if not member_type or member_type.strip() == '': member_type = '1' types = MemberType.all().fetch(100) mtype = None # TODO: Custom settings? Constants at least. if member_type == '1': mtype = next(t for t in types if t.name == DEFAULT_MEMBER_NAME) else: mtype = next(t for t in types if t.name == DEFAULT_SUPPORT_MEMBER_NAME) values['type'] = mtype.name comment = self.request.get('comment') complete.append('comment') values['comment'] = comment error_message = '' # Check if member exists; existing = Member.all().filter('email', email).fetch(1) if len(existing) > 0: incomplete.append('email') error_message = 'Det er allerede registrert noen i medlemsregisteret med denne epostadressen!' # TODO: Error message if len(incomplete) > 0: # missing field, redirect to signup page again template = JINJA_ENVIRONMENT.get_template('templates/selfservice/signup.html') return self.response.write(template.render({ 'countries': countries, 'incomplete': incomplete, 'complete': complete, 'error_message': error_message, 'values': values })) # invariant: fields are OK, create new member, send mail, # create payment history on member. template = JINJA_ENVIRONMENT.get_template('templates/selfservice/signup_receipt.html') data = { 'values': values, 'profile_url': PROFILE_URL } statuses = Status.all().fetch(100) # TODO: Handle existing members signing up again new_member = Member() new_member.name = name new_member.address = address new_member.zipcode = zipcode new_member.city = city new_member.notes = comment new_member.country = country new_member.membertype = mtype status = next(s for s in statuses if s.name == SIGNUP_STATUS_NAME) new_member.status = status new_member.number = dbutils.create_new_member_no() new_member.email = email new_member.member_since = datetime.date.today() if mobile: new_member.phone = mobile if work: new_member.phone_work = work if home: new_member.phone_home = home new_member.generate_access_code() new_member.member_since = datetime.date.today() new_member.member_type = mtype new_member.put() self.send_welcome_mail(new_member) self.send_notification_mails(new_member) # TODO: Invalidate counts for categories # Handle mutations on members gracefully return self.response.write(template.render(data))
def post(self, member_id): if self.request.get('cancel') == '1': return self.redirect('/members') if self.request.get('operation') == 'delete_car': car = Car.get(self.request.get('car_key')) if car: car.delete() return self.redirect('/members/' + member_id + '/edit') member = Member.get(member_id) if self.request.get('operation') == 'new_car': car = Car() car.member = member car.model = dbutils.get_default_model() car.registration = '' car.year = 0 car.notes = '' car.serial_no = '' car.put() return self.redirect('/members/' + member_id + '/car/' + str(car.key()) + '/edit' ) member.name = self.request.get('name') member.address = self.request.get('address') member.zipcode = self.request.get('zip') member.city = self.request.get('city') member.country = Country.get(self.request.get('country')) phone = self.request.get('mobile').strip() if phone != '': member.phone = db.PhoneNumber(phone) else: member.phone = None email = self.request.get('email').strip() if email != '': member.email = db.Email(email) else: member.email = None home = self.request.get('fixed').strip() if home != '': member.phone_home = db.PhoneNumber(home) else: member.phone_home = None work = self.request.get('work').strip() if work != '': member.phone_work = db.PhoneNumber(work) else: member.phone_work = None member.membertype = MemberType.get(self.request.get('type')) member.status = Status.get(self.request.get('status')) member.notes = self.request.get('note') if self.request.get('access_code') == '': member.generate_access_code() if self.request.get('magazine_count') != '': try: member.magazine_count = int(self.request.get('magazine_count')) except ValueError: pass member.put() member.update_index() # save membership dues self.save_dues(member) return self.redirect('/members')
def callback_router(bot, update, chat_data, user_data, job_queue): obj = json.loads(str(update.callback_query.data)) user = User.from_update(update) try: if 'a' in obj: action = obj['a'] # BOTLISTCHAT if action == CallbackActions.DELETE_CONVERSATION: botlistchat.delete_conversation(bot, update, chat_data) # HELP elif action == CallbackActions.HELP: help.help(bot, update) elif action == CallbackActions.CONTRIBUTING: help.contributing(bot, update) elif action == CallbackActions.EXAMPLES: help.examples(bot, update) # BASIC QUERYING elif action == CallbackActions.SELECT_CATEGORY: select_category(bot, update, chat_data) elif action == CallbackActions.SELECT_BOT_FROM_CATEGORY: category = Category.get(id=obj['id']) send_category(bot, update, chat_data, category) elif action == CallbackActions.SEND_BOT_DETAILS: item = Bot.get(id=obj['id']) send_bot_details(bot, update, chat_data, item) # FAVORITES elif action == CallbackActions.TOGGLE_FAVORITES_LAYOUT: value = obj['v'] favorites.toggle_favorites_layout(bot, update, value) elif action == CallbackActions.ADD_FAVORITE: favorites.add_favorite_handler(bot, update) elif action == CallbackActions.REMOVE_FAVORITE_MENU: favorites.remove_favorite_menu(bot, update) elif action == CallbackActions.REMOVE_FAVORITE: to_remove = Favorite.get(id=obj['id']) bot_details = to_remove.bot to_remove.delete_instance() if obj.get('details'): send_bot_details(bot, update, chat_data, bot_details) else: favorites.remove_favorite_menu(bot, update) elif action == CallbackActions.SEND_FAVORITES_LIST: favorites.send_favorites_list(bot, update) elif action == CallbackActions.ADD_ANYWAY: favorites.add_custom(bot, update, obj['u']) elif action == CallbackActions.ADD_TO_FAVORITES: details = obj.get('details') discreet = obj.get('discreet', False) or details item = Bot.get(id=obj['id']) favorites.add_favorite(bot, update, item, callback_alert=discreet) if details: send_bot_details(bot, update, chat_data, item) # ACCEPT/REJECT BOT SUBMISSIONS elif action == CallbackActions.APPROVE_REJECT_BOTS: custom_approve_list = [Bot.get(id=obj['id'])] admin.approve_bots(bot, update, override_list=custom_approve_list) elif action == CallbackActions.ACCEPT_BOT: to_accept = Bot.get(id=obj['id']) admin.edit_bot_category(bot, update, to_accept, CallbackActions.BOT_ACCEPTED) # Run in x minutes, giving the moderator enough time to edit bot details job_queue.run_once( lambda b, job: botlistchat. notify_group_submission_accepted(b, job, to_accept), settings.BOT_ACCEPTED_IDLE_TIME * 60) elif action == CallbackActions.RECOMMEND_MODERATOR: bot_in_question = Bot.get(id=obj['id']) admin.recommend_moderator(bot, update, bot_in_question, obj['page']) elif action == CallbackActions.SELECT_MODERATOR: bot_in_question = Bot.get(id=obj['bot_id']) moderator = User.get(id=obj['uid']) admin.share_with_moderator(bot, update, bot_in_question, moderator) admin.approve_bots(bot, update, obj['page']) elif action == CallbackActions.REJECT_BOT: to_reject = Bot.get(id=obj['id']) notification = obj.get('ntfc', True) admin.reject_bot_submission(bot, update, to_reject, verbose=False, notify_submittant=notification) admin.approve_bots(bot, update, obj['page']) elif action == CallbackActions.BOT_ACCEPTED: to_accept = Bot.get(id=obj['bid']) category = Category.get(id=obj['cid']) admin.accept_bot_submission(bot, update, to_accept, category) elif action == CallbackActions.COUNT_THANK_YOU: new_count = obj.get('count', 1) basic.count_thank_you(bot, update, new_count) # ADD BOT # elif action == CallbackActions.ADD_BOT_SELECT_CAT: # category = Category.get(id=obj['id']) # admin.add_bot(bot, update, chat_data, category) # EDIT BOT elif action == CallbackActions.EDIT_BOT: to_edit = Bot.get(id=obj['id']) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_SELECT_CAT: to_edit = Bot.get(id=obj['id']) admin.edit_bot_category(bot, update, to_edit) elif action == CallbackActions.EDIT_BOT_CAT_SELECTED: to_edit = Bot.get(id=obj['bid']) cat = Category.get(id=obj['cid']) botproperties.change_category(bot, update, to_edit, cat) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_COUNTRY: to_edit = Bot.get(id=obj['id']) botproperties.set_country_menu(bot, update, to_edit) elif action == CallbackActions.SET_COUNTRY: to_edit = Bot.get(id=obj['bid']) if obj['cid'] == 'None': country = None else: country = Country.get(id=obj['cid']) botproperties.set_country(bot, update, to_edit, country) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_DESCRIPTION: to_edit = Bot.get(id=obj['id']) botproperties.set_text_property(bot, update, chat_data, 'description', to_edit) elif action == CallbackActions.EDIT_BOT_EXTRA: to_edit = Bot.get(id=obj['id']) botproperties.set_text_property(bot, update, chat_data, 'extra', to_edit) elif action == CallbackActions.EDIT_BOT_NAME: to_edit = Bot.get(id=obj['id']) botproperties.set_text_property(bot, update, chat_data, 'name', to_edit) elif action == CallbackActions.EDIT_BOT_USERNAME: to_edit = Bot.get(id=obj['id']) botproperties.set_text_property(bot, update, chat_data, 'username', to_edit) # elif action == CallbackActions.EDIT_BOT_KEYWORDS: # to_edit = Bot.get(id=obj['id']) # botproperties.set_keywords_init(bot, update, chat_data, to_edit) elif action == CallbackActions.APPLY_ALL_CHANGES: to_edit = Bot.get(id=obj['id']) admin.apply_all_changes(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_INLINEQUERIES: to_edit = Bot.get(id=obj['id']) value = bool(obj['value']) botproperties.toggle_value(bot, update, 'inlinequeries', to_edit, value) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_OFFICIAL: to_edit = Bot.get(id=obj['id']) value = bool(obj['value']) botproperties.toggle_value(bot, update, 'official', to_edit, value) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_OFFLINE: to_edit = Bot.get(id=obj['id']) value = bool(obj['value']) botproperties.toggle_value(bot, update, 'offline', to_edit, value) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.EDIT_BOT_SPAM: to_edit = Bot.get(id=obj['id']) value = bool(obj['value']) botproperties.toggle_value(bot, update, 'spam', to_edit, value) admin.edit_bot(bot, update, chat_data, to_edit) elif action == CallbackActions.CONFIRM_DELETE_BOT: to_delete = Bot.get(id=obj['id']) botproperties.delete_bot_confirm(bot, update, to_delete) elif action == CallbackActions.DELETE_BOT: to_edit = Bot.get(id=obj['id']) botproperties.delete_bot(bot, update, to_edit) send_category(bot, update, to_edit.category) elif action == CallbackActions.ACCEPT_SUGGESTION: suggestion = Suggestion.get(id=obj['id']) components.botproperties.accept_suggestion( bot, update, suggestion) admin.approve_suggestions(bot, update, page=obj['page']) elif action == CallbackActions.REJECT_SUGGESTION: suggestion = Suggestion.get(id=obj['id']) suggestion.delete_instance() admin.approve_suggestions(bot, update, page=obj['page']) elif action == CallbackActions.CHANGE_SUGGESTION: suggestion = Suggestion.get(id=obj['id']) botproperties.change_suggestion(bot, update, suggestion, page_handover=obj['page']) elif action == CallbackActions.SWITCH_SUGGESTIONS_PAGE: page = obj['page'] admin.approve_suggestions(bot, update, page) elif action == CallbackActions.SWITCH_APPROVALS_PAGE: admin.approve_bots(bot, update, page=obj['page']) elif action == CallbackActions.SET_NOTIFICATIONS: set_notifications(bot, update, obj['value']) elif action == CallbackActions.NEW_BOTS_SELECTED: show_new_bots(bot, update, chat_data, back_button=True) elif action == CallbackActions.ABORT_SETTING_KEYWORDS: to_edit = Bot.get(id=obj['id']) admin.edit_bot(bot, update, chat_data, to_edit) # SENDING BOTLIST elif action == CallbackActions.SEND_BOTLIST: silent = obj.get('silent', False) re_send = obj.get('re', False) botlist.send_botlist(bot, update, resend=re_send, silent=silent) elif action == CallbackActions.RESEND_BOTLIST: botlist.send_botlist(bot, update, resend=True) # BROADCASTING elif action == 'send_broadcast': broadcasts.send_broadcast(bot, update, user_data) elif action == 'pin_message': broadcasts.pin_message(bot, update, obj['mid']) elif action == 'add_thank_you': basic.add_thank_you_button(bot, update, obj['cid'], obj['mid']) # EXPLORING elif action == CallbackActions.EXPLORE_NEXT: explore.explore(bot, update, chat_data) except Exception as e: traceback.print_exc() # get the callback action in plaintext actions = dict(CallbackActions.__dict__) a = next(k for k, v in actions.items() if v == obj.get('a')) util.send_md_message( bot, settings.ADMINS[0], "Exception in callback query for {}:\n{}\n\nWith CallbackAction {}\n\nWith data:\n{}" .format(user.markdown_short, util.escape_markdown(e), util.escape_markdown(a), util.escape_markdown(str(obj)))) finally: bot.answerCallbackQuery(update.callback_query.id) return ConversationHandler.END
def post(self, member_id): if self.request.get('cancel') == '1': return self.redirect('/members') if self.request.get('operation') == 'delete_car': car = Car.get(self.request.get('car_key')) if car: car.delete() return self.redirect('/members/' + member_id + '/edit') member = Member.get(member_id) if self.request.get('operation') == 'new_car': car = Car() car.member = member car.model = dbutils.get_default_model() car.registration = '' car.year = 0 car.notes = '' car.serial_no = '' car.put() return self.redirect('/members/' + member_id + '/car/' + str(car.key()) + '/edit') member.name = self.request.get('name') member.address = self.request.get('address') member.zipcode = self.request.get('zip') member.city = self.request.get('city') member.country = Country.get(self.request.get('country')) phone = self.request.get('mobile').strip() if phone != '': member.phone = db.PhoneNumber(phone) else: member.phone = None email = self.request.get('email').strip() if email != '': member.email = db.Email(email) else: member.email = None home = self.request.get('fixed').strip() if home != '': member.phone_home = db.PhoneNumber(home) else: member.phone_home = None work = self.request.get('work').strip() if work != '': member.phone_work = db.PhoneNumber(work) else: member.phone_work = None member.membertype = MemberType.get(self.request.get('type')) member.status = Status.get(self.request.get('status')) member.notes = self.request.get('note') if self.request.get('access_code') == '': member.generate_access_code() if self.request.get('magazine_count') != '': try: member.magazine_count = int(self.request.get('magazine_count')) except ValueError: pass member.put() member.update_index() # save membership dues self.save_dues(member) return self.redirect('/members')
def get(self, country_key): template = JINJA_ENVIRONMENT.get_template('templates/countries/detail.html') country = Country.get(country_key) data = { 'country_key': country_key, 'country': country } self.response.write(template.render(data))