def obj_create(self, bundle, request=None, **kwargs): data = bundle.data if data['create_user']: print "creating user" user = User.objects.create(username=data['username']) user.set_password(data['password']) else: user = User.objects.get(username=data['username']) mem = MembershipDefault() mem.user = user for key in data: setattr(mem, key, data[key]) mem.save() bundle.obj = mem return bundle
def handle(self, *args, **options): """ Loops through AppEntry instances and ports the data over to MembershipDefault instances. """ from tendenci.apps.entities.models import Entity from tendenci.addons.memberships.models import AppEntry, MembershipDefault from tendenci.apps.profiles.models import Profile verbosity = options['verbosity'] for e in AppEntry.objects.all(): if e.membership: # use guid to match records m_default = MembershipDefault.objects.first( guid=e.membership.guid, ) else: # use create_dt and membership_type m_default = MembershipDefault.objects.first( create_dt=e.create_dt, membership_type=e.membership_type, ) if m_default: # found; already created m_default_created = True else: # not found; then creating m_default_created = False m_default = MembershipDefault() if e.membership: m_default.member_number = e.membership.member_number m_default.membership_type = e.membership.membership_type m_default.renewal = e.membership.renewal m_default.guid = e.membership.guid m_default.expire_dt = e.membership.expire_dt # m_default.certifications # m_default.work_experience # m_default.referral_source # m_default.referral_source_other # m_default.referral_source_member_name # m_default.referral_source_member_number # m_default.affiliation_member_number # m_default.primary_practice # m_default.how_long_in_practice # m_default.notes # m_default.admin_notes # m_default.newsletter_type # m_default.directory_type # m_default.bod_dt # m_default.personnel_notified_dt # m_default.payment_recieved_dt m_default.payment_method = e.membership.payment_method # m_default.override # m_default.override_price # m_default.exported # m_default.chapter # m_default.areas_of_expertise # m_default.organization_entity # m_default.corporate_entity if e.membership.corporate_membership_id: m_default.corporate_membership_id = e.membership.corporate_membership_id else: m_default.corporate_membership_id = None # m_default.home_state # m_default.year_left_native_country # m_default.network_sectors # m_default.networking # m_default.government_worker # m_default.government_agency # m_default.license_number # m_default.license_state # m_default.industry # m_default.region # m_default.company_size # m_default.promotion_code # m_default.directory if hasattr(e.membership, 'user'): m_default.user = e.membership.user if not hasattr(m_default, 'user'): m_default.user, user_created = m_default.get_or_create_user( email=e.email, first_name=e.first_name, last_name=e.last_name ) if not hasattr(m_default, 'membership_type'): if e.membership.membership_type: m_default.membership_type = e.memberships.membership_type if verbosity: self.echo( m_default, e, created=m_default_created, skipped=True, ) continue # on to the next one m_default.application_complete_dt = e.create_dt m_default.entity = Entity.objects.first() m_default.organization_entity = m_default.entity m_default.corporate_entity = m_default.entity if e.is_approved: m_default.application_approved = True m_default.application_approved_dt = e.decision_dt m_default.application_approved_user = e.judge # is a join if not e.is_renewal: m_default.join_dt = e.decision_dt m_default.set_join_dt() if e.decision_dt: m_default.application_approved_denied_dt = e.decision_dt m_default.application_approved_denied_user = m_default.user m_default.action_taken = True m_default.action_taken_dt = e.decision_dt m_default.action_taken_user = e.judge m_default.set_renew_dt() if not m_default.expire_dt: m_default.set_expire_dt() if not hasattr(m_default.user, 'profile'): Profile.objects.create_profile(m_default.user) m_default.user.profile.refresh_member_number() self.set_owner_creator_fields(m_default, e) self.set_allow_fields(m_default, e.membership) self.set_status_fields(m_default, e.membership) m_default.save() self.set_invoice(m_default, e) # add user to [membership] group m_default.group_refresh() # reset create_dt self.set_owner_creator_fields(m_default, e) m_default.save() if verbosity: self.echo(m_default, e, created=m_default_created)
def do_import_membership_default(self, user, memb, action_info): """ Database import here - insert or update """ # handle user if not user: user = User() username_before_assign = '' else: username_before_assign = user.username # exclude user if 'user' in self.field_names: self.field_names.remove('user') self.assign_import_values_from_dict(user, action_info['user_action']) # clean username if user.username: user.username = re.sub('[^+-.\w\d@]', '', user.username) # make sure username is unique. if action_info['user_action'] == 'insert': user.username = get_unique_username(user) else: # it's update but a new username is assigned # check if its unique if user.username != username_before_assign: user.username = get_unique_username(user) if 'password' in self.field_names and \ self.mimport.override and user.password: user.set_password(user.password) if not user.password: user.set_password(User.objects.make_random_password(length=8)) # set to active if is_active not present in the spreadsheet. if 'is_active' not in self.field_names: user.is_active = True user.save() # process profile try: # get or create profile = user.get_profile() except Profile.DoesNotExist: profile = Profile.objects.create(user=user, creator=self.request_user, creator_username=self.request_user.username, owner=self.request_user, owner_username=self.request_user.username, **self.private_settings ) self.assign_import_values_from_dict(profile, action_info['user_action']) profile.user = user if profile.status == None or profile.status == '' or \ self.memb_data.get('status', '') == '': profile.status = True if not profile.status_detail: profile.status_detail = 'active' else: profile.status_detail = profile.status_detail.lower() profile.save() # membership if not memb: memb = MembershipDefault( user=user, creator=self.request_user, creator_username=self.request_user.username, owner=self.request_user, owner_username=self.request_user.username, ) self.assign_import_values_from_dict(memb, action_info['memb_action']) if memb.status == None or memb.status == '' or \ self.memb_data.get('status', '') == '': memb.status = True if not memb.status_detail: memb.status_detail = 'active' else: memb.status_detail = memb.status_detail.lower() # membership type if not hasattr(memb, "membership_type") or not memb.membership_type: # last resort - pick the first available membership type memb.membership_type = MembershipType.objects.all( ).order_by('id')[0] # no join_dt - set one if not hasattr(memb, 'join_dt') or not memb.join_dt: if memb.status and memb.status_detail == 'active': memb.join_dt = datetime.now() # no expire_dt - get it via membership_type if not hasattr(memb, 'expire_dt') or not memb.expire_dt: if memb.membership_type: expire_dt = memb.membership_type.get_expiration_dt( join_dt=memb.join_dt) setattr(memb, 'expire_dt', expire_dt) memb.save() memb.is_active = self.is_active(memb) # member_number # TODO: create a function to assign a member number if not memb.member_number: if memb.is_active: memb.member_number = 5100 + memb.pk if memb.member_number: if not profile.member_number: profile.member_number = memb.member_number profile.save() else: if profile.member_number != memb.member_number: profile.member_number = memb.member_number profile.save() else: if profile.member_number: profile.member_number = '' profile.save() # add to group only for the active memberships if memb.is_active: # group associated to membership type params = {'creator_id': self.request_user.pk, 'creator_username': self.request_user.username, 'owner_id': self.request_user.pk, 'owner_username': self.request_user.username} memb.membership_type.group.add_user(memb.user, **params)
def handle(self, *args, **options): """ Loops through AppEntry instances and ports the data over to MembershipDefault instances. """ from tendenci.apps.entities.models import Entity from tendenci.addons.memberships.models import AppEntry, MembershipDefault from tendenci.apps.profiles.models import Profile verbosity = options['verbosity'] for e in AppEntry.objects.all(): if e.membership: # use guid to match records m_default = MembershipDefault.objects.first( guid=e.membership.guid, ) else: # use create_dt and membership_type m_default = MembershipDefault.objects.first( create_dt=e.create_dt, membership_type=e.membership_type, ) if m_default: # found; already created m_default_created = True else: # not found; then creating m_default_created = False m_default = MembershipDefault() if e.membership: m_default.member_number = e.membership.member_number m_default.membership_type = e.membership.membership_type m_default.renewal = e.membership.renewal m_default.guid = e.membership.guid m_default.expire_dt = e.membership.expire_dt # m_default.certifications # m_default.work_experience # m_default.referral_source # m_default.referral_source_other # m_default.referral_source_member_name # m_default.referral_source_member_number # m_default.affiliation_member_number # m_default.primary_practice # m_default.how_long_in_practice # m_default.notes # m_default.admin_notes # m_default.newsletter_type # m_default.directory_type # m_default.bod_dt # m_default.personnel_notified_dt # m_default.payment_recieved_dt m_default.payment_method = e.membership.payment_method # m_default.override # m_default.override_price # m_default.exported # m_default.chapter # m_default.areas_of_expertise # m_default.organization_entity # m_default.corporate_entity if e.membership.corporate_membership_id: m_default.corporate_membership_id = e.membership.corporate_membership_id else: m_default.corporate_membership_id = None # m_default.home_state # m_default.year_left_native_country # m_default.network_sectors # m_default.networking # m_default.government_worker # m_default.government_agency # m_default.license_number # m_default.license_state # m_default.industry # m_default.region # m_default.company_size # m_default.promotion_code # m_default.directory if hasattr(e.membership, 'user'): m_default.user = e.membership.user if not hasattr(m_default, 'user'): m_default.user, user_created = m_default.get_or_create_user( email=e.email, first_name=e.first_name, last_name=e.last_name) if not hasattr(m_default, 'membership_type'): if verbosity: self.echo( m_default, e, created=m_default_created, skipped=True, ) continue # on to the next one m_default.application_complete_dt = e.create_dt m_default.entity = Entity.objects.first() m_default.organization_entity = m_default.entity m_default.corporate_entity = m_default.entity if e.is_approved: m_default.application_approved = True m_default.application_approved_dt = e.decision_dt m_default.application_approved_user = e.judge # is a join if not e.is_renewal: m_default.join_dt = e.decision_dt m_default.set_join_dt() if e.decision_dt: m_default.application_approved_denied_dt = e.decision_dt m_default.application_approved_denied_user = m_default.user m_default.action_taken = True m_default.action_taken_dt = e.decision_dt m_default.action_taken_user = e.judge m_default.set_renew_dt() if not m_default.expire_dt: m_default.set_expire_dt() if not hasattr(m_default.user, 'profile'): Profile.objects.create_profile(m_default.user) m_default.user.profile.refresh_member_number() self.set_owner_creator_fields(m_default, e) self.set_allow_fields(m_default, e.membership) self.set_status_fields(m_default, e.membership) m_default.save() self.set_invoice(m_default, e) # add user to [membership] group m_default.group_refresh() # reset create_dt self.set_owner_creator_fields(m_default, e) m_default.save() if verbosity: self.echo(m_default, e, created=m_default_created)