Compare commits

...

966 Commits

Author SHA1 Message Date
Jannat Patel
f01e634445 docs: grammar correction in readme 2022-12-30 17:06:04 +05:30
Jannat Patel
1564de346d docs: improved readme 2022-12-30 12:56:41 +05:30
Jannat Patel
a5268af269 Merge pull request #459 from pateljannat/onboarding-fixes 2022-12-29 16:43:14 +05:30
Jannat Patel
565d9e093c fix: onboarding header 2022-12-29 16:29:03 +05:30
Jannat Patel
cb75606b05 Merge pull request #458 from pateljannat/lesson-issues 2022-12-29 14:39:23 +05:30
Jannat Patel
7c36294359 fix: removed unnecessary code 2022-12-29 11:32:31 +05:30
Jannat Patel
ad084389cc fix: minor issues 2022-12-29 11:31:52 +05:30
Jannat Patel
aa8c65a00a Merge pull request #454 from pateljannat/course-count 2022-12-28 15:29:06 +05:30
Jannat Patel
95ec31e238 fix: formatting 2022-12-28 15:10:01 +05:30
Jannat Patel
b5f3a0fa98 feat: course count in list view 2022-12-28 13:13:03 +05:30
Jannat Patel
36bf0d7fb9 fix: rectified condition for login redirection 2022-12-28 11:07:37 +05:30
Jannat Patel
1719887ac4 Merge pull request #453 from pateljannat/setup-wizard-check-on-login 2022-12-27 17:39:06 +05:30
Jannat Patel
7f149bf3b1 fix: login redirect condition 2022-12-27 17:06:41 +05:30
Jannat Patel
f592e6655f fix: docker setup 2022-12-27 16:36:40 +05:30
Jannat Patel
46399c7b13 revert: docker setup 2022-12-27 15:44:12 +05:30
Jannat Patel
0ec66f0f2d fix: docker setup 2022-12-27 15:17:33 +05:30
Jannat Patel
96c8b64e26 Merge pull request #452 from pateljannat/search 2022-12-26 16:46:46 +05:30
Jannat Patel
bd0b7a8286 fix: removed unused code 2022-12-26 13:56:03 +05:30
Jannat Patel
263b3ec476 fix: formatting 2022-12-26 13:27:57 +05:30
Jannat Patel
46075130ab fix: search ux 2022-12-26 13:24:29 +05:30
Jannat Patel
0f314bc4e3 feat: new search ui 2022-12-22 15:47:03 +05:30
Jannat Patel
2b45e7d77c Merge pull request #450 from pateljannat/onboarding-signup 2022-12-21 12:04:49 +05:30
Jannat Patel
987c3e5fe2 Merge pull request #451 from mohsinalimat/main 2022-12-21 10:59:33 +05:30
Jannat Patel
1e1580d58a fix: patch format 2022-12-21 10:40:30 +05:30
Jannat Patel
da9667e1f7 feat: base template and patch for onboarding 2022-12-20 13:32:30 +05:30
Jannat Patel
9e42fdd786 feat: skip onboarding 2022-12-20 11:34:56 +05:30
Jannat Patel
de19abbc5e feat: onboarding ui 2022-12-19 23:25:53 +05:30
MohsinAli
5448a99177 fix: doc url 2022-12-17 17:01:00 +05:30
Jannat Patel
f93d7b0193 signup-and-onboarding 2022-12-16 16:44:55 +05:30
Jannat Patel
d3bda1b5d0 Merge pull request #449 from pateljannat/revert-navbar-settings 2022-12-15 10:35:16 +05:30
Jannat Patel
1c49e78b13 revert: navbar settings 2022-12-15 10:28:17 +05:30
Jannat Patel
9d373d4091 Merge pull request #446 from pateljannat/navbar-settings
Resolves https://github.com/frappe/lms/issues/442
2022-12-12 13:55:31 +05:30
Jannat Patel
26edfc7bb9 fix: remove after_install hook 2022-12-12 13:47:48 +05:30
Jannat Patel
b527c9b160 fix: format 2022-12-12 13:39:01 +05:30
Jannat Patel
0356b8e2d2 feat: pages to navbar settings 2022-12-12 13:31:11 +05:30
Jannat Patel
1bf093d1b9 Merge pull request #443 from pateljannat/course-redirection-issue 2022-12-12 11:37:33 +05:30
Jannat Patel
a78d127702 fix: formatting 2022-12-12 11:28:38 +05:30
Jannat Patel
028c0725c3 fix: hide start learning when no lesson in course 2022-12-12 11:17:51 +05:30
Jannat Patel
424d35bf42 fix: course outline style 2022-12-07 16:06:55 +05:30
Jannat Patel
1effdd8482 Merge pull request #441 from pateljannat/rename-instructor-to-course-creator 2022-12-02 23:46:31 +05:30
Jannat Patel
a780b7520f fix: rename instructor role to course creator 2022-12-01 15:22:18 +05:30
Jannat Patel
233bf36ef6 Merge pull request #440 from pateljannat/rename-skill 2022-12-01 15:03:01 +05:30
Jannat Patel
616a45ebc5 fix: linter 2022-12-01 13:13:01 +05:30
Jannat Patel
136f16c9cc fix: renamed skill doctype to user skill 2022-12-01 12:48:33 +05:30
Jannat Patel
609628b9cf fix: progress page style 2022-11-29 16:18:15 +05:30
Jannat Patel
1e0d2e0f2a Merge pull request #436 from pateljannat/optimisation 2022-11-28 14:44:12 +05:30
Jannat Patel
da7e52f85f perf: course card improvements 2022-11-28 12:40:07 +05:30
Jannat Patel
4640ce82f6 docs: updated readme 2022-11-28 10:26:37 +05:30
Jannat Patel
03ff9e0521 Merge pull request #434 from pateljannat/student-class-view 2022-11-28 10:13:41 +05:30
Jannat Patel
f566211d82 feat: students view for classes 2022-11-25 17:46:46 +05:30
Jannat Patel
66ddea2031 Merge pull request #433 from pateljannat/activity-details 2022-11-25 09:29:54 +05:30
Jannat Patel
8b5a9e1639 fix: removed unnecessary lines of code 2022-11-25 09:21:59 +05:30
Jannat Patel
9a183d2ef1 fix: removed quiz result view 2022-11-25 09:02:19 +05:30
Jannat Patel
807f77755e feat: activity details in class 2022-11-24 18:57:45 +05:30
Jannat Patel
c0a851e045 Merge pull request #432 from pateljannat/class-evaluations 2022-11-23 15:24:39 +05:30
Jannat Patel
96849afcba fix: formatting 2022-11-23 15:14:15 +05:30
Jannat Patel
91e71091ef fix: show evaluation in read only mode 2022-11-23 15:12:57 +05:30
Jannat Patel
f691ebd146 feat: class evaluation 2022-11-23 14:39:18 +05:30
Jannat Patel
f620c431a1 Merge pull request #431 from pateljannat/last-active 2022-11-23 09:52:36 +05:30
Jannat Patel
019743b245 fix: formating 2022-11-22 08:46:39 +05:30
Jannat Patel
1d8e3de136 feat: last active time of class students 2022-11-22 08:43:12 +05:30
Jannat Patel
0f46f6a1c1 Merge pull request #429 from pateljannat/classes 2022-11-21 14:08:29 +05:30
Jannat Patel
b5078c1f1f fix: removed unused file 2022-11-21 13:36:37 +05:30
Jannat Patel
88f9114dd6 ci: updated flake8 url 2022-11-21 12:33:26 +05:30
Jannat Patel
cfcc1b3162 fix: formatting 2022-11-21 12:27:52 +05:30
Jannat Patel
ed2fababff feat: assignment comments display 2022-11-21 12:08:17 +05:30
Jannat Patel
74210245cf feat: assignment submission and ui 2022-11-18 17:05:38 +05:30
Jannat Patel
a4ec058a81 feat: student progress 2022-11-16 18:43:10 +05:30
Jannat Patel
ae2c15fe8c feat: progress page 2022-11-15 18:56:45 +05:30
Jannat Patel
d9e44e0f91 fix: renamed instructor and moderator roles 2022-11-14 17:25:07 +05:30
Jannat Patel
3e1f29af48 feat: add and remove students and courses from class 2022-11-14 16:20:13 +05:30
Jannat Patel
7ac3f6d8ef Merge branch 'main' of https://github.com/frappe/lms into classes 2022-11-11 12:00:12 +05:30
Jannat Patel
e0f2b9c1ab Merge pull request #428 from pateljannat/lesson-chart 2022-11-11 10:54:52 +05:30
Jannat Patel
3785e7066e fix: formatting 2022-11-11 10:46:35 +05:30
Jannat Patel
157f6b45e9 feat: add pages to nav after install 2022-11-11 10:40:29 +05:30
Jannat Patel
c8dbc18179 feat: statistics page 2022-11-10 20:21:43 +05:30
Jannat Patel
1d5d86ef6c feat: claasses 2022-11-09 16:36:26 +05:30
Jannat Patel
f1746978b2 Merge pull request #427 from pateljannat/more-stats 2022-11-09 15:33:34 +05:30
Jannat Patel
e1f4dae832 fix: linting 2022-11-09 15:27:42 +05:30
Jannat Patel
94e7f6a1f4 feat: course and lesson completion count 2022-11-09 15:21:08 +05:30
Jannat Patel
d3ea923da7 fix: profile button visibility 2022-11-09 11:42:16 +05:30
Jannat Patel
dc27dd5d7e Merge pull request #425 from pateljannat/stats-format 2022-11-08 11:55:36 +05:30
Jannat Patel
26f76acdd2 fix: format stats 2022-11-08 11:29:46 +05:30
Jannat Patel
719a32e4a5 Merge pull request #424 from pateljannat/workspace-links 2022-11-07 18:59:59 +05:30
Jannat Patel
cdf004cdec fix: workspace links 2022-11-07 18:50:43 +05:30
Jannat Patel
9d5f495842 Merge pull request #422 from pateljannat/semgrep 2022-11-04 13:54:08 +05:30
Jannat Patel
8204fa8ee7 test: slugify issue 2022-11-04 13:48:12 +05:30
Jannat Patel
9f9dd25f91 fix: translations 2022-11-04 13:39:25 +05:30
Jannat Patel
bd929bfa3f fix: translations 2022-11-04 13:27:14 +05:30
Jannat Patel
5916695d30 ci: removed isort 2022-11-04 12:57:24 +05:30
Jannat Patel
cca42dca49 ci: flake8 issues 2022-11-04 12:43:15 +05:30
Jannat Patel
33065c0ed3 fix: pre commit in profile 2022-11-04 11:49:25 +05:30
Jannat Patel
603eddf878 fix: pre commit issues 2022-11-04 11:47:09 +05:30
Jannat Patel
cda26ab248 ci: test pre commit 2022-11-04 11:37:59 +05:30
Jannat Patel
e73d59d538 ci: pre commit yaml 2022-11-04 11:25:35 +05:30
Jannat Patel
893fac348d ci: pre commit config 2022-11-04 11:22:52 +05:30
Jannat Patel
642b28bad9 Merge pull request #421 from pateljannat/tabs-url 2022-11-04 11:17:23 +05:30
Jannat Patel
b9db14ad44 ci: semgrep 2022-11-04 11:14:37 +05:30
Jannat Patel
0c23ead398 fix: tab urls 2022-11-04 10:46:48 +05:30
Jannat Patel
e9009dcb9c fix: quiz button mayout 2022-11-03 15:23:16 +05:30
Jannat Patel
0d0e64f930 fix: no cache for quiz 2022-11-03 15:01:06 +05:30
Jannat Patel
b1bdf6516e fix: removed unused field 2022-11-03 14:21:06 +05:30
Jannat Patel
eca4f89d8b Merge pull request #419 from pateljannat/course-permission-messages 2022-11-03 11:27:46 +05:30
Jannat Patel
199cbcf33f fix: messages if access lacking 2022-11-03 11:20:58 +05:30
Jannat Patel
1f4c7fcb0f fix: course permission messages 2022-11-03 10:59:39 +05:30
Jannat Patel
59b8c781e3 fix: assignment issues 2022-11-01 14:39:30 +05:30
Jannat Patel
9133a3f50b fix: batch issue 2022-11-01 12:12:08 +05:30
Jannat Patel
b9f4ba6527 Merge pull request #417 from pateljannat/assignments-refactor 2022-10-31 17:22:36 +05:30
Jannat Patel
7b5fe82de9 fix: removed unused field and code 2022-10-31 17:17:46 +05:30
Jannat Patel
d74db85b82 fix: validations 2022-10-31 16:54:22 +05:30
Jannat Patel
915bbdf247 fix: batch context 2022-10-31 11:50:36 +05:30
Jannat Patel
b3412b42b7 refactor: assignments 2022-10-28 19:22:48 +05:30
Jannat Patel
c6b917fa83 Merge branch 'main' of https://github.com/frappe/lms 2022-10-27 17:40:31 +05:30
Jannat Patel
c286afa45f fix: stats graph for the current day 2022-10-27 17:40:27 +05:30
Jannat Patel
c74faa3340 Merge pull request #412 from pateljannat/user-onboarding 2022-10-27 13:38:32 +05:30
Jannat Patel
fa4e8a1ea6 Merge pull request #413 from pateljannat/stats-template 2022-10-27 11:33:49 +05:30
Jannat Patel
42c664a379 Merge pull request #416 from pateljannat/cohort-fixes 2022-10-27 11:31:38 +05:30
Jannat Patel
b84a955ee1 fix: cohorts 2022-10-27 11:23:44 +05:30
Jannat Patel
211ca3111f fix: stats template 2022-10-21 11:00:37 +05:30
Jannat Patel
935e2a976e fix: certifications section in workspace 2022-10-20 20:09:12 +05:30
Jannat Patel
5d38b4dfa0 feat: onboarding 2022-10-20 17:41:26 +05:30
Jannat Patel
cbf852828c Merge pull request #409 from pateljannat/reviews-cta 2022-10-19 17:52:49 +05:30
Jannat Patel
7d8b366a73 fix: reviews CTA 2022-10-19 17:29:05 +05:30
Jannat Patel
4ad457d568 chore: fix subscription limit for course members 2022-10-19 09:56:22 +05:30
Jannat Patel
2ab0cb2787 Merge pull request #406 from pateljannat/stats 2022-10-18 09:52:45 +05:30
Jannat Patel
4feab27c59 fix: show stats to guest users 2022-10-18 09:42:29 +05:30
Jannat Patel
3c1449c898 fix: import chart lib from website bundle 2022-10-17 19:47:11 +05:30
Jannat Patel
7d029c5305 fix: stats grid width 2022-10-17 11:26:47 +05:30
Jannat Patel
13274c01d7 fix: chart color 2022-10-17 10:56:06 +05:30
Jannat Patel
f37229c202 feat: statistics section 2022-10-14 20:33:27 +05:30
Jannat Patel
61f9ff6892 Merge pull request #405 from pateljannat/cohorts 2022-10-13 20:51:46 +05:30
Jannat Patel
3df08b99b3 fix: cohort translations 2022-10-13 17:28:22 +05:30
Jannat Patel
f9748cb723 fix: cohort issue 2022-10-13 17:12:13 +05:30
Jannat Patel
437f637be9 Merge pull request #404 from pateljannat/start-learning-issue 2022-10-13 13:19:39 +05:30
Jannat Patel
7d2b86c548 fix: dont show start learning from course page if disabled 2022-10-13 13:04:22 +05:30
Jannat Patel
c10ff68ee7 Merge pull request #383 from joebordes/i18n_es_001 2022-10-13 12:33:09 +05:30
Jannat Patel
b2a8dd13f6 Merge pull request #402 from pateljannat/dashboard-profile-merge 2022-10-12 15:55:21 +05:30
Jannat Patel
fb8ab132e9 fix: heading for course list page 2022-10-12 11:14:02 +05:30
Jannat Patel
7ce2e45719 Merge branch 'main' of https://github.com/frappe/lms into dashboard-profile-merge 2022-10-12 10:53:38 +05:30
Jannat Patel
c6d15d2605 Merge pull request #401 from pateljannat/ui-components 2022-10-12 10:53:12 +05:30
Jannat Patel
8d57ea4216 fix: better modal UI 2022-10-12 10:44:28 +05:30
Jannat Patel
fdf1bbd1e2 refactor: merged profile and dashboard page 2022-10-11 17:23:36 +05:30
Jannat Patel
662813b378 Merge pull request #400 from pateljannat/quiz-submission 2022-10-11 10:13:18 +05:30
Jannat Patel
8709ae7113 fix: quiz submission 2022-10-11 09:53:21 +05:30
Jannat Patel
ac22b71171 Merge pull request #397 from pateljannat/misc-fixes 2022-10-10 15:47:12 +05:30
Jannat Patel
328d1d6546 fix: label of login button in review section 2022-10-10 13:31:15 +05:30
Jannat Patel
11277d2ef3 fix: misc ux 2022-10-10 13:11:49 +05:30
Jannat Patel
54dc6102a6 Merge pull request #395 from pateljannat/delete-custom-fields-on-uninstall 2022-10-07 10:07:16 +05:30
Jannat Patel
c0c9b50a5f fix: delete custom fields after app in uninstalled 2022-10-06 18:08:27 +05:30
Jannat Patel
e780a6fc7c fix: get course directly from lesson for assignment folder 2022-10-04 19:23:51 +05:30
Jannat Patel
fd89b288e5 fix: username validation 2022-10-04 18:11:55 +05:30
joebordes
a05c3a5e94 i18n(ES) syntax and CSV format 2022-10-02 03:19:12 +02:00
Jannat Patel
43e91c9275 Merge pull request #382 from pateljannat/lms-statistics 2022-09-30 11:17:32 +05:30
Jannat Patel
26dd2935d7 fix: renamed dashboard stats to LMS Statistics 2022-09-30 10:51:51 +05:30
Jannat Patel
f653871e3a fix: duplicate function names 2022-09-29 18:30:45 +05:30
Jannat Patel
89b91a081c fix: course restriction condition 2022-09-29 18:02:50 +05:30
Jannat Patel
246b26079b perf: course cards get all memberships at once 2022-09-29 16:59:08 +05:30
Jannat Patel
41a9e422d5 fix: course list page performance 2022-09-29 13:19:09 +05:30
Jannat Patel
0704d7f4a4 Merge pull request #381 from pateljannat/dashboard-stats 2022-09-29 09:04:15 +05:30
Jannat Patel
1e66742d02 fix: batch creation error 2022-09-28 21:55:35 +05:30
Jannat Patel
d55f827d93 feat: dashboard stat 2022-09-28 18:34:14 +05:30
Jannat Patel
40c68d4d63 Merge pull request #380 from pateljannat/progress-refactor 2022-09-28 12:58:15 +05:30
Jannat Patel
5c58ddc800 fix: progress tracking 2022-09-28 12:42:15 +05:30
Jannat Patel
94171cbc0e Merge pull request #379 from pateljannat/notifications 2022-09-27 18:22:40 +05:30
Jannat Patel
cf8549bb28 fix: removed unused functions 2022-09-27 18:21:57 +05:30
Jannat Patel
a291d73828 feat: show notifications from logs 2022-09-27 18:13:46 +05:30
Jannat Patel
a6156ec863 feat: get notifications 2022-09-26 22:09:18 +05:30
Jannat Patel
be583cc86d fix: conflicts 2022-09-26 09:45:16 +05:30
Jannat Patel
00c55f5e82 Merge branch 'main' of https://github.com/frappe/lms 2022-09-23 07:12:16 +05:30
Jannat Patel
c9fd1f5252 fix: discussions component visibility conditions 2022-09-23 07:12:12 +05:30
Jannat Patel
992d1065ac Merge pull request #378 from pateljannat/subscription 2022-09-22 22:18:09 +05:30
Jannat Patel
247017d19a fix: changed essential plan to pro 2022-09-21 20:38:56 +05:30
Jannat Patel
b9fe05c27f feat: subscription add ons 2022-09-21 17:37:56 +05:30
Jannat Patel
b01a2cfd79 Merge pull request #377 from pateljannat/private-files 2022-09-20 15:39:07 +05:30
Jannat Patel
37f2e7eeda fix: check if path is present 2022-09-19 17:56:49 +05:30
Jannat Patel
4ba6ea9190 fix: removed unnecessary import 2022-09-19 10:34:49 +05:30
Jannat Patel
7c1c061681 fix: change private files to public for company logo, user image and course image 2022-09-16 19:06:53 +05:30
Jannat Patel
47e4175c9a Merge pull request #376 from pateljannat/ux-fix 2022-09-16 16:10:49 +05:30
Jannat Patel
023fd73b86 fix: removed unused classes 2022-09-16 16:05:33 +05:30
Jannat Patel
f7ba72217b fix: controls script loading 2022-09-16 11:37:11 +05:30
Jannat Patel
47b9b1dcd6 fix: show first chapter and question form by default 2022-09-15 22:52:17 +05:30
Jannat Patel
f3adbfef55 Merge pull request #375 from pateljannat/fixes 2022-09-14 20:42:54 +05:30
Jannat Patel
bc9225f8ed fix: course count on profile page 2022-09-14 20:07:58 +05:30
Jannat Patel
62ac0089c9 fix: misc ux 2022-09-14 17:10:38 +05:30
Jannat Patel
af059141f0 fix: profile ux 2022-09-13 17:48:54 +05:30
Jannat Patel
efe73a21d9 fix: profile ui 2022-09-13 17:13:25 +05:30
Jannat Patel
adad299724 Merge pull request #374 from pateljannat/certificate-on-profile 2022-09-13 13:11:38 +05:30
Jannat Patel
15b832eefb fix: styles 2022-09-13 13:03:21 +05:30
Jannat Patel
434b6fdc8f Merge pull request #373 from pateljannat/description-field 2022-09-13 12:49:40 +05:30
Jannat Patel
99c886a9cb fix: conflicts 2022-09-13 12:49:06 +05:30
Jannat Patel
7d18215bc9 feat: certificates section in profile 2022-09-13 12:47:01 +05:30
Jannat Patel
7d7f674d9e fix: empty states 2022-09-12 18:17:06 +05:30
Jannat Patel
46861486c9 fix: text editor for description field 2022-09-12 13:00:51 +05:30
Jannat Patel
d959cacd15 Merge pull request #372 from pateljannat/course-moderator 2022-09-12 12:35:44 +05:30
Jannat Patel
d8d0ce5b45 fix: empty state for review section 2022-09-12 12:15:30 +05:30
Jannat Patel
b94a4ef9d6 feat: role settings from profile 2022-09-12 12:06:36 +05:30
Jannat Patel
212ed8e428 feat: course settings from website 2022-09-09 18:16:02 +05:30
Jannat Patel
6d14bc2f54 fix: encode course image 2022-09-09 16:04:53 +05:30
Jannat Patel
9dc10c3756 feat: allow moderators to edit course 2022-09-09 15:37:35 +05:30
Jannat Patel
316e7be51e Merge branch 'main' of https://github.com/frappe/lms into course-moderator 2022-09-09 11:54:39 +05:30
Jannat Patel
14842a6d56 Merge pull request #371 from pateljannat/ui-fix 2022-09-06 13:12:33 +05:30
Jannat Patel
ce7f3ffca9 fix: no preview message 2022-09-06 11:38:40 +05:30
Jannat Patel
4c969420f3 feat: course moderator 2022-09-06 11:19:11 +05:30
Jannat Patel
36aca1e664 fix: ui for review, instructors and profile 2022-09-05 18:05:16 +05:30
Jannat Patel
3a08f57fb1 fix: context for dashboard 2022-09-05 14:53:13 +05:30
Jannat Patel
8f86a8aba6 chore: removed log 2022-09-05 14:46:40 +05:30
Jannat Patel
e84e02ff07 fix: profile, dashboard and tests 2022-09-05 13:32:51 +05:30
Jannat Patel
7ef625c598 chore: logging user 2022-09-05 11:35:21 +05:30
Jannat Patel
2819e55a61 fix: dashboard function parameters 2022-09-05 10:34:40 +05:30
Jannat Patel
25d9b08dd5 Merge pull request #370 from pateljannat/dashboard 2022-09-05 09:32:16 +05:30
Jannat Patel
6a760c3019 chore: removed logs 2022-09-05 09:25:00 +05:30
Jannat Patel
8088a464ad fix: dashboard creators section issue 2022-09-05 09:16:57 +05:30
Jannat Patel
e41c83a68c fix: spelling in readme 2022-09-02 17:58:52 +05:30
Jannat Patel
2d5b8430bd fix: images and links in readme 2022-09-02 17:55:00 +05:30
Jannat Patel
eabbe3e3ed fix: readme 2022-09-02 17:50:29 +05:30
Jannat Patel
c37cdbdc5f chore: added logs 2022-09-02 17:18:57 +05:30
Jannat Patel
8a0df559c3 Merge pull request #368 from pateljannat/video-and-quiz-field 2022-09-02 14:58:17 +05:30
Jannat Patel
dfc1c9c228 feat: seperate inputs for adding youtube video and quiz 2022-09-02 13:05:26 +05:30
Jannat Patel
ad20c1cbf1 fix: membership doctype structure 2022-09-01 17:12:32 +05:30
Jannat Patel
6f4677b36b fix: ui issues 2022-08-31 15:34:18 +05:30
Jannat Patel
b3a9274cd3 fix: minor UI 2022-08-30 12:50:26 +05:30
Jannat Patel
7a7bc3e0db fix: removed desk access from course instructor role 2022-08-29 09:21:45 +05:30
Jannat Patel
425bb54057 feat: notifications tab in dashboard 2022-08-29 09:19:06 +05:30
Jannat Patel
d82df84cf6 Merge pull request #357 from pateljannat/new-course-ui 2022-08-26 17:39:34 +05:30
Jannat Patel
7d697f068f fix: ux issues 2022-08-26 16:35:02 +05:30
Jannat Patel
4499b34b51 fix: minor issues 2022-08-24 18:20:19 +05:30
Jannat Patel
9c6cc8ecd4 fix: removed web forms of old course creation flow 2022-08-23 18:27:39 +05:30
Jannat Patel
668130d443 feat: access for course creation 2022-08-22 12:58:54 +05:30
Jannat Patel
5aba690318 feat: update quiz 2022-08-19 18:22:43 +05:30
Jannat Patel
7397bf389e feat: add a new quiz 2022-08-19 11:43:49 +05:30
Jannat Patel
e1b16e9ae3 feat: quiz-creation-ui 2022-08-18 19:52:27 +05:30
Jannat Patel
eb50f6fd8f feat: quiz listing 2022-08-16 17:08:43 +05:30
Jannat Patel
5d6dc16a19 fix: create course button and search bar width 2022-08-12 12:34:04 +05:30
Jannat Patel
64dc76d616 fix: text editor for lesson 2022-08-12 09:09:50 +05:30
Jannat Patel
301664ce93 fix: ui for course creation 2022-08-10 19:45:58 +05:30
Jannat Patel
a4534d8f3e feat: update lesson 2022-08-09 18:32:29 +05:30
Jannat Patel
f161173cb6 Merge pull request #358 from pateljannat/download-certificate-pdf 2022-08-08 16:47:46 +05:30
Jannat Patel
c58f5efcdd feat: export certificate 2022-08-08 16:40:40 +05:30
Jannat Patel
65edd2ce22 feat: new lesson redirect 2022-08-08 11:47:23 +05:30
Jannat Patel
0723f3091c fix: removed unnecessary code 2022-08-01 17:56:45 +05:30
Jannat Patel
a95204f02e feat: add and update a chapter 2022-08-01 17:53:57 +05:30
Jannat Patel
6dd12e111d feat: new course ui 2022-07-28 18:22:57 +05:30
Jannat Patel
6e741bd800 Merge pull request #354 from pateljannat/readme-update 2022-07-19 15:40:54 +05:30
Jannat Patel
d37e53bd8e chore: center align readme header 2022-07-19 15:15:04 +05:30
Jannat Patel
fd3585697b chore: readme update 2022-07-19 15:10:46 +05:30
Jannat Patel
e92e6ec1c6 fix: removed the blue arrow from the course cards template 2022-07-13 16:05:24 +05:30
Jannat Patel
f0c89cbbba Merge pull request #352 from pateljannat/delete-old-module-documents
fix: delete doctypes from old modules
2022-07-07 17:16:01 +05:30
Jannat Patel
d20f932316 fix: delete webforms of unused modules 2022-07-07 17:08:53 +05:30
Jannat Patel
e011ef469f fix: delete doctypes from old modules 2022-07-05 18:50:10 +05:30
Jannat Patel
384850b452 fix: don't load api file during app init 2022-07-04 16:36:22 +05:30
Jannat Patel
e467aba32f Merge pull request #350 from pateljannat/job-board-redesign 2022-07-01 18:08:43 +05:30
Jannat Patel
56c51b73b0 fix: job details redesign 2022-07-01 17:57:52 +05:30
Jannat Patel
1aa82dd03e Merge pull request #351 from frappe/ankush-patch-1 2022-07-01 16:27:43 +05:30
Ankush Menat
a3b7c67ef9 ci: use python 3.10 2022-07-01 16:01:53 +05:30
Jannat Patel
de0200f352 fix: job list ui 2022-06-30 17:45:48 +05:30
Jannat Patel
999c267dfe Merge pull request #348 from pateljannat/web-templates
fix: web template ui
2022-06-29 16:13:10 +05:30
Jannat Patel
c9a6c2948e fix: new design for testimonial cards 2022-06-29 16:05:18 +05:30
Jannat Patel
041157a85f fix: subtitle field for testimonial and course cards 2022-06-28 18:00:53 +05:30
Jannat Patel
cd009936e2 fix: save member info in quiz submission 2022-06-27 17:42:42 +05:30
Jannat Patel
f43dfd47d0 revert: markdown file changes 2022-06-24 19:11:18 +05:30
Jannat Patel
7082467352 fix: made bio field small text in profile edit form 2022-06-24 19:10:42 +05:30
Jannat Patel
f05d3581c1 Merge pull request #346 from pateljannat/user-name-hooks-fix
fix: renamed apps in hooks and rectified username validation conditions
2022-06-23 10:26:35 +05:30
Jannat Patel
02e560cb18 fix: renamed apps in hooks and rectified username validation conditions 2022-06-23 10:12:26 +05:30
Jannat Patel
b2d38ad9d6 Merge pull request #345 from pateljannat/minor-fix 2022-06-21 16:37:44 +05:30
Jannat Patel
2743f1adc9 fix: removed unnecessary space 2022-06-21 16:19:42 +05:30
Jannat Patel
5e875b6d71 refactor: member field in lms quiz submission 2022-06-20 17:44:14 +05:30
Jannat Patel
6ccb5e8dbf Merge pull request #344 from pateljannat/testimonials-redesign 2022-06-17 19:02:25 +05:30
Jannat Patel
ad42a3d41c fix: testimonials new design 2022-06-17 18:55:26 +05:30
Jannat Patel
b40e0068ab fix: show only published courses in dashboard 2022-06-15 09:48:29 +05:30
Jannat Patel
f8dbbc1d11 fix: quiz question style 2022-06-14 17:12:32 +05:30
Jannat Patel
951070757c fix: space between lock icon and lesson title 2022-06-13 17:57:28 +05:30
Jannat Patel
c2a93c6c02 fix: course card template icon and translation 2022-06-09 16:39:29 +05:30
Jannat Patel
9dc82963c4 Merge pull request #342 from pateljannat/quiz-style-fixes
fix: quiz ui
2022-06-08 10:06:35 +05:30
Jannat Patel
148fce42ba fix: quiz ui 2022-06-08 09:56:19 +05:30
Jannat Patel
92f1263314 fix: course card meta info 2022-06-07 13:12:07 +05:30
Jannat Patel
5fad44369c Merge pull request #339 from fproldan/translations 2022-06-07 11:37:24 +05:30
Jannat Patel
eb3d7c9615 Merge branch 'main' into translations 2022-06-07 11:28:42 +05:30
Jannat Patel
5437a98539 Merge pull request #341 from pateljannat/ux-fixes
fix: replaced some dialogs with alerts
2022-06-07 11:06:53 +05:30
Francisco Roldan
d9b26f31f8 trans: profile 2022-06-06 14:50:08 -03:00
Jannat Patel
9916ec132b fix: revert unnecessary changes 2022-06-06 20:53:22 +05:30
Jannat Patel
1f3806a7bd fix: replaced some dialogs with alerts 2022-06-06 11:15:06 +05:30
Jannat Patel
55a770f129 fix: certificate request notification template 2022-06-03 13:36:50 +05:30
Jannat Patel
d742d595b2 feat: notifications for certificate request 2022-06-03 12:01:58 +05:30
Jannat Patel
9f575902b0 fix: lms certificate existing request condition 2022-06-03 09:16:54 +05:30
Jannat Patel
6e49cf14fa fix: validation for certificate request 2022-06-02 19:28:40 +05:30
Jannat Patel
4d96abb786 Merge branch 'main' of https://github.com/frappe/lms 2022-05-27 11:44:45 +05:30
Jannat Patel
b6d9470a4e fix: removed meta info from certificate page 2022-05-27 11:44:41 +05:30
Francisco Roldan
6ef86dce8c fix: es 2022-05-26 09:52:04 -03:00
Francisco Roldan
5a33f4c707 fix: translations 2022-05-26 09:49:51 -03:00
Francisco Roldan
119c1cbb35 fix: translations 2022-05-26 09:48:35 -03:00
Francisco Roldan
2be2646d95 fix: translations 2022-05-26 09:45:56 -03:00
Francisco Roldan
0609174a14 fix: translations 2022-05-26 09:43:11 -03:00
Francisco Roldan
227ca0ed41 fix: translations 2022-05-26 09:34:02 -03:00
Francisco Roldan
cc90ccece2 feat: translations 2022-05-25 14:38:50 -03:00
Francisco Roldan
9ab92165c8 feat: translations 2022-05-25 14:24:54 -03:00
Jannat Patel
e1fc0d08b7 Merge pull request #337 from pateljannat/ui-fixes
fix: course banner spaces
2022-05-25 14:33:56 +05:30
Jannat Patel
21dad2d72e fix: eval slot display 2022-05-25 13:20:39 +05:30
Jannat Patel
87fe3e72a2 fix: course certificate price display 2022-05-24 16:51:55 +05:30
Jannat Patel
c92220f1e5 Merge branch 'main' of https://github.com/frappe/lms into ui-fixes 2022-05-24 11:05:20 +05:30
Jannat Patel
eabeb612b4 fix: adding missing closing div for job details 2022-05-23 17:14:46 +05:30
Jannat Patel
900e61291a Merge pull request #336 from pateljannat/format-amount 2022-05-19 17:17:10 +05:30
Jannat Patel
51d9f1943b fix: format certificate amount on course home page 2022-05-19 17:00:19 +05:30
Jannat Patel
282b07dffc fix: format amount on course cards 2022-05-19 16:49:53 +05:30
Jannat Patel
6521415ae0 fix: course overlay site 2022-05-19 15:59:41 +05:30
Jannat Patel
2819be4508 Merge branch 'main' of https://github.com/frappe/lms into ui-fixes 2022-05-18 11:13:26 +05:30
Jannat Patel
a60805a971 Merge pull request #335 from pateljannat/quiz-timer 2022-05-18 11:04:26 +05:30
Jannat Patel
af21d33165 fix: page reload condition 2022-05-18 10:47:49 +05:30
Jannat Patel
e465ad58ca fix: removed unnecessary tags 2022-05-17 17:47:27 +05:30
Jannat Patel
cd56fc6179 fix: banner style and page exit condition 2022-05-17 17:29:11 +05:30
Jannat Patel
1ef70dd4e4 fix: submit quiz if user leaves page 2022-05-17 17:12:54 +05:30
Jannat Patel
a460ea5194 fix: start banner style 2022-05-17 16:04:03 +05:30
Jannat Patel
5ebf7b7992 fix: start banner style 2022-05-17 15:31:05 +05:30
Jannat Patel
c9b50e7db6 feat: timer in quiz 2022-05-17 11:52:10 +05:30
Jannat Patel
b9993796a0 fix: certificate style and meta 2022-05-16 13:22:30 +05:30
Jannat Patel
4fb2241621 feat: see on website link for lms certificate 2022-05-13 19:47:36 +05:30
Jannat Patel
fa49dc08a3 fix: certificate footer style 2022-05-13 18:51:07 +05:30
Jannat Patel
3d939f18df fix: removed get certificate button from course page 2022-05-11 15:08:37 +05:30
Jannat Patel
0d38b9aab1 fix: course banner spaces 2022-05-11 15:07:26 +05:30
Jannat Patel
28207f45cd Merge pull request #332 from pateljannat/certificate-design 2022-05-11 14:39:25 +05:30
Jannat Patel
72a5e9eb05 fix: return 1.1 if current lesson not found 2022-05-09 15:05:50 +05:30
Jannat Patel
91dc99d8ef fix: certificate custom and style 2022-05-09 13:17:20 +05:30
Jannat Patel
305a34b26d fix: course card info condition 2022-05-06 09:45:42 +05:30
Jannat Patel
67349bbce6 fix: job list view card style 2022-05-06 08:39:34 +05:30
Jannat Patel
242ba89b95 fix: course card cleanup 2022-05-04 19:10:40 +05:30
Jannat Patel
295280f8cf Merge pull request #331 from pateljannat/cleanup
fix: UI Cleanup
2022-05-04 17:53:31 +05:30
Jannat Patel
eb0f4728c4 fix: course page style 2022-05-04 17:40:48 +05:30
Jannat Patel
8017715bc7 fix: ui cleanup 2022-05-04 16:54:16 +05:30
Jannat Patel
503c74c488 fix: show currency and certificate price in all course cards 2022-04-29 15:05:29 +05:30
Jannat Patel
32cdaa8baa Merge pull request #329 from pateljannat/max-eval-attempt 2022-04-28 16:37:21 +05:30
Jannat Patel
83176a0293 fix: renamed reapplication field to duration 2022-04-28 16:30:51 +05:30
Jannat Patel
5db3d14b17 test: evaluation eligibility 2022-04-28 14:10:10 +05:30
Jannat Patel
bc6ae25aa6 Merge branch 'main' of https://github.com/frappe/lms into max-eval-attempt 2022-04-27 17:34:10 +05:30
Jannat Patel
8e3900fab7 Merge branch 'main' of https://github.com/frappe/lms 2022-04-27 17:21:39 +05:30
Jannat Patel
51b3d59094 fix: certificate price on course card web template 2022-04-27 17:21:36 +05:30
Jannat Patel
3585645580 feat: conditions for evaluation eligibility 2022-04-27 17:20:30 +05:30
Jannat Patel
1e3c20d118 Merge branch 'main' of https://github.com/frappe/lms into max-eval-attempt 2022-04-27 10:48:46 +05:30
Jannat Patel
f83f13af59 Merge pull request #328 from pateljannat/course-outline-start-learning-issue
fix: no preview modal for upcoming courses.
2022-04-26 15:44:00 +05:30
Jannat Patel
54d0bc56a4 fix: indentation 2022-04-26 15:30:52 +05:30
Jannat Patel
c722673dbd fix: dont show notify button from outline if already opted 2022-04-26 15:27:35 +05:30
Jannat Patel
88d34a9daf fix: no preview modal for upcoming courses. 2022-04-26 15:14:31 +05:30
Jannat Patel
e91237ec05 feat: check no of attempts 2022-04-26 13:17:09 +05:30
Jannat Patel
430a2bc08d feat: max attempts fields 2022-04-25 18:48:31 +05:30
Jannat Patel
3bbe5d33d3 Merge pull request #327 from pateljannat/image-in-lesson-webform
feat: image markdown extension
2022-04-25 11:42:58 +05:30
Jannat Patel
674c6a1684 fix: web form description and redirection 2022-04-25 10:42:07 +05:30
Jannat Patel
f34519e3ff fix: upload image component in lesson web form 2022-04-22 12:22:25 +05:30
Jannat Patel
f047be816a fix: validate url for job opportunity 2022-04-21 11:56:24 +05:30
Jannat Patel
593c20d62b fix: login without user category 2022-04-21 08:42:18 +05:30
Jannat Patel
a4bfad6138 fix: class name change for testimonial author 2022-04-20 17:54:37 +05:30
Jannat Patel
89de3c5f7a fix: class name change for testimonial author 2022-04-20 17:48:44 +05:30
Jannat Patel
81fb664ad9 feat: image markdown extension 2022-04-20 17:45:40 +05:30
Jannat Patel
b65597b884 fix: replaced html5lib with lxml for lesson markdown 2022-04-20 11:26:54 +05:30
Jannat Patel
d5423947f3 Merge pull request #325 from pateljannat/designation-to-category 2022-04-20 10:36:48 +05:30
Jannat Patel
f80db23642 fix: changed designation to user category 2022-04-20 10:22:35 +05:30
Jannat Patel
935906e328 Merge pull request #324 from pateljannat/designation-during-signup
feat: Designation during signup
2022-04-19 16:39:34 +05:30
Jannat Patel
3ed7f68054 fix: data attribute for certificate price 2022-04-19 16:18:48 +05:30
Jannat Patel
c894b75f4b feat: designation during signup 2022-04-19 15:53:25 +05:30
Jannat Patel
ef43d6905f fix: take country from doctype at signup 2022-04-14 09:03:18 +05:30
Jannat Patel
ab7ebedcd5 fix: check evaluator schedule for certificate request 2022-04-13 17:53:46 +05:30
Jannat Patel
8ca19afd87 Merge pull request #323 from pateljannat/start-learning-fixes 2022-04-11 16:08:32 +05:30
Jannat Patel
70e1e550e3 fix: certificate request flow and other minor changes 2022-04-11 15:35:40 +05:30
Jannat Patel
cb0087c433 fix: no preview modal start learning button 2022-04-07 23:03:53 +05:30
Jannat Patel
d867f86c08 fix: replaced save with insert for certificate doctype rename patch 2022-04-07 22:46:40 +05:30
Jannat Patel
1891029eed fix: ignore mandatory for certificate doctype rename patch 2022-04-07 22:38:49 +05:30
Jannat Patel
157090a122 fix: reload doc in certificate doctype rename patch 2022-04-07 22:33:06 +05:30
Jannat Patel
0ddf2aad79 fix: removed certification student to member rename patch 2022-04-07 22:27:26 +05:30
Jannat Patel
4f47a5032c fix: removed post_model_sync from patches.txt 2022-04-07 22:13:19 +05:30
Jannat Patel
ae957ab642 fix: average rating precision 2022-04-07 21:58:49 +05:30
Jannat Patel
b69a7022b5 Merge pull request #319 from pateljannat/certification 2022-04-07 14:58:27 +05:30
Jannat Patel
c19bd88a8e fix: added post_model_sync in patches.txt 2022-04-07 14:42:05 +05:30
Jannat Patel
4967b70e7c fix: validate same slot addition twice 2022-04-07 14:32:02 +05:30
Jannat Patel
cdfad8cc67 feat: cerificate price 2022-04-07 12:57:42 +05:30
Jannat Patel
dcaccaca35 fix: certificate design 2022-04-05 21:13:21 +05:30
Jannat Patel
d954262184 fix: redirect to list when course does not exist 2022-04-04 12:46:35 +05:30
Jannat Patel
208720545e Merge branch 'main' of https://github.com/frappe/lms into certification 2022-04-01 18:59:35 +05:30
Jannat Patel
2cbadc6946 Merge pull request #311 from pateljannat/discussion-component-redesign 2022-04-01 18:58:59 +05:30
Jannat Patel
ebfa49ed8e chore: renamed lms certification to lms certificate 2022-04-01 18:56:57 +05:30
Jannat Patel
e70c3ef939 feat: request for certification 2022-04-01 17:30:17 +05:30
Jannat Patel
0523f701c2 fix: profile page fixes 2022-03-31 18:03:11 +05:30
Jannat Patel
c6b46295bc fix: date field 2022-03-31 17:54:31 +05:30
Jannat Patel
16ddfb2a20 feat: certification request 2022-03-30 22:52:38 +05:30
Jannat Patel
ca5ea6032c feat: certificate evaluation 2022-03-29 16:49:50 +05:30
Jannat Patel
b4eda0e7cd Merge pull request #318 from pateljannat/workspace-issue 2022-03-28 17:52:42 +05:30
Jannat Patel
9d2a9bbd9c fix: workspace published field filter 2022-03-28 17:40:55 +05:30
Jannat Patel
ef13c8fe8d fix: update patch date 2022-03-25 18:53:35 +05:30
Jannat Patel
aa6932f547 fix: reload doctype in patch 2022-03-25 18:53:07 +05:30
Jannat Patel
5d3c132e83 Merge pull request #317 from pateljannat/field-name-uniformity 2022-03-25 16:13:25 +05:30
Jannat Patel
56f4f6c977 fix: patch for published field 2022-03-25 15:56:43 +05:30
Jannat Patel
77df068fea fix: field cleanup 2022-03-24 18:59:58 +05:30
Jannat Patel
b9a1bf9f24 fix: conflicts 2022-03-24 09:56:54 +05:30
Jannat Patel
2b348916f4 Merge pull request #316 from pateljannat/rename-to-lms 2022-03-23 19:20:36 +05:30
Jannat Patel
70bc5ea2ec fix: conflicts 2022-03-23 19:13:30 +05:30
Jannat Patel
eff9e553a1 fix: course home card ui 2022-03-23 19:10:02 +05:30
Jannat Patel
e1bfca1883 fix: breadcrumb from lesson page 2022-03-23 15:20:57 +05:30
Jannat Patel
190dbab3d0 fix: ui issues 2022-03-23 15:18:32 +05:30
Jannat Patel
a1895b1f78 fix: removed unused modules from modules.txt 2022-03-21 14:14:24 +05:30
Jannat Patel
1091774003 Merge branch 'main' of https://github.com/frappe/school into rename-to-lms 2022-03-21 12:58:06 +05:30
Jannat Patel
ae29eb35fd fix: removed unused modules 2022-03-21 12:57:16 +05:30
Jannat Patel
5ca0a89789 fix: reload doctypes in patch 2022-03-21 10:16:09 +05:30
Jannat Patel
6c6e836f0d fix: reload doctypes in recent patches 2022-03-21 09:47:18 +05:30
Jannat Patel
c971d34d67 refactor: renamed app to lms 2022-03-19 17:30:00 +05:30
Jannat Patel
1b04615bff Merge pull request #313 from pateljannat/course-creation-through-ui 2022-03-19 14:19:25 +05:30
Jannat Patel
40eb8dec68 fix: branch shift for semantic 2022-03-19 12:57:10 +05:30
Jannat Patel
2556e98c26 fix: version change for semantic pull request 2022-03-19 12:33:56 +05:30
Jannat Patel
2204da25ed fix: semantic pull request workflow 2022-03-19 12:22:13 +05:30
Jannat Patel
ab1eb6de6b Merge pull request #315 from pateljannat/semantic-pull-request 2022-03-19 11:32:51 +05:30
Jannat Patel
16278a72e9 chore: semantic pull request check 2022-03-19 11:20:37 +05:30
Jannat Patel
573a1f22dc fix: button positions on course home 2022-03-19 10:09:32 +05:30
Jannat Patel
da370a7dd2 fix: better msg on web form save 2022-03-19 09:31:39 +05:30
Jannat Patel
6567660639 Merge pull request #314 from pateljannat/ui-cleanup 2022-03-17 15:23:51 +05:30
Jannat Patel
984054f00f fix: icon position on course card 2022-03-17 15:17:21 +05:30
Jannat Patel
9351edebe0 fix: jobs, quiz and community page cleanup 2022-03-17 14:23:06 +05:30
Jannat Patel
36465f0859 fix: icon background and space cleanup 2022-03-17 11:25:34 +05:30
Jannat Patel
ef5cf4bd96 fix: course home, course cards and course outline cleanup 2022-03-16 18:53:09 +05:30
Jannat Patel
27e1aec001 fix: dashboard links, web form redirects and patch for status 2022-03-15 16:51:39 +05:30
Jannat Patel
aa9ef65375 dashboard and patch for lesson 2022-03-14 19:07:02 +05:30
Jannat Patel
c8af6d3672 feat: course creation from portal setting 2022-03-11 11:15:13 +05:30
Jannat Patel
ffe5370264 Merge branch 'main' of https://github.com/frappe/school 2022-03-10 08:42:17 +05:30
Jannat Patel
ef0156c068 fix: removed batch from list and filter of membership 2022-03-10 08:42:13 +05:30
Jannat Patel
00883170f3 Merge pull request #312 from pateljannat/cookie-policy 2022-03-10 08:41:35 +05:30
Jannat Patel
fb72704a33 feat: cookie policy 2022-03-09 14:32:50 +05:30
Jannat Patel
8f9cd72975 feat: course creation from ui 2022-03-09 12:29:03 +05:30
Jannat Patel
913e87c4f5 Merge branch 'main' of https://github.com/frappe/school into course-creation-through-ui 2022-03-07 18:28:54 +05:30
Jannat Patel
3bdf6df70d fix: allow locked lessons o instructors through outline 2022-03-07 18:28:12 +05:30
Jannat Patel
5e973b21ae feat: course web form 2022-03-07 18:21:11 +05:30
Jannat Patel
23e2611725 feat: discussions redesign 2022-03-07 12:52:09 +05:30
Jannat Patel
f8784afd72 Merge pull request #310 from pateljannat/minor-fixes 2022-02-24 14:24:41 +05:30
Jannat Patel
46a73c8ef1 fix: classname 2022-02-24 12:56:39 +05:30
Jannat Patel
bcd80b616d fix: empty states redesign and misc changes 2022-02-24 12:40:13 +05:30
Jannat Patel
b5d870d885 fix: indentation and headline field 2022-02-23 17:39:04 +05:30
Jannat Patel
f9ac77606e Merge pull request #309 from pateljannat/privacy-policy-during-signup 2022-02-23 17:12:12 +05:30
Jannat Patel
ce554ed53f feat: privacy policy and other misc changes 2022-02-23 16:52:29 +05:30
Jannat Patel
27d48f85a9 Merge pull request #308 from pateljannat/css-cleanup 2022-02-23 16:33:46 +05:30
Jannat Patel
059ff14e6d fix: added missing style 2022-02-23 14:31:14 +05:30
Jannat Patel
8cfb3569fe fix: css cleanup and testimonials redesign 2022-02-23 13:14:22 +05:30
Jannat Patel
1ac3e9b364 Merge pull request #307 from pateljannat/community-page-redesign 2022-02-23 12:16:41 +05:30
Jannat Patel
22c6a3da4f feat: community page redesign 2022-02-23 11:37:05 +05:30
Jannat Patel
737405d449 Merge pull request #306 from pateljannat/profile-redesign 2022-02-23 09:57:27 +05:30
Jannat Patel
e805ae7757 feat: profile page redesign 2022-02-23 09:36:50 +05:30
Jannat Patel
d5cf0fee64 Merge branch 'main' of https://github.com/frappe/school into profile-redesign 2022-02-22 11:34:22 +05:30
Jannat Patel
48e2ae6e52 Merge pull request #305 from pateljannat/lesson-page-fixes 2022-02-22 11:30:16 +05:30
Jannat Patel
351e784733 fix: conflicts 2022-02-22 11:18:57 +05:30
Jannat Patel
6c64181bf4 fix: overlay position when related courses 2022-02-22 11:15:02 +05:30
Jannat Patel
d64e6a12a7 Merge pull request #304 from pateljannat/quiz-redesign 2022-02-21 18:45:19 +05:30
Jannat Patel
ccddc9a404 fix: margin before explanation 2022-02-21 18:03:27 +05:30
Jannat Patel
aee35aa66d fix: ui after question check 2022-02-21 16:30:10 +05:30
Jannat Patel
0cf953b3eb fix: markup lib 2022-02-21 16:01:07 +05:30
Jannat Patel
eb073ebe87 fix: quiz card layout 2022-02-21 15:23:23 +05:30
Jannat Patel
c3fac64280 fix: translations and sidebar 2022-02-21 14:55:20 +05:30
Jannat Patel
28ef8e7db7 feat: quiz redesign 2022-02-21 11:43:05 +05:30
Jannat Patel
e3eda95b35 Merge pull request #303 from pateljannat/course-page-redesign 2022-02-18 12:52:05 +05:30
Jannat Patel
894a68823f fix: button width 2022-02-18 12:44:42 +05:30
Jannat Patel
dc3843087e feat: course page redesign 2022-02-18 12:26:08 +05:30
Jannat Patel
aaae9fe8bc Merge pull request #302 from pateljannat/reviews-empty-state 2022-02-17 17:24:23 +05:30
Jannat Patel
3dc9fc52a7 style: reviews empty state 2022-02-17 17:17:26 +05:30
Jannat Patel
2d373ba509 fix: avg rating condition 2022-02-17 16:53:40 +05:30
Jannat Patel
f200e79dc8 style: banner 2022-02-17 16:51:21 +05:30
Jannat Patel
ae9518a006 Merge pull request #301 from pateljannat/course-list-page 2022-02-17 15:04:48 +05:30
Jannat Patel
96c24e8e5f test: certificate with expiry 2022-02-17 14:56:33 +05:30
Jannat Patel
cc0c1cc320 fix: removed console statements 2022-02-17 14:40:33 +05:30
Jannat Patel
9834c83126 revert: print statement 2022-02-17 13:43:11 +05:30
Jannat Patel
4b8cb5a4e4 fix: test data 2022-02-17 13:37:29 +05:30
Jannat Patel
7e2f473e22 fix: import statement 2022-02-17 13:05:47 +05:30
Jannat Patel
ee9f858933 test: certificate creation 2022-02-17 12:46:35 +05:30
Jannat Patel
69f322d34c fix: certification flow 2022-02-17 11:38:27 +05:30
Jannat Patel
91099188f2 Merge pull request #300 from pateljannat/course-home-redesign 2022-02-17 10:12:56 +05:30
Jannat Patel
1e7209bafa style: banner 2022-02-16 20:41:20 +05:30
Jannat Patel
a23a356bf6 style: course home 2022-02-16 19:12:25 +05:30
Jannat Patel
5218e134a9 Merge pull request #299 from pateljannat/jobs-redesign 2022-02-14 16:22:58 +05:30
Jannat Patel
55a87999e4 fix: date format 2022-02-14 16:14:53 +05:30
Jannat Patel
6cd7861b2c style: job card redesign 2022-02-14 13:46:02 +05:30
Jannat Patel
6dfaeddc0a Merge pull request #298 from pateljannat/ip-issue-fix 2022-02-11 15:06:51 +05:30
Jannat Patel
4846549a90 fix: ip issue 2022-02-11 12:56:11 +05:30
Jannat Patel
942837b4d9 fix: instructor patch 2022-02-11 10:33:06 +05:30
Jannat Patel
259b4aabcc Merge pull request #297 from pateljannat/redesign-school 2022-02-11 10:05:52 +05:30
Jannat Patel
6200b6a4b0 fix: suffix message for course card instructor 2022-02-10 12:59:31 +05:30
Jannat Patel
6ee1413996 fix: import 2022-02-10 10:32:23 +05:30
Jannat Patel
08fff1700f fix: tests and moved course functions to lms utils 2022-02-10 10:22:01 +05:30
Jannat Patel
fd5b7976e7 fix: get_doc references 2022-02-10 09:53:08 +05:30
Jannat Patel
e17637d27b fix: conflicts 2022-02-08 16:34:24 +05:30
Jannat Patel
57c69a7d6c fix: removing get_doc dependencies for lms course 2022-02-08 16:13:38 +05:30
Jannat Patel
bf3a496ea3 feat: multiple instructors on course card and course home 2022-02-07 13:41:28 +05:30
Jannat Patel
3e46db9c11 feat: multiple instructors 2022-02-07 12:01:07 +05:30
Jannat Patel
50c624e305 Merge pull request #295 from anandology/context-in-page-extensions 2022-02-07 11:33:49 +05:30
Anand Chitipothu
6d4e64059a feat: pass context to page extensions
Pass the context to page extensions to allow them to make decisions
based on the context. For example, an extension to load the course
specific scripts. This is currently not possible because the course
details are not availale to the page extensions. Made this possible by
passing the context to page extensions.
2022-01-25 07:32:13 +05:30
Jannat Patel
ec879b12b3 Merge pull request #291 from pateljannat/jobs-improvement 2022-01-11 19:55:18 +05:30
Jannat Patel
5ace8f5570 fix: email content 2022-01-11 19:41:59 +05:30
Jannat Patel
2fe5a6b248 Merge branch 'main' of https://github.com/frappe/school into jobs-improvement 2022-01-11 19:30:53 +05:30
Jannat Patel
19f5251736 fix: login button before job application 2022-01-11 19:27:12 +05:30
Jannat Patel
a87e3d66a6 fix: hide apply and report button from guest users 2022-01-11 17:50:14 +05:30
Jannat Patel
62acdde68f fix: email 2022-01-11 16:33:20 +05:30
Jannat Patel
e214573cd1 fix: job reporting 2022-01-11 15:10:31 +05:30
Jannat Patel
8fff1cd817 fix: jobs ui 2022-01-10 21:39:26 +05:30
Jannat Patel
20eb0c4d64 Merge pull request #290 from pateljannat/community-and-job-redesign 2022-01-10 17:00:02 +05:30
Jannat Patel
ff05292bdb fix: community cards 2022-01-10 16:45:06 +05:30
Jannat Patel
326bc88f19 Merge pull request #288 from pateljannat/community-page-fix 2022-01-07 11:10:09 +05:30
Jannat Patel
f0a7612369 fix: exclude disabled users 2022-01-06 21:29:04 +05:30
Jannat Patel
515be5de33 Merge pull request #287 from pateljannat/members-page 2022-01-06 17:19:25 +05:30
Jannat Patel
e1e7354d85 feat: search in community page 2022-01-06 17:10:07 +05:30
Jannat Patel
2ec6a06204 Merge branch 'main' of https://github.com/frappe/school into members-page 2022-01-03 16:36:23 +05:30
Jannat Patel
9150def93e Merge pull request #285 from pateljannat/profile-fixes 2022-01-03 10:21:05 +05:30
Jannat Patel
730f1a6c47 fix: conditions to hide contacts section 2022-01-03 09:55:34 +05:30
Jannat Patel
7c12d094c5 fix: logo dimensions 2022-01-03 09:40:30 +05:30
Jannat Patel
8aceaf0595 Merge pull request #282 from pateljannat/job-posting 2021-12-30 14:54:08 +05:30
Jannat Patel
5a1bdc156d fix: email on job creation 2021-12-30 13:08:52 +05:30
Jannat Patel
aa81426189 fix: show jobs with Open status 2021-12-30 11:51:27 +05:30
Jannat Patel
7a5d39cc94 fix: new module called job 2021-12-30 10:08:15 +05:30
Jannat Patel
b1b8f202c9 feat: job posting 2021-12-28 22:26:52 +05:30
Jannat Patel
fcfda68d88 Merge pull request #281 from pateljannat/rating-field 2021-12-27 15:19:43 +05:30
Jannat Patel
e966e4c7ed fix: rating field issue 2021-12-27 13:26:50 +05:30
Jannat Patel
42455c72f9 fix: revert unnecesary change 2021-12-27 12:37:49 +05:30
Jannat Patel
ef5f49016e fix: structure of course home page 2021-12-27 12:37:17 +05:30
Jannat Patel
6417dfb4a1 Merge pull request #279 from pateljannat/upload-in-lessons 2021-12-24 16:24:42 +05:30
Jannat Patel
40985da9ca fix: updating existing assignment 2021-12-23 20:30:31 +05:30
Jannat Patel
e07c26c17d Merge pull request #280 from frappe/make-contact-display-configurable 2021-12-23 20:23:05 +05:30
Jannat Patel
9f2cba49ee feat: hide primary contact from profile 2021-12-23 19:58:42 +05:30
Jannat Patel
6e3de21f6e fix: file type support 2021-12-23 17:58:39 +05:30
Jannat Patel
a6bdbd7cf1 feat: lesson assignment 2021-12-22 22:13:33 +05:30
Jannat Patel
b822428d52 Merge pull request #277 from pateljannat/custom-signup 2021-12-21 16:13:15 +05:30
Jannat Patel
03a7df1c98 fix: mandatory terms of use 2021-12-21 16:02:30 +05:30
Jannat Patel
08b7290070 fix: display internship in profile 2021-12-21 15:54:47 +05:30
Jannat Patel
6188c698e3 fix: checkbox for terms of use 2021-12-21 15:41:32 +05:30
Jannat Patel
7d9b60c16a fix: conflicts 2021-12-21 11:34:43 +05:30
Jannat Patel
df3c5060e9 Merge pull request #278 from pateljannat/profile-restrictions 2021-12-21 11:22:01 +05:30
Jannat Patel
ff702c9d14 fix: restrict profile and mark as complete 2021-12-21 11:11:39 +05:30
Jannat Patel
ea06fe8cf8 feat: hooks for profile mandatory fields 2021-12-20 14:18:22 +05:30
Jannat Patel
f8b0d9b180 feat: hooks for profile mandatory fields 2021-12-20 14:18:10 +05:30
Jannat Patel
d3a3e7066d fix: removed unnecessary imports 2021-12-20 11:28:55 +05:30
Jannat Patel
45e3964285 fix: renamed signup hook and moved default form to a template 2021-12-20 11:06:51 +05:30
Jannat Patel
4edf4936c1 fix: pass path in hooks instead of function 2021-12-20 10:04:50 +05:30
Jannat Patel
067be4973d fix: string translation 2021-12-20 09:42:31 +05:30
Jannat Patel
6a3442d058 fix: user and country data 2021-12-17 19:42:57 +05:30
Jannat Patel
0b83307f7d fix: custom signup form 2021-12-17 11:24:28 +05:30
Jannat Patel
f36042f537 Merge pull request #272 from anandology/cohorts-v1 2021-12-17 10:45:56 +05:30
Jannat Patel
668a5d6334 fix: labels and order 2021-12-16 15:20:08 +05:30
Anand Chitipothu
eb59713b65 fix: delete invalid links from Cohort doctype 2021-12-16 11:45:29 +05:30
Jannat Patel
fbc6187062 fix: profile settings 2021-12-16 10:06:58 +05:30
Anand Chitipothu
274ecaa222 fix: typo in exercise_submission.py
Corrected the use of save instead of insert.
2021-12-15 22:27:57 +05:30
Anand Chitipothu
051196179d fix: failing test in doctype Exercise 2021-12-15 11:42:52 +05:30
Anand Chitipothu
cddfc4550d Merge branch 'main' into cohorts-v1 2021-12-15 11:25:30 +05:30
Anand Chitipothu
465bc3b24a feat: allow the same custom page to be avaiable both for cohort and subgroup 2021-12-14 22:09:51 +05:30
Jannat Patel
38087f0b02 Merge pull request #275 from pateljannat/enhanced-profile 2021-12-14 18:09:15 +05:30
Jannat Patel
3237a539f7 fix: removed print statement 2021-12-14 18:04:41 +05:30
Jannat Patel
828d5764d0 fix: made user fields non mandatory 2021-12-14 17:21:08 +05:30
Jannat Patel
15fc3742d2 fix: ci install app command 2021-12-14 16:56:24 +05:30
Jannat Patel
8489b1d943 fix: text editor for bio and profile redirect changes 2021-12-14 16:46:06 +05:30
Jannat Patel
682188540c feat: new profile fields 2021-12-14 16:28:15 +05:30
Anand Chitipothu
8f740d70e0 fix: broken link to the course on join page 2021-12-13 21:30:19 +05:30
Anand Chitipothu
bc80c2200d feat: add anchor to exercise to allow linking to an exercise 2021-12-13 11:16:56 +05:30
Jannat Patel
fd524f627e fix: profile web form 2021-12-09 19:07:04 +05:30
Anand Chitipothu
59b3b68bde fix: fixed the issue of duplicate join requests
Someone was spamming mon.school by generating thousands of join
requests. Added to fix to avoid creating duplicate requests.
2021-12-09 18:21:29 +05:30
Anand Chitipothu
943c8eabbf feat: added custom pages at subgroup level 2021-12-09 01:17:03 +05:30
Anand Chitipothu
b83918c2aa feat: added Exercise Latest Submission doctype
Issue #274
2021-12-08 23:07:53 +05:30
Jannat Patel
5b4db8fd54 feat: child tables for profile sections 2021-12-07 16:58:55 +05:30
Anand Chitipothu
c8d7ac48ea fix: CohortSubgroup.has_student
Fixed the wrong query.

