Beispiel #1
0
    def testClaraGet(self):
        kenny = User.objects.get(username="******")
        clara = User.objects.get(username="******")

        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)

        settings_clara = UserSettings()
        settings_clara = settings_clara.get_settings_based_on_user(clara)

        c = Client()
        loginAttempt = c.login(username='******',
                               password='******')
        response = c.get("/account/settings")

        self.assertNotEqual(response.context["first_name"], kenny.first_name)
        self.assertNotEqual(response.context["last_name"], kenny.last_name)
        self.assertNotEqual(response.context["email"], kenny.email)
        self.assertNotEqual(response.context["phone_number"], "")

        self.assertEqual(response.context["first_name"], clara.first_name)
        self.assertEqual(response.context["last_name"], clara.last_name)
        self.assertEqual(response.context["email"], clara.email)
        self.assertEqual(response.context["phone_number"],
                         settings_clara.PhoneNumber)
Beispiel #2
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Types
        u1 = UserType.objects.create(Name="Type 1")
        u2 = UserType.objects.create(Name="Type 2")
        u3 = UserType.objects.create(Name="Type 3")

        brian = User.objects.create(username="******",
                                    email="*****@*****.**",
                                    first_name="Brian",
                                    last_name="Katchmar")  # Passes
        settings_brian = UserSettings()
        settings_brian = settings_brian.get_settings_based_on_user(brian)
        settings_brian.BusinessName = "MIAC"
        settings_brian.Region = "New York"
        settings_brian.save()
        UserAssociatedTypes.objects.create(UserAccount=brian,
                                           UserFreelanceType=u1)

        josh = User.objects.create(username="******",
                                   email="*****@*****.**",
                                   first_name="Josh",
                                   last_name="Blank")  # No User Settings

        kenny = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Kenny",
            last_name="Kim"
        )  # Has User Settings, has associated types, neither of the two fields we check
        kenny.set_password("Thing5Ar3Gr34t")
        kenny.save()
        settings_kenny = UserSettings()
        settings_kenny = settings_brian.get_settings_based_on_user(kenny)
        settings_kenny.save()
        UserAssociatedTypes.objects.create(UserAccount=kenny,
                                           UserFreelanceType=u2)
        UserAssociatedTypes.objects.create(UserAccount=kenny,
                                           UserFreelanceType=u3)

        clara = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Clara",
            last_name="Chang")  # Has User Settings, no associated types
        clara.set_password("Thing5Ar3Gr34t")
        clara.save()
        settings_clara = UserSettings()
        settings_clara = settings_brian.get_settings_based_on_user(clara)
        settings_clara.BusinessName = "InFlow"
        settings_clara.Region = "New York"
        settings_clara.save()
Beispiel #3
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        kenny = User.objects.create(username="******",
                                    email="*****@*****.**",
                                    first_name="Kenny",
                                    last_name="Kim")
        kenny.set_password("Thing5Ar3Gr34t")
        kenny.save()

        clara = User.objects.create(username="******",
                                    email="*****@*****.**",
                                    first_name="Clara",
                                    last_name="Chang")
        clara.set_password("Thing5Ar3Gr34t")
        clara.save()

        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)
        settings_kenny.save()

        settings_clara = UserSettings()
        settings_clara = settings_clara.get_settings_based_on_user(clara)
        settings_clara.BusinessName = "InFlow"
        settings_clara.Region = "New York"
        settings_clara.PhoneNumber = "2125555555"
        settings_clara.StripeConnectAccountKey = "1234567890"
        settings_clara.save()
Beispiel #4
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Types
        u1 = UserType.objects.create(Name="Kenny Type 1")
        u2 = UserType.objects.create(Name="Kenny Type 2")
        u3 = UserType.objects.create(Name="Kenny Type 3")

        kenny = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Kenny",
            last_name="Kim"
        )  # Has User Settings, has associated types, neither of the two fields we check
        kenny.set_password("Thing5Ar3Gr34t")
        kenny.save()
        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)
        settings_kenny.save()
        UserAssociatedTypes.objects.create(UserAccount=kenny,
                                           UserFreelanceType=u2)
        UserAssociatedTypes.objects.create(UserAccount=kenny,
                                           UserFreelanceType=u3)
