Esempio n. 1
0
    def restore_object(self, attrs, instance=None):
        def _get_first_last_names(name):
            name_split = name.split()
            first_name = name_split[0]
            last_name = u''
            if len(name_split) > 1:
                last_name = u' '.join(name_split[1:])
            return first_name, last_name

        params = copy.deepcopy(attrs)
        username = attrs.get('user.username', None)
        password = attrs.get('user.password', None)
        name = attrs.get('name', None)
        email = attrs.get('user.email', None)
        if username:
            params['username'] = username
        if email:
            params['email'] = email
        if password:
            params.update({'password1': password, 'password2': password})
        if instance:
            form = UserProfileForm(params, instance=instance)
            # form.is_valid affects instance object for partial updates [PATCH]
            # so only use it for full updates [PUT], i.e shallow copy effect
            if not self.partial and form.is_valid():
                instance = form.save()
            # get user
            if email:
                instance.user.email = form.cleaned_data['email']
            if name:
                first_name, last_name = _get_first_last_names(name)
                instance.user.first_name = first_name
                instance.user.last_name = last_name
            if email or name:
                instance.user.save()
            return super(UserProfileSerializer,
                         self).restore_object(attrs, instance)
            #return instance  # TODO: updates
        form = RegistrationFormUserProfile(params)
        if form.is_valid():
            first_name, last_name = _get_first_last_names(name)
            new_user = User(username=username,
                            first_name=first_name,
                            last_name=last_name,
                            email=email)
            new_user.set_password(password)
            new_user.save()
            created_by = self.context['request'].user
            profile = UserProfile(user=new_user,
                                  name=attrs.get('name', u''),
                                  created_by=created_by,
                                  city=attrs.get('city', u''),
                                  country=attrs.get('country', u''),
                                  organization=attrs.get('organization', u''),
                                  home_page=attrs.get('home_page', u''),
                                  twitter=attrs.get('twitter', u''))
            return profile
        else:
            self.errors.update(form.errors)
        return attrs
Esempio n. 2
0
def registerUser(request):
    username = request.POST['username']
    password = request.POST['password']
    #retyped_password = request.POST['rpassword']
    email    = request.POST['email']

    #check to see that username doesn't already exist
    if User.objects.filter(username=username).exists():
        error = "username already exists"
        return render(request, 'homepage/registration.html', {"error":error})

    # check that passwords match and are >= 5 characters
    if len(password) < 7:
        error = "password must be at least 7 characters long"
        return render(request, 'homepage/registration.html', {"error": error})

    else: #create a user and log them in
        #User Profile Object
        newUser = UserProfile(username=username, points=0)
        newUser.save()
        #django user
        User.objects.create_user(username, email, password)
        user = authenticate(username=username, password=password)
        login(request, user)
        return redirect('main/')
Esempio n. 3
0
def subscribe(request,email,lesson_id,token):
    from django.shortcuts import redirect
    from django.contrib.auth import authenticate, login
    from django.http import HttpResponseRedirect
    uname = email.replace('--att--','@')
    uname = uname.replace('--dot--','.')
    lesson = Lesson.objects.get(pk=lesson_id)
    try:
        user = UserProfile.objects.get(username=uname)
    except:
        user = UserProfile()
        user.username = uname
        user.set_password('123')
        user.is_active = True
        user.email = uname
        user.save()
        
    user.backend = 'main.auth.ProfileUserModelBackend'
    login(request, user)
    try:
        Subscriber2Lesson.objects.get(lesson=lesson, user=user)
    except:
        u2l = Subscriber2Lesson()
        u2l.user = user
        u2l.lesson = lesson
        u2l.save()

    return redirect('my_profile')
Esempio n. 4
0
def request_database_add_personal_details(request):
    constraint = helpers.constraint(request, "POST");
    data = constraint.safe({
        "first_name": True,
        "last_name": True,
        "department": False
    });

    request.user.first_name = data['first_name'];
    request.user.last_name = data['last_name'];
    request.user.full_clean();
    request.user.clean();
    request.user.save();

    try:
        of_department = Department.objects.get(id=data['department']);

        of_user_profile = UserProfile(
            user=request.user,
            department= of_department
        );

        of_user_profile.full_clean();
        of_user_profile.clean();
        of_user_profile.save();

        return redirect("/");

    except Department.DoesNotExist:
        raise Department.DoesNotExist("Index id of department object does not exists");

    pass;
