Пример #1
0
    def get_provider_network_count(self):
        sources = ProviderNetworkConnection.query(
            ProviderNetworkConnection.source_provider == self.key,
            ProviderNetworkConnection.confirmed == True).count()
        targets = ProviderNetworkConnection.query(
            ProviderNetworkConnection.target_provider == self.key,
            ProviderNetworkConnection.confirmed == True).count()

        return sources + targets
Пример #2
0
    def get_provider_network(self):     
        sources = ProviderNetworkConnection.query(ProviderNetworkConnection.source_provider == self.key, ProviderNetworkConnection.confirmed == True).fetch()
        targets = ProviderNetworkConnection.query(ProviderNetworkConnection.target_provider == self.key, ProviderNetworkConnection.confirmed == True).fetch()
        
        provider_keys = []
        
        for connect in sources:
            provider_keys.append(connect.target_provider)
            
        for connect in targets:
            provider_keys.append(connect.source_provider)

        providers = ndb.get_multi(provider_keys)

        return providers
Пример #3
0
    def get_provider_network_rejectee_count(self):
        sources = ProviderNetworkConnection.query(
            ProviderNetworkConnection.source_provider == self.key,
            ProviderNetworkConnection.confirmed == False,
            ProviderNetworkConnection.rejected == True).count()

        return sources
Пример #4
0
    def get_provider_network_rejecter_count(self):
        targets = ProviderNetworkConnection.query(
            ProviderNetworkConnection.target_provider == self.key,
            ProviderNetworkConnection.confirmed == False,
            ProviderNetworkConnection.rejected == True).count()

        return targets
Пример #5
0
    def get_provider_network_rejected(self):     
        targets = ProviderNetworkConnection.query(ProviderNetworkConnection.target_provider == self.key, ProviderNetworkConnection.confirmed == False, ProviderNetworkConnection.rejected == True).fetch()
        
        providers = []
        for connect in targets:
            providers.append(connect.source_provider.get())

        return providers
Пример #6
0
    def get_provider_network(self):
        sources = ProviderNetworkConnection.query(
            ProviderNetworkConnection.source_provider == self.key,
            ProviderNetworkConnection.confirmed == True).fetch()
        targets = ProviderNetworkConnection.query(
            ProviderNetworkConnection.target_provider == self.key,
            ProviderNetworkConnection.confirmed == True).fetch()

        provider_keys = []

        for connect in sources:
            provider_keys.append(connect.target_provider)

        for connect in targets:
            provider_keys.append(connect.source_provider)

        providers = ndb.get_multi(provider_keys)

        return providers
Пример #7
0
    def get_provider_network_rejected(self):
        targets = ProviderNetworkConnection.query(
            ProviderNetworkConnection.target_provider == self.key,
            ProviderNetworkConnection.confirmed == False,
            ProviderNetworkConnection.rejected == True).fetch()

        providers = []
        for connect in targets:
            providers.append(connect.source_provider.get())

        return providers
Пример #8
0
    def post(self, vanity_url=None):
        provider = db.get_provider_from_vanity_url(vanity_url)
        target_provider_email = self.request.get('email')
        if target_provider_email:
            target_provider = db.get_provider_from_email(target_provider_email)

            provider_network_connection = ProviderNetworkConnection()
            provider_network_connection.source_provider = provider.key
            provider_network_connection.target_provider = target_provider.key
            provider_network_connection.confirmed = True
            provider_network_connection.rejected = False
            provider_network_connection.forced_by_admin = True
            provider_network_connection.put()

            logging.info(
                "(ProviderForceFriendsHandler) Provider %s forcing connection to %s"
                % (provider.email, provider.vanity_domain))

        self.redirect('/admin/provider/admin/' + provider.vanity_url)
Пример #9
0
    def post(self, vanity_url=None):
        provider = db.get_provider_from_vanity_url(vanity_url)
        target_provider_email = self.request.get('email')
        if target_provider_email:
            target_provider = db.get_provider_from_email(target_provider_email)
            
            provider_network_connection = ProviderNetworkConnection()
            provider_network_connection.source_provider = provider.key
            provider_network_connection.target_provider = target_provider.key
            provider_network_connection.confirmed = True
            provider_network_connection.rejected = False
            provider_network_connection.forced_by_admin = True
            provider_network_connection.put()

            logging.info("(ProviderForceFriendsHandler) Provider %s forcing connection to %s" % (provider.email, provider.vanity_domain))

        self.redirect('/admin/provider/admin/' + provider.vanity_url)