Beispiel #5
0
    def post(self, request):
        context = self.get_context_data(request)

        selected_frequency = request.POST.get(
            "frequency",
            UserSettings._meta.get_field("FreelancerFrequency").get_default())
        other_text = request.POST.get("other", "")

        # Go through each UserType and see what was selected, add that to the DB
        # Remove anything that was previously selected
        UserAssociatedTypes.objects.filter(UserAccount=request.user).delete()
        for type in self.all_user_types:
            current_type = request.POST.get(type.Name, "")

            if current_type == "on":
                UserAssociatedTypes.objects.create(UserAccount=request.user,
                                                   UserFreelanceType=type)

        # Build up user settings or fetch previously saved ones, then save what was selected as the freelancer frequency type
        usersettings = UserSettings()
        usersettings = usersettings.get_settings_based_on_user(request.user)
        usersettings.FreelancerFrequency = selected_frequency
        usersettings.OtherType = other_text
        usersettings.save()

        return redirect(reverse("accounts:onboarding_2"))
Beispiel #6
0
    def post(self, request):
        context = self.get_context_data(request)

        # Gather Data From Post
        selected_work_with = request.POST.get(
            "work-with",
            UserSettings._meta.get_field("FreelancerWorkWith").get_default())

        # Remove anything that was previously selected
        UserInterest.objects.filter(UserAccount=request.user).delete()

        for interest in FREELANCER_INTERESTED_IN:
            interest_point = request.POST.get(interest[0], "")

            if interest_point == "on":
                UserInterest.objects.create(UserAccount=request.user,
                                            Interest=interest[0])

        # Build up user settings or fetch previously saved ones, then save what was selected as the freelancer work with and interested in
        usersettings = UserSettings()
        usersettings = usersettings.get_settings_based_on_user(request.user)
        usersettings.FreelancerWorkWith = selected_work_with
        usersettings.save()

        return redirect(reverse("accounts:onboarding_3"))
Beispiel #7
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Types
        u1 = UserType.objects.create(Name="Clara Type 1")
        u2 = UserType.objects.create(Name="Clara Type 2")
        u3 = UserType.objects.create(Name="Clara Type 3")

        clara = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Clara",
            last_name="Chang")  # Has User Settings, no associated types
        clara.set_password("Thing5Ar3Gr34t")
        clara.save()
        settings_clara = UserSettings()
        settings_clara = settings_clara.get_settings_based_on_user(clara)
        settings_clara.BusinessName = "InFlow"
        settings_clara.Region = "New York"
        settings_clara.save()
Beispiel #8
0
 def get(self, request):
     context = {}
     stripe.api_key = settings.STRIPE_TEST_API_SECRET
     
     currentlyloggedinuser = ""
     usersettings = UserSettings()
     
     if request.user.is_authenticated:
         currentlyloggedinuser = request.user
         
     usersettings = usersettings.get_settings_based_on_user(currentlyloggedinuser)
     
     # Call Stripe Settings For The Link Generation
     context["call_state"] = settings.STRIPE_CALL_STATE
     context["stripe_acct"] = settings.STRIPE_ACCOUNT_ID
     
     # If this is from a Stripe Auth Page
     comm = StripeCommunication()
     response_code = request.GET.get("code", "")
     json_response = {}
     
     if response_code != "":
         json_response = comm.create_new_stripe_custom_account(response_code)
         
     if "stripe_user_id" in json_response:
         print("Found Stripe User ID")
         print(json_response["stripe_user_id"])
         
     if "error_description" in json_response:
         context["error_description"] = json_response["error_description"]
     
     return render(request, self.template_name, context)
Beispiel #9
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Users
        user_1 = User.objects.create(username="******",
                                     email="*****@*****.**",
                                     first_name="Brian",
                                     last_name="Katchmar")
        user_1.set_password("Th3L10nK1ng15Fun")
        user_1.save()
        settings_user_1 = UserSettings()
        settings_user_1 = settings_user_1.get_settings_based_on_user(user_1)
        settings_user_1.BusinessName = "MIAC"
        settings_user_1.Region = "New York"
        settings_user_1.save()

        user_2 = User.objects.create(username="******",
                                     email="*****@*****.**",
                                     first_name="Brian",
                                     last_name="Katchmar")
        user_2.set_password("Thing5Ar3Gr34t")
        user_2.save()
        settings_user_2 = UserSettings()
        settings_user_2 = settings_user_2.get_settings_based_on_user(user_2)
        settings_user_2.save()

        user_3 = User.objects.create(username="******",
                                     email="*****@*****.**",
                                     first_name="Brian",
                                     last_name="Katchmar")
        user_3.set_password("Thing5Ar3Gr34t")
        user_3.save()
        settings_user_3 = UserSettings()
        settings_user_3 = settings_user_3.get_settings_based_on_user(user_3)
        settings_user_3.BusinessName = "InFlow"
        settings_user_3.Region = "New York"
        settings_user_3.PhoneNumber = "2125555555"
        settings_user_3.StripeConnectAccountKey = "1234567890"
        settings_user_3.save()
