Exemplo n.º 1
0
 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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
    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