From 34fd0f83e29b8274dc0b0e115a862926dce95709 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 20:23:24 +0700 Subject: [PATCH 1/7] added validator for language, remove annoying github frontend validator on edit page --- assets/js/EditProfile.jsx | 30 +++++++++++---- assets/js/Utils.js | 2 +- core/lib/validators.py | 5 +++ core/migrations/0001_initial.py | 4 +- core/migrations/0002_auto_20191206_1931.py | 19 ++++++++++ core/migrations/0003_auto_20191206_1935.py | 19 ++++++++++ core/models/accounts.py | 4 +- core/tests/test_accounts.py | 10 ++++- package-lock.json | 44 ++++++---------------- 9 files changed, 91 insertions(+), 46 deletions(-) create mode 100644 core/migrations/0002_auto_20191206_1931.py create mode 100644 core/migrations/0003_auto_20191206_1935.py diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index 5d4dfece..0c43747c 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -33,6 +33,8 @@ export default class EditProfile extends React.Component { phone_number: '', portfolio_link: '', show_transcript: '', + expected_salary: '', + self_description: '', intro: '', skills: '', form: { @@ -94,15 +96,18 @@ export default class EditProfile extends React.Component { : this.props.params.id; return Server.get(`/students/${id}/`).then( (data) => { + console.log("[DATA] => ", data) this.setState({ id: data.id, name: data.full_name, email: data.user.email, + self_description: data.self_description, region: data.region, alamat: data.alamat, phone_number: data.phone_number, portfolio_link: data.portfolio_link, show_transcript: data.show_transcript, + expected_salary: data.expected_salary, refresh: this.state.refresh + 1, intro: data.intro, linkedin_url: data.linkedin_url, @@ -121,6 +126,7 @@ export default class EditProfile extends React.Component { seminar: data.seminar, interests: data.interests, related_course: data.related_course, + volunteer: data.volunteer }); if (this.props.route.own) { const newSession = this.props.user.data; @@ -159,6 +165,7 @@ export default class EditProfile extends React.Component { handleSubmit = (e) => { e.preventDefault(); + console.log('[GITHUB] : ', this.state.form) if (!isFromGithubLinkValid(this.state.form.github_url)) { this.modalAlert.open( 'Pembaharuan profil gagal', @@ -305,6 +312,9 @@ export default class EditProfile extends React.Component { <input onChange={this.handleChange} placeholder="Saya suka belajar" + defaultValue= { + this.state.self_description === null ? null : this.state.self_description + } name="self_description" /> </Form.Field> @@ -342,7 +352,7 @@ export default class EditProfile extends React.Component { <input onChange={this.handleChange} placeholder="Isi sesuai dengan keahlian anda" - defaultValue={this.state.skills === null ? 'Competitive Programming' : this.state.skills} + defaultValue={this.state.skills === null ? null : this.state.skills} name="skills" /> </Form.Field> @@ -350,11 +360,7 @@ export default class EditProfile extends React.Component { <label htmlFor="languages">Bahasa yang dikuasai</label> <input onChange={this.handleChange} - placeholder={ - this.state.languages === null - ? 'Indonesia' - : this.state.languages - } + placeholder="Indonesia, Jerman (pisahkan dengan koma)" defaultValue={ this.state.languages === null ? null : this.state.languages } @@ -400,7 +406,14 @@ export default class EditProfile extends React.Component { </Form.Field> <Form.Field> <label htmlFor="expected_salary">Expected Salary</label> - <input onChange={this.handleChange} placeholder="2000000" name="expected_salary" /> + <input + onChange={this.handleChange} + placeholder="2000000" + defaultValue = { + this.state.expected_salary === null ? null : this.state.expected_salary + } + name="expected_salary" + /> </Form.Field> <Form.Field> <label htmlFor="intro">Intro</label> @@ -606,6 +619,9 @@ export default class EditProfile extends React.Component { onChange={this.handleChange} placeholder="Ketua Organisasi A - 2020" name="volunteer" + defaultValue={ + this.state.volunteer === null ? null :this.state.volunteer + } /> </Form.Field> diff --git a/assets/js/Utils.js b/assets/js/Utils.js index 860ca4c0..60c5f5ae 100644 --- a/assets/js/Utils.js +++ b/assets/js/Utils.js @@ -1,6 +1,6 @@ export const isFromGithubLinkValid = github_link => { if (github_link == null) return; - return github_link.includes('https://github.com/'); + return (github_link.includes('https://github.com/') || github_link.length === 0); }; export const gotoLink = url => window.open(url).focus(); diff --git a/core/lib/validators.py b/core/lib/validators.py index ac5a1766..c3456575 100755 --- a/core/lib/validators.py +++ b/core/lib/validators.py @@ -1,5 +1,6 @@ import math import os +import re from django.core.exceptions import ValidationError @@ -27,6 +28,10 @@ def validate_student_gpa(value): if value < 0 or value > 4: raise ValidationError(u"GPA harus merupakan angka antara 0-4") +def validate_languages_contains_string_type_value(value): + if not re.search("^[a-zA-Z ,]*$", value): + raise ValidationError(u"Bahasa hanya mengandung karakter alphabet") + def validate_npm(value): """ diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 4c834c20..874b447c 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.8 on 2019-12-05 04:16 +# Generated by Django 2.2.8 on 2019-12-06 12:26 import core.lib.validators import core.models.accounts @@ -156,7 +156,7 @@ class Migration(migrations.Migration): ('awards', models.CharField(blank=True, max_length=100, null=True)), ('projects', models.CharField(blank=True, max_length=100, null=True)), ('certification', models.CharField(blank=True, max_length=100, null=True)), - ('languages', models.CharField(blank=True, max_length=100, null=True)), + ('languages', models.CharField(blank=True, max_length=100, null=True, validators=[django.core.validators.RegexValidator('^\\w{0,100}')])), ('seminar', models.CharField(blank=True, max_length=100, null=True)), ('interests', models.CharField(blank=True, max_length=100, null=True)), ('dependants', models.IntegerField(blank=True, db_column='dependants', default=0, null=True)), diff --git a/core/migrations/0002_auto_20191206_1931.py b/core/migrations/0002_auto_20191206_1931.py new file mode 100644 index 00000000..abb54715 --- /dev/null +++ b/core/migrations/0002_auto_20191206_1931.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.8 on 2019-12-06 12:31 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='student', + name='languages', + field=models.CharField(blank=True, max_length=100, null=True, validators=[django.core.validators.RegexValidator('^[a-zA-Z]*$')]), + ), + ] diff --git a/core/migrations/0003_auto_20191206_1935.py b/core/migrations/0003_auto_20191206_1935.py new file mode 100644 index 00000000..7dc38515 --- /dev/null +++ b/core/migrations/0003_auto_20191206_1935.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.8 on 2019-12-06 12:35 + +import core.lib.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0002_auto_20191206_1931'), + ] + + operations = [ + migrations.AlterField( + model_name='student', + name='languages', + field=models.CharField(blank=True, max_length=100, null=True, validators=[core.lib.validators.validate_languages_contains_string_type_value]), + ), + ] diff --git a/core/models/accounts.py b/core/models/accounts.py index e4328412..6b71e657 100755 --- a/core/models/accounts.py +++ b/core/models/accounts.py @@ -7,7 +7,7 @@ from django.core.validators import MinValueValidator, MaxValueValidator, RegexVa from django.db import models from core.lib.validators import validate_document_file_extension, validate_image_file_extension, validate_npm, \ - validate_student_gpa + validate_student_gpa, validate_languages_contains_string_type_value def get_student_resume_file_path(instance, filename): @@ -123,7 +123,7 @@ class Student(models.Model): awards = models.CharField(max_length=100, blank=True, null=True) projects = models.CharField(max_length=100, blank=True, null=True) certification = models.CharField(max_length=100, blank=True, null=True) - languages = models.CharField(max_length=100, blank=True, null=True) + languages = models.CharField(max_length=100, blank=True, null=True, validators=[validate_languages_contains_string_type_value]) seminar = models.CharField(max_length=100, blank=True, null=True) interests = models.CharField(max_length=100, blank=True, null=True) dependants = models.IntegerField(db_column='dependants', default=0, blank=True, null=True) diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py index 5014f4b4..3ed14a31 100755 --- a/core/tests/test_accounts.py +++ b/core/tests/test_accounts.py @@ -5,6 +5,7 @@ from django.contrib.auth.models import User from django.core.exceptions import ValidationError from rest_framework import status from rest_framework.test import APITestCase +from rest_framework.exceptions import ErrorDetail from core.views.sso_login import get_access_token, get_riwayat_user @@ -137,13 +138,18 @@ class ProfileUpdateTests(APITestCase): self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) self.assertEqual(response.data.get('self_description'), 'I am very happy') - url = '/api/students/' + str(student_id) + "/profile/" + response = self.client.patch(url, {'languages': 'Indonesia, Jerman'}, format='multipart', encoding='utf-8') + self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) + self.assertEqual(response.data.get('languages'), 'Indonesia, Jerman') + + response = self.client.patch(url, {'languages': '123456'}, format='multipart', encoding='utf-8') + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + response = self.client.patch(url, {'linkedin_url': 'https://www.linkedin.com/in/jojo/'}, format='multipart', encoding='utf-8') self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) self.assertEqual(response.data.get('linkedin_url'), 'https://www.linkedin.com/in/jojo/') - url = '/api/students/' + str(student_id) + "/profile/" response = self.client.patch(url, {'linkedin_url': 'https://linkedin.com/in/jojo/'}, format='multipart', encoding='utf-8') self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED) diff --git a/package-lock.json b/package-lock.json index f6f2a634..e4953d90 100755 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,6 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, - "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -6492,7 +6491,7 @@ "integrity": "sha1-nvxRzhnsVykIayKuiJ5dfQ4lZgE=", "dev": true, "requires": { - "esprima": "github:substack/esprima#is-keyword" + "esprima": "github:substack/esprima#0a7f8489a11b44b019ce168506f535f22d0be290" } }, "fast-deep-equal": { @@ -6835,8 +6834,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -6854,13 +6852,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6873,18 +6869,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -6987,8 +6980,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -6998,7 +6990,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -7011,20 +7002,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -7041,7 +7029,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -7114,8 +7101,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -7125,7 +7111,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -7201,8 +7186,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -7232,7 +7216,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7250,7 +7233,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7289,13 +7271,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, -- GitLab From 30dd5afac6a51ed8b4859e1df7a77b0c0fc41658 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 20:28:28 +0700 Subject: [PATCH 2/7] migrations conflict fix, delete console log --- assets/js/EditProfile.jsx | 2 - assets/js/NotificationPage.jsx | 3 - assets/js/ProfilePage.jsx | 2 - assets/js/components/VacancyList.jsx | 2 - core/migrations/0001_initial.py | 217 +++++++++++++++++++++++++++ 5 files changed, 217 insertions(+), 9 deletions(-) create mode 100644 core/migrations/0001_initial.py diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index e8f155a8..55cb007c 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -98,7 +98,6 @@ export default class EditProfile extends ProfileHandler { : this.props.params.id; return Server.get(`/students/${id}/`).then( (data) => { - console.log("[DATA] => ", data) this.setState({ id: data.id, name: data.full_name, @@ -169,7 +168,6 @@ export default class EditProfile extends ProfileHandler { handleSubmit = (e) => { e.preventDefault(); - console.log('[GITHUB] : ', this.state.form) if (!isFromGithubLinkValid(this.state.form.github_url)) { this.modalAlert.open( 'Pembaharuan profil gagal', diff --git a/assets/js/NotificationPage.jsx b/assets/js/NotificationPage.jsx index 88f510db..38e0a58b 100644 --- a/assets/js/NotificationPage.jsx +++ b/assets/js/NotificationPage.jsx @@ -36,7 +36,6 @@ export default class NotificationPage extends React.Component { } - console.log('Notifikasi'); Storage.set('menu-active-state', 'Notifikasi'); } @@ -51,8 +50,6 @@ export default class NotificationPage extends React.Component { onClickDismiss = (index) => { var array = [...this.state.list]; array.splice(index, 1); - console.log("eh kepencet") - console.log(index) this.setState({ list : array diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index 3ff64541..c189ff34 100755 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -114,8 +114,6 @@ export default class ProfilePage extends ProfileHandler { this.gotoStudentToeflFile = this.gotoStudentToeflFile.bind(this); this.getProfile(); - - console.log('profil'); Storage.set('menu-active-state', 'Profil'); } diff --git a/assets/js/components/VacancyList.jsx b/assets/js/components/VacancyList.jsx index c7cb9833..35916c14 100755 --- a/assets/js/components/VacancyList.jsx +++ b/assets/js/components/VacancyList.jsx @@ -176,8 +176,6 @@ export default class VacancyList extends React.Component { salary={this.props.salary} /> )); - console.log(vacancies); - console.log("ini cuy") vacancies = this.sortVacancies(vacancies); vacancies = this.filterVacanciesBasedOnSalary(vacancies); vacancies = this.filterVacanciesBasedOnVacancyStatus(vacancies); diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 00000000..57524796 --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,217 @@ +# Generated by Django 2.2.8 on 2019-12-06 13:26 + +import core.lib.validators +import core.models.accounts +from django.conf import settings +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Application', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cover_letter', models.TextField(blank=True, null=True)), + ('status', models.IntegerField(default=0)), + ], + ), + migrations.CreateModel( + name='Company', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('description', models.TextField()), + ('founded', models.DateField(blank=True, null=True)), + ('status', models.IntegerField(default=0, validators=[django.core.validators.MaxValueValidator(2), django.core.validators.MinValueValidator(0)])), + ('logo', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_company_logo_file_path, validators=[core.lib.validators.validate_image_file_extension])), + ('address', models.CharField(blank=True, max_length=1000, null=True)), + ('category', models.CharField(default='Belum ada kategori perusahaan', max_length=140)), + ('size', models.IntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)])), + ('website', models.CharField(default='Belum ada link website', max_length=100)), + ('linkedin_url', models.URLField(blank=True, null=True)), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.CreateModel( + name='Recommendation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('content', models.TextField(blank=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.CreateModel( + name='Vacancy', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('verified', models.BooleanField(default=False)), + ('open_time', models.DateTimeField()), + ('description', models.TextField(blank=True)), + ('requirements', models.TextField(blank=True)), + ('responsibilities', models.TextField(blank=True)), + ('close_time', models.DateTimeField()), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('name', models.CharField(max_length=100)), + ('amount', models.IntegerField(null=True)), + ('max_accepted_applicants', models.IntegerField(default=0)), + ('benefits', models.TextField(blank=True)), + ('working_period', models.CharField(max_length=100, null=True)), + ('tag', models.TextField(blank=True)), + ('salary', models.IntegerField(default=0)), + ('recruiter_activity', models.CharField(blank=True, max_length=10, null=True)), + ('office_address', models.TextField(blank=True, default='')), + ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vacancies', to='core.Company')), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.CreateModel( + name='ReasonRejected', + fields=[ + ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='core.Application')), + ('reason', models.TextField(default='Tidak memenuhi kualifikasi perusahaan.')), + ], + ), + migrations.CreateModel( + name='VacancyMilestone', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('detail', models.TextField()), + ('expected_start', models.DateField()), + ('expected_finish', models.DateField()), + ('vacancy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='milestones', to='core.Vacancy')), + ], + ), + migrations.CreateModel( + name='Supervisor', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('nip', models.IntegerField(unique=True, validators=[django.core.validators.MinValueValidator(100000000), django.core.validators.MaxValueValidator(9999999999)])), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.CreateModel( + name='Student', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('npm', models.IntegerField(unique=True, validators=[core.lib.validators.validate_npm])), + ('resume', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_resume_file_path, validators=[django.core.validators.FileExtensionValidator(['pdf'])])), + ('sertifikat', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_sertifikat_file_path, validators=[core.lib.validators.validate_document_file_extension])), + ('phone_number', models.CharField(blank=True, db_index=True, max_length=100, null=True, validators=[django.core.validators.RegexValidator('^0\\d{1,11}$')])), + ('gender', models.CharField(blank=True, max_length=30, null=True)), + ('birth_place', models.CharField(blank=True, max_length=30, null=True)), + ('birth_date', models.DateField(blank=True, null=True)), + ('major', models.CharField(blank=True, max_length=30, null=True)), + ('batch', models.CharField(blank=True, max_length=4, null=True)), + ('show_transcript', models.BooleanField(default=False)), + ('photo', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_photo_file_path, validators=[django.core.validators.FileExtensionValidator(['jpg', 'jpeg', 'png'])])), + ('self_description', models.CharField(blank=True, db_index=True, max_length=500, null=True)), + ('portfolio_link', models.URLField(blank=True, null=True)), + ('linkedin_url', models.URLField(blank=True, null=True)), + ('hackerrank_url', models.URLField(blank=True, null=True)), + ('website_url', models.URLField(blank=True, null=True)), + ('work_experience', models.CharField(blank=True, max_length=500, null=True)), + ('region', models.CharField(blank=True, max_length=30, null=True, validators=[django.core.validators.RegexValidator('^[A-Za-z]+$')])), + ('alamat', models.CharField(blank=True, max_length=50, null=True)), + ('skills', models.CharField(blank=True, max_length=50, null=True)), + ('ui_ux_portofolio', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_ui_ux_portofolio_file_path, validators=[core.lib.validators.validate_document_file_extension])), + ('latest_work', models.CharField(blank=True, max_length=100, null=True)), + ('latest_work_desc', models.TextField(blank=True, null=True)), + ('github_url', models.URLField(blank=True, null=True)), + ('gitlab_url', models.URLField(blank=True, null=True)), + ('intro', models.CharField(blank=True, max_length=50, null=True)), + ('expected_salary', models.CharField(blank=True, max_length=10, null=True, validators=[django.core.validators.RegexValidator('^\\d{0,10}$')])), + ('job_seeking_status', models.CharField(blank=True, max_length=30, null=True)), + ('student_gpa', models.FloatField(blank=True, db_column='student_gpa', default=1.0, null=True, validators=[core.lib.validators.validate_student_gpa])), + ('student_toefl', models.IntegerField(blank=True, db_column='toefl', default=0, null=True, validators=[core.lib.validators.validate_toefl_score])), + ('student_toefl_file', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_toefl_file_path, validators=[django.core.validators.FileExtensionValidator(['pdf'])])), + ('volunteer', models.CharField(blank=True, max_length=100, null=True)), + ('awards', models.CharField(blank=True, max_length=100, null=True)), + ('projects', models.CharField(blank=True, max_length=100, null=True)), + ('certification', models.CharField(blank=True, max_length=100, null=True)), + ('languages', models.CharField(blank=True, max_length=100, null=True, validators=[core.lib.validators.validate_languages_contains_string_type_value])), + ('seminar', models.CharField(blank=True, max_length=100, null=True)), + ('interests', models.CharField(blank=True, max_length=100, null=True)), + ('dependants', models.IntegerField(blank=True, db_column='dependants', default=0, null=True)), + ('related_course', models.CharField(blank=True, max_length=200, null=True)), + ('ielts', models.FloatField(blank=True, db_column='ielts', default=1.0, null=True)), + ('applied_vacancies', models.ManyToManyField(blank=True, related_name='applied_vacancies', through='core.Application', to='core.Vacancy')), + ('bookmarked_vacancies', models.ManyToManyField(blank=True, related_name='bookmarked_vacancies', to='core.Vacancy')), + ('recommendations', models.ManyToManyField(blank=True, related_name='recommendations', to='core.Recommendation')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-updated'], + }, + ), + migrations.AddField( + model_name='recommendation', + name='recommendation_giver', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='giver', to='core.Student'), + ), + migrations.AddField( + model_name='recommendation', + name='recommendation_receiver', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='receiver', to='core.Student'), + ), + migrations.CreateModel( + name='Feedback', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created', models.DateTimeField(auto_now_add=True)), + ('title', models.CharField(blank=True, default='', max_length=100)), + ('content', models.TextField()), + ('companyId', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Company')), + ('studentId', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Student')), + ], + options={ + 'ordering': ['created'], + }, + ), + migrations.AddField( + model_name='application', + name='student', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Student'), + ), + migrations.AddField( + model_name='application', + name='vacancy', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Vacancy'), + ), + migrations.AlterUniqueTogether( + name='recommendation', + unique_together={('recommendation_giver', 'recommendation_receiver')}, + ), + migrations.AlterUniqueTogether( + name='application', + unique_together={('student', 'vacancy')}, + ), + ] -- GitLab From 7422d1e6d73c1b109bae21bd96b33e999ac8de28 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 20:50:10 +0700 Subject: [PATCH 3/7] remove unnecessary console log --- assets/js/components/Pagination.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/js/components/Pagination.jsx b/assets/js/components/Pagination.jsx index 055111ea..0a66bfe3 100755 --- a/assets/js/components/Pagination.jsx +++ b/assets/js/components/Pagination.jsx @@ -53,7 +53,6 @@ export default class Pagination extends React.Component { false, ).then( (data) => { - console.log('GET ITEM DATA'); this.setState({ current: this.state.current + this.state.dir, }); -- GitLab From e2732e35fef247a33398df3367b10fbb2f959d66 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 21:06:45 +0700 Subject: [PATCH 4/7] remove unnecessary console log --- assets/js/NotificationPage.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/js/NotificationPage.jsx b/assets/js/NotificationPage.jsx index 38e0a58b..9dfb1bd3 100644 --- a/assets/js/NotificationPage.jsx +++ b/assets/js/NotificationPage.jsx @@ -66,7 +66,6 @@ export default class NotificationPage extends React.Component { { this.state.list.map(item=>{ id=id+1 - console.log(id) return ( <Notification id={id} -- GitLab From 48b5b44f3cf59bc6473ea14e784de2b74db90c09 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 21:19:46 +0700 Subject: [PATCH 5/7] remove unnecessary console log --- assets/js/NotificationPage.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/js/NotificationPage.jsx b/assets/js/NotificationPage.jsx index 9dfb1bd3..38e0a58b 100644 --- a/assets/js/NotificationPage.jsx +++ b/assets/js/NotificationPage.jsx @@ -66,6 +66,7 @@ export default class NotificationPage extends React.Component { { this.state.list.map(item=>{ id=id+1 + console.log(id) return ( <Notification id={id} -- GitLab From 3b1257b41aff7418fe4dde91aa60ac5978ac4c3a Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 22:06:11 +0700 Subject: [PATCH 6/7] trying to merge --- assets/js/EditProfile.jsx | 66 ------------- core/migrations/0001_initial.py | 2 +- package-lock.json | 160 +++++++++++++++++++------------- 3 files changed, 95 insertions(+), 133 deletions(-) diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index 55cb007c..de0dce46 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -166,72 +166,6 @@ export default class EditProfile extends ProfileHandler { return dateIndexArray.reverse().join(' '); } - handleSubmit = (e) => { - e.preventDefault(); - if (!isFromGithubLinkValid(this.state.form.github_url)) { - this.modalAlert.open( - 'Pembaharuan profil gagal', - 'Pastikan link github yang anda tulis benar.(Berpola : https://github.com/<username>', - ); - } else { - const submitForm = {}; - Object.keys(this.state.form).forEach((key) => { - if (this.state.form[key] !== '') { - submitForm[key] = this.state.form[key]; - } - }); - this.setState({ loading: true }); - Server.submit( - `/students/${this.state.id}/profile/`, - submitForm, - 'PATCH', - ).then( - () => { - this.setState({ loading: false }); - this.modalAlert.open( - 'Profil berhasil diperbaharui', - 'Silakan periksa kembali profil anda', - this.getProfile, - ); - }, - (error) => error.then((r) => { - this.setState({ loading: false }); - this.modalAlert.open('Pembaharuan profil gagal', Dumper.dump(r)); - }), - ); - } - }; - - handleFile = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.files[0]; - this.setState({ form }); - }; - - handleChange = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.value; - this.setState({ form }); - }; - - handleCheckbox = (e, d) => { - const { form } = this.state; - form[d.name] = d.checked; - this.setState({ form, show_transcript: d.checked }); - }; - - handleRadioGender = (e, { value }) => { - const { form } = this.state; - form.gender = value; - this.setState({ form }); - }; - - handleRadio = (e, { value }) => { - const { form } = this.state; - form.job_seeking_status = value; - this.setState({ form }); - }; - updateForm(show) { if (show) { return ( diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 57524796..6078fc9e 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.8 on 2019-12-06 13:26 +# Generated by Django 2.2.8 on 2019-12-06 15:03 import core.lib.validators import core.models.accounts diff --git a/package-lock.json b/package-lock.json index 0829266d..b24883d4 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1749,7 +1749,7 @@ "@babel/plugin-proposal-do-expressions": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.6.0.tgz", - "integrity": "sha1-GSlT/thiDRPRKmH2je/Sb0EFkZM=", + "integrity": "sha512-qJDaoBDbLySwU1tG0jbAomOwz8W1PEiiiK0iLQAnHLr4PYIMVX4ltDGkj3uAKx4HDs1WJ0tozGW1zAQjuTIiWg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1769,7 +1769,7 @@ "@babel/plugin-proposal-export-default-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz", - "integrity": "sha1-LArC3MNuOyRD/q0sPF/HlvsbUUU=", + "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1779,7 +1779,7 @@ "@babel/plugin-proposal-export-namespace-from": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.5.2.tgz", - "integrity": "sha1-zNXtBbBtcAaI/x2wGp3ScVXg0qA=", + "integrity": "sha512-TKUdOL07anjZEbR1iSxb5WFh810KyObdd29XLFLGo1IDsSuGrjH3ouWSbAxHNmrVKzr9X71UYl2dQ7oGGcRp0g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1800,7 +1800,7 @@ "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc=", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1810,7 +1810,7 @@ "@babel/plugin-proposal-logical-assignment-operators": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.2.0.tgz", - "integrity": "sha1-ilzqbEKnyHRGlZ4C//X60BLFb1c=", + "integrity": "sha512-0w797xwdPXKk0m3Js74hDi0mCTZplIu93MOSfb1ZLd/XFe3abWypx1QknVk0J+ohnsjYpvjH4Gwfo2i3RicB6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1820,7 +1820,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz", - "integrity": "sha1-QcNg1ZSB2I4M46P4N98QEhp2mzk=", + "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1830,7 +1830,7 @@ "@babel/plugin-proposal-numeric-separator": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.2.0.tgz", - "integrity": "sha1-ZGhU2vTNIv1nM/YHYBOpNjEEQ6w=", + "integrity": "sha512-DohMOGDrZiMKS7LthjUZNNcWl8TAf5BZDwZAH4wpm55FuJTHgfqPGdibg7rZDmont/8Yg0zA03IgT6XLeP+4sg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1860,7 +1860,7 @@ "@babel/plugin-proposal-optional-chaining": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz", - "integrity": "sha1-6b8fm5uhDHfAMwgtp18Gg4kEGvg=", + "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1870,7 +1870,7 @@ "@babel/plugin-proposal-pipeline-operator": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.5.0.tgz", - "integrity": "sha1-QQDsVe9PakwkkLX1pPKiLfonLAY=", + "integrity": "sha512-HFYuu/yGnkn69ligXxU0ohOVvQDsMNOUJs/c4PYLUVS6ntCYOyGmRQQaSYJARJ9rvc7/ulZKIzxd4wk91hN63A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1880,7 +1880,7 @@ "@babel/plugin-proposal-throw-expressions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.2.0.tgz", - "integrity": "sha1-LZ5FLTcPE5AA5R22XQqF3GDGRzk=", + "integrity": "sha512-adsydM8DQF4i5DLNO4ySAU5VtHTPewOtNBV3u7F4lNMPADFF9bWQ+iDtUUe8+033cYCUz+bFlQdXQJmJOwoLpw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1927,7 +1927,7 @@ "@babel/plugin-syntax-dynamic-import": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI=", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -1963,7 +1963,7 @@ "@babel/plugin-syntax-import-meta": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.2.0.tgz", - "integrity": "sha1-IzPvS4dVU6O80ek/jrwJ9bkhOkA=", + "integrity": "sha512-Hq6kFSZD7+PHkmBN8bCpHR6J8QEoCuEV/B38AIQscYjgMZkGlXB7cHNFzP5jR4RCh5545yP1ujHdmO7hAgKtBA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" @@ -3067,7 +3067,7 @@ "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -3349,7 +3349,7 @@ "axios": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "requires": { "follow-redirects": "1.5.10", "is-buffer": "^2.0.2" @@ -3366,7 +3366,7 @@ "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" } @@ -3374,7 +3374,7 @@ "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=" + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" } } }, @@ -3401,7 +3401,7 @@ "babel-core": { "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=", "dev": true, "requires": { "babel-code-frame": "^6.26.0", @@ -3428,7 +3428,7 @@ "babel-eslint": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo=", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3442,7 +3442,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -3489,7 +3489,7 @@ "babel-loader": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", "dev": true, "requires": { "find-cache-dir": "^2.0.0", @@ -3516,7 +3516,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -3533,7 +3533,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true } } @@ -4512,7 +4512,7 @@ "compression-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.0.0.tgz", - "integrity": "sha1-CX0uTZXDoUy1yO0giZAJq1ubvKA=", + "integrity": "sha512-ls+oKw4eRbvaSv/hj9NmctihhBcR26j76JxV0bLRLcWhrUBdQFgd06z/Kgg7exyQvtWWP484wZxs0gIUX3NO0Q==", "requires": { "cacache": "^11.2.0", "find-cache-dir": "^3.0.0", @@ -4525,7 +4525,7 @@ "cacache": { "version": "11.3.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha1-i9Kd+ManGKbr0tAQ2k15cq47utw=", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "requires": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -4546,7 +4546,7 @@ "find-cache-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha1-zUt92Xtxhbfhfb/i1uQRXuPuuPw=", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", "requires": { "commondir": "^1.0.1", "make-dir": "^3.0.0", @@ -5768,7 +5768,7 @@ "eslint-config-airbnb": { "version": "18.0.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz", - "integrity": "sha1-o6dMwptGQTtglpZQJTgd+PuQhVk=", + "integrity": "sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ==", "dev": true, "requires": { "eslint-config-airbnb-base": "^14.0.0", @@ -5858,7 +5858,7 @@ "eslint-plugin-import": { "version": "2.18.2", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", - "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "integrity": "sha1-AvEYC5Cwd7M9RHoXojJs60AKzrY=", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -5887,7 +5887,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5898,7 +5898,7 @@ "eslint-plugin-jsx-a11y": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha1-uHKgnV3lGvcKl9se6n3JMwQ3CKo=", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", "dev": true, "requires": { "@babel/runtime": "^7.4.5", @@ -5915,7 +5915,7 @@ "eslint-plugin-react": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha1-mSjk8+ISLtO6altW0DA7o+QdjAk=", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -5932,7 +5932,7 @@ "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -5941,7 +5941,7 @@ "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5952,7 +5952,7 @@ "eslint-plugin-react-hooks": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha1-YhC21aNyBfC5KFj4laToJwIKfQQ=" + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" }, "eslint-scope": { "version": "4.0.3", @@ -5988,7 +5988,7 @@ "eslint-watch": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/eslint-watch/-/eslint-watch-6.0.1.tgz", - "integrity": "sha1-4Jg5FlinwUjeyhcq0glQZa2gU1k=", + "integrity": "sha512-tWT6gQQWzGVn4KMs6ZAdG+nkNNQHg+c6wGdw/mwhp+jWyA7OWEOLxQnRhrP34ddJjpgDafhHOHBNtpVOtXXv4g==", "dev": true, "requires": { "chokidar": "^3.1.1", @@ -6008,7 +6008,7 @@ "core-js": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha1-zUHzhTTabMWffbBQ/mcwfemGiwk=", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, "cross-spawn": { @@ -6025,7 +6025,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -6034,7 +6034,7 @@ "execa": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", - "integrity": "sha1-5dPs2DfSpg7FDz2nj9OXZ3R7vpk=", + "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -6543,7 +6543,7 @@ "fetch-mock": { "version": "5.13.1", "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-5.13.1.tgz", - "integrity": "sha512-eWUo2KI4sRGnRu8tKELCBfasALM5BfvrCxdI7J02j3eUM9mf+uYzJkURA0PSn/29JVapVrYFm+z+9XijXu1PdA==", + "integrity": "sha1-lVeUp389ly8WRLms5loP39YPHfc=", "requires": { "glob-to-regexp": "^0.3.0", "node-fetch": "^1.3.3", @@ -8273,7 +8273,7 @@ "isparta": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.1.1.tgz", - "integrity": "sha512-kGwkNqmALQzdfGhgo5o8kOA88p14R3Lwg0nfQ/qzv4IhB4rXarT9maPMaYbo6cms4poWbeulrlFlURLUR6rDwQ==", + "integrity": "sha1-yS5JZylGkU7FQHyAEWDzN04LfLQ=", "dev": true, "requires": { "babel-core": "^6.1.4", @@ -8290,7 +8290,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", "dev": true } } @@ -8532,7 +8532,7 @@ "istanbul-instrumenter-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha1-mVe9WSUrNz+uXFK3tRiOb94qCUk=", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", "dev": true, "requires": { "convert-source-map": "^1.5.0", @@ -8583,7 +8583,7 @@ "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -8898,7 +8898,7 @@ "karma-chrome-launcher": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha1-gFpYZ5mk0F9OVPcqIEl58/MGZzg=", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", "dev": true, "requires": { "which": "^1.2.1" @@ -8918,7 +8918,7 @@ "karma-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.1.tgz", - "integrity": "sha1-8CTxkfDxNd7iQDdjrDbMUqrCeaw=", + "integrity": "sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ==", "dev": true, "requires": { "dateformat": "^1.0.6", @@ -8936,13 +8936,13 @@ "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-instrument": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha1-pfY9kfC7wMPkee9MXeAnM17G1jA=", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { "@babel/generator": "^7.4.0", @@ -8965,7 +8965,7 @@ "karma-coverage-istanbul-reporter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz", - "integrity": "sha1-XxvME8XhTuHZGCHuiUaGFnT1THU=", + "integrity": "sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==", "dev": true, "requires": { "istanbul-api": "^2.1.6", @@ -8975,7 +8975,7 @@ "karma-firefox-launcher": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", - "integrity": "sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ==", + "integrity": "sha1-ZP4D3RAwD5dU1I+ev78x9slKIAw=", "dev": true, "requires": { "is-wsl": "^2.1.0" @@ -9027,7 +9027,7 @@ "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -9067,7 +9067,7 @@ "karma-webpack": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-4.0.2.tgz", - "integrity": "sha1-IyGb2VvdqFPjBz04dNNER8d7ztA=", + "integrity": "sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -9113,7 +9113,7 @@ "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -10090,7 +10090,7 @@ "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "integrity": "sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=" }, "moo": { "version": "0.4.3", @@ -11281,10 +11281,29 @@ "prop-types": "^15.6.2" } }, + "react-async-script": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.1.1.tgz", + "integrity": "sha512-pmgS3O7JcX4YtH/Xy//NXylpD5CNb5T4/zqlVUV3HvcuyOanatvuveYoxl3X30ZSq/+q/+mSXcNS8xDVQJpSeA==", + "requires": { + "hoist-non-react-statics": "^3.3.0", + "prop-types": "^15.5.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==", + "requires": { + "react-is": "^16.7.0" + } + } + } + }, "react-chartjs-2": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.8.0.tgz", - "integrity": "sha1-HCTekfs3VfjEMCZ13n1m/dozl1k=", + "integrity": "sha512-BPpC+qfnh37DkcXvxRwA1rdD9rX/0AQrwru4VZTLofCCuZBwRsc7PbfxjilvoB6YlHhorwZu40YDWEQkoz7xfQ==", "requires": { "lodash": "^4.17.4", "prop-types": "^15.5.8" @@ -11293,7 +11312,7 @@ "react-ckeditor-wrapper": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/react-ckeditor-wrapper/-/react-ckeditor-wrapper-1.1.2.tgz", - "integrity": "sha512-/COVfezpSKFQxC/OjFoZf1PyzxTvUxzndlpGjEcajzjRgKPzSFZiCoh/VqqwGaaHJROO9pePQ9JxmJy2YlzDAQ==", + "integrity": "sha1-cvDGgo4X6mNxXV6YNvOrovhIfPM=", "requires": { "babel-runtime": "6.x", "classnames": "2.x", @@ -11306,7 +11325,7 @@ "react-datepicker": { "version": "0.60.2", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-0.60.2.tgz", - "integrity": "sha1-EIPcHLn/BjK8oywDmYz4PuHOLgE=", + "integrity": "sha512-5WNtLhozO5i6iGlcgpvjP/Wu4l7RqvTC48CEE/pS1juUny/T4juYHSv53mo+Z90qO4qfyUj59jECTT8AIwAVRQ==", "requires": { "classnames": "^2.2.5", "moment": "^2.17.1", @@ -11332,10 +11351,19 @@ "scheduler": "^0.18.0" } }, + "react-google-recaptcha": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-2.0.1.tgz", + "integrity": "sha512-4Y8awVnarn7+gdVpu8uvSmRJzzlMMoXqdhLoyToTOfVK6oM+NaChNI8NShnu75Q2YGHLvR1IA1FWZesuYHwn5w==", + "requires": { + "prop-types": "^15.5.0", + "react-async-script": "^1.1.1" + } + }, "react-hot-loader": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", - "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==", + "integrity": "sha1-b5KHcyaVjHywE0tRJHRReGkSYII=", "dev": true, "requires": { "global": "^4.3.0", @@ -11348,7 +11376,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } } @@ -11863,7 +11891,7 @@ "semantic-ui-react": { "version": "0.79.1", "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.79.1.tgz", - "integrity": "sha1-gL0Mz7OzwRhKGxs/YGerEiWu1fA=", + "integrity": "sha512-Z/QHE/h+l4MrZMilKe7RCBv6wPSBopcwRh5fPPZ1Cavxw4703XizJ3m+g7qcYXa5F40NnM0LKaVDuaReJ0f/3w==", "requires": { "babel-runtime": "^6.25.0", "classnames": "^2.2.5", @@ -12576,7 +12604,7 @@ "starwars": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/starwars/-/starwars-1.0.1.tgz", - "integrity": "sha512-d23qkhEuFNlHas4/w2J6ZF6qS7jqy8OK4N3gfQbtTk/5Lt1wKe+xv0cIweuNxwtwBGVXvmsLV2mdUOBKfj12cA==" + "integrity": "sha1-+OIWt4KUs/y/ytJbRPJxF543U9U=" }, "static-extend": { "version": "0.1.2", @@ -13129,7 +13157,7 @@ "uglifyjs-webpack-plugin": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", - "integrity": "sha1-51vIDn8ZN/cllUybTFoeln6p0Nc=", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", @@ -13150,7 +13178,7 @@ "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -13221,12 +13249,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "uglify-js": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz", - "integrity": "sha1-rnaIxQ4b3PL3Cg4WJBAAPPl5gxE=", + "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==", "requires": { "commander": "2.20.0", "source-map": "~0.6.1" @@ -13235,7 +13263,7 @@ "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -13695,7 +13723,7 @@ "webpack-bundle-tracker": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-0.4.3.tgz", - "integrity": "sha1-SKPiIm3bnSTXBGQKtBaMLRIPRSY=", + "integrity": "sha512-Sl/+OsNhFAH3/c6XADupRu8jLvGojfXX0pZIIm3O5ZcJqkHHqlY4nLG+NVRcbDgM/jOeWimKDGQMVEa8FBeJ2g==", "requires": { "deep-extend": "^0.6.0", "mkdirp": "^0.5.1", @@ -13710,7 +13738,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" } -- GitLab From 578d34910d7046159f90dc1ca95542f672b5b6d9 Mon Sep 17 00:00:00 2001 From: Misael Jonathan <misaeljonathan17@gmail.com> Date: Fri, 6 Dec 2019 22:31:31 +0700 Subject: [PATCH 7/7] trying to merge --- core/migrations/0001_initial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py index 6078fc9e..68677129 100644 --- a/core/migrations/0001_initial.py +++ b/core/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.8 on 2019-12-06 15:03 +# Generated by Django 2.2.8 on 2019-12-06 15:30 import core.lib.validators import core.models.accounts -- GitLab