Пример #10
0
    def get(self, vanity_url=None):
        provider_target = db.get_provider_from_vanity_url(vanity_url)
        
        user_source = self.get_current_user()
        if user_source and auth.PROVIDER_ROLE in user_source.roles:
            provider_source = db.get_provider_from_user(user_source)
            
            # check if there is already a pending request
            
            if provider_source in provider_target.get_provider_network_pending():
                message = _("Connection pending...")
                self.render_public_profile(provider=provider_target, success_message=message)
            elif provider_source in provider_target.get_provider_network():
                message = _("Already connected!")
                self.render_public_profile(provider=provider_target, success_message=message)
            elif provider_source == provider_target:
                message = _("You can't connect to yourself!")
                self.render_public_profile(provider=provider_target, success_message=message)
            else:
                provider_network_connection = None
                
                if provider_source in provider_target.get_provider_network_rejected():
                    # this connection was rejected before.
                    provider_network_connection = db.get_provider_network_connection(provider_source.key, provider_target.key)
                    # what the hell...let them try again!
                    provider_network_connection.rejected = False
                else:
                    # no pending request, let's make one        
                    provider_network_connection = ProviderNetworkConnection()
                    provider_network_connection.source_provider = provider_source.key
                    provider_network_connection.target_provider = provider_target.key
                    
                provider_network_connection.confirmed = False

                try:
                    provider_network_connection.put()

                    message = _("Connection requested")
                    self.render_public_profile(provider=provider_target, success_message=message)
                    
                    # now send out an email
                    # the url for accepting for target_provider
                    url_obj = urlparse.urlparse(self.request.url)
                    accept_url = urlparse.urlunparse((url_obj.scheme, url_obj.netloc, '/login/accept/' + provider_network_connection.key.urlsafe(), '', '', ''))
                        
                    mail.email_connect_request(self.jinja2, from_provider=provider_source, target_provider=provider_target, accept_url=accept_url)
                    
                except Exception as e:
                    error_message = 'Error making connection: ' + e.message
                    self.render_public_profile(provider=provider_target, error_message=error_message)

                    
        else:
            # redirect to login page if not logged in, then send back here after creditials are verified
            self.redirect("/login/connect/" + provider_target.key.urlsafe())
Пример #11
0
 def get_provider_network_count(self):     
     sources = ProviderNetworkConnection.query(ProviderNetworkConnection.source_provider == self.key, ProviderNetworkConnection.confirmed == True).count()
     targets = ProviderNetworkConnection.query(ProviderNetworkConnection.target_provider == self.key, ProviderNetworkConnection.confirmed == True).count()
     
     return sources + targets
Пример #12
0
def get_provider_network_connection(source_key, target_key):
    return ProviderNetworkConnection.query(
        ProviderNetworkConnection.source_provider == source_key,
        ProviderNetworkConnection.target_provider == target_key).get()
Пример #13
0
    def get(self, vanity_url=None):
        provider_target = db.get_provider_from_vanity_url(vanity_url)

        user_source = self.get_current_user()
        if user_source and auth.PROVIDER_ROLE in user_source.roles:
            provider_source = db.get_provider_from_user(user_source)

            # check if there is already a pending request

            if provider_source in provider_target.get_provider_network_pending(
            ):
                message = _("Connection pending...")
                self.render_public_profile(provider=provider_target,
                                           success_message=message)
            elif provider_source in provider_target.get_provider_network():
                message = _("Already connected!")
                self.render_public_profile(provider=provider_target,
                                           success_message=message)
            elif provider_source == provider_target:
                message = _("You can't connect to yourself!")
                self.render_public_profile(provider=provider_target,
                                           success_message=message)
            else:
                provider_network_connection = None

                if provider_source in provider_target.get_provider_network_rejected(
                ):
                    # this connection was rejected before.
                    provider_network_connection = db.get_provider_network_connection(
                        provider_source.key, provider_target.key)
                    # what the hell...let them try again!
                    provider_network_connection.rejected = False
                else:
                    # no pending request, let's make one
                    provider_network_connection = ProviderNetworkConnection()
                    provider_network_connection.source_provider = provider_source.key
                    provider_network_connection.target_provider = provider_target.key

                provider_network_connection.confirmed = False

                try:
                    provider_network_connection.put()

                    message = _("Connection requested")
                    self.render_public_profile(provider=provider_target,
                                               success_message=message)

                    # now send out an email
                    # the url for accepting for target_provider
                    url_obj = urlparse.urlparse(self.request.url)
                    accept_url = urlparse.urlunparse(
                        (url_obj.scheme, url_obj.netloc, '/login/accept/' +
                         provider_network_connection.key.urlsafe(), '', '',
                         ''))

                    mail.email_connect_request(self.jinja2,
                                               from_provider=provider_source,
                                               target_provider=provider_target,
                                               accept_url=accept_url)

                except Exception as e:
                    error_message = 'Error making connection: ' + e.message
                    self.render_public_profile(provider=provider_target,
                                               error_message=error_message)

        else:
            # redirect to login page if not logged in, then send back here after creditials are verified
            self.redirect("/login/connect/" + provider_target.key.urlsafe())