Esempio n. 5
0
    def setUp(self) -> None:
        user = User.objects.create_user(username='******',
                                        email='*****@*****.**',
                                        password='******')
        user_profile = UserProfile()
        user_profile.user = user
        user_profile.save()

        user2 = User.objects.create_user(username='******',
                                         email='*****@*****.**',
                                         password='******')
        user_profile2 = UserProfile()
        user_profile2.user = user2
        user_profile2.save()

        self.user_profile = user_profile
        self.user_profile2 = user_profile2
Esempio n. 6
0
def createNewUserProfile(user):
    profile = UserProfile()
    profile.user = user
    profile.username = user.username
    profile.first_name = user.first_name
    profile.last_name = user.last_name
    profile.save()
    return profile
Esempio n. 7
0
 def create(self, validated_data):
     user = User(email=validated_data['email'],
                 username=validated_data['username'])
     user.set_password(validated_data['password'])
     user.save()
     user_profile = UserProfile(user=user)
     user_profile.save()
     return user
Esempio n. 8
0
 def setUp(self):
     user = User.objects.create_user(username='******',
                                     email='*****@*****.**',
                                     password='******')
     user_profile = UserProfile()
     user_profile.user = user
     user_profile.save()
     self.user_profile = user_profile
Esempio n. 9
0
 def save(self, new_user):
     new_profile = \
         UserProfile(user=new_user, name=self.cleaned_data['name'],
                     city=self.cleaned_data['city'],
                     country=self.cleaned_data['country'],
                     organization=self.cleaned_data['organization'],
                     home_page=self.cleaned_data['home_page'],
                     twitter=self.cleaned_data['twitter'])
     new_profile.save()
     return new_profile
Esempio n. 10
0
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff')
        self.team.save()
Esempio n. 11
0
def createNewUserProfile(user):
    try:
        profile = UserProfile.objects.get(user=user)
    except UserProfile.DoesNotExist:
        profile = UserProfile()
        profile.user = user
        profile.username = user.username
        profile.first_name = user.first_name
        profile.last_name = user.last_name
        profile.save()
        return profile
    return None
Esempio n. 12
0
 def save_user(self, request, sociallogin, form=None):
     user = DefaultSocialAccountAdapter.save_user(self,
                                                  request,
                                                  sociallogin,
                                                  form=form)
     if UserProfile.objects.filter(user=user).exists():
         pass
     else:
         new_user = UserProfile(user=user, name=user.get_full_name())
         new_user.save()
     # print("Inside the adapter")
     return redirect('/')
def add_user_task(sid, data):
    try:
        user = UserProfile.objects.get(login=data['login'])
    except ObjectDoesNotExist:
        print('No user')
        user = UserProfile()
        user.login = data['login']
        user.save()
    con = UserConnection()
    con.user = user
    con.sid = sid
    con.save()
    UserConnection.check_online(user)
Esempio n. 14
0
def populate():
    print "Creating Ramya"
    contact1 = Contacts(addr_line1="18570 NE 58th Ct, #K3084",
                        city="Redmond",
                        state="WA",
                        country="USA",
                        zipcode=98052,
                        email="*****@*****.**")
    contact1.save()
    user1 = UserProfile(first_name="Ramya", contact=contact1)
    user1.save()

    print "Creating Sanath"
    contact2 = Contacts(addr_line1="2 Arundel Road, #2",
                        city="Burlingame",
                        state="CA",
                        country="USA",
                        zipcode=94010,
                        email="*****@*****.**")
    contact2.save()
    user2 = UserProfile(first_name="Sanath", contact=contact2)
    user2.save()
Esempio n. 15
0
    def test_saving_and_retrieving_profiles(self):
        from django.contrib.auth.models import User
        u1 = User.objects.create(username='******')
        u2 = User.objects.create(username='******')

        profile1 = UserProfile()
        profile1.user = u1
        profile1.email = '*****@*****.**'
        profile1.save()

        profile2 = UserProfile()
        profile2.user = u2
        profile2.email = '*****@*****.**'
        profile2.save()

        saved_profiles = UserProfile.objects.all()
        self.assertEqual(saved_profiles.count(), 2)

        first_saved_profile = saved_profiles[0]
        second_saved_profile = saved_profiles[1]
        self.assertEqual(first_saved_profile.email, '*****@*****.**')
        self.assertEqual(second_saved_profile.email, '*****@*****.**')