Beispiel #10
0
 def getUserSettings(self, request):
     currentlyloggedinuser = ""
     usersettings = UserSettings()
     
     if request.user.is_authenticated:
         currentlyloggedinuser = request.user
         
     usersettings = usersettings.get_settings_based_on_user(currentlyloggedinuser)
     return usersettings
Beispiel #11
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Users
        brian_1 = User.objects.create(username="******",
                                      email="*****@*****.**",
                                      first_name="Brian",
                                      last_name="Katchmar")
        brian_1.set_password("Th3L10nK1ng15Fun")
        brian_1.save()

        settings_brian_1 = UserSettings()
        settings_brian_1 = settings_brian_1.get_settings_based_on_user(brian_1)
        settings_brian_1.save()

        brian_2 = User.objects.create(username="******",
                                      email="*****@*****.**",
                                      first_name="Brian",
                                      last_name="Katchmar")
        brian_2.set_password("Th3L10nK1ng15Fun")
        brian_2.save()

        settings_brian_2 = UserSettings()
        settings_brian_2 = settings_brian_2.get_settings_based_on_user(brian_2)
        settings_brian_2.save()

        if not Contract.objects.filter(Name=self.contract_name_1).exists():
            contract_1 = Contract.objects.create(Creator=brian_1,
                                                 Name=self.contract_name_1,
                                                 StartDate=date.today(),
                                                 EndDate=date.today())
            Relationship.objects.create(ContractUser=brian_1,
                                        ContractForRelationship=contract_1,
                                        RelationshipType="f")
            Relationship.objects.create(ContractUser=brian_2,
                                        ContractForRelationship=contract_1,
                                        RelationshipType="c")
Beispiel #12
0
    def get_context_data(self, request, **kwargs):
        context = super(UserDashboardLowFi, self).get_context_data(**kwargs)

        user_settings = UserSettings()
        user_settings = user_settings.get_settings_based_on_user(request.user)

        user_contracts_where_relationship_exists = Relationship.objects.filter(
            ContractUser=request.user)
        all_recipients = Recipient.objects.all()
        all_milestones = Milestone.objects.all().order_by("Deadline")

        context["needs_stripe"] = user_settings.does_this_user_need_stripe()
        context["call_state"] = settings.STRIPE_CALL_STATE
        context["stripe_acct"] = settings.STRIPE_ACCOUNT_ID
        context["first_name"] = request.user.first_name
        context["projects_in_progress"] = []
        context["upcoming_milestones"] = []

        for relationship in user_contracts_where_relationship_exists:
            if relationship.ContractForRelationship.StartDate <= timezone.now(
            ).date(
            ) and relationship.ContractForRelationship.EndDate >= timezone.now(
            ).date():
                # Get recipient and fill in entry for the in progress projects
                recipient_for_contract = all_recipients.filter(
                    ContractForRecipient=relationship.ContractForRelationship
                ).first()
                context["projects_in_progress"].append({
                    "name":
                    relationship.ContractForRelationship.Name,
                    "progress":
                    relationship.ContractForRelationship.
                    get_contract_state_view(),
                    "client":
                    recipient_for_contract.Name
                })

                # Get milestones for this contract that are still due
                contract_milestones = all_milestones.filter(
                    MilestoneContract=relationship.ContractForRelationship)

                for milestone in contract_milestones:
                    if milestone.Deadline >= timezone.now().date():
                        context["upcoming_milestones"].append({
                            "date":
                            milestone.Deadline.strftime("%b %d %Y"),
                            "name":
                            milestone.Name,
                            "project":
                            milestone.MilestoneContract.Name,
                            "amount":
                            "{0:.2f}".format(milestone.MilestonePaymentAmount)
                        })

        return context
Beispiel #13
0
    def testUniqueUserSlugsGeneratedEvenIfMultipleUsersAlreadyExists(self):
        user_1 = User.objects.get(username="******")
        settings_user_1 = UserSettings()
        settings_user_1 = settings_user_1.get_settings_based_on_user(user_1)

        user_2 = User.objects.get(username="******")
        settings_user_2 = UserSettings()
        settings_user_2 = settings_user_2.get_settings_based_on_user(user_2)

        user_3 = User.objects.get(username="******")
        settings_user_3 = UserSettings()
        settings_user_3 = settings_user_1.get_settings_based_on_user(user_3)

        self.assertIsNotNone(settings_user_1.UrlSlug)
        self.assertIsNotNone(settings_user_2.UrlSlug)
        self.assertIsNotNone(settings_user_3.UrlSlug)

        self.assertNotEqual(settings_user_1.UrlSlug, settings_user_2.UrlSlug)
        self.assertNotEqual(settings_user_1.UrlSlug, settings_user_3.UrlSlug)
        self.assertNotEqual(settings_user_2.UrlSlug, settings_user_3.UrlSlug)