Пример #14
0
    def post(self):
        provider_signup_form2 = forms.user.ProviderSignupForm2().get_form(self.request.POST, request_webob=self.request)
        
        
        # check for double submit
        # if the first submit worked, a user should have been created and logged in
        user = self.get_current_user()
        if user:
            provider = db.get_provider_from_user(user)
            if provider:
                email = provider_signup_form2['email'].data
                if email == provider.email == user.get_email():
                    # someone is already logged in with the address being submitted
                    # probably a double submit...
                    self.redirect('/provider/welcome/' + provider.vanity_url)
                    return
        
        if provider_signup_form2.validate():            
            # init the provider
            provider = Provider()
            provider_signup_form2.populate_obj(provider)
            
            # pre-populate vanity_url with first name + last name + number if collision
            first_name = provider.first_name
            last_name = provider.last_name
            vanity_url = first_name + last_name

            provider.vanity_url = validate_vanity_url(vanity_url)
            
            provider.domain = self.get_domain()    
            
            
            # set location info from request
            if "X-AppEngine-Country" in self.request.headers:
                provider.gae_country = self.request.headers["X-AppEngine-Country"]
                
            if "X-AppEngine-Region" in self.request.headers:
                provider.gae_region = self.request.headers["X-AppEngine-Region"]

            if "X-AppEngine-City" in self.request.headers:
                provider.gae_city = self.request.headers["X-AppEngine-City"]
            
            if "X-AppEngine-CityLatLong" in self.request.headers:
                provider.gae_city_lat_long = self.request.headers["X-AppEngine-CityLatLong"]

            # save provider
            provider.put()
            
            # check if an invitation was associated to this
            invite = db.get_invite_from_email(provider.email)
            if invite:
                invite.profile_created = True
                invite.token = None
                invite.put()
                
                # connect this provider to invite_provider
                provider_network_connection = ProviderNetworkConnection()
                provider_network_connection.invite = invite.key
                provider_network_connection.source_provider = invite.provider
                provider_network_connection.target_provider = provider.key
                provider_network_connection.confirmed = True
            
                provider_network_connection.put()

            
            # now create an empty user for the provider
            user = self.create_empty_user_for_provider(provider)
            user.language = self.get_language()
            user.last_login = datetime.datetime.now()
            provider.profile_language = user.language
            provider.put()
            
            # set the password for the user
            password = provider_signup_form2.password.data
            password_hash = security.generate_password_hash(password, length=12)    
            user.password = password_hash
            user.put()
            
            # login with new password
            self.login_user(user.get_email(), password)

            # new user
            logging.info('(PasswordHandler.post) New user just set their password: %s' % user.get_email())
                
            self.redirect('/provider/welcome/' + provider.vanity_url)
                    
            self.log_event(user, "New account created for user")            # create a signup token for new user
                                    
            # remove partial provider
            partial_provider = db.get_partial_provider_from_email(provider.email)
            if partial_provider:
                partial_provider.key.delete()
                
            # Send welcome email to provider
            welcome_email_enabled = db.get_site_config().welcome_email_enabled
            if welcome_email_enabled:
                mail.email_provider_welcome(self.jinja2, provider)
            
            
        else:
            self.render_template('user/signup_provider_2.html', provider_signup_form2=provider_signup_form2)
Пример #15
0
 def get_provider_network_pending_connections(self):
     return ProviderNetworkConnection.query(
         ProviderNetworkConnection.target_provider == self.key,
         ProviderNetworkConnection.confirmed == False,
         ProviderNetworkConnection.rejected == False).fetch()
