def __init__(self, *args, **kwargs): request_user = kwargs.pop('request_user') super(RosterSearchAdvancedForm, self).__init__(*args, **kwargs) choices = CorpMembership.get_my_corporate_profiles_choices( request_user) self.fields['cm_id'].choices = choices
def do_import_corp_membership(self, corp_profile, corp_memb, action_info): """ Database import here - insert or update """ # handle corp_profile if not corp_profile: corp_profile = CorpProfile() self.assign_import_values_from_dict(corp_profile, action_info['corp_profile_action']) if corp_profile.status is None or corp_profile.status == '' or \ self.cmemb_data.get('status', '') == '': corp_profile.status = True if not corp_profile.status_detail: corp_profile.status_detail = 'active' else: corp_profile.status_detail = corp_profile.status_detail.lower() if not corp_profile.creator: corp_profile.creator = self.request_user corp_profile.creator_username = self.request_user.username if not corp_profile.owner: corp_profile.owner = self.request_user corp_profile.owner_username = self.request_user.username corp_profile.save() # corpmembership if not corp_memb: corp_memb = CorpMembership( corp_profile=corp_profile, 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(corp_memb, action_info['corp_memb_action']) if corp_memb.status is None or corp_memb.status == '' or \ self.cmemb_data.get('status', '') == '': corp_memb.status = True if not corp_memb.status_detail: corp_memb.status_detail = 'active' else: corp_memb.status_detail = corp_memb.status_detail.lower() # set to approved for active memberships if not corp_memb.approved: if corp_memb.status and corp_memb.status_detail == 'active': corp_memb.approved = True # corporate membership type if not hasattr(corp_memb, "corporate_membership_type") or \ not corp_memb.corporate_membership_type: # last resort - pick the first available membership type corp_memb.corporate_membership_type = CorporateMembershipType.objects.all( ).order_by('id')[0] # no join_dt - set one if not hasattr(corp_memb, 'join_dt') or not corp_memb.join_dt: if corp_memb.status and corp_memb.status_detail == 'active': corp_memb.join_dt = datetime.now() # no expire_dt - get it via corporate_membership_type if not hasattr(corp_memb, 'expiration_dt') or not corp_memb.expiration_dt: if corp_memb.corporate_membership_type: expiration_dt = corp_memb.corporate_membership_type.get_expiration_dt( join_dt=corp_memb.join_dt) setattr(corp_memb, 'expiration_dt', expiration_dt) if not corp_memb.creator: corp_memb.creator = self.request_user corp_memb.creator_username = self.request_user.username if not corp_memb.owner: corp_memb.owner = self.request_user corp_memb.owner_username = self.request_user.username corp_memb.save() # bind members to their corporations by company names if self.mimport.bind_members: self.bind_members_to_corp_membership(corp_memb)
def do_import_corp_membership(self, corp_profile, corp_memb, action_info): """ Database import here - insert or update """ # handle corp_profile if not corp_profile: corp_profile = CorpProfile() self.assign_import_values_from_dict(corp_profile, action_info['corp_profile_action']) if corp_profile.status == None or corp_profile.status == '' or \ self.cmemb_data.get('status', '') == '': corp_profile.status = True if not corp_profile.status_detail: corp_profile.status_detail = 'active' else: corp_profile.status_detail = corp_profile.status_detail.lower() if not corp_profile.creator: corp_profile.creator = self.request_user corp_profile.creator_username = self.request_user.username if not corp_profile.owner: corp_profile.owner = self.request_user corp_profile.owner_username = self.request_user.username corp_profile.save() # corpmembership if not corp_memb: corp_memb = CorpMembership( corp_profile=corp_profile, 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(corp_memb, action_info['corp_memb_action']) if corp_memb.status == None or corp_memb.status == '' or \ self.cmemb_data.get('status', '') == '': corp_memb.status = True if not corp_memb.status_detail: corp_memb.status_detail = 'active' else: corp_memb.status_detail = corp_memb.status_detail.lower() # set to approved for active memberships if not corp_memb.approved: if corp_memb.status and corp_memb.status_detail == 'active': corp_memb.approved = True # corporate membership type if not hasattr(corp_memb, "corporate_membership_type") or \ not corp_memb.corporate_membership_type: # last resort - pick the first available membership type corp_memb.corporate_membership_type = CorporateMembershipType.objects.all( ).order_by('id')[0] # no join_dt - set one if not hasattr(corp_memb, 'join_dt') or not corp_memb.join_dt: if corp_memb.status and corp_memb.status_detail == 'active': corp_memb.join_dt = datetime.now() # no expire_dt - get it via corporate_membership_type if not hasattr(corp_memb, 'expiration_dt') or not corp_memb.expiration_dt: if corp_memb.corporate_membership_type: expiration_dt = corp_memb.corporate_membership_type.get_expiration_dt( join_dt=corp_memb.join_dt) setattr(corp_memb, 'expiration_dt', expiration_dt) if not corp_memb.creator: corp_memb.creator = self.request_user corp_memb.creator_username = self.request_user.username if not corp_memb.owner: corp_memb.owner = self.request_user corp_memb.owner_username = self.request_user.username corp_memb.save() # bind members to their corporations by company names if self.mimport.bind_members: self.bind_members_to_corp_membership(corp_memb)
def __init__(self, *args, **kwargs): request_user = kwargs.pop('request_user') super(RosterSearchAdvancedForm, self).__init__(*args, **kwargs) choices = CorpMembership.get_my_corporate_profiles_choices(request_user) self.fields['cm_id'].choices = choices
def search(self, order_by='newest'): self.clean() if not order_by: order_by = 'newest' sqs = SearchQuerySet().filter(status=True) user = self.user query = self.cleaned_data['q'] # check to see if there is impersonation if hasattr(user,'impersonated_user'): if isinstance(user.impersonated_user, User): user = user.impersonated_user is_an_admin = user.profile.is_superuser # making a special case for corp memb because it needs to utilize two settings # (anonymoussearchcorporatemembers and membersearchcorporatemembers) if CorpMemb and self.cleaned_data['models'] == ["%s.%s" % (CorpMemb._meta.app_label, CorpMemb._meta.model_name)]: filter_and, filter_or = CorpMemb.get_search_filter(user) q_obj = None if filter_and: q_obj = Q(**filter_and) if filter_or: q_obj_or = reduce(operator.or_, [Q(**{key: value}) for key, value in filter_or.items()]) if q_obj: q_obj = reduce(operator.and_, [q_obj, q_obj_or]) else: q_obj = q_obj_or if q_obj: sqs = sqs.filter(q_obj) if query: sqs = sqs.auto_query(sqs.query.clean(query)) else: if query: sqs = sqs.auto_query(sqs.query.clean(query)) if user: if not is_an_admin: if not user.is_anonymous: # if b/w admin and anon # (status+status_detail+(anon OR user)) OR (who_can_view__exact) anon_query = Q(**{'allow_anonymous_view':True,}) user_query = Q(**{'allow_user_view':True,}) sec1_query = Q(**{ 'status_detail':'active', }) sec2_query = Q(**{ 'owner__exact':user.username }) query = reduce(operator.or_, [anon_query, user_query]) query = reduce(operator.and_, [sec1_query, query]) query = reduce(operator.or_, [query, sec2_query]) sqs = sqs.filter(query) else: # if anonymous sqs = sqs.filter(status_detail='active') sqs = sqs.filter(allow_anonymous_view=True) else: # if anonymous sqs = sqs.filter(status_detail='active') sqs = sqs.filter(allow_anonymous_view=True) else: if user: if is_an_admin: sqs = sqs.all() else: if not user.is_anonymous: # (status+status_detail+anon OR who_can_view__exact) sec1_query = Q(**{ 'status_detail':'active', 'allow_anonymous_view':True, }) sec2_query = Q(**{ 'owner__exact':user.username }) query = reduce(operator.or_, [sec1_query, sec2_query]) sqs = sqs.filter(query) else: # if anonymous sqs = sqs.filter(status_detail='active') sqs = sqs.filter(allow_anonymous_view=True) else: # if anonymous sqs = sqs.filter(status_detail='active') sqs = sqs.filter(allow_anonymous_view=True) # for solr, # order_by can only called once so we have to do it here if order_by == 'newest': # changed order_by from create_dt to order because the order field # is a common field in search indexes and used by other modules(news) sqs = sqs.order_by('-order') else: sqs = sqs.order_by('order') if self.load_all: sqs = sqs.load_all() return sqs