Beispiel #14
0
    def get(self, request):
        context = self.get_context_data(request)

        # If true, This call came from a Stripe page and came back with a User ID
        if context["came_from_stripe"] and context["user_stripe_acct"] != "":
            user_settings = UserSettings()
            user_settings = user_settings.get_settings_based_on_user(
                request.user)
            user_settings.StripeConnectAccountKey = context["user_stripe_acct"]
            user_settings.save()
            context["needs_stripe"] = False

        return render(request, self.template_name, context)
Beispiel #15
0
    def get_context_data(self, request, **kwargs):
        context = {}

        # Get user content settings
        usersettings = UserSettings()
        usersettings = usersettings.get_settings_based_on_user(request.user)

        # Set context for view
        context["name"] = request.user.first_name
        context["country"] = Country.objects.all()
        context["currency"] = Currency.objects.all()
        context["selected_country"] = usersettings.BaseCountry.IdCountry
        context[
            "selected_country_currency"] = usersettings.BaseCountry.PrimaryCurrency.IdCurrency

        return context
Beispiel #16
0
    def post(self, request):
        context = self.get_context_data(request)

        # Gather Data From Post
        business_name = request.POST.get("business-name", "")
        region = request.POST.get("region", "")
        zip_code = request.POST.get("zip-code", "")

        # Build up user settings or fetch previously saved ones, then save what was selected as the freelancer work with and interested in
        usersettings = UserSettings()
        usersettings = usersettings.get_settings_based_on_user(request.user)
        usersettings.BusinessName = business_name
        usersettings.Region = region
        usersettings.ZipCode = zip_code
        usersettings.save()

        return redirect(reverse("base:dashboard"))
Beispiel #17
0
    def testKennyPostTryToChangeToClara(self):
        kenny = User.objects.get(username="******")

        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)

        c = Client()
        loginAttempt = c.login(username='******',
                               password='******')
        response = c.post(
            '/account/settings', {
                'first-name': 'Snickity',
                'last-name': 'Snack',
                'email-address': '*****@*****.**',
                'phone-number': '2121234567'
            })

        self.assertTrue("error_message" in response.context)
Beispiel #18
0
    def get_context_data(self, request, **kwargs):
        # Get some necessary User Information
        user_settings = UserSettings()
        user_settings = user_settings.get_settings_based_on_user(request.user)

        # Set the context
        context = super(EditAccountView, self).get_context_data(**kwargs)

        # Call Stripe Settings For The Link Generation
        context["needs_stripe"] = user_settings.does_this_user_need_stripe()
        context["call_state"] = settings.STRIPE_CALL_STATE
        context["stripe_acct"] = settings.STRIPE_ACCOUNT_ID

        # If this is from a Stripe Auth Page
        comm = StripeCommunication()
        response_code = request.GET.get("code", "")
        stripe_state = request.GET.get("state", "")
        json_response = {}

        # We need to check if this request even came from Stripe
        if response_code != "":
            json_response = comm.create_new_stripe_custom_account(
                response_code)
            context["came_from_stripe"] = True

            if stripe_state != settings.STRIPE_CALL_STATE:
                context["error_message"] = "Bad Call State"
                context["needs_stripe"] = True
        else:
            context["came_from_stripe"] = False

        # Did we get the stripe User ID in the response?
        if "stripe_user_id" in json_response:
            context["user_stripe_acct"] = json_response["stripe_user_id"]
        else:
            context["user_stripe_acct"] = ""

        # Did the response come with an error description?
        if "error_description" in json_response:
            context["error_message"] = json_response["error_description"]
            context["needs_stripe"] = True

        return context
Beispiel #19
0
    def testKennyPostBasicInfoEdit(self):
        kenny = User.objects.get(username="******")

        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)

        c = Client()
        loginAttempt = c.login(username='******',
                               password='******')
        response = c.post(
            '/account/settings', {
                'first-name': 'Snickity',
                'last-name': 'Snack',
                'email-address': '*****@*****.**',
                'phone-number': '2121234567'
            })

        self.assertEqual(response.context["first_name"], "Snickity")
        self.assertEqual(response.context["last_name"], "Snack")

        self.assertNotEqual(response.context["first_name"], "Kenny")
        self.assertNotEqual(response.context["last_name"], "Kim")

        self.assertTrue("error_message" not in response.context)