Issue #271
2021-12-07 15:37:46 +05:30
Anand Chitipothu
3cd4e64957 feat: allow cohort admins to add mentors
Issue #271
2021-12-05 02:10:58 +05:30
Anand Chitipothu
2f994628c3 fix: show students/mentors on subgroup page alphabetically
Issue #271
2021-12-05 01:33:33 +05:30
Anand Chitipothu
f68fc02e57 style: improved the ux of approve/reject flow
Issue #271
2021-12-05 01:29:48 +05:30
Anand Chitipothu
0637b9c8f8 fix: allow admins to manage join requests
Issue #271
2021-12-05 01:29:24 +05:30
Anand Chitipothu
7001ddc96f feat: made all the cohort pages public
There is some info on the page that is only accessible to mentors and
admins and not shown to other users.
2021-12-05 01:04:46 +05:30
Anand Chitipothu
fe31a64175 style: updated the styles of subgroup links on cohort page 2021-12-05 00:22:27 +05:30
Anand Chitipothu
cd0cc2b501 feat: added support to get subgroups in sorted order
Issue #271
2021-12-05 00:13:05 +05:30
Anand Chitipothu
ebcb3c5466 fix: fixed the issue with rendering custom cohort page
Issue #271
2021-12-05 00:01:42 +05:30
Anand Chitipothu
a1d0f3948a feat: added support for custom web pages for cohorts
This allows adding custom web pages to each cohort by defining a web
template and attaching it to the cohort.

