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 task_member_restore(items): for item in items: member = Member() member.number = item['number'] member.address = item['address'] if item['email'] != '' and item['email'] != None: member.email = db.Email(item['email']) member.name = item['name'] member.member_since = string_to_date(item['memberSince']) if item['phone'] != '' and item['phone'] != None: member.phone = db.PhoneNumber(item['phone']) if item['phoneWork'] != '' and item['phoneWork'] != None: member.phone_work = item['phoneWork'] if item['phoneHome'] != '' and item['phoneHome'] != None: member.phone_home = item['phoneHome'] member.notes = item['notes'] member.zipcode = item['zipcode'] member.city = item['city'] member.county = item['county'] member.country = db.get(db.Key.from_path('Country', item['countryId'])) member.status = db.get(db.Key.from_path('Status', item['statusId'])) member.membertype = db.get( db.Key.from_path('MemberType', item['typeId'])) member.put() for itemdue in item['membershipDues']: due = MembershipDues(parent=member, year=itemdue['year'], paid=itemdue['paid']) due.put() for itemcar in item['cars']: car = Car() car.member = member car.registration = itemcar['registration'] car.model = db.get(db.Key.from_path('CarModel', itemcar['modelId'])) car.bought_year = itemcar['boughtYear'] car.sold_year = itemcar['soldYear'] car.year = itemcar['year'] car.notes = itemcar['notes'] car.serial_no = itemcar['serialNo'] car.put()
def task_member_restore(items): for item in items: member = Member() member.number = item['number'] member.address = item['address'] if item['email'] != '' and item['email'] != None: member.email = db.Email(item['email']) member.name = item['name'] member.member_since = string_to_date(item['memberSince']) if item['phone'] != '' and item['phone'] != None: member.phone = db.PhoneNumber(item['phone']) if item['phoneWork'] != '' and item['phoneWork'] != None: member.phone_work = item['phoneWork'] if item['phoneHome'] != '' and item['phoneHome'] != None: member.phone_home = item['phoneHome'] member.notes = item['notes'] member.zipcode = item['zipcode'] member.city = item['city'] member.county = item['county'] member.country = db.get(db.Key.from_path('Country', item['countryId'])) member.status = db.get(db.Key.from_path('Status', item['statusId'])) member.membertype = db.get(db.Key.from_path('MemberType', item['typeId'])) member.put() for itemdue in item['membershipDues']: due = MembershipDues(parent=member, year=itemdue['year'],paid=itemdue['paid']) due.put() for itemcar in item['cars']: car = Car() car.member = member car.registration = itemcar['registration'] car.model = db.get(db.Key.from_path('CarModel', itemcar['modelId'])) car.bought_year = itemcar['boughtYear'] car.sold_year = itemcar['soldYear'] car.year = itemcar['year'] car.notes = itemcar['notes'] car.serial_no = itemcar['serialNo'] car.put()
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 import_members(self, member_csv): member_csv = member_csv.split('\n') lines = self.unmangle(member_csv) count = 0 for fields in lines: #fields.reverse() print '-' * 80 print fields print '=' * 80 fields.reverse() member = Member() (fee2009, fee2010, fee2011, fee2012, fee2013, fee2014) = (fields.pop(), fields.pop(), fields.pop(), fields.pop(), fields.pop(), fields.pop()) member.address = fields.pop() # Skip the cars for carno in range(1, 6): (car, registration) = (fields.pop(), fields.pop()) email = fields.pop() if email != '': member.email = db.Email(email) (lastname, firstname) = (fields.pop(), fields.pop()) full_name = firstname + ' ' + lastname member.name = full_name.strip() member.county = fields.pop().strip() member_since = fields.pop() date = self.string_to_date(member_since) if date: member.member_since = date else: print 'Error converting date from', member_since country = fields.pop().strip() if country == '': country = 'Norge' member.country = self.string_to_country(country) member.membertype = self.string_to_type(fields.pop()) member.number = fields.pop() mobile = fields.pop() if mobile != '': member.phone = db.PhoneNumber(mobile) member.notes = fields.pop() member.zipcode = fields.pop() member.city = fields.pop() work = fields.pop() home = fields.pop() if work != '': member.phone_work = db.PhoneNumber(work) if home != '': member.phone_home = db.PhoneNumber(home) member.status = self.get_status('Medlem') member.generate_access_code() member.put() self.add_due(member, 2009, fee2009 == 'Betalt') self.add_due(member, 2010, fee2010 == 'Betalt') self.add_due(member, 2011, fee2011 == 'Betalt') self.add_due(member, 2012, fee2012 == 'Betalt') self.add_due(member, 2013, fee2013 == 'Betalt') self.add_due(member, 2014, fee2014 == 'Betalt') count = count + 1 print 'Imported', count, 'members'
def import_members(self, member_csv): member_csv = member_csv.split('\n') lines = self.unmangle(member_csv) count = 0 for fields in lines: #fields.reverse() print '-'*80 print fields print '='*80 fields.reverse() member = Member() (fee2009, fee2010, fee2011, fee2012, fee2013, fee2014) = ( fields.pop(), fields.pop(), fields.pop(), fields.pop(), fields.pop(), fields.pop()) member.address = fields.pop() # Skip the cars for carno in range(1,6): (car, registration) = (fields.pop(), fields.pop()) email = fields.pop() if email != '': member.email = db.Email(email) (lastname, firstname) = (fields.pop(), fields.pop()) full_name = firstname + ' ' + lastname member.name = full_name.strip() member.county = fields.pop().strip() member_since = fields.pop() date = self.string_to_date(member_since) if date: member.member_since = date else: print 'Error converting date from',member_since country = fields.pop().strip() if country == '': country = 'Norge' member.country = self.string_to_country(country) member.membertype = self.string_to_type(fields.pop()) member.number = fields.pop() mobile = fields.pop() if mobile != '': member.phone = db.PhoneNumber(mobile) member.notes = fields.pop() member.zipcode = fields.pop() member.city = fields.pop() work = fields.pop() home = fields.pop() if work != '': member.phone_work = db.PhoneNumber(work) if home != '': member.phone_home = db.PhoneNumber(home) member.status = self.get_status('Medlem') member.generate_access_code() member.put() self.add_due(member, 2009, fee2009=='Betalt') self.add_due(member, 2010, fee2010=='Betalt') self.add_due(member, 2011, fee2011=='Betalt') self.add_due(member, 2012, fee2012=='Betalt') self.add_due(member, 2013, fee2013=='Betalt') self.add_due(member, 2014, fee2014=='Betalt') count = count + 1 print 'Imported',count,'members'