def enroll_family_member(self, user_data): """Enroll the given user and add them to this users' family membership. user_data is a dict with the following keys: - first_name - last_name - dob - gender - phone - email""" try: focus_service = suds.client.Client(settings.FOCUS_WSDL_URL) # Use a kwargs dictionary to avoid SyntaxError with non-ascii unicode characters for parameter names params = { 'Token': settings.FOCUS_WSDL_TOKEN, 'Hovedmedlem': self.actor.memberid, 'Husstandsnummer': 0, 'Fornavn': user_data['first_name'], 'Etternavn': user_data['last_name'], 'Født': datetime( year=user_data['dob'].year, month=user_data['dob'].month, day=user_data['dob'].day, ), 'Kjonn': Actor.convert_gender(user_data['gender']), 'Mobil': user_data['phone'], 'Epost': user_data['email'], 'Gjensidige': user_data['accepts_partneroffers'], } result = focus_service.service.EndreHusstand(**params) if result != 'OK': raise Exception("Unknown Focus Webservice result '%s'" % result) except: logger.warning( "Feil med Focus webtjeneste", exc_info=sys.exc_info(), extra={ 'member': self, 'user_data': user_data, }, ) raise FocusServiceError
def save_to_focus(self, parent=None): first_name, last_name = self.name.rsplit(maxsplit=1) total_price = self.price() parent = '' if parent is None else str(parent) # Yearbook receive_yearbook = self.receive_yearbook() if self.enrollment.country != 'NO' and receive_yearbook: total_price += FOREIGN_SHIPMENT_PRICE # Address adr1 = self.enrollment.address1 if self.enrollment.country == 'NO': adr2 = '' adr3 = '' zipcode = self.enrollment.zipcode area = self.enrollment.area elif self.enrollment.country == 'DK' or self.enrollment.country == 'SE': adr2 = '' adr3 = "%s-%s %s" % (self.enrollment.country, self.enrollment.zipcode, self.enrollment.area) zipcode = '0000' area = '' else: adr2 = self.enrollment.address2 adr3 = self.enrollment.address3 zipcode = '0000' area = '' if self.get_age() >= Enrollment.PARTNEROFFERS_OPTIN_MIN_AGE: partneroffers_optin = self.enrollment.partneroffers_optin else: partneroffers_optin = False if partneroffers_optin: partneroffers_optin_date = datetime.now() else: partneroffers_optin_date = None # Fetch and increment memberid with stored procedure cursor = current_focus_db_connection().cursor() cursor.execute("exec sp_custTurist_updateMemberId") memberid = cursor.fetchall()[0][0] focus_user = FocusEnrollment( memberid=memberid, last_name=last_name, first_name=first_name, birth_date=self.dob, gender=Actor.convert_gender(self.gender), parent=parent, adr1=adr1, adr2=adr2, adr3=adr3, country_code=self.enrollment.country, phone_home='', email=self.email, receive_yearbook=receive_yearbook, type=self.focus_type(), yearbook=ENROLLMENT_YEARBOOK_TYPE if receive_yearbook else '', payment_method=PAYMENT_METHOD_CODES[self.enrollment.payment_method], phone_mobile=self.phone, zipcode_id=zipcode, area=area, language='nb_no', totalprice=total_price, partneroffers_optin=partneroffers_optin, partneroffers_optin_date=partneroffers_optin_date, ) focus_user.save() self.memberid = memberid self.save()