Beispiel #20
0
    def setUp(self):
        # Necessary Currency Objects
        usd = Currency.objects.create()

        USA = Country()
        USA.PrimaryCurrency = usd
        USA.Name = "United States"
        USA.Code = "US"
        USA.save()

        # Users
        brian = User.objects.create(username="******",
                                    email="*****@*****.**",
                                    first_name="Brian",
                                    last_name="Katchmar")
        brian.set_password("Th3L10nK1ng15Fun")
        brian.save()
        settings_brian = UserSettings()
        settings_brian = settings_brian.get_settings_based_on_user(brian)
        settings_brian.BusinessName = "MIAC"
        settings_brian.Region = "New York"
        settings_brian.save()

        kenny = User.objects.create(
            username="******",
            email="*****@*****.**",
            first_name="Kenny",
            last_name="Kim"
        )  # Has User Settings, has associated types, neither of the two fields we check
        kenny.set_password("Thing5Ar3Gr34t")
        kenny.save()
        settings_kenny = UserSettings()
        settings_kenny = settings_kenny.get_settings_based_on_user(kenny)
        settings_kenny.save()

        clara = User.objects.create(username="******",
                                    email="*****@*****.**",
                                    first_name="Clara",
                                    last_name="Chang")
        clara.set_password("Thing5Ar3Gr34t")
        clara.save()
        settings_clara = UserSettings()
        settings_clara = settings_clara.get_settings_based_on_user(clara)
        settings_clara.BusinessName = "InFlow"
        settings_clara.Region = "New York"
        settings_clara.PhoneNumber = "2125555555"
        settings_clara.StripeConnectAccountKey = "1234567890"
        settings_clara.save()

        if NotificationSetting.objects.filter(
                SettingName=self.setting_string_1).exists():
            ns1 = NotificationSetting.objects.get(
                SettingName=self.setting_string_1)
        else:
            ns1 = NotificationSetting.objects.create(
                SettingName=self.setting_string_1)

        if NotificationSetting.objects.filter(
                SettingName=self.setting_string_2).exists():
            ns2 = NotificationSetting.objects.get(
                SettingName=self.setting_string_2)
        else:
            ns2 = NotificationSetting.objects.create(
                SettingName=self.setting_string_2)

        if NotificationSetting.objects.filter(
                SettingName=self.setting_string_3).exists():
            ns3 = NotificationSetting.objects.get(
                SettingName=self.setting_string_3)
        else:
            ns3 = NotificationSetting.objects.create(
                SettingName=self.setting_string_3)

        if NotificationSetting.objects.filter(
                SettingName=self.setting_string_4).exists():
            ns4 = NotificationSetting.objects.get(
                SettingName=self.setting_string_4)
        else:
            ns4 = NotificationSetting.objects.create(
                SettingName=self.setting_string_4)

        # Purge the DB Entries, we're rebuild what we're expecting
        UserNotificationSettings.objects.filter(UserAccount=brian).delete()
        UserNotificationSettings.objects.filter(UserAccount=kenny).delete()
        UserNotificationSettings.objects.filter(UserAccount=clara).delete()

        # Brian
        UserNotificationSettings.objects.create(UserAccount=brian,
                                                Setting=ns1,
                                                Selected=True)
        UserNotificationSettings.objects.create(UserAccount=brian,
                                                Setting=ns2,
                                                Selected=True)
        UserNotificationSettings.objects.create(UserAccount=brian,
                                                Setting=ns3,
                                                Selected=True)
        UserNotificationSettings.objects.create(UserAccount=brian,
                                                Setting=ns4,
                                                Selected=True)

        # Kenny
        UserNotificationSettings.objects.create(UserAccount=kenny,
                                                Setting=ns1,
                                                Selected=True)
        UserNotificationSettings.objects.create(UserAccount=kenny,
                                                Setting=ns2,
                                                Selected=False)
        UserNotificationSettings.objects.create(UserAccount=kenny,
                                                Setting=ns3,
                                                Selected=False)
        UserNotificationSettings.objects.create(UserAccount=kenny,
                                                Setting=ns4,
                                                Selected=True)

        # Clara
        UserNotificationSettings.objects.create(UserAccount=clara,
                                                Setting=ns1,
                                                Selected=False)
        UserNotificationSettings.objects.create(UserAccount=clara,
                                                Setting=ns2,
                                                Selected=True)
        UserNotificationSettings.objects.create(UserAccount=clara,
                                                Setting=ns3,
                                                Selected=False)
        UserNotificationSettings.objects.create(UserAccount=clara,
                                                Setting=ns4,
                                                Selected=True)