Issue #271
2021-12-04 23:47:29 +05:30
Anand Chitipothu
22f5508bea style: improved the display of users and mentors in a subgroup
Using MemberCard insted of Avatar macro.

Issue #271
2021-12-04 23:14:37 +05:30
Anand Chitipothu
63c4f708c3 feat: improved the subgroup page load time
Using `get_cached_doc` instead of `get_doc` for loading students and
mentors.

Issue #271
2021-12-04 23:03:58 +05:30
Anand Chitipothu
52fd891370 fix: show the recent join requests on the top
Issue #271
2021-12-04 22:52:56 +05:30
Anand Chitipothu
fb447a30e4 feat: added undo of rejected join requests
Also improved the dispaly of timestamp, showing the diff now.

Issue #271
2021-12-04 22:47:23 +05:30
Anand Chitipothu
e0c73e26ee fix: increased the page_length when querying for students of a subgroup. 2021-12-04 17:19:49 +05:30
Anand Chitipothu
d5da5bd8aa feat: allow all mentors to see the cohort status
Issue #271
2021-12-04 07:25:15 +05:30
Anand Chitipothu
d84302682e fix: permission issue on cohort page
Using get_all instead of get_list to disable permission check.

Issue #271
2021-12-03 16:03:14 +05:30
Anand Chitipothu
c963e93b52 feat: allow students who have already joined the course to join the cohort
Issue #271
2021-12-03 00:28:13 +05:30
Anand Chitipothu
c96e3ee2f9 feat: show counts on cohort listing and view pages
Issue #271
2021-12-02 10:36:17 +05:30
Jannat Patel
a78019ccbc fix: mark as complete label 2021-12-01 18:59:29 +05:30
Anand Chitipothu
e014c94446 fix: mentor counts on cohort page
The group by clause was missing in the query.

Issue #271
2021-12-01 12:19:03 +05:30
Anand Chitipothu
6c747ff8b4 feat: added get_url method to cohort doctypes
This is required to make it easier to include links in the email
notification to mentors.

Issue #271
2021-12-01 08:43:10 +05:30
Anand Chitipothu
ffd9e9d48e feat: Added support for approve/reject join requests to a cohort subgroup
Issue #271
2021-11-30 18:06:36 +05:30
Anand Chitipothu
3328359ba4 style: "manage the course" button
Issue #271
2021-11-30 18:06:27 +05:30
Jannat Patel
66f6c1fd46 Merge pull request #273 from pateljannat/testimonial-card-fix 2021-11-30 11:15:59 +05:30
Jannat Patel
aaa845a0f8 fix: testimonial cards height and shadows 2021-11-30 11:04:29 +05:30
Anand Chitipothu
f1157895db feat: added portal page to join a cohort
Issue #271
2021-11-30 08:29:24 +05:30
Anand Chitipothu
1277cfed64 feat: added cohort and subgroup pages
Issue #271
2021-11-30 07:46:48 +05:30
Anand Chitipothu
102fa9c0a8 feat: added a page to list cohorts of a course
- added a page /courses/<course>/manage that lists the active cohorts
- only accessible to mentors and staff
- also added a "manage the course" button on course page for mentors/staff