Esempio n. 16
0
def register(request):
    serializer = RegistrationSerializer(data=request.data)
    if serializer.is_valid():
        new_user = User.objects.create(
            username=serializer.validated_data.get('username'),
            password=make_password(serializer.validated_data.get('password')),
            first_name=serializer.validated_data.get('first_name'),
            last_name=serializer.validated_data.get('last_name'),
            email=serializer.validated_data.get('email'))
        new_user_profile = UserProfile(account=new_user)
        new_user_profile.save()
        return Response(status=status.HTTP_200_OK)
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 17
0
    def handle(self, *args, **options):
        count = options["users"]

        users = []
        waiters = []
        managers = []

        _usernames = []
        # generate users
        for i in range(count):
            n = gen_unique_name(_usernames, ("user_" + "".join(random.sample(string.lowercase, 3)),))
            print "generate %d. user (%s)" % (i + 1, n)
            u = User()
            u.username = n
            u.password1 = "".join(random.sample(string.lowercase + string.digits, 10))
            u.password2 = u.password1
            users.append(u)
            u.save()
            # generate user roles
            # waiters
            if i % 20 == 1:
                ur = UserRole()
                ur.user = u
                ur.role = _roles[1]
                ur.restaurant = random.choice(Restaurant.objects.all())
                ur.save()
                print "marking %s as waiter" % u.username
                waiters.append(u)
                if u in users:
                    users.remove(u)
            # managers
            if i % 40 == 1:
                ur = UserRole()
                ur.user = u
                ur.role = _roles[0]
                ur.restaurant = random.choice(Restaurant.objects.all())
                ur.save()
                print "marking %s as manager" % u.username
                managers.append(u)
                if u in users:
                    users.remove(u)
            # every 2nd user a profile
            if i % 2 == 0:
                print "Adding user profile"
                profile = UserProfile()
                profile.user = u
                profile.save()

        self.stdout.write('Successfully added %d users' % count)
Esempio n. 18
0
    def post(self, request):
        form = SignUpForm(request.POST)
        if form.is_valid():

            checkuser=User.objects.filter(username=form.cleaned_data.get('username')).first()
            if checkuser:
                return redirect('/login/')


            userdata=dict(form.cleaned_data)
            profiledata=dict(form.cleaned_data)

            userdata.pop('phno')
            userdata.pop('dob')

            # user = User.objects.create_user(**form.cleaned_data)
            user = User.objects.create_user(**userdata)

            profiledata.pop('username')
            profiledata.pop('password')
            profiledata.pop('email')
            obj = User.objects.latest('id')


            profiledata['user_id']=obj.id

            profile=UserProfile(dob=profiledata['dob'],phno=profiledata['phno'],user_id=profiledata['user_id'])



            profile.save()


            user = authenticate(
                request,
                username = form.cleaned_data['username'],
                password = form.cleaned_data['password']
            )

            if user is not None:
                login(request, user)
                return redirect('/menu_index/')
            else:
                messages.error(request, 'Invalid Credentials')

            return redirect('/login/')
Esempio n. 19
0
def post(request: HttpRequest) -> HttpResponse:
    if request.method != 'POST':
        return redirect('signup')

    if settings.REGISTRATION_CLOSED:
        return redirect('registration-closed')

    form = SignUpForm(data=request.POST)
    if not form.is_valid():
        return render(request,
                      'registration/signup.html',
                      context={
                          'form': form,
                      })

    with transaction.atomic():
        try:
            User.objects.create_user(
                username=form.cleaned_data['email'],
                email=form.cleaned_data['email'],
                password=form.cleaned_data['password'],
                first_name=form.cleaned_data['first_name'],
                last_name=form.cleaned_data['last_name'])
        except IntegrityError as e:
            if str(e) == 'UNIQUE constraint failed: auth_user.username':
                return HttpResponseBadRequest('User already exists.')
            raise

        user = authenticate(username=form.cleaned_data['email'],
                            password=form.cleaned_data['password'])
        assert user is not None

        user_profile = UserProfile()
        user_profile.years_on_playa = form.cleaned_data['years_on_playa']
        user_profile.invited_by = form.cleaned_data['invited_by']
        user_profile.phone_number = form.cleaned_data['phone']
        user_profile.zipcode = form.cleaned_data['zipcode']
        user_profile.user = user
        user_profile.save()

        membership = TeamMembership(member=user,
                                    team=form.cleaned_data['interested_team'])
        membership.save()

        login(request, user)
        return redirect(user_profile)