Пример #16
0
 def get_provider_network_rejecter_count(self):     
     targets = ProviderNetworkConnection.query(ProviderNetworkConnection.target_provider == self.key, ProviderNetworkConnection.confirmed == False, ProviderNetworkConnection.rejected == True).count()
     
     return targets
Пример #17
0
 def get_provider_network_rejectee_count(self):     
     sources = ProviderNetworkConnection.query(ProviderNetworkConnection.source_provider == self.key, ProviderNetworkConnection.confirmed == False, ProviderNetworkConnection.rejected == True).count()
     
     return sources
Пример #18
0
def get_provider_network_connection(source_key, target_key):
    return ProviderNetworkConnection.query(ProviderNetworkConnection.source_provider == source_key, ProviderNetworkConnection.target_provider == target_key).get()
Пример #19
0
 def get_provider_network_pending_connections(self):     
     return ProviderNetworkConnection.query(ProviderNetworkConnection.target_provider == self.key, ProviderNetworkConnection.confirmed == False, ProviderNetworkConnection.rejected == False).fetch()
Пример #20
0
    def post(self):
        provider_signup_form2 = forms.user.ProviderSignupForm2().get_form(
            self.request.POST, request_webob=self.request)

        # check for double submit
        # if the first submit worked, a user should have been created and logged in
        user = self.get_current_user()
        if user:
            provider = db.get_provider_from_user(user)
            if provider:
                email = provider_signup_form2['email'].data
                if email == provider.email == user.get_email():
                    # someone is already logged in with the address being submitted
                    # probably a double submit...
                    self.redirect('/provider/welcome/' + provider.vanity_url)
                    return

        if provider_signup_form2.validate():
            # init the provider
            provider = Provider()
            provider_signup_form2.populate_obj(provider)

            # pre-populate vanity_url with first name + last name + number if collision
            first_name = provider.first_name
            last_name = provider.last_name
            vanity_url = first_name + last_name

            provider.vanity_url = validate_vanity_url(vanity_url)

            provider.domain = self.get_domain()

            # set location info from request
            if "X-AppEngine-Country" in self.request.headers:
                provider.gae_country = self.request.headers[
                    "X-AppEngine-Country"]

            if "X-AppEngine-Region" in self.request.headers:
                provider.gae_region = self.request.headers[
                    "X-AppEngine-Region"]

            if "X-AppEngine-City" in self.request.headers:
                provider.gae_city = self.request.headers["X-AppEngine-City"]

            if "X-AppEngine-CityLatLong" in self.request.headers:
                provider.gae_city_lat_long = self.request.headers[
                    "X-AppEngine-CityLatLong"]

            # save provider
            provider.put()

            # check if an invitation was associated to this
            invite = db.get_invite_from_email(provider.email)
            if invite:
                invite.profile_created = True
                invite.token = None
                invite.put()

                # connect this provider to invite_provider
                provider_network_connection = ProviderNetworkConnection()
                provider_network_connection.invite = invite.key
                provider_network_connection.source_provider = invite.provider
                provider_network_connection.target_provider = provider.key
                provider_network_connection.confirmed = True

                provider_network_connection.put()

            # now create an empty user for the provider
            user = self.create_empty_user_for_provider(provider)
            user.language = self.get_language()
            user.last_login = datetime.datetime.now()
            provider.profile_language = user.language
            provider.put()

            # set the password for the user
            password = provider_signup_form2.password.data
            password_hash = security.generate_password_hash(password,
                                                            length=12)
            user.password = password_hash
            user.put()

            # login with new password
            self.login_user(user.get_email(), password)

            # new user
            logging.info(
                '(PasswordHandler.post) New user just set their password: %s' %
                user.get_email())

            self.redirect('/provider/welcome/' + provider.vanity_url)

            self.log_event(user, "New account created for user"
                           )  # create a signup token for new user

            # remove partial provider
            partial_provider = db.get_partial_provider_from_email(
                provider.email)
            if partial_provider:
                partial_provider.key.delete()

            # Send welcome email to provider
            welcome_email_enabled = db.get_site_config().welcome_email_enabled
            if welcome_email_enabled:
                mail.email_provider_welcome(self.jinja2, provider)

        else:
            self.render_template('user/signup_provider_2.html',
                                 provider_signup_form2=provider_signup_form2)