Issue #271
2021-11-29 17:33:45 +05:30
Anand Chitipothu
7cd57cadb2 feat: added doctypes for cohorts
Issue #271
2021-11-29 17:26:38 +05:30
Jannat Patel
2a56b7ade2 Merge pull request #270 from pateljannat/mark-as-complete 2021-11-29 16:29:21 +05:30
Jannat Patel
cf8be3ca21 style: discussons empty state and mark as complete message 2021-11-29 16:20:49 +05:30
Jannat Patel
715a1b5df5 fix: mark as complete behaviour 2021-11-29 16:02:59 +05:30
Jannat Patel
0a374a0e78 Merge pull request #269 from pateljannat/search-generic 2021-11-26 11:44:23 +05:30
Jannat Patel
36996a54a5 fix: search-settings 2021-11-26 11:34:10 +05:30
Jannat Patel
3f687e4c4a Merge pull request #265 from pateljannat/improve-notify-me-behaviour 2021-11-25 14:09:03 +05:30
Jannat Patel
315d373d2d fix: hide notify me button on callback 2021-11-25 13:06:12 +05:30
Jannat Patel
6ae346df44 fix: notify-me-ux 2021-11-23 22:28:07 +05:30
Jannat Patel
9582a27dc6 Merge pull request #264 from pateljannat/search-empty-state-improvements 2021-11-22 10:14:48 +05:30
Jannat Patel
6195d72c3c fix: indentation 2021-11-22 10:08:54 +05:30
Jannat Patel
3f0309c36a fix: search empty state improvements 2021-11-22 10:05:04 +05:30
Jannat Patel
08ea7401cc Merge pull request #263 from pateljannat/search-improvements 2021-11-19 19:44:55 +05:30
Jannat Patel
f3d7f09476 feat: search empty state 2021-11-19 19:12:19 +05:30
Jannat Patel
36150d5b09 fix: allow guests to search 2021-11-18 15:44:19 +05:30
Jannat Patel
e5deb2ddd7 Merge pull request #262 from pateljannat/testimonials 2021-11-18 15:25:33 +05:30
Jannat Patel
d60aa54903 fix: condition if testimonials are less than multiple of three 2021-11-18 15:12:41 +05:30
Jannat Patel
2627cee938 fix: increased margin above explore more link 2021-11-18 15:07:29 +05:30
Jannat Patel
e7f47a4485 fix: slider height 2021-11-18 10:09:11 +05:30
Jannat Patel
5bfe56c091 fix: slider 2021-11-17 20:34:10 +05:30
Jannat Patel
f08586ee12 feat: testimonials template 2021-11-16 19:32:05 +05:30
Jannat Patel
af17270c52 fix: back tracing result on search 2021-11-15 19:30:01 +05:30
Jannat Patel
06b4062003 Merge pull request #261 from pateljannat/search 2021-11-15 19:08:24 +05:30
Jannat Patel
6cba6972bc feat: search for courses 2021-11-15 19:00:23 +05:30
Jannat Patel
f7a23e629c fix: conflicts 2021-11-15 13:29:02 +05:30
Jannat Patel
e67b37be28 Merge pull request #260 from pateljannat/course-cards-cleanup 2021-11-12 19:35:52 +05:30
Jannat Patel
1fa7dfe41f fix: removed arrow interaction 2021-11-12 19:20:18 +05:30
Jannat Patel
e781071ebf Merge pull request #257 from pateljannat/empty-states 2021-11-12 18:48:12 +05:30
Jannat Patel
1697c5d5b5 feat: search bar on course list 2021-11-12 10:10:39 +05:30
Jannat Patel
091fefb601 fix: removed unused css variables 2021-11-11 09:48:11 +05:30
Jannat Patel
7939e6c619 style: course cards and templates 2021-11-10 17:08:46 +05:30
Jannat Patel
f8788dc32c fix: empty state logo and link style 2021-11-08 16:49:31 +05:30
Jannat Patel
4db51bff79 style: empty state for reviews 2021-11-04 22:03:26 +05:30
Jannat Patel
6f96da74c7 empty state for discussion 2021-11-02 18:27:52 +05:30
Jannat Patel
f1692763d3 Merge pull request #255 from pateljannat/fixes 2021-11-01 15:08:00 +05:30
Jannat Patel
43311dfb73 fix: made course filter mandatory for course progress summary report 2021-11-01 14:46:16 +05:30
Jannat Patel
125b8d61d9 style: course cards, card dividers, breadcrumbs 2021-11-01 13:33:42 +05:30
Jannat Patel
27b92607c4 Merge pull request #253 from pateljannat/courses-enrolled-template-empty-state 2021-10-29 10:27:48 +05:30
Jannat Patel
c238c6cc05 fix: empty state for courses enrolled 2021-10-28 20:25:11 +05:30
Jannat Patel
fc8a702f2f Merge pull request #251 from pateljannat/readme-and-license 2021-10-27 20:17:57 +05:30
Jannat Patel
a01c80794c docs: moved contribution guidelines to a separate file 2021-10-27 20:08:26 +05:30
Jannat Patel
1f6bdfbaa0 fix: docker installation file path 2021-10-27 20:04:29 +05:30
Jannat Patel
a650a31990 fix: readme and license 2021-10-27 20:00:07 +05:30
Jannat Patel
12c00ae6c6 Merge pull request #250 from pateljannat/issues 2021-10-26 16:55:35 +05:30
Jannat Patel
857f170034 fix: help section in course lesson 2021-10-26 16:07:22 +05:30
Jannat Patel
41f7be4ebc style: overview card 2021-10-26 10:06:06 +05:30
Jannat Patel
f95b9b4f00 Merge pull request #249 from pateljannat/course-cards-assets 2021-10-25 16:28:08 +05:30
Jannat Patel
6aa30cc8ba fix: aseets on course cards 2021-10-25 16:27:04 +05:30
Jannat Patel
1d4037fcc5 Merge pull request #238 from pateljannat/rename-app-to-school 2021-10-25 12:00:23 +05:30
Jannat Patel
59e853a012 fix: removed unnecessary lines 2021-10-25 11:52:08 +05:30
Jannat Patel
79bca49fb8 Merge branch 'main' into rename-app-to-school 2021-10-25 11:17:04 +05:30
Jannat Patel
05b0ca49fa fix: ci (#248) 2021-10-25 11:05:50 +05:30
Jannat Patel
8483b7b86b fix: conflicts 2021-10-24 12:09:31 +05:30
Jannat Patel
050cfa494c fix: conflicts 2021-10-24 12:03:06 +05:30
Jannat Patel
866829af97 Merge pull request #247 from pateljannat/fix-ui-quiz 2021-10-24 11:43:11 +05:30
Jannat Patel
0cd52b7220 style: quiz cta 2021-10-24 11:30:51 +05:30
Jannat Patel
b922af1411 Merge pull request #243 from anandology/docker-compose-fixes 2021-10-24 11:30:05 +05:30
Jannat Patel
ce01e83382 style: changed quiz button to secondary 2021-10-22 18:55:55 +05:30
Jannat Patel
60393e048e Merge pull request #246 from pateljannat/workspace 2021-10-21 18:50:39 +05:30
Jannat Patel
1f7e2cd0cc feat: new school workspace 2021-10-21 18:19:11 +05:30
Jannat Patel
747828b363 Merge pull request #244 from pateljannat/dashboard 2021-10-21 17:14:22 +05:30
Jannat Patel
b722eedb05 fix: ci removed frappe path 2021-10-21 16:21:20 +05:30
Jannat Patel
2f664faea9 fix: ci 2021-10-21 16:17:39 +05:30
Jannat Patel
e9b545c488 fix: empty state 2021-10-21 15:58:26 +05:30
Jannat Patel
bb62f626fd feat: dashboard web templates 2021-10-21 12:53:36 +05:30
Anand Chitipothu
58fe403bd0 fix: docker-compose setup
The new image of anandology/frappe-bench has the following changes:
- the bench directoy is changed from /home/bench/frappe-bench to /opt/frappe-bench
- dependency on external redis service is removed

Updated the docker-compose.yml to reflect these changes. Also pinned the
docker image to anandology/frappe-bench:2021.10
2021-10-21 09:51:37 +05:30
Jannat Patel
5ae5bab76b Merge pull request #242 from pateljannat/course-progress-optimisation 2021-10-20 16:23:15 +05:30
Jannat Patel
049c374ece fix: convert progress to int for comparision 2021-10-20 16:12:41 +05:30
Jannat Patel
66e8ac9cae fix: get progress from membership 2021-10-20 12:05:13 +05:30
Jannat Patel
f5af07086b Merge branch 'main' of https://github.com/frappe/school into rename-app-to-school 2021-10-19 19:20:31 +05:30
Jannat Patel
4d534db63f Merge pull request #241 from pateljannat/fix-styles 2021-10-19 19:18:46 +05:30
Jannat Patel
aec69e96cb fix: style for certificate button and card responsive 2021-10-19 19:09:42 +05:30
Jannat Patel
6172b09aa3 fix: conflicts 2021-10-19 12:37:16 +05:30
Jannat Patel
98c386729c Merge pull request #240 from pateljannat/fix-translation-issue 2021-10-18 13:29:58 +05:30
Jannat Patel
91ebcd8253 fix: translation issue 2021-10-18 13:28:48 +05:30
Jannat Patel
3a51299e8d Merge pull request #239 from pateljannat/fix-rating-issue 2021-10-18 13:18:26 +05:30
Jannat Patel
eaa8876f4e fix: made quotes same throughout file 2021-10-18 13:13:19 +05:30
Jannat Patel
7d80178b48 fix: allow import on course chapter lesson quiz 2021-10-18 13:02:11 +05:30
Jannat Patel
8090f2f397 fix: made strings translatable 2021-10-18 12:43:34 +05:30
Jannat Patel
bf986e26bc fix: rating issue 2021-10-18 12:24:37 +05:30
Jannat Patel
c95d957d2c refactor: build file and patch 2021-10-13 13:51:41 +05:30
Jannat Patel
b1aaddae59 Merge pull request #235 from anandology/fix-reindex-exercises
fix: error on reindex-exercises
2021-10-12 17:23:13 +05:30
Anand Chitipothu
8fe9bad2bb fix: error on reindex-exercises
Issue fossunited/mon_school#69
2021-10-12 12:38:26 +05:30
Jannat Patel
23dab6312d Merge pull request #233 from pateljannat/quiz-question-length-issue
fix: quiz question length issue
2021-10-12 10:48:32 +05:30
Jannat Patel
c91b1a7a23 fix: quiz question length issue 2021-10-12 10:34:15 +05:30
Jannat Patel
d07dbcc50a refactor: renamed app to school 2021-10-11 20:31:27 +05:30
Jannat Patel
49771a627d Merge pull request #232 from anandology/ignore-xss-for-lesson
fix: fixed the issue of lesson body getting mangled on save
2021-10-11 17:13:50 +05:30
Anand Chitipothu
25ec4ae7c6 fix: fixed the issue of lesson body getting mangled on save
enabled `ignore_xss_filter` for lesson body to disable sanitizing the
input.

Issue #231
2021-10-11 15:34:16 +05:30
Jannat Patel
13022e0bcc Merge pull request #229 from pateljannat/ix-profile-cards 2021-10-08 20:34:58 +05:30
pateljannat
cdc4b6992d fix: clickable course cards from profile page 2021-10-08 20:28:06 +05:30
Jannat Patel
f178f3806d Merge pull request #224 from pateljannat/change-patch-sequence 2021-10-06 21:52:34 +05:30
pateljannat
d84f621813 fix: patch sequence 2021-10-06 21:33:13 +05:30
Jannat Patel
7ba2ac1efd Merge pull request #222 from pateljannat/ci-fix 2021-10-04 13:39:51 +05:30
Jannat Patel
658a9e6172 fix: path to frappe-bench 2021-10-04 13:26:06 +05:30
Jannat Patel
0b44e78cc2 fix: removed frappe-path 2021-10-04 13:20:08 +05:30
Jannat Patel
1c5766d022 Merge pull request #205 from pateljannat/discussions-shift 2021-10-04 13:10:56 +05:30
pateljannat
3bff000cc9 fix: bench init command 2021-10-04 12:21:02 +05:30
pateljannat
30a8750f16 fix: ci 2021-10-04 10:34:47 +05:30
pateljannat
f3ad3f6d18 Merge branch 'main' of https://github.com/fossunited/community into discussions-shift 2021-10-03 12:12:31 +05:30
Jannat Patel
65a7dde47b Merge pull request #221 from pateljannat/fix-progress-api 2021-10-02 19:50:02 +05:30
pateljannat
38ebab59c7 fix: api call for progress save 2021-10-02 19:39:27 +05:30
Jannat Patel
b7f79b4832 Merge pull request #217 from pateljannat/remove-unused-doctypes 2021-10-02 19:00:21 +05:30
pateljannat
876a2f562f fix: conflicts 2021-10-02 18:54:05 +05:30
Jannat Patel
5f4fc2fb59 Merge pull request #219 from pateljannat/reload-doctypes-in-patch
fix: relaod doctypes in patch
2021-10-02 13:25:41 +05:30
pateljannat
44e8efd39b fix: relaod doctypes in patch 2021-10-02 13:12:04 +05:30
Jannat Patel
51c625da4d Merge pull request #218 from pateljannat/courses-page-headings 2021-10-01 19:40:50 +05:30
pateljannat
a795cd23a8 fix: conflicts 2021-10-01 11:52:20 +05:30
pateljannat
ebc3cf1cbf feat: live and upcoming course headers 2021-09-30 18:31:41 +05:30
pateljannat
c717b3ba9d fix: removed unused folders 2021-09-30 17:54:59 +05:30
pateljannat
0ed3c87f79 fix: conflicts 2021-09-30 17:36:15 +05:30
Jannat Patel
9499700988 Merge pull request #216 from pateljannat/rename-chapters-and-lessons
fix: renamed chapter and lesson doctype
2021-09-30 17:17:42 +05:30
pateljannat
8366721643 fix: indentation 2021-09-30 17:09:35 +05:30
pateljannat
66afd0fcdd fix: remove unused doctype 2021-09-30 16:20:44 +05:30
pateljannat
a105a1d3b4 fix: removed chapter and lesson links 2021-09-30 15:04:19 +05:30
pateljannat
5488947922 fix: rename parenttype for lesson reference 2021-09-30 11:27:27 +05:30
Jannat Patel
aa466f9fb7 Merge pull request #215 from fossunited/duplicate-course-interest 2021-09-30 11:24:59 +05:30
pateljannat
b3840e056f fix: naming series 2021-09-29 19:37:37 +05:30
pateljannat
ddffc8372b fix: condition to check course and chapter 2021-09-29 17:55:08 +05:30
pateljannat
dc877a9c09 fix: renamed chapter and lesson doctype 2021-09-29 16:42:07 +05:30
Anand Chitipothu
04d2384283 fix: avoid creating duplicate entries of LMS Course Interest 2021-09-29 13:34:38 +05:30
Jannat Patel
50938afe77 Merge pull request #214 from pateljannat/course-progress-report
feat: course progress summary
2021-09-28 20:10:00 +05:30
pateljannat
ea6bd1f598 fix: columns 2021-09-28 19:58:07 +05:30
pateljannat
fb0f9885c1 feat: course progress summary 2021-09-28 18:03:12 +05:30
pateljannat
4248a3af07 Merge branch 'main' of https://github.com/fossunited/community into discussions-shift 2021-09-28 11:16:46 +05:30
pateljannat
a3dc2402f7 fix: semicolon 2021-09-28 11:16:42 +05:30
Jannat Patel
153b439510 Merge pull request #211 from pateljannat/preview-message
fix: preview message
2021-09-27 13:00:46 +05:30
pateljannat
06b925435d fix: preview message 2021-09-27 12:46:11 +05:30
pateljannat
93c2c3cc45 fix: conflicts 2021-09-21 12:38:43 +05:30
Jannat Patel
04a3d58028 Merge pull request #210 from pateljannat/patch-for-chapters-and-lessons
fix: Patch for chapters and lessons
2021-09-21 10:21:31 +05:30
Jannat Patel
8551cfa32e fix: check if present before adding 2021-09-20 21:40:49 +05:30
Jannat Patel
b19c7f2fac fix: move data between doctypes 2021-09-20 18:11:19 +05:30
Jannat Patel
d135338088 fix: patch 2021-09-20 17:49:13 +05:30
Jannat Patel
b8fae5cd28 Merge pull request #209 from pateljannat/username-validation
fix: Username validation
2021-09-20 15:23:18 +05:30
Jannat Patel
29fe75d807 fix: regex in page renderer 2021-09-20 15:12:23 +05:30
Jannat Patel
1dbbf7c769 Merge branch 'main' of https://github.com/fossunited/community into username-validation 2021-09-20 13:44:51 +05:30
Jannat Patel
3be20b5658 Merge pull request #208 from pateljannat/misc
fix: minor issues
2021-09-20 12:26:59 +05:30
Jannat Patel
73b6ddf365 fix: deleted unnecessary file 2021-09-20 12:21:40 +05:30
Jannat Patel
64048a8a18 fix: minor issues 2021-09-20 12:10:35 +05:30
Jannat Patel
e245af57a8 fix: regex change for username 2021-09-19 19:15:45 +05:30
Jannat Patel
0ab708396a Merge pull request #207 from pateljannat/fixes
fix: issues
2021-09-16 18:21:58 +05:30
Jannat Patel
29855a0cbc fix: issues 2021-09-16 18:04:03 +05:30
Jannat Patel
ff6457171f Merge pull request #206 from kennethsequeira/patch-1
fix: spell check in Validation Message
2021-09-16 16:35:13 +05:30
Kenneth Sequeira
9fd59b5d38 fix: spell check in Validation Message
Change unedrscore to underscore
2021-09-16 15:59:32 +05:30
Jannat Patel
c750c62993 fix: style and message 2021-09-16 13:26:11 +05:30
Jannat Patel
a0d90ab16b fix: conflicts 2021-09-14 18:36:21 +05:30
Jannat Patel
af15d978c6 Merge pull request #204 from pateljannat/discussions-markdown-support
fix: discussions markdown support
2021-09-14 16:38:02 +05:30
Jannat Patel
f4271e7c0e fix: discussions markdown support 2021-09-14 16:22:56 +05:30
Jannat Patel
0440e1062d fix: shifting discussions from community app 2021-09-14 15:58:12 +05:30
Jannat Patel
2bc30d696a Merge pull request #203 from pateljannat/certification-redesign
fix: certificate-redesign
2021-09-11 11:21:07 +05:30
Jannat Patel
6dcd210031 certificate-redesign 2021-09-11 11:09:28 +05:30
Jannat Patel
c78c4c92b7 Merge pull request #200 from pateljannat/progress-indicators-and-dashboard
fix: profile and progress on dashboard
2021-09-10 19:52:16 +05:30
Jannat Patel
6a2c749a86 fix: formatting 2021-09-10 19:46:48 +05:30
Jan Doe
56d738474a fix: course card buttons 2021-09-10 18:54:27 +05:30
Jan Doe
7721f31342 fix: profile urls 2021-09-09 15:34:39 +05:30
Jan Doe
90e268ff2f fix: conflicts 2021-09-09 11:01:59 +05:30
Jannat Patel
69bdb75625 Merge pull request #202 from fossunited/profile-urls
Added support for making profile urls to be top-level
2021-09-09 10:26:23 +05:30
Anand Chitipothu
a0b77f5d08 feat: added get_profile_url function to get the profile url in templates
This takes care of generating the correct profile URL depending on the
`profile_url_prefix` setting.

Issue #192
2021-09-07 17:58:09 +05:30
Anand Chitipothu
77c4b53b71 feat: added redirect rule to redirect /profile_/foo to the profile url
Hack to allow redirecting to profile url from JS as it doesn't know
the `profile_url_prefix`.

Issue #192
2021-09-07 17:58:09 +05:30
Anand Chitipothu
035a674cff feat: added support for making profile urls to be top-level
Made the profile_url_prefix customizable by adding it in the hooks.

Issue #192
2021-09-07 17:58:04 +05:30
pateljannat
b9736cc6d6 fix: conflicts 2021-09-06 19:35:32 +05:30
Jannat Patel
f52e5067b6 Merge pull request #201 from pateljannat/discussion-second-cut
fix: Discussions Redesign
2021-09-06 19:29:40 +05:30
pateljannat
d657525359 fix: discussions redesign 2021-09-06 18:59:59 +05:30
pateljannat
3a2ebd42a7 fix: progress pill and certificate secondary cta 2021-09-02 13:26:45 +05:30
pateljannat
916e64d607 feat: discussions sidebar 2021-09-02 10:47:35 +05:30
pateljannat
e0b25c1e6e fix: certificate link 2021-09-01 16:50:27 +05:30
pateljannat
13b968e18c fix: profile and progress on dashboard 2021-09-01 16:21:55 +05:30
pateljannat
9e1daf5062 fix: reply card ui 2021-08-31 19:17:00 +05:30
pateljannat
941a34784c Merge branch 'main' of https://github.com/fossunited/community into discussion-second-cut 2021-08-31 17:38:13 +05:30
Jannat Patel
cd4ffa2eff Merge pull request #199 from pateljannat/certificate-ui
fix: certificate ui
2021-08-31 16:31:14 +05:30
pateljannat
17a7af74f2 fix: certificate ui 2021-08-31 16:19:41 +05:30
Jannat Patel
ff22eaa606 Merge pull request #198 from pateljannat/issue-fixes
fix: ui and removed mockup
2021-08-31 12:51:32 +05:30
pateljannat
417436d7b6 fix: course filter in review 2021-08-31 12:43:51 +05:30
pateljannat
f228489173 fix: ui and removed mockup 2021-08-31 12:30:52 +05:30
pateljannat
a49563e23f fix: discussions template 2021-08-30 18:39:00 +05:30
pateljannat
b3403b78ee fix: removed global discussions page 2021-08-30 12:47:15 +05:30
pateljannat
7a9039090d fix: discussions structure 2021-08-30 12:46:08 +05:30
Jannat Patel
289195e6c9 fix: readme url 2021-08-30 11:14:25 +05:30
Jannat Patel
e6502784ea Merge pull request #197 from pateljannat/ui-issues
fix: ui issues
2021-08-27 09:58:22 +05:30
pateljannat
54f301e8eb fix: edit-profile-link 2021-08-27 09:53:30 +05:30
pateljannat
ed91801769 fix: ui issues 2021-08-26 18:32:14 +05:30
Jannat Patel
6965148e4e Merge pull request #196 from pateljannat/course-cards-web-template
feat: course cards web template
2021-08-26 10:59:28 +05:30
pateljannat
b5481e1dd5 fix: margin 2021-08-26 10:54:38 +05:30
pateljannat
4ec9b56366 feat: course cards web template 2021-08-26 10:44:17 +05:30
Jannat Patel
530fcf9a39 Merge pull request #194 from fossunited/certification-fixes
fix: certificate, profile, quiz, and video markdown
2021-08-25 21:11:28 +05:30
pateljannat
ff1363b437 fix: certificate, profile, quiz, and video markdown 2021-08-25 21:01:13 +05:30
Jannat Patel
952e3a9906 Merge pull request #190 from fossunited/web-form-changes
fix: web form issues
2021-08-24 21:23:23 +05:30
pateljannat
9d530e35fb fix: web form issues 2021-08-24 20:58:12 +05:30
Jannat Patel
2c2ad78eb7 Merge pull request #189 from sumaiya2908/event-registration
fix: attendee-route
2021-08-24 18:09:27 +05:30
Summayya
f61c5a2fa1 fix: implicit user in speaker and exhibitor 2021-08-24 17:47:58 +05:30
Summayya
3e24ff9678 fix: implicit user 2021-08-24 17:27:16 +05:30
Summayya
b0280c3be4 fix: attendee-route 2021-08-24 16:40:46 +05:30
Jannat Patel
b10eb5c979 Merge pull request #188 from fossunited/talks-thumbnail
fix: talk card schedule
2021-08-24 12:27:13 +05:30
pateljannat
e2072c72da fix: talk card schedule 2021-08-24 12:12:55 +05:30
Jannat Patel
84a43912db Merge pull request #186 from fossunited/fixes
fix: minor issues
2021-08-23 18:52:14 +05:30
pateljannat
841819436a fix: minor issues 2021-08-23 18:22:36 +05:30
pateljannat
14a984c75f Merge branch 'main' of https://github.com/frappe/community into fixes 2021-08-23 11:14:35 +05:30
Jannat Patel
445de61ce4 Merge pull request #185 from fossunited/web-form-url-fixes
fix: web form redirects
2021-08-23 10:32:40 +05:30
pateljannat
f83007788d fix: web form redirects 2021-08-23 10:22:40 +05:30
Jannat Patel
aefee791ca Merge pull request #184 from sumaiya2908/event-management
fix: redirections
2021-08-23 10:21:24 +05:30
Summayya
00154d80df fix: redirections 2021-08-23 10:08:43 +05:30
Summayya
a1e12d29ac fix: redirections 2021-08-23 10:02:06 +05:30
Jannat Patel
5069832165 Merge pull request #183 from fossunited/event-doctype-fixes
fix: event doctypes and templates
2021-08-20 17:41:56 +05:30
pateljannat
e2cb003935 fix: doctypes and templates 2021-08-20 17:35:13 +05:30
Jannat Patel
b83a10c282 Merge pull request #180 from sumaiya2908/event-management
Create web templates for event management
2021-08-20 15:34:48 +05:30
Summayya
c6fc0a22d2 fix: add user to exhibitor doctype 2021-08-20 15:26:47 +05:30
pateljannat
c6d3994383 fix: course page 2021-08-20 14:23:18 +05:30
Summayya
07f9721aeb fix: remove speaker-registration 2021-08-20 13:45:40 +05:30
Summayya
dba956e473 fix: remove speaker-registration 2021-08-20 13:41:11 +05:30
Summayya
2894a5e479 fix: change date format 2021-08-19 17:22:01 +05:30
Summayya
ad0913500c fix: link user to speaker/attendee 2021-08-19 16:08:54 +05:30
Jannat Patel
79a765b725 Merge pull request #182 from fossunited/profile-urls
fix: profile urls
2021-08-19 12:05:59 +05:30
pateljannat
eaec991f47 fix: chapter teaser drawer 2021-08-19 10:06:39 +05:30
pateljannat
e31b189045 fix: profile urls 2021-08-19 09:35:02 +05:30
Summayya
eb58b1c149 fix: remove hover 2021-08-18 23:53:02 +05:30
Summayya
af9760f944 fix: remove div in schedule template 2021-08-18 19:49:12 +05:30
Summayya
21b2412362 fix: remove dummy data 2021-08-18 19:41:37 +05:30
Summayya
7e5e167eec fix: remove dummy data 2021-08-18 19:40:35 +05:30
Jannat Patel
7bf254319b Merge pull request #181 from fossunited/certification
feat: certification
2021-08-18 18:39:12 +05:30
pateljannat
d7e1745c09 fix: added back update progress code 2021-08-18 18:17:40 +05:30
pateljannat
ef238c1b25 fix: export label 2021-08-18 18:08:33 +05:30
pateljannat
cb60d97bb7 feat: certification 2021-08-18 18:04:47 +05:30
Summayya
7c3189e273 fix:conflict 2021-08-18 11:41:09 +05:30
Summayya
ace74febc7 Template for Previous content 2021-08-18 11:37:04 +05:30
Summayya
8dbdabd52c Create web templates for event management 2021-08-17 22:31:15 +05:30
Jannat Patel
f0ee8d7b88 Merge pull request #173 from fossunited/sketch-redesign
fix: sketch cards
2021-08-16 13:47:05 +05:30
Jannat Patel
7e5203f058 Merge pull request #179 from fossunited/discussions
feat: Discussions
2021-08-16 13:45:00 +05:30
pateljannat
a3672e9d91 feat: discussions 2021-08-16 13:33:08 +05:30
pateljannat
7017382451 fix: removed sketch card 2021-08-11 11:40:57 +05:30
pateljannat
6c9d49bf8c discussion doctypes 2021-08-11 11:14:40 +05:30
pateljannat
2de058246b Merge branch 'main' of https://github.com/frappe/community into main 2021-08-11 10:46:11 +05:30
pateljannat
798ea30382 fix: chapter teaser jerk issue 2021-08-11 10:46:01 +05:30
pateljannat
3e2c6b3343 fix: sketch image call 2021-08-10 17:08:32 +05:30
pateljannat
5ea744de5c fix: removed unused file 2021-08-10 16:46:48 +05:30
pateljannat
aedb3d3d45 fix: sketch cards 2021-08-10 16:39:17 +05:30
Jannat Patel
83a2f42df9 Merge pull request #171 from fossunited/username-fixes
fix: username issues
2021-08-10 13:19:29 +05:30
pateljannat
66aace247c fix: conditions and tests 2021-08-10 10:28:59 +05:30
pateljannat
bc3db06960 fix: username issues 2021-08-09 16:54:02 +05:30
Jannat Patel
ddaa063587 Merge pull request #170 from fossunited/upcoming-course-notify
feat: notify me
2021-08-09 15:39:04 +05:30
pateljannat
f9b4fe468e fix: removed unused import 2021-08-09 13:27:09 +05:30
pateljannat
6cbca8d1bb feat: notify me 2021-08-09 13:13:48 +05:30
Jannat Patel
d5067a4bcd Merge pull request #169 from fossunited/username-validations
fix: Username validations
2021-08-06 15:05:36 +05:30
pateljannat
04d44510de fix: redirect after edit profile save 2021-08-06 14:41:37 +05:30
pateljannat
844fcc9bca fix: username validations 2021-08-06 14:41:11 +05:30
Jannat Patel
145b5efab0 Merge pull request #168 from fossunited/minor-issues
fix: quiz, course outline, and lesson indexing
2021-08-05 18:41:15 +05:30
pateljannat
4079ed97b9 fix: quiz, course outline, and lesson indexing 2021-08-05 18:26:41 +05:30
pateljannat
63d70fc037 fix: username space and empty validations 2021-08-05 15:51:21 +05:30
Jannat Patel
ce86b5deda Merge pull request #167 from fossunited/issues
fix: cleanup
2021-08-04 19:18:45 +05:30
pateljannat
037e946bbe fix: mentors cleanup 2021-08-04 19:07:14 +05:30
pateljannat
a51c8de1eb fix: profile progress and review links 2021-08-04 14:01:52 +05:30
Jannat Patel
53dc517180 Merge pull request #165 from fossunited/quiz-cleanup
refactor: Quiz cleanup
2021-08-03 19:04:37 +05:30
pateljannat
44ca940c6b fix: quiz enhancements and tests 2021-08-03 18:30:52 +05:30
pateljannat
c0b688c720 Merge branch 'main' of https://github.com/frappe/community into quiz-cleanup 2021-07-30 18:35:23 +05:30
Jannat Patel
861d5f231d Merge pull request #164 from fossunited/issues
fix: default image, meta, reviews, lesson headers
2021-07-30 17:07:19 +05:30
pateljannat
d14b4f55a6 fix: default image, meta, reviews, lesson headers 2021-07-30 16:24:56 +05:30
Jannat Patel
db9a6c3eda Merge pull request #163 from fossunited/chapter-lesson-patch-fix
fix: chapter lesson patch
2021-07-29 13:48:23 +05:30
pateljannat
a667643681 fix: chapter lesson patch 2021-07-29 13:43:31 +05:30
Jannat Patel
f278e4b6a5 Merge pull request #162 from fossunited/lesson-enhancements
fix: lesson indexing
2021-07-29 12:12:14 +05:30
pateljannat
33a12c2dec fix: lesson indexing 2021-07-29 11:54:30 +05:30
Jannat Patel
508f90f459 Merge pull request #161 from fossunited/upcoming-courses
fix: upcoming course and doctype cleanup
2021-07-26 12:22:02 +05:30
pateljannat
709f0c2274 fix: profile profession section width 2021-07-26 11:42:30 +05:30
pateljannat
be47700e7c Merge branch 'main' of https://github.com/frappe/community into upcoming-courses 2021-07-26 11:14:38 +05:30
pateljannat
40842830a4 fix: profile page social icons position 2021-07-26 11:14:32 +05:30
pateljannat
11d070fa0d fix: condition for chapter description 2021-07-23 19:16:36 +05:30
pateljannat
dd2f830a33 fix: upcoming course and doctype cleanup 2021-07-23 19:07:26 +05:30
pateljannat
5431fcb450 fix: quiz ui change 2021-07-23 17:55:41 +05:30
Jannat Patel
324033e9ee Merge pull request #160 from fossunited/only-show-published-courses
fix: minor issues
2021-07-20 17:35:18 +05:30
pateljannat
86596d0cfe fix: minor issues 2021-07-20 17:19:18 +05:30
Jannat Patel
9323cfd748 Merge pull request #159 from rmehta/fix-global-container
fix(style): max-width on container padding
2021-07-20 13:06:36 +05:30
Jannat Patel
d125b02cec fix: added max width to container padding 2021-07-20 13:05:15 +05:30
pateljannat
282c4c5351 feat: explanation field in quiz 2021-07-20 09:36:22 +05:30
Rushabh Mehta
276d64a66a fix(style): don't mess with global container styles 2021-07-20 09:30:58 +05:30
Rushabh Mehta
79eb381a41 Merge pull request #157 from rmehta/remove-old-styles
fix(cleanup): remove old styles
2021-07-19 17:19:54 +05:30
Rushabh Mehta
44f9c0dfd3 fix(minor): remove old styles 2021-07-19 17:14:52 +05:30
Jannat Patel
0ca4cd724e Merge pull request #156 from fossunited/fix-only-show-published-courses
fix: only show the published courses on All Courses page
2021-07-19 17:11:03 +05:30
Anand Chitipothu
8a3e31f021 fix: only show the published courses on All Courses page
Closes #155
2021-07-19 17:03:38 +05:30
Jannat Patel
9be8a1af0b Merge pull request #154 from fossunited/fix-invite-email
Fix invite email
2021-07-19 13:43:36 +05:30
Anand Chitipothu
b9cac20613 fix: the delay in sending signup email 2021-07-19 13:32:18 +05:30
Anand Chitipothu
e6d5e6d37b fix: "Hello None" in the signup email
We were trying to show the full_name, but invite request only knows the email.
2021-07-19 13:31:44 +05:30
Jannat Patel
0abfcac7da Merge pull request #153 from fossunited/improve-email-templates
fix: fixed the email message sent out on signup
2021-07-19 13:23:55 +05:30
Anand Chitipothu
b70e8b9acc fix: fixed the email message sent out on signup
Currently updated keeping Mon.School in mind.
2021-07-19 13:14:13 +05:30
Jannat Patel
3b1e1aa3c3 Merge pull request #152 from fossunited/cleanup
fix: Cleanup
2021-07-19 12:49:22 +05:30
pateljannat
8f74c74d50 fix: removed unused styles and folders 2021-07-19 10:55:06 +05:30
pateljannat
d2f435016c fix: layout cleanup 2021-07-16 20:24:35 +05:30
pateljannat
389b35802b Merge branch 'main' of https://github.com/frappe/community into cleanup 2021-07-15 17:36:31 +05:30
Jannat Patel
a9192a74f9 Merge pull request #151 from fossunited/redesign-fixes
fix: Profile page, course card ratings, lesson completion tick
2021-07-15 17:36:17 +05:30
pateljannat
1366c7cf75 fix: removed unwanted image 2021-07-15 17:16:49 +05:30
pateljannat
eaa9e8e3ea fix: added linkedin icon 2021-07-15 17:05:54 +05:30
pateljannat
5ecae0df61 fix: removed unused pages 2021-07-15 17:01:15 +05:30
pateljannat
4891be1d8c fix: profile page fixes and course completion tick 2021-07-15 11:16:01 +05:30
pateljannat
ec852fc255 fix: rating on course card and profile page responsive 2021-07-13 16:54:45 +05:30
Jannat Patel
47f2d3cb7b Merge pull request #148 from fossunited/redesign
feat: Redesign
2021-07-13 15:22:59 +05:30
pateljannat
37820c1e19 Merge branch 'redesign' of https://github.com/frappe/community into redesign 2021-07-13 15:15:29 +05:30
pateljannat
230fab3bb2 fix: responsive design 2021-07-13 15:15:23 +05:30
Jannat Patel
d292d2d093 Merge pull request #149 from fossunited/disable-exercises-for-non-members
feat: include membership info in page context
2021-07-12 10:59:28 +05:30
Anand Chitipothu
51d5db01e9 feat: include membership info in page context
Added `is_member` field to page_context of learn page. This is required to
disable exercises to non-members.
2021-07-11 12:55:26 +05:30
pateljannat
0fd760df81 fix: pre tag overflow 2021-07-09 18:32:51 +05:30
pateljannat
71d0a89968 fix: made image non mandatory, remove unnecessary code 2021-07-09 15:05:46 +05:30
pateljannat
d939a63412 responsive fixes 2021-07-09 13:24:38 +05:30
pateljannat
daaa2d2fe2 responsive fixes 2021-07-09 13:03:42 +05:30
pateljannat
6dd7cb19df Merge branch 'main' of https://github.com/frappe/community into redesign 2021-07-09 09:50:38 +05:30
pateljannat
b1de2481a8 feat: profile page and other issues 2021-07-09 09:48:08 +05:30
pateljannat
27c01b3b0c fix: course details interactions 2021-07-08 10:55:03 +05:30
Jannat Patel
b7aa9aff51 Merge pull request #147 from fossunited/fix-profile
fix: error on profile page
2021-07-08 10:41:08 +05:30
Anand Chitipothu
524a041fb9 fix: error on profile page
Profile page was importing Sketch which was removed recently, even
though it was not using that. Removed it to fix the issue.
2021-07-08 10:33:12 +05:30
Jannat Patel
9de0203914 Merge pull request #145 from fossunited/sketch-cleanup
Sketch cleanup
2021-07-07 11:22:05 +05:30
pateljannat
0ed5309b97 feat: course details page structure 2021-07-06 20:51:20 +05:30
pateljannat
68fd32d536 fix: links and breadcrumbs 2021-07-06 18:13:09 +05:30
pateljannat
5ea3b25d21 feat: course home 2021-07-06 17:58:36 +05:30
Anand Chitipothu
2c24412633 refactor: removed the unused dashboard portal page 2021-07-06 14:20:00 +05:30
Anand Chitipothu
1b8a45ba4a refactor: removed sketch doctype and portal page for home
Both of these will be moved to mon_school.
2021-07-06 13:20:41 +05:30
Jannat Patel
3dd4adbc1f Merge pull request #143 from fossunited/switch-batch
feat: added a utililty to switch a student from one batch to another
2021-07-05 19:04:52 +05:30
Jannat Patel
0c52c9c4bc Merge pull request #144 from fossunited/page-context
feat: make it possible to enable tracking for livecode execution
2021-07-05 19:03:47 +05:30
Anand Chitipothu
9caf44cdbd feat: make it possible to enable tracking for livecode execution
Tracking of livecode execution is made possible by making the page
context with course, batch and lesson available in js.

Added a global page_context variable in js and the data for that gets
initialzied in the learn.py.
2021-07-02 23:58:59 +05:30
pateljannat
45d88bdc08 feat: course header wide 2021-07-02 15:43:21 +05:30
Anand Chitipothu
94b3ccd3d9 feat: added a utililty to switch a student from one batch to another 2021-07-01 17:29:02 +05:30
pateljannat
ee8273fd30 feat: new fields in user doctype and new web form 2021-06-30 16:16:22 +05:30
pateljannat
60c1449f40 Merge branch 'main' of https://github.com/frappe/community into redesign 2021-06-29 19:28:50 +05:30
Jannat Patel
67708325ae Merge pull request #141 from fossunited/workspace
feat: lms workspace
2021-06-29 15:24:22 +05:30
pateljannat
3e99577401 feat: lms workspace 2021-06-29 15:15:49 +05:30
pateljannat
5e916dc2c8 feat: review card style 2021-06-29 12:58:12 +05:30
pateljannat
0c64d46e99 feat: reviews 2021-06-28 20:27:17 +05:30
pateljannat
3aa974f8bd fix: removed review doctype 2021-06-28 13:26:29 +05:30
Jannat Patel
621d01d502 Merge pull request #140 from fossunited/exercise-refactor
fix: enabled livecode on community
2021-06-28 13:11:26 +05:30
pateljannat
aa20136223 fix: undo status change on livecode 2021-06-28 13:05:20 +05:30
pateljannat
9bc5408a44 feat: course card redesign 2021-06-28 12:52:10 +05:30
pateljannat
5a7afb3092 fix: added livecode editor in community 2021-06-24 16:38:02 +05:30
Jannat Patel
f8948ac2ef Merge pull request #138 from fossunited/learn-page-fix
fix: learn page
2021-06-24 12:28:34 +05:30
pateljannat
8b1576a028 fix: learn page 2021-06-24 12:21:25 +05:30
Jannat Patel
56d8a72a7d Merge pull request #136 from fossunited/quiz
feat: Quizzes, Youtube Video integration and Other Minor Fixes
2021-06-24 10:34:36 +05:30
pateljannat
f6c11ce52f fix: conflicts 2021-06-24 10:27:01 +05:30
pateljannat
0284c9305c fix: quiz progress and youtube video integration 2021-06-24 10:25:23 +05:30
Jannat Patel
d785fb7562 Merge pull request #127 from fossunited/livecode-cleanup
refactor: removed the portal pages for showing sketches
2021-06-23 13:09:26 +05:30
Anand Chitipothu
9f50af4ebd refactor: removed the portal pages for showing sketches
Moved them to mon_school.
2021-06-23 12:53:35 +05:30
Jannat Patel
4c3645f0d4 Merge pull request #133 from fossunited/mon-fixes-01
Various fixes from mon.school
2021-06-23 11:44:35 +05:30
Anand Chitipothu
20b3ae7d76 fix: error in linking lessons on course page
The course was adding `{{ no such element: community.lms.doctype.lms_course.lms_course.LMSCourse object['query_parameter'] }}`
to the lesson links. Fixed it by setting query_parameter to "".
2021-06-23 10:27:01 +05:30
Anand Chitipothu
f303be4db5 fix: error in find_macros when the input is empty
Added a special case to handle this issue.
2021-06-22 18:12:31 +05:30
Anand Chitipothu
fc1c393f15 feat: allow a student to be mentor of another batch
This is a requirement for mon.school. The students are of the first
batch are now mentors of new batches.
2021-06-22 18:09:21 +05:30
pateljannat
5d96bf544d fix: conflicts 2021-06-22 12:28:12 +05:30
Jannat Patel
5abfa35095 Merge pull request #132 from fossunited/learning-modes
feat: learning modes and batch switching
2021-06-22 12:23:46 +05:30
pateljannat
6c751cdf39 fix: test 2021-06-22 12:17:06 +05:30
pateljannat
2c570ea214 fix: added default value for arguements 2021-06-22 10:48:33 +05:30
pateljannat
ecfcc8a2f7 fix: redirects and urls 2021-06-22 10:45:07 +05:30
pateljannat
3384f974e5 fix: batch switch with query parameters 2021-06-22 10:11:21 +05:30
pateljannat
eb435261fe feat: learning modes 2021-06-18 18:31:10 +05:30
Jannat Patel
dc7eabefb9 Merge pull request #131 from fossunited/minor-fixes
fix: web form, progress ui, title non unique
2021-06-16 13:15:10 +05:30
pateljannat
fed4b5568b fix: web form, progress ui, title non unique 2021-06-16 13:04:45 +05:30
Jannat Patel
aa77c60abd Merge pull request #129 from fossunited/minor-fix
fix: minor issues
2021-06-15 18:46:33 +05:30
pateljannat
9c1506d3c8 fix: minor issues 2021-06-15 18:40:14 +05:30
Jannat Patel
e94c3f27ab Merge pull request #128 from fossunited/ui-fixes
fix: UI fixes
2021-06-15 13:19:03 +05:30
pateljannat
5fa8bdd40c fix: invite request test, removed print statements and unused classes' 2021-06-15 13:09:48 +05:30
pateljannat
17f03aeee7 fix: join batch, removed code revision, redirects for other pages if batch missing 2021-06-15 13:01:57 +05:30
pateljannat
7840512a13 fix: ui, preview, progress, batches 2021-06-14 18:45:46 +05:30
Anand Chitipothu
526ded784b Merge pull request #125 from fossunited/hotfix-exercise-image
fix: fixed error on saving exercises
2021-06-12 21:42:27 +05:30
Anand Chitipothu
6b5ddcd54a fix: fixed error on saving exercises
Removed the image generation when exercise is saved. The library used
for exercises has changed and generating the image doesn't work any
more.
2021-06-12 10:49:27 +05:30
Jannat Patel
c42247db42 Merge pull request #122 from fderyckel/patch-1
frappe wasn't imported
2021-06-10 20:47:05 +05:30
François de Ryckel
8f8d4901ff frappe wasn't imported
error with NameError: name 'frappe' is not defined
2021-06-10 18:04:40 +03:00
pateljannat
f5f3c808d4 Merge branch 'main' of https://github.com/frappe/community into ui-fixes 2021-06-10 13:41:31 +05:30
pateljannat
1e3152e303 fix: ui 2021-06-10 13:41:11 +05:30
Jannat Patel
344661cf83 Merge pull request #121 from fossunited/lesson-markup
Lesson markup
2021-06-10 12:32:16 +05:30
Anand Chitipothu
d9185c0b6b feat: integrated lesson markup
- added PageExtension plugin to inject custom styles scripts in a page
- removed the livecode integration and enabled PageExtension plugins for
  learn page
- also merged the profile_tab.py with plugins.py
- added a utility to find the macros from given text
- updated the before_save of lesson to find exercises using the macros
  and update the exercises as before

Issue #115
2021-06-09 23:58:21 +05:30
Anand Chitipothu
5363fb7eb3 feat: extend markdown to support macros
With this feature, the exercises can be added to the lesson as:

    {{ Exercise("two-circles") }}

This also added fenced_code extension that allows adding id and classes
to code blocks.

This uses Python-Markdown library instead of Markdown2 that is used
everywhere in Frappe. The Python-Markdown is more easily extensible than
Markdown2.

Issue #115
2021-06-09 23:22:00 +05:30
pateljannat
1cb81de5c0 feat: lms quizzes 2021-06-09 13:17:42 +05:30
Jannat Patel
d90a1247f1 Merge pull request #120 from fossunited/profile-tabs
feat: pluggable profile tabs
2021-06-08 14:53:38 +05:30
Anand Chitipothu
ef0c3e4a24 feat: pluggable profile tabs
Added ProfileTab class to represent a profile tab and made the profile
page render the tabs specified in the hook `profile_tabs`. This allows
plugging in new tabs in the profile page without makeing any changes to
the community module.
2021-06-08 10:36:12 +05:30
Anand Chitipothu
3619b136f8 Merge pull request #117 from fossunited/lesson-progress
feat: lesson progress
2021-06-07 11:24:52 +05:30
pateljannat
671b4a0650 fix: api and orm 2021-06-02 20:19:36 +05:30
Anand Chitipothu
586b39c0fd fix: issue with numbering the exercises
The exercises being listed in unpredicted order instead of the order
they were listed in the lesson. The was because the `index_` of the
exercise was never updated. Fixed this by updating the `index_` whenever
a lesson edited. However, the user still need to run reindex exercises
on the course correct the ordering, which wasn't possible earlier.
2021-06-02 17:48:02 +05:30
pateljannat
4fd7af053b fix: tests 2021-06-02 16:47:17 +05:30
pateljannat
5fd1143f76 feat: lesson progress 2021-06-02 13:52:50 +05:30
Jannat Patel
0dc4743556 Merge pull request #116 from fossunited/reindex-exercises
feat: actions to reindex lessons and exercises
2021-06-01 11:40:52 +05:30
Anand Chitipothu
c96a14c972 feat: ignore orphan exercises in the progress
Don't show exercises that are not added to any lesson in the progress.
2021-06-01 08:15:52 +05:30
Anand Chitipothu
400e706be1 feat: update the index of orphan exercises
When an exercise is removed from a lesson, the link to the lesson is
removed from that exercise and the index is reset. This will make sure
the removed exercises won't show up in places like progress.
2021-06-01 05:59:01 +05:30
Anand Chitipothu
a12a52747e feat: show exercise index in the title
Show exercise as "Exercise 2.1: Draw a Circle".
2021-06-01 05:49:45 +05:30
Anand Chitipothu
b9a93bb160 feat: added actions to reindex lessons and exercises
Some lessons gets deleted and some new ones get added in the progress of
course creation and it may happen then some of the lesson index may
become inconsistent.  Also, we would like to maintain an index for the
exercises. To support both of these, added actions to reindex lessons
and exercises to the course doctype.
2021-06-01 05:46:32 +05:30
Jannat Patel
9c65ff8ae6 Merge pull request #113 from fossunited/invite-based-membership
feat: Invite based membership
2021-05-31 13:41:12 +05:30
pateljannat
bb0aa09b4e fix: messages and url 2021-05-31 13:39:31 +05:30
pateljannat
a8752afb3b feat: invite based membership become a member page 2021-05-28 13:53:34 +05:30
pateljannat
327bde870b Merge branch 'main' of https://github.com/frappe/community into invite-based-membership 2021-05-27 17:32:48 +05:30
Jannat Patel
640ead4922 Merge pull request #109 from fossunited/style-fixes
fix: Style fixes
2021-05-27 11:54:08 +05:30
pateljannat
687f7f7f7b fix: minor home page issues 2021-05-27 11:25:05 +05:30
Anand Chitipothu
527a563e4a chore: added "programming" to the hero title 2021-05-27 09:39:07 +05:30
pateljannat
5bc9a7fe37 Merge branch 'style-fixes' of https://github.com/frappe/community into invite-based-membership 2021-05-26 19:10:38 +05:30
pateljannat
3648b3ab47 Merge branch 'style-fixes' of https://github.com/frappe/community into invite-based-membership 2021-05-26 19:08:38 +05:30
Anand Chitipothu
823cf4e431 style: fixed word-wrap of output 2021-05-25 16:06:12 +05:30
742 changed files with 37591 additions and 8300 deletions

View File

@@ -9,7 +9,7 @@ root = true
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_style = tab
trim_trailing_whitespace = true
# Python
@@ -26,4 +26,4 @@ indent_style = tab
# HTML, CSS, javascript, JSON and YAML
[*.{html,css,js,json,yml,yaml}]
indent_size = 2
indent_size = 4

37
.flake8 Normal file
View File

@@ -0,0 +1,37 @@
[flake8]
ignore =
E121,
E126,
E127,
E128,
E203,
E225,
E226,
E231,
E241,
E251,
E261,
E265,
E302,
E303,
E305,
E402,
E501,
E741,
W291,
W292,
W293,
W391,
W503,
W504,
F403,
B007,
B950,
W191,
E124, # closing bracket, irritating while writing QB code
E131, # continuation line unaligned for hanging indent
E123, # closing bracket does not match indentation of opening bracket's line
E101, # ensured by use of black
max-line-length = 200
exclude=.github/helper/semgrep_rules

74
.github/helper/flake8.conf vendored Normal file
View File

@@ -0,0 +1,74 @@
[flake8]
ignore =
B001,
B007,
B009,
B010,
B950,
E101,
E111,
E114,
E116,
E117,
E121,
E122,
E123,
E124,
E125,
E126,
E127,
E128,
E131,
E201,
E202,
E203,
E211,
E221,
E222,
E223,
E224,
E225,
E226,
E228,
E231,
E241,
E242,
E251,
E261,
E262,
E265,
E266,
E271,
E272,
E273,
E274,
E301,
E302,
E303,
E305,
E306,
E402,
E501,
E502,
E701,
E702,
E703,
E741,
F401,
F403,
F405,
W191,
W291,
W292,
W293,
W391,
W503,
W504,
E711,
E129,
F841,
E713,
E712,
max-line-length = 200

View File

@@ -6,7 +6,7 @@ on:
pull_request: {}
jobs:
tests:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
services:
redis-cache:
image: redis:alpine
@@ -32,7 +32,7 @@ jobs:
- name: setup python
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: '3.10'
- name: setup node
uses: actions/setup-node@v2
with:
@@ -53,19 +53,22 @@ jobs:
then
(cd && tar xzf ~/bench-cache/bench.tgz)
else
bench init ~/frappe-bench --skip-redis-config-generation
bench init ~/frappe-bench --skip-redis-config-generation --skip-assets --python "$(which python)"
mkdir -p ~/bench-cache
(cd && tar czf ~/bench-cache/bench.tgz frappe-bench)
fi
- name: add community app to bench
- name: add lms app to bench
working-directory: /home/runner/frappe-bench
run: bench get-app community $GITHUB_WORKSPACE
run: bench get-app lms $GITHUB_WORKSPACE
- name: create bench site
working-directory: /home/runner/frappe-bench
run: bench new-site --mariadb-root-password root --admin-password admin frappe.local
- name: install community app
- name: install lms app
working-directory: /home/runner/frappe-bench
run: bench --verbose --site frappe.local install-app community
run: bench --site frappe.local install-app lms
- name: setup requirements
working-directory: /home/runner/frappe-bench
run: bench setup requirements --dev
- name: allow tests
working-directory: /home/runner/frappe-bench
run: bench --site frappe.local set-config allow_tests true
@@ -74,5 +77,5 @@ jobs:
run: bench --site frappe.local build
- name: run tests
working-directory: /home/runner/frappe-bench
run: bench --site frappe.local run-tests --app community
run: bench --site frappe.local run-tests --app lms

33
.github/workflows/linters.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Linters
on:
pull_request:
workflow_dispatch:
push:
branches: [ main ]
jobs:
linters:
name: Semantic Commits
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install and Run Pre-commit
uses: pre-commit/action@v2.0.3
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules
- name: Download semgrep
run: pip install semgrep
- name: Run Semgrep rules
run: semgrep ci --config ./frappe-semgrep-rules/rules

19
.github/workflows/semantic.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Semantic Pull Request
on:
push:
branches: [ main ]
pull_request: {}
jobs:
# This workflow contains a single job called "build"
semantic:
name: Validate PR title
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: zeke/semantic-pull-requests@main

7
.gitignore vendored
View File

@@ -3,5 +3,8 @@
*.egg-info
*.swp
tags
community/docs/current
community/public/dist
lms/docs/current
lms/public/dist
__pycache__/
*.py[cod]
*$py.class

59
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,59 @@
exclude: 'node_modules|.git'
default_stages: [commit]
fail_fast: false
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: trailing-whitespace
files: "frappe.*"
exclude: ".*json$|.*txt$|.*csv|.*md|.*svg"
- id: check-yaml
- id: no-commit-to-branch
args: ['--branch', 'main']
- id: check-merge-conflict
- id: check-ast
- id: check-json
- id: check-toml
- id: debug-statements
- repo: https://github.com/asottile/pyupgrade
rev: v2.34.0
hooks:
- id: pyupgrade
args: ['--py310-plus']
- repo: https://github.com/adityahase/black
rev: 9cb0a69f4d0030cdf687eddf314468b39ed54119
hooks:
- id: black
additional_dependencies: ['click==8.0.4']
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.7.1
hooks:
- id: prettier
types_or: [javascript]
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
lms/public/dist/.*|
.*node_modules.*|
.*boilerplate.*|
lms/www/website_script.js|
lms/templates/includes/.*|
lms/public/js/lib/.*
)$
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8
additional_dependencies: ['flake8-bugbear',]
args: ['--config', '.github/helper/flake8.conf']
ci:
autoupdate_schedule: weekly
skip: []
submodules: false