Esempio n. 20
0
def enter(request,email,token):
    from django.shortcuts import redirect
    from django.contrib.auth import authenticate, login
    from django.http import HttpResponseRedirect
    uname = email.replace('--att--','@')
    uname = uname.replace('--dot--','.')
    try:
        user = User.objects.get(username=uname)
    except:
        user = UserProfile()
        user.username = uname
        user.set_password('123')
        user.is_active = True
        user.email = uname
        user.save()
        user = User.objects.get(username=uname)
    user.backend = 'main.auth.ProfileUserModelBackend'
    login(request, user)
    return redirect('lesson_for_student', id=1)
Esempio n. 21
0
    def test_details(self):
        alice = User.objects.create_user('alice', '*****@*****.**', 'passwd')
        alice.save()

        profile = UserProfile(user=alice,
                              biography='Just a small-town girl...',
                              playa_name='Yoshi')
        profile.save()

        self.assertEqual(alice.profile, profile)
        self.assertEqual(set(alice.profile.food_restrictions.all()), set())

        vegan = FoodRestriction(name='Vegan',
                                description='No animal products.')
        vegan.save()

        alice.profile.food_restrictions.add(vegan)
        alice.save()

        self.assertEqual(set(alice.profile.food_restrictions.all()), {vegan})
Esempio n. 22
0
def register_view(request):
    password = request.POST.get('newpassword')
    if password != request.POST.get('passcheck'):
        password = None
        return HttpResponse('passwords dont match! auth failed!')
    user = User()
    user.email = request.POST.get('email')
    user.username = user.email
    user.set_password(password)
    user.first_name = request.POST.get('first')
    user.last_name = request.POST.get('last')
    user.save()
    
    userProfile = UserProfile()
    userProfile.user = user
    userProfile.state = request.POST.get('state')
    userProfile.city = request.POST.get('city')
    userProfile.phone = request.POST.get('phone')
    userProfile.save()
    return redirect('/')
Esempio n. 23
0
    def test_phone_number_parsing(self):
        alice = User.objects.create_user('alice', '*****@*****.**', 'passwd')
        alice.save()

        profile = UserProfile(user=alice,
                              biography='Just a small-town girl...',
                              playa_name='Yoshi')
        profile.save()

        test_cases = [
            '5555555555',
            '555-555-5555',
            '15555555555',
            '1-555-555-5555',
            '+15555555555',
            '+1-555-555-5555',
        ]

        for phone_number in test_cases:
            parsed_number = UserProfile.parse_phone_number(phone_number)
            assert len(parsed_number) == 12

        self.assertTrue(True)
Esempio n. 24
0
 def register(self, request, **cleaned_data):
     def _get_first_last_names(name):
         name_split = name.split()
         first_name = name_split[0]
         last_name = u''
         if len(name_split) > 1:
             last_name = u' '.join(name_split[1:])
         return first_name, last_name
     new_user = \
         super(FHRegistrationView, self).register(request, **cleaned_data)
     new_profile = \
         UserProfile(user=new_user, name=cleaned_data['name'],
                     city=cleaned_data['city'],
                     country=cleaned_data['country'],
                     organization=cleaned_data['organization'],
                     home_page=cleaned_data['home_page'],
                     twitter=cleaned_data['twitter'])
     new_profile.save()
     if cleaned_data['name']:
         fn, ln = _get_first_last_names(cleaned_data['name'])
         new_user.first_name = fn
         new_user.last_name = ln
         new_user.save()
     return new_user
Esempio n. 25
0
def run():
    User = get_user_model()

    #  Update the users in this list.
    #  Each tuple represents the username, password, email, firstname and lastname of a user.
    users = [
        ('alexanderbouma', '123qweasdzxc', '-'),
        ('student', '123qweasdzxc', '-'),
        ('teacher', '123qweasdzxc', '-'),
    ]

    for username, password, email in users:
        try:
            print('Creating user: '******'User ', username, ' successfully created.')

        except:
            print('There was a problem creating the user:'******'. Error: ',
                  sys.exc_info()[1])

    data_user = [
        ['bramlap', 'Bram', 'Lap'],
        ['alexanderbouma', 'Alexander', 'Bouma'],
        ['student', 'Student', 'Student'],
        ['teacher', 'Teacher', 'Teacher'],
    ]

    user_all = User.objects.all()
    userprofile_all = UserProfile.objects.all()

    for i in range(len(user_all)):
        does_exist = False
        for j in userprofile_all:
            if user_all[i] == j:
                does_exist = True

        if does_exist == False:

            for j in range(len(data_user)):
                if str(user_all[i]) == str(data_user[j][0]):
                    if str(user_all[i]) == 'teacher':
                        p = UserProfile(
                            user=user_all[i],
                            firstname=str(data_user[j][1]),
                            lastname=str(data_user[j][2]),
                            is_student=False,
                            is_teacher=True,
                        )
                        p.save()
                    else:
                        p = UserProfile(
                            user=user_all[i],
                            firstname=str(data_user[j][1]),
                            lastname=str(data_user[j][2]),
                        )
                        p.save()

                    print('OK')
Esempio n. 26
0
    def handle(self, *args, **options):
        conn = sqlite3.connect(options['userdb_path'][0])
        """
        CREATE TABLE users (
        0    login TEXT PRIMARY KEY, 
        1    firstname TEXT, 
        2    lastname TEXT, 
        3    email TEXT, 
        4    password TEXT,
        5    path TEXT,
        6    token TEXT, 
        7    accepted INTEGER,
        8    project TEXT,
        9    affiliation TEXT,
        10   ip TEXT,
        11   clearance TEXT,
        12   date TEXT,
        13   visit TEXT)
        """

        print("Migrating users table...")
        user_paths = {}

        for row in conn.execute('SELECT * FROM users;'):
            username = sanitize_username(row[0])
            password = "******" + row[4]
            email = row[3]
            is_active = True
            is_superuser = True if row[11] == 'admin' else False

            user_paths[row[5]] = username
            date_joined = datetime.strptime(
                row[12], "%Y-%m-%d").replace(tzinfo=timezone.utc)

            newuser = User(username=username,
                           password=password,
                           email=email,
                           is_active=is_active,
                           is_superuser=is_superuser,
                           is_staff=is_superuser,
                           date_joined=date_joined)
            newuser.save()

            fullname = "%s %s" % (row[1], row[2])
            institution = row[9]

            if len(fullname) < 2:
                fullname = None

            newuser_profile = UserProfile(user=newuser,
                                          fullname=fullname,
                                          orcid=None,
                                          institution=institution)
            newuser_profile.save()

        print(" - Successful.")
        print("Moving project files... ")

        for path in user_paths:
            username = user_paths[path]

            # old user project dir
            src = os.path.join(options['userfiles_path'][0], path)

            #new user project dir
            dst = os.path.join(settings.USER_DATA_DIR, username)

            try:
                shutil.copytree(src, dst)
            except FileNotFoundError:
                # if user path does not exists create empty dir for user
                os.makedirs(dst)

        print(" - Successful")
        print("Migratins project table... ")
        """
        CREATE TABLE projects (
        0    name TEXT PRIMARY KEY, 
        1    path TEXT, 
        2    user TEXT, 
        3    description TEXT)
        """
        for row in conn.execute('SELECT * FROM projects;'):
            name = row[0]
            slug = slugify(name).replace('-', '_')
            path = row[1]
            username = sanitize_username(row[2])
            description = row[3]

            #rename project files
            fileTypes_old = [
                'treeFile', 'dataFile', 'fastaFile', 'samplesOrderFile',
                'samplesInformationFile'
            ]
            fileTypes_new = [
                'tree.txt', 'data.txt', 'fasta.fa', 'samples-order.txt',
                'samples-info.txt'
            ]

            for i in range(5):
                try:
                    os.rename(
                        os.path.join(settings.USER_DATA_DIR, username, path,
                                     fileTypes_old[i]),
                        os.path.join(settings.USER_DATA_DIR, username, path,
                                     fileTypes_new[i]))
                except:
                    pass

            try:
                if not description or not len(description) > 0:
                    description = ""

                project = Project(name=name,
                                  slug=slug,
                                  user=User.objects.get(username=username),
                                  secret=path)

                samples_info = project.get_file_path('samples-order.txt',
                                                     default=None)
                samples_order = project.get_file_path('samples-info.txt',
                                                      default=None)

                if (samples_info
                        or samples_order) and not project.get_file_path(
                            'samples.db', default=None):
                    s = dbops.SamplesInformationDatabase(project.get_file_path(
                        'samples.db', dont_check_exists=True),
                                                         quiet=True)
                    s.create(samples_order, samples_info)

                interactive = project.get_interactive()

                # try to get number of leaves
                try:
                    leaves = get_names_order_from_newick_tree(
                        project.get_file_path('tree.txt', default=None))
                    project.num_leaves = len(leaves) if leaves != [''] else 0
                except:
                    project.num_leaves = 0

                # try to get number of layers
                try:
                    project.num_layers = len(
                        interactive.views['single']
                        [0]) - 1  # <- -1 because first column is contigs
                except:
                    project.num_layers = 0

                # store description
                dbops.update_description_in_db(
                    project.get_file_path('profile.db', default=None),
                    description or '')

                project.synchronize_num_states()
                project.synchronize_num_collections()

                project.save()

                # try to migrate old links.
                for row_links in conn.execute(
                        'SELECT * FROM views WHERE project LIKE \'%s\';' %
                    (name)):
                    old_link = OldLinks(
                        name=row_links[0],
                        user=sanitize_username(row_links[1]),
                        project=Project.objects.filter(
                            name=row_links[2],
                            user__username=sanitize_username(row_links[1]))[0],
                        is_public=True if row_links[3] == 1 else False,
                        token=row_links[4])
                    old_link.save()

                    project_link = ProjectLink(project=old_link.project,
                                               link=old_link.token)
                    project_link.save()

            except Exception as e:
                print(username + " " + name + " " + path +
                      " failed to create project, here is the exception " +
                      str(e))
                shutil.rmtree(
                    os.path.join(settings.USER_DATA_DIR, username, path))

        print(" - Successful")