7
Contribution.md Normal file
View File

@@ -0,0 +1,7 @@
1. Go to the apps/lms directory of your installation and execute git pull --unshallow to ensure that you have the full git repository. Also fork the frappe/lms repository on GitHub.
1. Check out a working branch in git (e.g. git checkout -b my-new-branch).
1. Make your proposed changes to the source
1. Run your local version (e.g. bench start in your bench installation). Make sure that your changes work the way you want them to.
1. Commit your changes to your branch. Make sure to use a semantic commit message.
1. Push your branch to your fork on Github, and issue a pull request.

View File

@@ -4,15 +4,15 @@ include *.json
include *.md
include *.py
include *.txt
recursive-include community *.css
recursive-include community *.csv
recursive-include community *.html
recursive-include community *.ico
recursive-include community *.js
recursive-include community *.json
recursive-include community *.md
recursive-include community *.png
recursive-include community *.py
recursive-include community *.svg
recursive-include community *.txt
recursive-exclude community *.pyc
recursive-include lms *.css
recursive-include lms *.csv
recursive-include lms *.html
recursive-include lms *.ico
recursive-include lms *.js
recursive-include lms *.json
recursive-include lms *.md
recursive-include lms *.png
recursive-include lms *.py
recursive-include lms *.svg
recursive-include lms *.txt
recursive-exclude lms *.pyc