Esempio n. 27
0
def add_event(request):
    '''
        The view that will be called when DA will add events from the WebPortal.
    '''

    if request.method == 'POST':

        try:
            user_id = str(request.META['HTTP_X_USER_ID'])
        except KeyError:
            return JsonResponse({
                "message": "Header missing: X-USER-ID",
                "status": 2
            })

        try:
            user_profile = UserProfile.objects.get(uuid=user_id)
            if not user_profile:
                raise Exception
        except Exception:
            return JsonResponse(
                {"message": "The given UserId doesnt correspond to any user."})
        ''' Add the below 2 lines on every page where DA functionalities are there. '''

        if not user_profile.is_da:
            return JsonResponse({
                "message": "You must be logged in as a DA to add events.",
                "status": 0
            })

        try:
            # just to decode JSON properly
            data = json.loads(request.body.decode('utf8').replace("'", '"'))
        except:
            return JsonResponse({
                "message": "Please check syntax of JSON data passed.",
                'status': 4
            })

        try:
            event_name = data['name']
            description = data['description']
            fund_goal = data['fund_goal']
            phone = data['phone']
            email = data['email']
        except KeyError as missing_data:
            return JsonResponse({
                "message":
                "Missing the following field: {}".format(missing_data),
                'status':
                2
            })

        try:
            int(data['fund_goal'])
        except:
            #phone numbers should be an integer or string only of numbers
            return JsonResponse({
                'status':
                0,
                'message':
                'Fund Goal has to be a positive integer.'
            })

        try:
            int(data['phone'])
        except:
            #phone numbers should be an integer or string only of numbers
            return JsonResponse({
                'status': 0,
                'message': 'Please enter a valid phone number.'
            })

        if len(phone) != 10:
            return JsonResponse({
                'status': 0,
                'message': 'Please enter a valid Phone Number.'
            })

        if not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)",
                        email):
            return JsonResponse({
                'status':
                0,
                'message':
                'Please enter a valid Email address.'
            })

        try:
            UserProfile.objects.get(email=email)
            return JsonResponse({
                'status':
                0,
                'message':
                'This Email has already been registered. PLease try some other email.'
            })
        except:
            pass

        try:
            profile = UserProfile()
            event_name = ' '.join(str(event_name).strip().split())
            name = 'Admin for Event: ' + event_name
            profile.name = name
            profile.email = str(email)
            profile.phone = int(phone)
            profile.emergency_phone = int(phone)
            profile.save()

            username = profile.name.split(':')[1] + str(profile.id)
            password = ''.join(choice(chars) for i in range(8))
            user = User.objects.create_user(username=username,
                                            password=password)
            profile.user = user
            profile.save()

            event = Event.objects.create(name=event_name,
                                         description=description,
                                         admin=profile,
                                         fund_goal=fund_goal)
            event.save()

            message = 'Event added Successfully!'
            return JsonResponse({'message': message, 'status': 1})

        except Exception as e:
            print(e)
            return JsonResponse({
                'message': 'Event could not be added. Please try again.',
                'status': 0
            })

    if request.method == 'GET':
        return JsonResponse({"message": "API for DA to add events."})