129
README.md
View File

@@ -1,79 +1,90 @@
## Community
<p align="center">
<a href="https://www.frappelms.com/">
<img src="https://www.frappelms.com/files/flms.svg" alt="Frappe LMS" width="100" height="100">
</a>
<p align="center">Easy to use, open source, learning management system.</p>
</p>
This app helps people organize and manage their own communities.
<p align="center">
<a href="https://github.com/frappe/lms/blob/main/LICENSE">
<img alt="license" src="https://img.shields.io/badge/license-AGPLv3-blue">
</a>
</p>
The App has following components:
<img width="1402" alt="Lesson" src="https://frappelms.com/files/fs-banner71f330.png">
1. Hackathons
1. LMS
<details>
<summary>Show more screenshots</summary>
<img width="1520" alt="ss1" src="https://user-images.githubusercontent.com/31363128/210056046-584bc8aa-d28c-4514-b031-73817012837d.png">
<img width="830" alt="ss2" src="https://user-images.githubusercontent.com/31363128/210056097-36849182-6db0-43a2-8c62-5333cd2aedf4.png">
<img width="941" alt="ss3" src="https://user-images.githubusercontent.com/31363128/210056134-01a7c429-1ef4-434e-9d43-128dda35d7e5.png">
</details>
Community is built on the [Frappe Framework](https://github.com/frappe/frappe), a full-stack web app framework built with Python & JavaScript.
Frappe LMS is an easy-to-use, open-source learning management system. You can use it to create and share online courses. The app has a clear UI that helps students focus only on what's important and assists in distraction-free learning.
## Development Setup
You can create courses and lessons through simple forms. Lessons can be in the form of text, videos, quizzes or a combination of all these. You can keep your students engaged with quizzes to help revise and test the concepts learned. Course Instructors and Students can reach out to each other through the discussions section available for each lesson and get queries resolved.
**Step 1:** Clone the repo
## Features
- Create online courses. 📚
- Add detailed descriptions and preview videos to the course. 🎬
- Add videos, quizzes, and assignments to your lessons and make them interesting and interactive 📝
- Discussions section below each lesson where instructors and students can interact with each other. 💬
- Create classes to group your students based on courses and track their progress 🏛
- Statistics dashboard that provides all important numbers at a glimpse. 📈
- Job Board where users can post and look for jobs. 💼
- People directory with each person's profile page 👨‍👩‍👧‍👦
- Set cover image, profile photo, short bio, and other professional information. 🦹🏼‍♀️
- Simple layout that optimizes readability 🤓
- Delightful user experience in overall usage ✨
## Tech Stack
Frappe LMS is built on [Frappe Framework](https://frappeframework.com) which is a batteries-included python web framework.
These are some of the tools it's built on:
- [Python](https://www.python.org)
- [Redis](https://redis.io/)
- [MariaDB](https://mariadb.org/)
- [Socket.io](https://socket.io/)
## Local Setup
### Docker
You need Docker, docker-compose, and git setup on your machine. Refer to [Docker documentation](https://docs.docker.com/). After that, run the following commands:
```
$ git clone https://github.com/fossunited/community.git
$ cd community
git clone https://github.com/frappe/lms
cd lms/docker
docker-compose up
```
**Step 2:** Run docker-compose
Wait for some time until the setup script creates a site. After that, you can access `http://localhost:8000` in your browser and the app's login screen should show up.
```
$ docker-compose up
```
### Frappe Bench
**Step 3:** Visit the website at http://localhost:8000/
Currently, this app depends on the `develop` branch of [frappe](https://github.com/frappe/frappe).
You'll have to go through the setup wizard to setup the website for the first time you access it. Login using the following credentiasl to complete the setup wizard.
1. Setup frappe-bench by following [this guide](https://frappeframework.com/docs/v14/user/en/installation)
1. In the frappe-bench directory, run `bench start` and keep it running. Open a new terminal session and cd into the `frappe-bench` directory.
1. Run the following commands:
```sh
bench new-site lms.test
bench get-app lms
bench --site lms.test install-app lms
bench --site lms.test add-to-hosts
```
Username: Administrator
password: admin
```
1. Now, you can access the site at `http://gameplan.test:8080`
TODO: Explain how to load sample data
## Stopping the server
## Deployment
Frappe LMS is an app built on top of the Frappe Framework. So, you can follow any deployment guide for hosting a Frappe Framework-based site.
Press `ctrl+c` in the terminal to stop the server. You can also run `docker-compose down` in another terminal to stop it.
### Managed Hosting
Frappe LMS can be deployed in a few clicks on [Frappe Cloud](https://frappecloud.com/marketplace/apps/lms).
To completely reset the instance, do the following:
### Self-hosting
If you want to self-host, you can follow official [Frappe Bench Installation](https://github.com/frappe/bench#installation) instructions.
```
$ docker-compose down --volumes
$ docker-compose up
```
## Bugs and Feature Requests
If you find any bugs or have a feature idea for the app, feel free to report them here on [GitHub Issues](https://github.com/frappe/lms/issues). Make sure you share enough information (app screenshots, browser console screenshots, stack traces, etc) for project maintainers.
## Making Code Changes
The dev setup is configured to reload whenever any code is changed. Just edit the code and reload the webpage.
Commit the changes in a branch and send a pull request.
## Local Setup - The Hard Way
To setup the repository locally follow the steps mentioned below:
1. Install bench and setup a frappe-bench directory by following the [Installation Steps](https://frappeframework.com/docs/user/en/installation).
1. Start the server by running bench start.
1. In a separate terminal window, create a new site by running bench new-site community.test.
1. Run bench get-app https://github.com/fossunited/community.
1. Run bench --site community.test install-app community.
1. Map your site to localhost with the command ```bench --site community.test add-to-hosts```
1. Now open the URL http://community.test:8000/docs in your browser, you should see the app running.
### Contribution Guidelines (for The Hard Way)
1. Go to the apps/community directory of your installation and execute git pull --unshallow to ensure that you have the full git repository. Also fork the fossunited/community repository on GitHub.
1. Check out a working branch in git (e.g. git checkout -b my-new-branch).
1. Make your proposed changes to the source
1. Run your local version (e.g. bench start in your bench installation). Make sure that your changes work the way you want them to.
1. Commit your changes to your branch. Make sure to use a semantic commit message.
1. Push your branch to your fork on Github, and issue a pull request.
#### License
AGPL
## License
Distributed under [GNU AFFERO GENERAL PUBLIC LICENSE](license.txt)

10
bench-installation.md Normal file
View File

@@ -0,0 +1,10 @@
To setup the repository locally follow the steps mentioned below:
1. Install bench and setup a frappe-bench directory by following the [Installation Steps](https://frappeframework.com/docs/user/en/installation).
1. Start the server by running bench start.
1. In a separate terminal window, create a new site by running bench new-site lms.test.
1. Fork the LMS app
1. Run bench get-app <url-of-your-form>.
1. Run bench --site lms.test install-app lms.
1. Map your site to localhost with the command ```bench --site lms.test add-to-hosts```
1. Now open the URL http://lms.test:8000/ in your browser, you should see the app running.

View File

@@ -1,7 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
__version__ = '0.0.1'
# load the methods from the lms api
from .lms import api # noqa

View File

@@ -1,58 +0,0 @@
{
"actions": [],
"autoname": "Prompt",
"creation": "2021-02-12 17:54:52.300451",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"year",
"is_hackathon",
"volunteers"
],
"fields": [
{
"fieldname": "year",
"fieldtype": "Select",
"label": "Year",
"options": "\n2021\n2022\n2023\n2024\n2025"
},
{
"fieldname": "volunteers",
"fieldtype": "Table",
"label": "Volunteers",
"options": "Community Event Volunteer"
},
{
"default": "0",
"fieldname": "is_hackathon",
"fieldtype": "Check",
"label": "Is Hackathon"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-02-15 18:29:26.828720",
"modified_by": "Administrator",
"module": "Community",
"name": "Community Event",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityEvent(unittest.TestCase):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityParticipant(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityParticipant(unittest.TestCase):
pass

View File

@@ -1,72 +0,0 @@
{
"actions": [],
"creation": "2021-02-15 10:56:59.876454",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"full_name",
"enabled",
"avatar",
"column_break_3",
"short_bio",
"bio"
],
"fields": [
{
"fieldname": "full_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Full Name"
},
{
"fieldname": "avatar",
"fieldtype": "Attach Image",
"label": "Avatar"
},
{
"fieldname": "short_bio",
"fieldtype": "Data",
"label": "Short Bio"
},
{
"fieldname": "bio",
"fieldtype": "Small Text",
"label": "Bio"
},
{
"default": "0",
"fieldname": "enabled",
"fieldtype": "Check",
"label": "Enabled"
},
{
"fieldname": "column_break_3",
"fieldtype": "Column Break"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-02-15 11:01:02.010360",
"modified_by": "Administrator",
"module": "Community",
"name": "Community Speaker",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunitySpeaker(unittest.TestCase):
pass

View File

@@ -1,82 +0,0 @@
{
"actions": [],
"autoname": "field:sponsor",
"creation": "2021-02-15 10:46:16.271104",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"sponsor",
"website",
"image",
"speaker",
"timeslot",
"short_intro",
"pitch"
],
"fields": [
{
"fieldname": "sponsor",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Sponsor",
"reqd": 1,
"unique": 1
},
{
"fieldname": "website",
"fieldtype": "Data",
"label": "Website"
},
{
"fieldname": "image",
"fieldtype": "Attach Image",
"label": "Image"
},
{
"fieldname": "speaker",
"fieldtype": "Data",
"label": "Speaker"
},
{
"fieldname": "timeslot",
"fieldtype": "Datetime",
"label": "Timeslot"
},
{
"fieldname": "short_intro",
"fieldtype": "Small Text",
"label": "Short Intro"
},
{
"fieldname": "pitch",
"fieldtype": "Markdown Editor",
"label": "Pitch"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-02-15 10:46:16.271104",
"modified_by": "Administrator",
"module": "Community",
"name": "Community Sponsor",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunitySponsor(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunitySponsor(unittest.TestCase):
pass

View File

@@ -1,80 +0,0 @@
{
"actions": [],
"autoname": "field:topic",
"creation": "2021-02-18 16:06:59.882799",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"speaker",
"topic",
"video_link",
"date_and_time",
"event_type",
"event"
],
"fields": [
{
"fieldname": "speaker",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Speaker",
"reqd": 1
},
{
"fieldname": "topic",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Topic",
"reqd": 1,
"unique": 1
},
{
"fieldname": "video_link",
"fieldtype": "Data",
"label": "Video Link"
},
{
"fieldname": "date_and_time",
"fieldtype": "Datetime",
"label": "Date and Time"
},
{
"fieldname": "event_type",
"fieldtype": "Link",
"label": "Event Type",
"options": "DocType"
},
{
"fieldname": "event",
"fieldtype": "Dynamic Link",
"label": "Event",
"options": "event_type"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-02-18 16:56:41.526184",
"modified_by": "Administrator",
"module": "Community",
"name": "Community Talk",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityTalk(unittest.TestCase):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, Frappe and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestTShirtSizes(unittest.TestCase):
pass

View File

@@ -1 +0,0 @@
import frappe

View File

@@ -1,3 +0,0 @@
frappe.ready(function() {
// bind events here
})

View File

@@ -1,64 +0,0 @@
{
"accept_payment": 0,
"allow_comments": 0,
"allow_delete": 0,
"allow_edit": 0,
"allow_incomplete": 0,
"allow_multiple": 0,
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
"apply_document_permissions": 0,
"button_label": "Send Request",
"client_script": "$('.page-header h2').html(`Request to Join \"${frappe.utils.get_url_arg('project_name')}\"`);",
"creation": "2021-02-17 13:20:08.548735",
"doc_type": "Community Project Member",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"is_standard": 1,
"login_required": 0,
"max_attachment_size": 0,
"modified": "2021-02-17 13:50:35.153793",
"modified_by": "Administrator",
"module": "Community",
"name": "join-request",
"owner": "Administrator",
"payment_button_label": "Buy Now",
"published": 1,
"route": "join-request",
"route_to_success_link": 0,
"show_attachments": 0,
"show_in_grid": 0,
"show_sidebar": 0,
"sidebar_items": [],
"success_url": "/join-request",
"title": "Join Request",
"web_form_fields": [
{
"allow_read_on_all_link_options": 0,
"fieldname": "project",
"fieldtype": "Link",
"hidden": 0,
"label": "Project",
"max_length": 0,
"max_value": 0,
"options": "Community Project",
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
},
{
"allow_read_on_all_link_options": 0,
"fieldname": "intro",
"fieldtype": "Small Text",
"hidden": 0,
"label": "Intro",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
}
]
}

View File

@@ -1,8 +0,0 @@
frappe.ready(function () {
// bind events here
frappe.web_form.success_url = `hackathons/project?project=${frappe.utils.get_url_arg('project')}&hackathon=${frappe.utils.get_url_arg('hackathon')}`;
$('.breadcrumb-container')
.html(`<a href="${frappe.web_form.success_url}">Back to my project</a>`)
.addClass('py-4');
})

View File

@@ -1,63 +0,0 @@
{
"accept_payment": 0,
"allow_comments": 0,
"allow_delete": 0,
"allow_edit": 0,
"allow_incomplete": 0,
"allow_multiple": 0,
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
"apply_document_permissions": 0,
"button_label": "Submit",
"creation": "2021-02-18 13:15:09.464515",
"doc_type": "Community Project Update",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
"modified": "2021-02-18 13:23:41.023545",
"modified_by": "Administrator",
"module": "Community",
"name": "project-update",
"owner": "Administrator",
"payment_button_label": "Buy Now",
"published": 1,
"route": "project-update",
"route_to_success_link": 0,
"show_attachments": 0,
"show_in_grid": 0,
"show_sidebar": 0,
"sidebar_items": [],
"success_url": "/project-update",
"title": "Project Update",
"web_form_fields": [
{
"allow_read_on_all_link_options": 0,
"fieldname": "project",
"fieldtype": "Link",
"hidden": 0,
"label": "Project",
"max_length": 0,
"max_value": 0,
"options": "Community Project",
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
},
{
"allow_read_on_all_link_options": 0,
"fieldname": "update",
"fieldtype": "Data",
"hidden": 0,
"label": "Update",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
}
]
}

View File

@@ -1,14 +0,0 @@
{% set color = member.get_palette() %}
<a href="/{{member.username}}">
<span class="avatar {{ avatar_class }}" title="{{ member.full_name }}">
{% if member.user_image %}
<img class="avatar-frame standard-image" style="object-fit: cover;" src="{{ member.user_image }}" title="{{ member.full_name }}">
</img>
{% else %}
<span class="avatar-frame standard-image" title="{{ member.full_name }}"
style="background-color: var({{color[0]}}); color: var({{color[1]}});">
{{ frappe.utils.get_abbr(member.full_name) }}
</span>
{% endif %}
</span>
</a>

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Conference', {
// refresh: function(frm) {
// }
});

View File

@@ -1,56 +0,0 @@
{
"actions": [],
"autoname": "field:conference_name",
"creation": "2021-02-25 17:12:51.981534",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"conference_name",
"live_stream_url",
"conference_details"
],
"fields": [
{
"fieldname": "conference_name",
"fieldtype": "Data",
"label": "Conference Name",
"unique": 1
},
{
"fieldname": "live_stream_url",
"fieldtype": "Data",
"label": "Live Stream URL"
},
{
"fieldname": "conference_details",
"fieldtype": "Markdown Editor",
"label": "Conference Details"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-04-06 18:30:18.228083",
"modified_by": "Administrator",
"module": "Conference",
"name": "Community Conference",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityConference(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityConference(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Conference Participant', {
// refresh: function(frm) {
// }
});

View File

@@ -1,147 +0,0 @@
{
"actions": [],
"autoname": "CON-.YYYY.-.###",
"creation": "2021-02-25 17:51:23.959033",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"participant_details",
"participant_name",
"participant_designation",
"column_break_4",
"email",
"conference_details",
"year",
"full_conference_tickets",
"user_conference_tickets",
"paid",
"column_break_11",
"tshirt_table",
"tshirt_size",
"currency",
"amount",
"thank_you_email_sent"
],
"fields": [
{
"fieldname": "participant_details",
"fieldtype": "Section Break",
"label": "Participant Details"
},
{
"fieldname": "participant_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Participant Name",
"reqd": 1
},
{
"fieldname": "participant_designation",
"fieldtype": "Select",
"label": "Participant Designation",
"options": "\nCxO\nAnalyst\nConsultant\nDeveloper\nSystem Administrator\nOther"
},
{
"fieldname": "column_break_4",
"fieldtype": "Column Break"
},
{
"fieldname": "email",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Email",
"options": "Email",
"reqd": 1
},
{
"fieldname": "conference_details",
"fieldtype": "Section Break",
"label": "Conference Details"
},
{
"fieldname": "year",
"fieldtype": "Select",
"label": "Year",
"options": "\n2017\n2018\n2019\n2020\n2021\n2022\n2023\n2024\n2025"
},
{
"fieldname": "full_conference_tickets",
"fieldtype": "Int",
"in_list_view": 1,
"label": "Full Conference Tickets",
"reqd": 1
},
{
"fieldname": "user_conference_tickets",
"fieldtype": "Int",
"label": "User Conference Tickets"
},
{
"default": "0",
"fieldname": "paid",
"fieldtype": "Check",
"label": "Paid"
},
{
"fieldname": "column_break_11",
"fieldtype": "Column Break"
},
{
"fieldname": "tshirt_table",
"fieldtype": "Data",
"label": "T-Shirt Sizes"
},
{
"fieldname": "tshirt_size",
"fieldtype": "Select",
"label": "T-Shirt Size",
"options": "S\nM\nL\nXL\nXXL\nXXXL"
},
{
"fieldname": "currency",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Currency",
"options": "USD\nINR",
"reqd": 1
},
{
"fieldname": "amount",
"fieldtype": "Currency",
"label": "Amount",
"reqd": 1
},
{
"default": "0",
"fieldname": "thank_you_email_sent",
"fieldtype": "Check",
"label": "Thank You Email Sent"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-03-04 20:13:42.151103",
"modified_by": "Administrator",
"module": "Conference",
"name": "Community Conference Participant",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityConferenceParticipant(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityConferenceParticipant(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Conference Request', {
// refresh: function(frm) {
// }
});

View File

@@ -1,73 +0,0 @@
{
"actions": [],
"creation": "2021-02-25 17:19:10.378290",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"contact_name",
"contact_number",
"email",
"organization_name",
"request_type",
"message"
],
"fields": [
{
"fieldname": "contact_name",
"fieldtype": "Data",
"label": "Contact Name"
},
{
"fieldname": "contact_number",
"fieldtype": "Data",
"label": "Contact Number"
},
{
"fieldname": "email",
"fieldtype": "Data",
"label": "Email"
},
{
"fieldname": "organization_name",
"fieldtype": "Data",
"label": "Organization Name"
},
{
"fieldname": "request_type",
"fieldtype": "Select",
"label": "Request Type",
"options": "Sponsorship\nExhibit Program"
},
{
"fieldname": "message",
"fieldtype": "Text Editor",
"label": "Message"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-03-04 20:13:26.130017",
"modified_by": "Administrator",
"module": "Conference",
"name": "Community Conference Request",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityConferenceRequest(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityConferenceRequest(unittest.TestCase):
pass

View File

@@ -1,35 +0,0 @@
The Hackathon module allows Community Members to organize and manage hackathons. Community Members can view these hackathons on the portal.
<img class="screenshot" src="/community/hackathon/images/hackathons-portal.png">
### Key Features:
##### Organize Hackathons
1. Hackathons can be created using the **Community Hackathon** doctype.
1. Enter the hackathon name, the organizer, the year and Save.
<img class="screenshot" src="/community/hackathon/images/community-hackathon.png">
##### Projects
1. A Hackathon will have multiple Projects.
1. Projects can be created using the **Community Project** doctype from the desk.
1. Projects can also be created from the Portal using the Projects webform.
1. Enter details like Project Name, Project Short Intro, Project Description.
1. Attach important links like Repository Link, Demo Link, Telegram Id.
1. The checkbox Accepting Members can be used if you are still aceepting members for your project.
<img class="screenshot" src="/community/hackathon/images/project-1.png">
<img class="screenshot" src="/community/hackathon/images/project-2.png">
1. Projects are visible on the portal as well.
<img class="screenshot" src="/community/hackathon/images/project-portal.png">
<img class="screenshot" src="/community/hackathon/images/project-details.png">
##### Project Members
1. Community Members can explore the projects of hackathons and decide if they want to join any project.
1. If the project is accepting members they can apply for the project from the web form available on the portal.
<img class="screenshot" src="/community/hackathon/images/project-join-request.png">
1. Project owners can review the requests and accept/reject the members.

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Hackathon', {
// refresh: function(frm) {
// }
});

View File

@@ -1,60 +0,0 @@
{
"actions": [],
"autoname": "field:hackathon_name",
"creation": "2021-02-17 12:40:25.604012",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"hackathon_name",
"organizer",
"year"
],
"fields": [
{
"fieldname": "hackathon_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Hackathon Name",
"reqd": 1,
"unique": 1
},
{
"fieldname": "organizer",
"fieldtype": "Link",
"label": "Organizer",
"options": "User"
},
{
"fieldname": "year",
"fieldtype": "Select",
"label": "Year",
"options": "\n2021\n2022\n2023\n2024\n2025"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-05-21 12:22:26.619776",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "Community Hackathon",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityHackathon(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityHackathon(unittest.TestCase):
pass

View File

@@ -1,144 +0,0 @@
{
"actions": [],
"allow_import": 1,
"autoname": "field:project_name",
"creation": "2021-02-12 18:28:33.440328",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"disabled",
"column_break_2",
"accepting_members",
"section_break_4",
"project_name",
"project_short_intro",
"project_description",
"section_break_8",
"repository_link",
"video_link",
"column_break_11",
"hackathon",
"telegram_id",
"likes",
"project_search"
],
"fields": [
{
"default": "0",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled"
},
{
"fieldname": "project_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Project Name",
"reqd": 1,
"unique": 1
},
{
"fieldname": "project_short_intro",
"fieldtype": "Small Text",
"label": "Project Short Intro"
},
{
"fieldname": "repository_link",
"fieldtype": "Small Text",
"label": "Repository Link"
},
{
"fieldname": "video_link",
"fieldtype": "Data",
"label": "Video Link"
},
{
"fieldname": "telegram_id",
"fieldtype": "Data",
"label": "Telegram Id"
},
{
"fieldname": "project_description",
"fieldtype": "Markdown Editor",
"label": "Project Description"
},
{
"fieldname": "hackathon",
"fieldtype": "Link",
"label": "Hackathon",
"options": "Community Hackathon"
},
{
"default": "0",
"fieldname": "accepting_members",
"fieldtype": "Check",
"label": "Accepting Members"
},
{
"fieldname": "likes",
"fieldtype": "Int",
"label": "Likes",
"read_only": 1
},
{
"fieldname": "project_search",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Project Search"
},
{
"fieldname": "column_break_2",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_4",
"fieldtype": "Section Break"
},
{
"fieldname": "section_break_8",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_11",
"fieldtype": "Column Break"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-04-20 13:22:17.248521",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "Community Project",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Participant",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityProject(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Project Evaluation', {
// refresh: function(frm) {
// }
});

View File

@@ -1,169 +0,0 @@
{
"actions": [],
"autoname": "format:EVAL-{#####}",
"creation": "2021-02-12 19:44:57.467599",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"project",
"status",
"evaluated_by",
"telegram_id",
"column_break_5",
"update",
"section_break_7",
"evaluation_comment",
"overall_rating",
"section_break_10",
"impact_of_project",
"completion",
"quality_of_code",
"quality_of_",
"column_break_15",
"difficulty",
"future_viability",
"total_score"
],
"fields": [
{
"fieldname": "project",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Project",
"options": "Community Project",
"reqd": 1
},
{
"fieldname": "status",
"fieldtype": "Select",
"label": "Status",
"options": "\nPending\nPreliminary\nComplete"
},
{
"fieldname": "evaluated_by",
"fieldtype": "Link",
"label": "Evaluated By",
"options": "User"
},
{
"fieldname": "telegram_id",
"fieldtype": "Small Text",
"label": "Telegram Id"
},
{
"fieldname": "column_break_5",
"fieldtype": "Column Break"
},
{
"fieldname": "update",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Update",
"reqd": 1
},
{
"fieldname": "section_break_7",
"fieldtype": "Section Break"
},
{
"fieldname": "evaluation_comment",
"fieldtype": "Small Text",
"label": "Evaluation Comment"
},
{
"fieldname": "overall_rating",
"fieldtype": "Int",
"label": "Overall Rating"
},
{
"fieldname": "section_break_10",
"fieldtype": "Section Break",
"label": "Score"
},
{
"fieldname": "impact_of_project",
"fieldtype": "Int",
"label": "Impact of Project"
},
{
"fieldname": "completion",
"fieldtype": "Int",
"label": "Completion"
},
{
"fieldname": "quality_of_code",
"fieldtype": "Int",
"label": "Quality of Code"
},
{
"fieldname": "quality_of_",
"fieldtype": "Int",
"label": "Quality of Presentation"
},
{
"fieldname": "column_break_15",
"fieldtype": "Column Break"
},
{
"fieldname": "difficulty",
"fieldtype": "Int",
"label": "Difficulty"
},
{
"fieldname": "future_viability",
"fieldtype": "Int",
"label": "Future Viability"
},
{
"fieldname": "total_score",
"fieldtype": "Int",
"label": "Total Score"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-03-04 19:56:53.757808",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "Community Project Evaluation",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
},
{
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Participant",
"share": 1,
"write": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Evaluator",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityProjectEvaluation(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityProjectEvaluation(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Project Like', {
// refresh: function(frm) {
// }
});

View File

@@ -1,43 +0,0 @@
{
"actions": [],
"creation": "2021-02-12 18:43:24.206708",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"project"
],
"fields": [
{
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Community Project"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-03-04 18:55:51.877522",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "Community Project Like",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityProjectLike(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityProjectLike(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Project Member', {
// refresh: function(frm) {
// }
});

View File

@@ -1,16 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityProjectMember(Document):
def validate(self):
self.validate_if_already_member()
def validate_if_already_member(self):
if frappe.get_all("Community Project Member", {"owner": self.owner}):
frappe.throw(_("You have already applied for the membership of this project."))

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityProjectMember(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Community Project Update', {
// refresh: function(frm) {
// }
});

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class CommunityProjectUpdate(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCommunityProjectUpdate(unittest.TestCase):
pass

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

View File

@@ -1,3 +0,0 @@
frappe.ready(function() {
// bind events here
})

View File

@@ -1,64 +0,0 @@
{
"accept_payment": 0,
"allow_comments": 0,
"allow_delete": 0,
"allow_edit": 0,
"allow_incomplete": 0,
"allow_multiple": 0,
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
"apply_document_permissions": 0,
"button_label": "Send Request",
"client_script": "$('.page-header h2').html(`Request to Join \"${frappe.utils.get_url_arg('project_name')}\"`);",
"creation": "2021-02-17 13:20:08.548735",
"doc_type": "Community Project Member",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
"modified": "2021-04-14 13:52:46.135536",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "join-request",
"owner": "Administrator",
"payment_button_label": "Buy Now",
"published": 1,
"route": "join-request",
"route_to_success_link": 0,
"show_attachments": 0,
"show_in_grid": 0,
"show_sidebar": 0,
"sidebar_items": [],
"success_url": "/join-request",
"title": "Join Request",
"web_form_fields": [
{
"allow_read_on_all_link_options": 0,
"fieldname": "project",
"fieldtype": "Link",
"hidden": 0,
"label": "Project",
"max_length": 0,
"max_value": 0,
"options": "Community Project",
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
},
{
"allow_read_on_all_link_options": 0,
"fieldname": "intro",
"fieldtype": "Small Text",
"hidden": 0,
"label": "Intro",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
}
]
}

View File

@@ -1,3 +0,0 @@
frappe.ready(function() {
// bind events here
})

View File

@@ -1,49 +0,0 @@
{
"accept_payment": 0,
"allow_comments": 0,
"allow_delete": 0,
"allow_edit": 1,
"allow_incomplete": 0,
"allow_multiple": 0,
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
"apply_document_permissions": 0,
"button_label": "Save",
"creation": "2021-04-14 13:11:50.606310",
"doc_type": "Community Project",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"introduction_text": "<div class=\"ql-editor read-mode\"><p>Add details about your project.</p><p><br></p><p><strong>Note:</strong> If you save this project, you won't be able to join another one. If your teammates have already created the project, join it instead.</p></div>",
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
"modified": "2021-04-14 13:11:50.606310",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "project",
"owner": "Administrator",
"payment_button_label": "Buy Now",
"published": 1,
"route": "edit-project",
"route_to_success_link": 0,
"show_attachments": 0,
"show_in_grid": 0,
"show_sidebar": 0,
"sidebar_items": [],
"success_url": "/project",
"title": "Project",
"web_form_fields": [
{
"allow_read_on_all_link_options": 0,
"fieldtype": "Attach",
"hidden": 0,
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 0,
"show_in_filter": 0
}
]
}

View File

@@ -1,3 +0,0 @@
frappe.ready(function() {
// bind events here
})

View File

@@ -1,63 +0,0 @@
{
"accept_payment": 0,
"allow_comments": 0,
"allow_delete": 0,
"allow_edit": 0,
"allow_incomplete": 0,
"allow_multiple": 0,
"allow_print": 0,
"amount": 0.0,
"amount_based_on_field": 0,
"apply_document_permissions": 0,
"button_label": "Submit",
"creation": "2021-02-18 13:15:09.464515",
"doc_type": "Community Project Update",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
"modified": "2021-03-04 19:43:28.957577",
"modified_by": "Administrator",
"module": "Hackathon",
"name": "project-update",
"owner": "Administrator",
"payment_button_label": "Buy Now",
"published": 1,
"route": "project-update",
"route_to_success_link": 0,
"show_attachments": 0,
"show_in_grid": 0,
"show_sidebar": 0,
"sidebar_items": [],
"success_url": "/project-update",
"title": "Project Update",
"web_form_fields": [
{
"allow_read_on_all_link_options": 0,
"fieldname": "project",
"fieldtype": "Link",
"hidden": 0,
"label": "Project",
"max_length": 0,
"max_value": 0,
"options": "Community Project",
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
},
{
"allow_read_on_all_link_options": 0,
"fieldname": "update",
"fieldtype": "Data",
"hidden": 0,
"label": "Update",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 1,
"show_in_filter": 0
}
]
}

View File

@@ -1,7 +0,0 @@
from __future__ import unicode_literals
import frappe
def get_context(context):
# do your magic here
pass

View File

@@ -1,177 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from . import __version__ as app_version
app_name = "community"
app_title = "Community"
app_publisher = "FOSS United"
app_description = "Community App"
app_icon = "octicon octicon-file-directory"
app_color = "grey"
app_email = "jannat@erpnext.com"
app_license = "AGPL"
# Includes in <head>
# ------------------
# include js, css files in header of desk.html
# app_include_css = "/assets/community/css/community.css"
# app_include_js = "/assets/community/js/community.js"
# include js, css files in header of web template
web_include_css = "community.bundle.css"
# web_include_css = "/assets/community/css/community.css"
# web_include_js = "/assets/community/js/community.js"
# include custom scss in every website theme (without file extension ".scss")
# website_theme_scss = "community/public/scss/website"
# include js, css files in header of web form
# webform_include_js = {"doctype": "public/js/doctype.js"}
# webform_include_css = {"doctype": "public/css/doctype.css"}
# include js in page
# page_js = {"page" : "public/js/file.js"}
# include js in doctype views
# doctype_js = {"doctype" : "public/js/doctype.js"}
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
# doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"}
# Home Pages
# ----------
# application home page (will override Website Settings)
# home_page = "login"
# website user home page (by Role)
# role_home_page = {
# "Role": "home_page"
# }
# Generators
# ----------
# automatically create page for each record of this doctype
# website_generators = ["Web Page"]
# Installation
# ------------
# before_install = "community.install.before_install"
# after_install = "community.install.after_install"
# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config
# notification_config = "community.notifications.get_notification_config"
# Permissions
# -----------
# Permissions evaluated in scripted ways
# permission_query_conditions = {
# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
# }
#
# has_permission = {
# "Event": "frappe.desk.doctype.event.event.has_permission",
# }
# DocType Class
# ---------------
# Override standard doctype classes
override_doctype_class = {
"User": "community.overrides.user.CustomUser"
}
# Document Events
# ---------------
# Hook on document methods and events
doc_events = {
}
# Scheduled Tasks
# ---------------
#scheduler_events = {
# "daily": [
# "erpnext.stock.reorder_item.reorder_item"
# ]
#}
# Testing
# -------
# before_tests = "community.install.before_tests"
# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
# "frappe.desk.doctype.event.event.get_events": "community.event.get_events"
# }
#
# each overriding function accepts a `data` argument;
# generated from the base implementation of the doctype dashboard,
# along with any modifications made in other Frappe apps
# override_doctype_dashboards = {
# "Task": "community.task.get_dashboard_data"
# }
# exempt linked doctypes from being automatically cancelled
#
# auto_cancel_exempted_doctypes = ["Auto Repeat"]
# Add all simple route rules here
primary_rules = [
{"from_route": "/sketches/<sketch>", "to_route": "sketches/sketch"},
{"from_route": "/courses/<course>", "to_route": "courses/course"},
{"from_route": "/courses/<course>/<topic>", "to_route": "courses/topic"},
{"from_route": "/hackathons/<hackathon>", "to_route": "hackathons/hackathon"},
{"from_route": "/hackathons/<hackathon>/<project>", "to_route": "hackathons/project"},
{"from_route": "/dashboard", "to_route": ""},
{"from_route": "/add-a-new-batch", "to_route": "add-a-new-batch"},
{"from_route": "/courses/<course>/<batch>/home", "to_route": "batch/home"},
{"from_route": "/courses/<course>/<batch>/learn", "to_route": "batch/learn"},
{"from_route": "/courses/<course>/<batch>/learn/<int:chapter>.<int:lesson>", "to_route": "batch/learn"},
{"from_route": "/courses/<course>/<batch>/schedule", "to_route": "batch/schedule"},
{"from_route": "/courses/<course>/<batch>/members", "to_route": "batch/members"},
{"from_route": "/courses/<course>/<batch>/discuss", "to_route": "batch/discuss"},
{"from_route": "/courses/<course>/<batch>/about", "to_route": "batch/about"},
{"from_route": "/courses/<course>/<batch>/progress", "to_route": "batch/progress"}
]
# Any frappe default URL is blocked by profile-rules, add it here to unblock it
whitelist = [
"/home",
"/login",
"/update-password",
"/update-profile",
"/third-party-apps",
"/website_script.js",
"/courses",
"/sketches",
"/admin",
"/socket.io",
"/hackathons",
"/dashboard",
"/join-request"
"/add-a-new-batch",
"/new-sign-up",
"/message"
]
whitelist_rules = [{"from_route": p, "to_route": p[1:]} for p in whitelist]
# regex rule to match all profiles
profile_rules = [
{"from_route": "/<string(minlength=4):username>", "to_route": "profiles/profile"},
]
website_route_rules = primary_rules + whitelist_rules + profile_rules
update_website_context = 'community.widgets.update_website_context'

View File

@@ -1,54 +0,0 @@
"""API methods for the LMS.
"""
import frappe
@frappe.whitelist()
def autosave_section(section, code):
"""Saves the code edited in one of the sections.
"""
doc = frappe.get_doc(
doctype="Code Revision",
section=section,
code=code,
author=frappe.session.user)
doc.insert()
return {"name": doc.name}
@frappe.whitelist()
def get_section(name):
"""Saves the code edited in one of the sections.
"""
doc = frappe.get_doc("LMS Section", name)
return doc and doc.as_dict()
@frappe.whitelist()
def submit_solution(exercise, code):
"""Submits a solution.
@exerecise: name of the exercise to submit
@code: solution to the exercise
"""
ex = frappe.get_doc("Exercise", exercise)
if not ex:
return
doc = ex.submit(code)
return {"name": doc.name, "creation": doc.creation}
@frappe.whitelist()
def save_current_lesson(batch_name, lesson_name):
"""Saves the current lesson for a student/mentor.
"""
name = frappe.get_value(
doctype="LMS Batch Membership",
filters={
"batch": batch_name,
"member_email": frappe.session.user
},
fieldname="name")
if not name:
return
doc = frappe.get_doc("LMS Batch Membership", name)
doc.current_lesson = lesson_name
doc.save(ignore_permissions=True)
return {"current_lesson": doc.current_lesson}

View File

@@ -1,15 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
class Chapter(Document):
def get_lessons(self):
rows = frappe.db.get_all("Lesson",
filters={"chapter": self.name},
fields='*',
order_by="index_")
return [frappe.get_doc(dict(row, doctype='Lesson')) for row in rows]

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestCodeRevision(unittest.TestCase):
pass

View File

@@ -1,59 +0,0 @@
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
import frappe
from frappe.model.document import Document
from ..lms_sketch.livecode import livecode_to_svg
class Exercise(Document):
def before_save(self):
self.image = livecode_to_svg(None, self.answer)
def get_user_submission(self):
"""Returns the latest submission for this user.
"""
user = frappe.session.user
if not user or user == "Guest":
return
result = frappe.get_all('Exercise Submission',
fields="*",
filters={
"owner": user,
"exercise": self.name
},
order_by="creation desc",
page_length=1)
print("get_user_submission", result)
if result:
return result[0]
def submit(self, code):
"""Submits the given code as solution to exercise.
"""
user = frappe.session.user
if not user or user == "Guest":
return
old_submission = self.get_user_submission()
if old_submission and old_submission.solution == code:
return old_submission
course = frappe.get_doc("LMS Course", self.course)
batch = course.get_student_batch(user)
image = livecode_to_svg(None, code)
doc = frappe.get_doc(
doctype="Exercise Submission",
exercise=self.name,
exercise_title=self.title,
course=self.course,
lesson=self.lesson,
batch=batch and batch.name,
image=image,
solution=code)
doc.insert(ignore_permissions=True)
return doc

View File

@@ -1,49 +0,0 @@
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
import frappe
import unittest
class TestExercise(unittest.TestCase):
def setUp(self):
frappe.db.sql('delete from `tabExercise Submission`')
frappe.db.sql('delete from `tabExercise`')
frappe.db.sql('delete from `tabLMS Course`')
def new_exercise(self):
course = frappe.get_doc({
"doctype": "LMS Course",
"name": "test-course",
"title": "Test Course",
"short_introduction": "Test Course",
"description": "Test Course"
})
course.insert()
e = frappe.get_doc({
"doctype": "Exercise",
"name": "test-problem",
"course": course.name,
"title": "Test Problem",
"description": "draw a circle",
"code": "# draw a single cicle",
"answer": (
"# draw a single circle\n" +
"circle(100, 100, 50)")
})
e.insert()
return e
def test_exercise(self):
e = self.new_exercise()
assert e.get_user_submission() is None
def test_exercise_submission(self):
e = self.new_exercise()
submission = e.submit("circle(100, 100, 50)")
assert submission is not None
assert submission.exercise == e.name
assert submission.course == e.course
user_submission = e.get_user_submission()
assert user_submission is not None
assert user_submission.name == submission.name

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('Invite Request', {
// refresh: function(frm) {
// }
});

View File

@@ -1,86 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.model.document import Document
import json
from frappe.utils.password import get_decrypted_password
class InviteRequest(Document):
def on_update(self):
if self.has_value_changed("status") and self.status == "Approved":
self.send_email()
def create_user(self, password):
full_name_split = self.full_name.split(" ")
user = frappe.get_doc({
"doctype": "User",
"email": self.signup_email,
"first_name": full_name_split[0],
"last_name": full_name_split[1] if len(full_name_split) > 1 else "",
"username": self.username,
"send_welcome_email": 0,
"user_type": "Website User",
"new_password": password
})
user.save(ignore_permissions=True)
return user
def send_email(self):
subject = _("Your request has been approved.")
args = {
"full_name": self.full_name,
"signup_form_link": "/new-sign-up?invite_code={0}".format(self.name),
"site_url": frappe.utils.get_url()
}
frappe.sendmail(
recipients=self.invite_email,
sender=frappe.db.get_single_value("LMS Settings", "email_sender"),
subject=subject,
header=[subject, "green"],
template = "lms_invite_request_approved",
args=args)
@frappe.whitelist(allow_guest=True)
def create_invite_request(invite_email):
if not frappe.utils.validate_email_address(invite_email):
return "invalid email"
if frappe.db.exists("User", invite_email):
return "user"
if frappe.db.exists("Invite Request", {"invite_email": invite_email}):
return "invite"
frappe.get_doc({
"doctype": "Invite Request",
"invite_email": invite_email
}).save(ignore_permissions=True)
return "OK"
@frappe.whitelist(allow_guest=True)
def update_invite(data):
data = frappe._dict(json.loads(data)) if type(data) == str else frappe._dict(data)
try:
doc = frappe.get_doc("Invite Request", data.invite_code)
except frappe.DoesNotExistError:
frappe.throw(_("Invalid Invite Code."))
doc.signup_email = data.signup_email
doc.username = data.username
doc.full_name = data.full_name
doc.invite_code = data.invite_code
doc.save(ignore_permissions=True)
user = doc.create_user(data.password)
if user:
doc.status = "Registered"
doc.save(ignore_permissions=True)
return "OK"

View File

@@ -1,62 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
from community.lms.doctype.invite_request.invite_request import create_invite_request, update_invite
import frappe
import unittest
class TestInviteRequest(unittest.TestCase):
@classmethod
def setUpClass(self):
create_invite_request("test_invite@example.com")
def test_create_invite_request(self):
if frappe.db.exists("Invite Request", {"invite_email": "test_invite@example.com"}):
invite = frappe.db.get_value("Invite Request",
filters={"invite_email": "test_invite@example.com"},
fieldname=["invite_email", "status", "signup_email"],
as_dict=True)
self.assertEqual(invite.status, "Pending")
self.assertEqual(invite.signup_email, None)
def test_create_invite_request_update(self):
if frappe.db.exists("Invite Request", {"invite_email": "test_invite@example.com"}):
data = {
"signup_email": "test_invite@example.com",
"username": "test_invite",
"full_name": "Test Invite",
"password": "Test@invite",
"invite_code": frappe.db.get_value("Invite Request", {"invite_email": "test_invite@example.com"}, "name")
}
update_invite(data)
invite = frappe.db.get_value("Invite Request",
filters={"invite_email": "test_invite@example.com"},
fieldname=["invite_email", "status", "signup_email", "full_name", "username", "invite_code", "name"],
as_dict=True)
self.assertEqual(invite.signup_email, "test_invite@example.com")
self.assertEqual(invite.full_name, "Test Invite")
self.assertEqual(invite.username, "test_invite")
self.assertEqual(invite.invite_code, invite.name)
self.assertEqual(invite.status, "Registered")
user = frappe.db.get_value("User", "test_invite@example.com",
fieldname=["first_name", "username", "send_welcome_email", "user_type"],
as_dict=True)
self.assertTrue(user)
self.assertEqual(user.first_name, invite.full_name.split(" ")[0])
self.assertEqual(user.username, invite.username)
self.assertEqual(user.send_welcome_email, 0)
self.assertEqual(user.user_type, "Website User")
@classmethod
def tearDownClass(self):
if frappe.db.exists("User", "test_invite@example.com"):
frappe.delete_doc("User", "test_invite@example.com")
invite_request = frappe.db.exists("Invite Request", {"invite_email": "test_invite@example.com"})
if invite_request:
frappe.delete_doc("Invite Request", invite_request)

View File

@@ -1,80 +0,0 @@
{
"actions": [],
"autoname": "format:{####} {title}",
"creation": "2021-05-03 06:21:12.995987",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"chapter",
"lesson_type",
"title",
"index_",
"body",
"sections"
],
"fields": [
{
"fieldname": "chapter",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Chapter",
"options": "Chapter"
},
{
"default": "Video",
"fieldname": "lesson_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Lesson Type",
"options": "Video\nText\nQuiz"
},
{
"fieldname": "title",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Title"
},
{
"default": "1",
"fieldname": "index_",
"fieldtype": "Int",
"label": "Index"
},
{
"fieldname": "body",
"fieldtype": "Markdown Editor",
"label": "Body"
},
{
"fieldname": "sections",
"fieldtype": "Table",
"label": "Sections",
"options": "LMS Section"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-05-13 20:03:51.510605",
"modified_by": "Administrator",
"module": "LMS",
"name": "Lesson",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@@ -1,45 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from ...section_parser import SectionParser
class Lesson(Document):
def before_save(self):
sections = SectionParser().parse(self.body or "")
self.sections = [self.make_lms_section(i, s) for i, s in enumerate(sections)]
for s in self.sections:
if s.type == "exercise":
e = s.get_exercise()
e.lesson = self.name
e.save()
def get_sections(self):
return sorted(self.get('sections'), key=lambda s: s.index)
def make_lms_section(self, index, section):
s = frappe.new_doc('LMS Section', parent_doc=self, parentfield='sections')
s.type = section.type
s.id = section.id
s.label = section.label
s.contents = section.contents
s.index = index
return s
def get_next(self):
"""Returns the number for the next lesson.
The return value would be like 1.2, 2.1 etc.
It will be None if there is no next lesson.
"""
def get_prev(self):
"""Returns the number for the prev lesson.
The return value would be like 1.2, 2.1 etc.
It will be None if there is no next lesson.
"""

View File

@@ -1,96 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
from community.lms.doctype.lms_batch_membership.lms_batch_membership import create_membership
from community.query import find, find_all
class LMSBatch(Document):
def validate(self):
self.validate_if_mentor()
def validate_if_mentor(self):
course = frappe.get_doc("LMS Course", self.course)
if not course.is_mentor(frappe.session.user):
frappe.throw(_("You are not a mentor of the course {0}").format(course.title))
def after_insert(self):
create_membership(batch=self.name, member_type="Mentor")
def get_mentors(self):
memberships = frappe.get_all(
"LMS Batch Membership",
{"batch": self.name, "member_type": "Mentor"},
["member"])
member_names = [m['member'] for m in memberships]
return find_all("User", name=["IN", member_names])
def is_member(self, email, member_type=None):
"""Checks if a person is part of a batch.
If member_type is specified, checks if the person is a Student/Mentor.
"""
filters = {
"batch": self.name,
"member": email
}
if member_type:
filters['member_type'] = member_type
return frappe.db.exists("LMS Batch Membership", filters)
def get_students(self):
"""Returns (email, full_name, username) of all the students of this batch as a list of dict.
"""
memberships = frappe.get_all(
"LMS Batch Membership",
{"batch": self.name, "member_type": "Student"},
["member"])
member_names = [m['member'] for m in memberships]
return find_all("User", name=["IN", member_names])
def get_messages(self):
messages = frappe.get_all("LMS Message", {"batch": self.name}, ["*"], order_by="creation")
for message in messages:
message.message = frappe.utils.md_to_html(message.message)
if message.author == frappe.session.user:
message.author_name = "You"
message.is_author = True
return messages
def get_membership(self, email):
"""Returns the membership document of given user.
"""
name = frappe.get_value(
doctype="LMS Batch Membership",
filters={
"batch": self.name,
"member": email
},
fieldname="name")
return frappe.get_doc("LMS Batch Membership", name)
def get_current_lesson(self, user):
"""Returns the name of the current lesson for the given user.
"""
membership = self.get_membership(user)
return membership and membership.current_lesson
def get_learn_url(self, lesson_number):
if not lesson_number:
return
return f"/courses/{self.course}/{self.name}/learn/{lesson_number}"
@frappe.whitelist()
def save_message(message, batch):
doc = frappe.get_doc({
"doctype": "LMS Message",
"batch": batch,
"author": frappe.session.user,
"message": message
})
doc.save(ignore_permissions=True)

View File

@@ -1,55 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
class LMSBatchMembership(Document):
def validate(self):
self.validate_membership_in_same_batch()
self.validate_membership_in_different_batch_same_course()
def validate_membership_in_same_batch(self):
previous_membership = frappe.db.get_value("LMS Batch Membership",
filters={
"member": self.member,
"batch": self.batch,
"name": ["!=", self.name]
},
fieldname=["member_type","member"],
as_dict=1)
if previous_membership:
member_name = frappe.db.get_value("User", self.member, "full_name")
frappe.throw(_("{0} is already a {1} of {2}").format(member_name, previous_membership.member_type, self.batch))
def validate_membership_in_different_batch_same_course(self):
course = frappe.db.get_value("LMS Batch", self.batch, "course")
previous_membership = frappe.get_all("LMS Batch Membership",
filters={
"member": self.member,
"name": ["!=", self.name]
},
fields=["batch", "member_type", "name"]
)
for membership in previous_membership:
batch_course = frappe.db.get_value("LMS Batch", membership.batch, "course")
if batch_course == course and (membership.member_type == "Student" or self.member_type == "Student"):
member_name = frappe.db.get_value("User", self.member, "full_name")
frappe.throw(_("{0} is already a {1} of {2} course through {3} batch").format(member_name, membership.member_type, course, membership.batch))
@frappe.whitelist()
def create_membership(batch, member=None, member_type="Student", role="Member"):
frappe.get_doc({
"doctype": "LMS Batch Membership",
"batch": batch,
"role": role,
"member_type": member_type,
"member": member or frappe.session.user
}).save(ignore_permissions=True)
return "OK"

View File

@@ -1,80 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
class TestLMSBatchMembership(unittest.TestCase):
def setUp(self):
frappe.db.sql("DELETE FROM `tabLMS Batch Membership`")
frappe.db.sql("DELETE FROM `tabLMS Batch`")
frappe.db.sql('delete from `tabLMS Course Mentor Mapping`')
frappe.db.sql("DELETE FROM `tabLMS Course`")
frappe.db.sql("DELETE FROM `tabUser` where email like '%@test.com'")
def new_course_batch(self):
course = frappe.get_doc({
"doctype": "LMS Course",
"name": "test-course",
"title": "Test Course",
"short_code": "XX",
"short_introduction": "Test Course",
"description": "Test Course"
})
course.insert()
self.new_user("mentor@test.com", "Test Mentor")
# without this, the creating batch will fail
course.add_mentor("mentor@test.com")
frappe.session.user = "mentor@test.com"
batch = frappe.get_doc({
"doctype": "LMS Batch",
"name": "test-batch",
"title": "Test Batch",
"course": course.name
})
batch.insert(ignore_permissions=True)
frappe.session.user = "Administrator"
return course, batch
def new_user(self, email="test@test.com", full_name="Test User"):
user = frappe.get_doc({
"doctype": "User",
"name": email,
"email": email,
"first_name": full_name,
})
user.insert()
return user
def add_membership(self, batch_name, member_name, member_type="Student"):
doc = frappe.get_doc({
"doctype": "LMS Batch Membership",
"batch": batch_name,
"member": member_name,
"member_type": member_type
})
doc.insert()
return doc
def test_membership(self):
course, batch = self.new_course_batch()
member = self.new_user("test01@test.com")
membership = self.add_membership(batch.name, member.name)
assert membership.course == course.name
assert membership.member_name == member.full_name
def test_membership_change_role(self):
course, batch = self.new_course_batch()
member = self.new_user("test01@test.com")
membership = self.add_membership(batch.name, member.name)
# it should be possible to change role
membership.role = "Admin"
membership.save()

View File

@@ -1,114 +0,0 @@
{
"actions": [],
"allow_guest_to_view": 1,
"allow_rename": 1,
"creation": "2021-03-01 16:49:33.622422",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"is_published",
"column_break_3",
"short_code",
"video_link",
"section_break_5",
"short_introduction",
"description"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Title",
"reqd": 1,
"unique": 1
},
{
"fieldname": "description",
"fieldtype": "Markdown Editor",
"label": "Description",
"reqd": 1
},
{
"default": "0",
"fieldname": "is_published",
"fieldtype": "Check",
"label": "Published"
},
{
"fieldname": "short_code",
"fieldtype": "Data",
"label": "Short Code"
},
{
"fieldname": "column_break_3",
"fieldtype": "Column Break"
},
{
"fieldname": "video_link",
"fieldtype": "Data",
"label": "Video Embed Link"
},
{
"fieldname": "section_break_5",
"fieldtype": "Section Break"
},
{
"fieldname": "short_introduction",
"fieldtype": "Small Text",
"label": "Short Introduction",
"reqd": 1
}
],
"index_web_pages_for_search": 1,
"is_published_field": "is_published",
"links": [
{
"group": "Chapters",
"link_doctype": "Chapter",
"link_fieldname": "course"
},
{
"group": "Batches",
"link_doctype": "LMS Batch",
"link_fieldname": "course"
},
{
"group": "Mentors",
"link_doctype": "LMS Course Mentor Mapping",
"link_fieldname": "course"
},
{
"group": "Mentors",
"link_doctype": "LMS Mentor Request",
"link_fieldname": "course"
}
],
"modified": "2021-05-23 18:14:32.602647",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Course",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"search_fields": "title",
"sort_field": "creation",
"sort_order": "DESC",
"title_field": "title",
"track_changes": 1,
"track_views": 1
}

View File

@@ -1,201 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from ...utils import slugify
from community.query import find, find_all
class LMSCourse(Document):
@staticmethod
def find(name):
"""Returns the course with specified name.
"""
return find("LMS Course", is_published=True, name=name)
def autoname(self):
if not self.name:
self.name = self.generate_slug(title=self.title)
@staticmethod
def find_all():
"""Returns all published courses.
"""
return find_all("LMS Course", is_published=True)
def generate_slug(self, title):
result = frappe.get_all(
'LMS Course',
fields=['name'])
slugs = set([row['name'] for row in result])
return slugify(title, used_slugs=slugs)
def __repr__(self):
return f"<Course#{self.name}>"
def has_mentor(self, email):
"""Checks if this course has a mentor with given email.
"""
if not email or email == "Guest":
return False
mapping = frappe.get_all("LMS Course Mentor Mapping", {"course": self.name, "mentor": email})
return mapping != []
def add_mentor(self, email):
"""Adds a new mentor to the course.
"""
if not email:
raise ValueError("Invalid email")
if email == "Guest":
raise ValueError("Guest user can not be added as a mentor")
# given user is already a mentor
if self.has_mentor(email):
return
doc = frappe.get_doc({
"doctype": "LMS Course Mentor Mapping",
"course": self.name,
"mentor": email
})
doc.insert()
def get_mentors(self):
"""Returns the list of all mentors for this course.
"""
course_mentors = []
mentors = frappe.get_all("LMS Course Mentor Mapping", {"course": self.name}, ["mentor"])
for mentor in mentors:
member = frappe.get_doc("User", mentor.mentor)
# TODO: change this to count query
member.batch_count = len(frappe.get_all("LMS Batch Membership", {"member": member.name, "member_type": "Mentor"}))
course_mentors.append(member)
return course_mentors
def is_mentor(self, email):
"""Checks if given user is a mentor for this course.
"""
if not email:
return False
return frappe.db.exists({
"doctype": "LMS Course Mentor Mapping",
"course": self.name,
"mentor": email
})
def get_student_batch(self, email):
"""Returns the batch the given student is part of.
Returns None if the student is not part of any batch.
"""
if not email:
return
batch_name = frappe.get_value(
doctype="LMS Batch Membership",
filters={
"course": self.name,
"member_type": "Student",
"member": email
},
fieldname="batch")
return batch_name and frappe.get_doc("LMS Batch", batch_name)
def get_instructor(self):
return frappe.get_doc("User", self.owner)
def get_chapters(self):
"""Returns all chapters of this course.
"""
# TODO: chapters should have a way to specify the order
return find_all("Chapter", course=self.name, order_by="creation")
def get_batch(self, batch_name):
return find("LMS Batch", name=batch_name, course=self.name)
def get_batches(self, mentor=None):
batches = find_all("LMS Batch", course=self.name)
if mentor:
# TODO: optimize this
memberships = frappe.db.get_all(
"LMS Batch Membership",
{"member": mentor},
["batch"])
batch_names = {m.batch for m in memberships}
return [b for b in batches if b.name in batch_names]
def get_upcoming_batches(self):
now = frappe.utils.nowdate()
batches = find_all("LMS Batch",
course=self.name,
start_date=[">", now],
status="Active",
visibility="Public")
return batches
def get_chapter(self, index):
return find("Chapter", course=self.name, index_=index)
def get_lesson(self, chapter_index, lesson_index):
chapter_name = frappe.get_value(
"Chapter",
{"course": self.name, "index_": chapter_index},
"name")
lesson_name = chapter_name and frappe.get_value(
"Lesson",
{"chapter": chapter_name, "index_": lesson_index},
"name")
return lesson_name and frappe.get_doc("Lesson", lesson_name)
def get_lesson_index(self, lesson_name):
"""Returns the {chapter_index}.{lesson_index} for the lesson.
"""
lesson = frappe.get_doc("Lesson", lesson_name)
chapter = frappe.get_doc("Chapter", lesson.chapter)
return f"{chapter.index_}.{lesson.index_}"
def get_outline(self):
return CourseOutline(self)
class CourseOutline:
def __init__(self, course):
self.course = course
self.chapters = self.get_chapters()
self.lessons = self.get_lessons()
def get_next(self, current):
numbers = sorted(lesson['number'] for lesson in self.lessons)
try:
index = numbers.index(current)
return numbers[index+1]
except IndexError:
return None
def get_prev(self, current):
numbers = sorted(lesson['number'] for lesson in self.lessons)
try:
index = numbers.index(current)
if index == 0:
return None
return numbers[index-1]
except IndexError:
return None
def get_chapters(self):
return frappe.db.get_all("Chapter",
filters={"course": self.course.name},
fields=["name", "title", "index_"])
def get_lessons(self):
chapters = [c['name'] for c in self.chapters]
lessons = frappe.db.get_all("Lesson",
filters={"chapter": ["IN", chapters]},
fields=["name", "title", "chapter", "index_"])
chapter_numbers = {c['name']: c['index_'] for c in self.chapters}
for lesson in lessons:
lesson['number'] = "{}.{}".format(chapter_numbers[lesson['chapter']], lesson['index_'])
return lessons

View File

@@ -1,69 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
from .lms_course import LMSCourse
import unittest
class TestLMSCourse(unittest.TestCase):
def setUp(self):
frappe.db.sql('delete from `tabLMS Course Mentor Mapping`')
frappe.db.sql('delete from `tabLMS Course`')
def new_course(self, title):
doc = frappe.get_doc({
"doctype": "LMS Course",
"title": title,
"short_introduction": title,
"description": title
})
doc.insert()
return doc
def test_new_course(self):
course = self.new_course("Test Course")
assert course.title == "Test Course"
assert course.name == "test-course"
assert course.get_mentors() == []
def test_find_all(self):
courses = LMSCourse.find_all()
assert courses == []
# new couse, but not published
course = self.new_course("Test Course")
assert courses == []
# publish the course
course.is_published = True
course.save()
# now we should find one course
courses = LMSCourse.find_all()
assert [c.name for c in courses] == [course.name]
# disabled this test as it is failing
def _test_add_mentors(self):
course = self.new_course("Test Course")
assert course.get_mentors() == []
user = new_user("Tester", "tester@example.com")
course.add_mentor("tester@example.com")
mentors = course.get_mentors()
mentors_data = [dict(email=mentor.email, batch_count=mentor.batch_count) for mentor in mentors]
assert mentors_data == [{"email": "tester@example.com", "batch_count": 0}]
def tearDown(self):
if frappe.db.exists("User", "tester@example.com"):
frappe.delete_doc("User", "tester@example.com")
def new_user(name, email):
doc = frappe.get_doc(dict(
doctype='User',
email=email,
first_name=name))
doc.insert()
return doc

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('LMS Course Enrollment', {
// refresh: function(frm) {
// }
});

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class LMSCourseEnrollment(Document):
pass

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestLMSCourseEnrollment(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2021, FOSS United and contributors
// For license information, please see license.txt
frappe.ui.form.on('LMS Course Mentor Mapping', {
// refresh: function(frm) {
// }
});

View File

@@ -1,18 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, FOSS United and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
class LMSCourseMentorMapping(Document):
def validate(self):
duplicate_mapping = frappe.get_all("LMS Course Mentor Mapping",
filters = {
"course": self.course,
"mentor": self.mentor
})
if len(duplicate_mapping):
frappe.throw(_("{0} is already a mentor for course {1}").format(self.mentor_name, self.course))

Some files were not shown because too many files have changed in this diff Show More