Esempio n. 28
0
def register(request):

    if request.method == 'GET':
        return JsonResponse({
            'status':
            3,
            'message':
            'The API where new users can register themselves on the app.'
        })

    if request.method == 'POST':
        try:
            # just to decode JSON properly
            data = json.loads(request.body.decode('utf8').replace("'", '"'))
        except:
            return JsonResponse({
                "message": "Please check syntax of JSON data passed.",
                'status': 4
            })
        try:
            # see whether all fields passed in JSON or not
            data['name']
            data['email']
            data['phone']
            data['emergency_phone']
        except KeyError as missing_data:
            return JsonResponse({
                "message":
                "Missing the following field: {}".format(missing_data),
                'status':
                2
            })

        try:
            int(data['phone'])
        except:
            #phone numbers should be an integer or string only of numbers
            return JsonResponse({
                'status': 0,
                'message': 'Please enter a valid Phone Number.'
            })

        try:
            int(data['emergency_phone'])
        except:
            #phone numbers should be an integer or string only of numbers
            return JsonResponse({
                'status':
                0,
                'message':
                'Please enter a valid Emergency Phone Number.'
            })

        if len(data['phone']) != 10:
            return JsonResponse({
                'status': 0,
                'message': 'Please enter a valid Phone Number.'
            })
        if len(data['emergency_phone']) != 10:
            return JsonResponse({
                'status':
                0,
                'message':
                'Please enter a valid Emergency Phone Number.'
            })

        email = data['email']
        if not re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)",
                        email):
            return JsonResponse({
                'status':
                0,
                'message':
                'Please enter a valid Email address.'
            })

        try:
            UserProfile.objects.get(email=email)
            return JsonResponse({
                'status':
                0,
                'message':
                'This Email has already been registered. Try some other email.'
            })
        except:
            pass
        try:
            profile = UserProfile()
            name = ' '.join(str(data['name']).strip().split())
            profile.name = name
            profile.email = str(data['email'])
            profile.phone = int(data['phone'])
            profile.emergency_phone = int(data['emergency_phone'])
            profile.save()

            #verify email
            send_to = profile.email
            body = email_body.register()
            email_token = utils.generate_email_token(profile)
            body = body % (
                name, str(request.build_absolute_uri(reverse("main:nill"))) +
                'email_confirm/' + email_token + '/')

            sg = sendgrid.SendGridAPIClient(apikey=SENDGRID_API_KEY)
            from_email = Email('*****@*****.**')
            to_email = Email(send_to)
            subject = "Email Confirmation for your account on Alertify app"
            content = Content('text/html', body)

            try:
                mail = Mail(from_email, subject, to_email, content)
                response = sg.client.mail.send.post(request_body=mail.get())
            except Exception:
                profile.delete()
                return JsonResponse({
                    'message': 'Error sending email. Please try again.',
                    'status': 0
                })

            message = "Registration successful! A confirmation link has been sent to %s. Kindly click on it to verify your email address." % (
                send_to)
            return JsonResponse({'message': message, 'status': 1})
        except Exception:
            return JsonResponse({
                'message': 'Registration failed due to unknown reasons.',
                'status': 0
            })