django-transcribe 0.5.17__py3-none-any.whl → 0.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {django_transcribe-0.5.17.dist-info → django_transcribe-0.7.0.dist-info}/AUTHORS +6 -2
  2. django_transcribe-0.7.0.dist-info/METADATA +27 -0
  3. {django_transcribe-0.5.17.dist-info → django_transcribe-0.7.0.dist-info}/RECORD +34 -32
  4. {django_transcribe-0.5.17.dist-info → django_transcribe-0.7.0.dist-info}/WHEEL +1 -1
  5. transcribe/__init__.py +1 -1
  6. transcribe/admin.py +56 -11
  7. transcribe/apps.py +1 -2
  8. transcribe/filters.py +1 -2
  9. transcribe/forms.py +21 -4
  10. transcribe/migrations/0001_initial_squashed_0021_point_fks_to_transcribe_user.py +555 -0
  11. transcribe/migrations/0002_initial_data.py +3 -1
  12. transcribe/migrations/0007_reviewer_group_addition.py +2 -2
  13. transcribe/migrations/0018_point_fks_to_user.py +40 -0
  14. transcribe/migrations/0019_create_transcribeuser.py +43 -0
  15. transcribe/migrations/0020_populate_transcribe_users.py +18 -0
  16. transcribe/migrations/0021_point_fks_to_transcribe_user.py +57 -0
  17. transcribe/models.py +37 -21
  18. transcribe/signals.py +10 -1
  19. transcribe/templates/admin/base_site.html +1 -10
  20. transcribe/templates/transcribe/reports/list.html +1 -1
  21. transcribe/templates/transcribe/reports/projects.html +0 -19
  22. transcribe/templates/transcribe/reports/users.html +8 -8
  23. transcribe/templates/transcribe/web/dashboard.html +0 -5
  24. transcribe/templates/transcribe/web/project.html +1 -3
  25. transcribe/templates/transcribe/web/project_edit.html +0 -3
  26. transcribe/templates/transcribe/web/task_edit.html +22 -21
  27. transcribe/templates/transcribe/web/user.html +2 -57
  28. transcribe/templates/transcribe/web/users_list.html +11 -37
  29. transcribe/urls.py +27 -33
  30. transcribe/views/mixins.py +1 -1
  31. transcribe/views/reports.py +40 -28
  32. transcribe/views/web.py +15 -4
  33. django_transcribe-0.5.17.dist-info/METADATA +0 -24
  34. transcribe/templates/.DS_Store +0 -0
  35. transcribe/templates/admin/.DS_Store +0 -0
  36. transcribe/templates/transcribe/.DS_Store +0 -0
  37. {django_transcribe-0.5.17.dist-info → django_transcribe-0.7.0.dist-info}/LICENSE +0 -0
  38. {django_transcribe-0.5.17.dist-info → django_transcribe-0.7.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Transcribe was created at the BYU Library in 2012 by Geoff Groberg with UX design help from Grant Zabriskie. In 2014 Chad Hansen helped port the project from PHP to Python. In 2019 it was open sourced and as of this writing it is maintained by Geoff Groberg.
1
+ Transcribe was created at the BYU Library in 2012 by Geoff Groberg with UX design help from Grant Zabriskie. In 2014 Chad Hansen helped port the project from PHP to Python. In 2019 it was open sourced.
2
2
 
3
3
  Here is an incomplete list of people who have contributed to Transcribe:
4
4
 
@@ -6,4 +6,8 @@ Here is an incomplete list of people who have contributed to Transcribe:
6
6
  Chad Hansen <cgh@byu.edu>
7
7
  Grant Zabriskie <grant_zabriskie@byu.edu>
8
8
  Ben Crowder <ben_crowder@byu.edu>
9
- Scott Eldredge <scott_eldredge@byu.edu>
9
+ Scott Eldredge <scott_eldredge@byu.edu>
10
+ Taylor Payne <taylor_payne@byu.edu>
11
+ Mathew Behling <mathew_behling@byu.edu>
12
+ Russell Memory <russell_memory@byu.edu>
13
+ Winn Madesn <winn_madsen@byu.edu>
@@ -0,0 +1,27 @@
1
+ Metadata-Version: 2.1
2
+ Name: django-transcribe
3
+ Version: 0.7.0
4
+ Summary: crowd source transcription
5
+ Home-page: https://gitlab.com/byuhbll/lib/python/django-transcribe
6
+ Author: BYU Library Software Engineering
7
+ Author-email: support@lib.byu.edu
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Framework :: Django
12
+ Classifier: Framework :: Django :: 3.2
13
+ Classifier: Framework :: Django :: 4.1
14
+ Classifier: Framework :: Django :: 4.2
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ License-File: LICENSE
22
+ License-File: AUTHORS
23
+ Requires-Dist: django-model-utils
24
+ Requires-Dist: lxml
25
+ Requires-Dist: Django <5.0.0,>=3.2.0
26
+
27
+ Crowd source the transcription of texts, audio, and video.
@@ -1,15 +1,15 @@
1
- transcribe/__init__.py,sha256=SZ841UIXjHPU4Gmgnhk1CpBuHyTq5b36ip4jagUiz8A,79
2
- transcribe/admin.py,sha256=pTo2UGPoekpsq3fNY0ve4MeUlmghO5PQXhfuNuXrZJY,5575
1
+ transcribe/__init__.py,sha256=bEBoHMQqYV-w9gc5bwGNT0UXJvGeZxeijjOPyN1p-QI,78
2
+ transcribe/admin.py,sha256=HwrJafMjSoIKgb_En0zNvZ3nk5rCZWtJ5n0DdGU9nfI,6512
3
3
  transcribe/api.py,sha256=2m_y44ilQh87CWksHHqiE4A14javR8omlXEXm65lmC4,74
4
- transcribe/apps.py,sha256=M07nb8B159r2Lo8v3Q1TjcDLlbM6GvHjXmHjzK7y0Fs,256
4
+ transcribe/apps.py,sha256=XUdPQkCjpqWAKDCIaE6Mh8Q4xN5upKv95MG1u2_5pig,246
5
5
  transcribe/diff_match_patch.py,sha256=HZC5DNab5OVwbB4Zc7G17l1OHbBlH2g9-xOtT1zkQ1A,84937
6
- transcribe/filters.py,sha256=9po0mrCKbEpkhB2NZJ8Ol9roEebI1rdVGeXyjmvAO_E,1321
7
- transcribe/forms.py,sha256=VJueMilHUTVH3aLIKt6x81Ogf1kPiWMPotdDAEmm_OI,5102
6
+ transcribe/filters.py,sha256=_ANh6XGDXgmD_wxQo5IPReQsv3_MDqThOwB06LKfbac,1264
7
+ transcribe/forms.py,sha256=6j-MtheDtDeBo9B_hlKhkWkWkKVJsLrJIlSsZAlB7ic,5612
8
8
  transcribe/middleware.py,sha256=3SvvNmJMlVohD_4Liv1yT3hc_nudpvt2giAE7Wt9rx4,485
9
- transcribe/models.py,sha256=66JGADyUtnDjlJeftbglj1Cpas9oOBzg-Dz56zhoS6k,38598
9
+ transcribe/models.py,sha256=g0_rtkLKbrkwxbWQbfZ3q5rnug235aEzFCI5DAUrcI4,38965
10
10
  transcribe/settings.py,sha256=TNRFJstZF9X3l5qZSzv3xcrEuPMmOQbB-59mqADn9Dk,569
11
- transcribe/signals.py,sha256=YMxsVgh07TjH29SLWWjoMpou-q7rEA65ZyP9aavtQL4,869
12
- transcribe/urls.py,sha256=yI2P7q4QBrfsl5Zn4C152rPMjSNMtxLDmkx8c2d6VuA,2414
11
+ transcribe/signals.py,sha256=pvRSWobg__Jw5ZvlFBZZAw3rDk1dvVyiq8Ka2lBGeSY,1105
12
+ transcribe/urls.py,sha256=xgTkOdeC1cWmQAMzAp-VRwvmwyEAfEabncGgHyZiAL0,2040
13
13
  transcribe/utils.py,sha256=k8OFWqO5vU3jUCJsLZmJiTK0Rlrb0Yf-rqqfDJc2HZw,3747
14
14
  transcribe/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  transcribe/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -17,12 +17,13 @@ transcribe/management/commands/check_media_size.py,sha256=ZT8KT-whEA7-uLqxa3Q10H
17
17
  transcribe/management/commands/fix_permissions.py,sha256=2CYzjkD8YMw6CqRCr5LIvXlNom-3NrPm69buaArOiE4,1558
18
18
  transcribe/management/commands/functional_tests.py,sha256=flJXZUPbsjbC51KEFaz5TXQLxf4GXHbbKd4diopVMDI,1634
19
19
  transcribe/migrations/0001_initial.py,sha256=IuhmY5SWSZ4rVSOtvoQOeQmgSLryPiK98rubp91o0j8,7132
20
- transcribe/migrations/0002_initial_data.py,sha256=Z5jtudsGAwNuxrw0Jt1FnEVAod1u5H-SuyXjA0laLZA,3352
20
+ transcribe/migrations/0001_initial_squashed_0021_point_fks_to_transcribe_user.py,sha256=u9xq3C4kCKE_o251AaOLXr08ataRkAceaJ7hxt_d3aw,18319
21
+ transcribe/migrations/0002_initial_data.py,sha256=BXK8sjEEV3ACR9u98RRMxI0T1mDIM_QILobFrGIZMGg,3383
21
22
  transcribe/migrations/0003_transcribeuser.py,sha256=dYz_tEvCgJBM5sP631AWOK_aMg1VpYRg9xlXWJI-bSw,443
22
23
  transcribe/migrations/0004_auto_20150716_1639.py,sha256=BgwqqK2BxbPmUaUQO5RBPIZeZnUphTADAoViFxWMGfQ,512
23
24
  transcribe/migrations/0005_auto_20150717_0829.py,sha256=W0l8re8Zp5-Xg_N8wHeWAMaT2SAgFAdlJmWQjx4hU_4,553
24
25
  transcribe/migrations/0006_project_archived.py,sha256=N4bfvX_wmRr9OHAoeosZbtKLGUhZchhJF6bH-tQByUY,428
25
- transcribe/migrations/0007_reviewer_group_addition.py,sha256=SyuuNgk5HLQH5IT60JV63q5Z1scDFCFnbNOeAVL9omk,2376
26
+ transcribe/migrations/0007_reviewer_group_addition.py,sha256=08uhIphclTOXVf5QIlykrXW_I8e4KdOW-Zcw1hC5JOE,2384
26
27
  transcribe/migrations/0008_auto_20150925_1522.py,sha256=ujH1uAuTRNJOMw5dWRFPqT2mnkjaC5xAYljL9yJElHg,1266
27
28
  transcribe/migrations/0009_auto_20150929_1314.py,sha256=lXElv1W2T0fTggdEnW7ssApkVgGcrD9ZA_i6Ud5vAqk,350
28
29
  transcribe/migrations/0010_userprojectpreferences.py,sha256=GGbG-O5OflRcyirhG9uHY7H12yIn0fCwdw6nLNmtv4k,1641
@@ -33,6 +34,10 @@ transcribe/migrations/0014_auto_20160203_1544.py,sha256=jc0GDUKuj2m4T9FIX6Q-guz0
33
34
  transcribe/migrations/0015_auto_20160309_1342.py,sha256=vy2_6J3ax_znwR5DjVhhsbw3GoS3sl3VEa9gA4j6Gks,596
34
35
  transcribe/migrations/0016_auto_20160817_1343.py,sha256=wQjpwUXABGLZ1X_noITkBQ1BCaGQSxwRa-cN8wySpjg,391
35
36
  transcribe/migrations/0017_auto_20191115_1123.py,sha256=hixGTGYWGKOQakeiL4ISq_97FFPgg9chPEykphDHDt0,866
37
+ transcribe/migrations/0018_point_fks_to_user.py,sha256=qqni_HVTvp1ENajKAuMf2fyps8BNERrwP28Hcmd7TOw,1214
38
+ transcribe/migrations/0019_create_transcribeuser.py,sha256=mLd8rOFfSkI_5t27AFhckpu-RmntN-T9k4Osm-K7skQ,1311
39
+ transcribe/migrations/0020_populate_transcribe_users.py,sha256=nkB5v7vCNLBibR-sENivKBmJY4Yf-VIImZqy4AQs6oA,504
40
+ transcribe/migrations/0021_point_fks_to_transcribe_user.py,sha256=V4LAQ7xkVGc0oAntppKV9CiQj0YBVzSOKco5I-cN_eM,1781
36
41
  transcribe/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
42
  transcribe/static/transcribe/favicon.ico,sha256=4towU7vPOvBDh1bq1MT-ZPI_I16Ia0mWcbgtH8rBHCk,318
38
43
  transcribe/static/transcribe/css/icons.css,sha256=1Nd20ZYLtTCK-UvBMqQBxfWq6YmHNeW2Wn-HHcKaDQI,24346
@@ -110,40 +115,37 @@ transcribe/static/transcribe/js/lib/rangy/rangy-highlighter.js,sha256=a0giQ-8tEi
110
115
  transcribe/static/transcribe/js/lib/rangy/rangy-selectionsaverestore.js,sha256=KEy_pZhmL1iO_lsmC_ow_oWfNjIfd19Ryw0kJZ974Ik,9546
111
116
  transcribe/static/transcribe/js/lib/rangy/rangy-serializer.js,sha256=yjtEFLyoUlDtOM1RPECLtWeIypXprTPFFqaVAkxqCGs,12705
112
117
  transcribe/static/transcribe/js/lib/rangy/rangy-textrange.js,sha256=oRuHe4BE3_QpKwVQ457PNs4PBrz7UQ2V6Mu7dva9R7s,81964
113
- transcribe/templates/.DS_Store,sha256=u7RGGZNMR9uNjsIsfBEMx2fJBjTsIvOsIHHTFaSxm1U,6148
114
- transcribe/templates/admin/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
115
- transcribe/templates/admin/base_site.html,sha256=epIGPdKgYnSRMx49oYkcJm6WX1gIXdal4Q_advX-Nyw,589
118
+ transcribe/templates/admin/base_site.html,sha256=ITfmNHf0qOdJ5VJWxya5W4p4qtDsPSXPCaiUQJSp-G8,286
116
119
  transcribe/templates/admin/show_hide_filter.html,sha256=WBKFzDAK93yigz1p7NE0Yzh_iBIUm67Rf_pkskubW1k,416
117
120
  transcribe/templates/admin/transcribe/project/delete_confirmation.html,sha256=1b0L81DZ7LhPVRcMQmsq7PhzoPG9pQqsAD7xzSs56oM,2584
118
121
  transcribe/templates/registration/login.html,sha256=Hh0FFE270p5eyTFbZLWB_K1KfBKyHmrdl9Ylh18cPqA,257
119
- transcribe/templates/transcribe/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
120
122
  transcribe/templates/transcribe/errors/404.html,sha256=sWTl4eyIg0ysMiOo6wLg9egGGDLJ9BELoOhLXEEnGrg,178
121
123
  transcribe/templates/transcribe/errors/500.html,sha256=B0W2NZiGcQrnFgQIXPefF02ZVAwrXEAm8Ohjnnps-hQ,195
122
- transcribe/templates/transcribe/reports/list.html,sha256=7YVx3Y_Hyl4TuS63Ycb6Yhkxc1mvuMoLU7pJdtQJ3WU,3851
123
- transcribe/templates/transcribe/reports/projects.html,sha256=Jce3ET2WWgykjKV99Ysh8hftBREcLRa1r8p7Bl8XUDU,2664
124
- transcribe/templates/transcribe/reports/users.html,sha256=43IdBTm6NvQ-_Rpam4K_I149ZjBIxPzVV8IVuxrkR_o,1280
124
+ transcribe/templates/transcribe/reports/list.html,sha256=ovEtVFknwhz89wS1nQjeQ1xwk3acmmtCEgZFKw_KuqI,3848
125
+ transcribe/templates/transcribe/reports/projects.html,sha256=wHkcS_DdtU5xoiOHP9RAnieUwDzbttsIKlYxm_MfGo4,1639
126
+ transcribe/templates/transcribe/reports/users.html,sha256=51j4pSrmIM4G0caqeQFXkeIIzgeggnqOlr039jus2ac,1427
125
127
  transcribe/templates/transcribe/web/base.html,sha256=zAP49q4DX6bqSn4dBi9IQ8RTy2AsYI8YDDTo4HfDtsg,51
126
128
  transcribe/templates/transcribe/web/base_transcribe.html,sha256=KU3J2SRMPu4D14YgdT7Eaiv7BOI0s2e1o195SPf69vI,4048
127
- transcribe/templates/transcribe/web/dashboard.html,sha256=m76bE9Q36bNz-JVhywa4mnTsy6BvYajgtNPg96nha6E,4213
129
+ transcribe/templates/transcribe/web/dashboard.html,sha256=7CTABKnepEIlL4hygi-WBzkqbfgRiXm60XQ8ES_wAUA,4061
128
130
  transcribe/templates/transcribe/web/faq.html,sha256=5ZqGWLsLh3Q3DBmZQXUvZtPJvkIOvUUwL5HLdPyjet8,10192
129
131
  transcribe/templates/transcribe/web/help.html,sha256=NjbUm4ZEgu60mFsZdB1nRsmSE7ynzlQ4QgGskVT9DZ8,2482
130
132
  transcribe/templates/transcribe/web/index.html,sha256=faHWxkKAxRZNZcVIi1nG8rLBkQqnaSfXudVNhbMMTGI,133
131
133
  transcribe/templates/transcribe/web/landing_page.html,sha256=6jEHXMYNXhKsiHJ2NhSm_TTBVQEKUZPma9X6LwxSLPo,376
132
- transcribe/templates/transcribe/web/project.html,sha256=vtEMBbddP6GkCccQnYVl5Hb6uXHglCJy0mn_rI9z85w,3335
134
+ transcribe/templates/transcribe/web/project.html,sha256=UGxtvknONkiUT3iFuloKPwohnYPohokHhk1FkTE_3xg,3136
133
135
  transcribe/templates/transcribe/web/project_confirm_delete.html,sha256=KXZm8nh6J5yErbYY0l2JfhIpQVyS9QaoXp1mGgbQtpE,426
134
- transcribe/templates/transcribe/web/project_edit.html,sha256=B2uKgNatbFVFTXsuHC44upyv-R9zXylnB_L65eyAhKo,944
136
+ transcribe/templates/transcribe/web/project_edit.html,sha256=UJaHyRCUTf9qbHYTG1MKDzAlLYz7L7UBhJw-Ixtt0Q8,568
135
137
  transcribe/templates/transcribe/web/projects_list.html,sha256=-Ib74x7gLND4Q18wUo-JXmmmnpo8nbP-gVJ0lObfvWg,1300
136
- transcribe/templates/transcribe/web/task_edit.html,sha256=VDh1Q6vujB_OfAGlITd_3R-l8WRAtHuCouaOdN3LWTY,9403
137
- transcribe/templates/transcribe/web/user.html,sha256=2osZ4SyqJgnbS-c2qF1rOTdngl7CuAat0n6XXcAVqNY,3289
138
- transcribe/templates/transcribe/web/users_list.html,sha256=gUgsGlJfJWiRTIhgnVXa49ONEc8K1J7PnLLEmCJPjIk,2921
138
+ transcribe/templates/transcribe/web/task_edit.html,sha256=JWisOHN-bd2gh3t0RB8BiuS8Wc3IwRzt6cA_9DiB0Tw,9219
139
+ transcribe/templates/transcribe/web/user.html,sha256=-EzYdRpc383iL31lmNRv4gE-mwFO8L1KeMNGlt633rM,863
140
+ transcribe/templates/transcribe/web/users_list.html,sha256=uXbaDTXXXOJ9iWuw6OoKRXM6B2--qhswGOv6DvYggRU,1830
139
141
  transcribe/templates/transcribe/xsl/tei-html.xsl,sha256=oOVnAZhDVDVzrQR5UEbNV-97ZBTfNfzKDThiUr9EGCc,2984
140
142
  transcribe/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- transcribe/views/mixins.py,sha256=46WewH6ZTFnRhsNM_zJPsrfOqTzVSmN6mZ3mkH0HmOo,2728
142
- transcribe/views/reports.py,sha256=OilTUjJn2RsxBUSFxQu-1gLQD_jftEu_1OhiHwQ2y10,12876
143
- transcribe/views/web.py,sha256=5lBhd70cDPjf0zCxiSAoLPdFIOihEUu63AzNnZMkEPU,14830
144
- django_transcribe-0.5.17.dist-info/AUTHORS,sha256=o63LB-1ge8sViGo8pRhfL8KTfgnwoSqAhTR7_iEkJXo,527
145
- django_transcribe-0.5.17.dist-info/LICENSE,sha256=I9xp13yeayqZikrv7rQrzsDWviTwy1R0phFlKtM1meg,1472
146
- django_transcribe-0.5.17.dist-info/METADATA,sha256=iznFLSF72Uk92EWGkw0B_UH5utvtrNF7OQli10wDJcA,758
147
- django_transcribe-0.5.17.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92
148
- django_transcribe-0.5.17.dist-info/top_level.txt,sha256=NljSay7zO6czcjqjVmivw6VW58aXlYHVZQvnwmpy08g,11
149
- django_transcribe-0.5.17.dist-info/RECORD,,
143
+ transcribe/views/mixins.py,sha256=QmFDhWb5VCEaGatLdbsTK72jiBG2OKrlncnz79FUmto,2727
144
+ transcribe/views/reports.py,sha256=7YD5E6CPsIfWP8hG8IFTek29cM2T29NHuowAdlTAyBs,13408
145
+ transcribe/views/web.py,sha256=sU5FNh0jl1yKSRZFo5CvdD5CVV9sb9vtUNdLRZuzAQg,15213
146
+ django_transcribe-0.7.0.dist-info/AUTHORS,sha256=rNmFConshTlNpyhcu4CKZSeQQMwuyVYXbeqXgRko-Yc,640
147
+ django_transcribe-0.7.0.dist-info/LICENSE,sha256=I9xp13yeayqZikrv7rQrzsDWviTwy1R0phFlKtM1meg,1472
148
+ django_transcribe-0.7.0.dist-info/METADATA,sha256=85LOoJ3YJ-ewMWcOcv8M3qR5cWI2pzw22kJf8EdHio0,1021
149
+ django_transcribe-0.7.0.dist-info/WHEEL,sha256=uCRv0ZEik_232NlR4YDw4Pv3Ajt5bKvMH13NUU7hFuI,91
150
+ django_transcribe-0.7.0.dist-info/top_level.txt,sha256=NljSay7zO6czcjqjVmivw6VW58aXlYHVZQvnwmpy08g,11
151
+ django_transcribe-0.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.0)
2
+ Generator: setuptools (74.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
transcribe/__init__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  default_app_config = 'transcribe.apps.transcribeConfig'
2
- __version__ = '0.5.17'
2
+ __version__ = '0.7.0'
transcribe/admin.py CHANGED
@@ -25,9 +25,9 @@ class UserTaskAdmin(admin.ModelAdmin):
25
25
  'task__file',
26
26
  'status',
27
27
  'task_type',
28
- 'user__username',
29
- 'user__first_name',
30
- 'user__last_name',
28
+ 'user__user__username',
29
+ 'user__user__first_name',
30
+ 'user__user__last_name',
31
31
  'task__project__title',
32
32
  )
33
33
  fields = (
@@ -168,17 +168,32 @@ class TagAdmin(admin.ModelAdmin):
168
168
 
169
169
  @admin.register(models.TranscribeUser)
170
170
  class TranscribeUserAdmin(admin.ModelAdmin):
171
- readonly_fields = ['last_login', 'usertasks_link']
172
- fields = [
171
+ readonly_fields = (
173
172
  'username',
174
173
  'first_name',
175
174
  'last_name',
176
175
  'email',
177
- 'is_active',
178
- 'last_login',
179
176
  'groups',
180
177
  'usertasks_link',
181
- ]
178
+ )
179
+
180
+ fieldsets = (
181
+ (
182
+ None,
183
+ {
184
+ 'fields': (
185
+ 'user',
186
+ 'username',
187
+ 'first_name',
188
+ 'last_name',
189
+ 'email',
190
+ 'groups',
191
+ 'usertasks_link',
192
+ )
193
+ },
194
+ ),
195
+ )
196
+
182
197
  list_display = [
183
198
  'username',
184
199
  'first_name',
@@ -191,10 +206,37 @@ class TranscribeUserAdmin(admin.ModelAdmin):
191
206
  'num_skipped_reviews',
192
207
  'num_in_progress_reviews',
193
208
  ]
194
- search_fields = ['username', 'first_name', 'last_name', 'email']
209
+ search_fields = [
210
+ 'user__username',
211
+ 'user__first_name',
212
+ 'user__last_name',
213
+ 'user__email',
214
+ ]
195
215
 
196
- def get_queryset(self, request):
197
- return self.model.objects.filter(is_active=True)
216
+ def username(self, obj):
217
+ return obj.user.username
218
+
219
+ username.short_description = 'Username'
220
+
221
+ def first_name(self, obj):
222
+ return obj.user.first_name
223
+
224
+ first_name.short_description = 'First name'
225
+
226
+ def last_name(self, obj):
227
+ return obj.user.last_name
228
+
229
+ last_name.short_description = 'Last name'
230
+
231
+ def email(self, obj):
232
+ return obj.user.email
233
+
234
+ email.short_description = 'Email'
235
+
236
+ def groups(self, obj):
237
+ return ', '.join([group.name for group in obj.user.groups.all()])
238
+
239
+ groups.short_description = 'Groups'
198
240
 
199
241
  def usertasks_link(self, obj):
200
242
  url = resolve_url('admin:transcribe_usertask_changelist')
@@ -205,3 +247,6 @@ class TranscribeUserAdmin(admin.ModelAdmin):
205
247
  )
206
248
 
207
249
  usertasks_link.short_description = 'User tasks'
250
+
251
+ def get_queryset(self, request):
252
+ return self.model.objects.filter(user__is_active=True)
transcribe/apps.py CHANGED
@@ -10,5 +10,4 @@ class transcribeConfig(AppConfig):
10
10
  verbose_name = 'transcribe'
11
11
 
12
12
  def ready(self):
13
- pass
14
- # from . import signals # noqa
13
+ from . import signals # noqa F401
transcribe/filters.py CHANGED
@@ -12,14 +12,13 @@ class UserFilterForUserTask(admin.SimpleListFilter):
12
12
  user_id = request.GET.get('user_id')
13
13
  if not user_id:
14
14
  return []
15
- user = models.TranscribeUser.objects.get(pk=user_id)
15
+ user = models.TranscribeUser.objects.get(user__pk=user_id)
16
16
  return [(user_id, user.name.strip() or user)]
17
17
 
18
18
  def queryset(self, request, queryset):
19
19
  user_pk = request.GET.get('user_id')
20
20
  if not user_pk:
21
21
  return queryset
22
- # user = models.TranscribeUser.objects.get(pk=user_pk)
23
22
  return queryset.filter(user=user_pk)
24
23
 
25
24
 
transcribe/forms.py CHANGED
@@ -1,4 +1,4 @@
1
- import cgi
1
+ import html
2
2
  import logging
3
3
 
4
4
  from django import forms
@@ -9,6 +9,24 @@ from .models import Project, Task, task_file_name
9
9
  log = logging.getLogger(__name__)
10
10
 
11
11
 
12
+ class MultipleFileInput(forms.ClearableFileInput):
13
+ allow_multiple_selected = True
14
+
15
+
16
+ class MultipleFileField(forms.FileField):
17
+ def __init__(self, *args, **kwargs):
18
+ kwargs.setdefault('widget', MultipleFileInput())
19
+ super().__init__(*args, **kwargs)
20
+
21
+ def clean(self, data, initial=None):
22
+ single_file_clean = super().clean
23
+ if isinstance(data, (list, tuple)):
24
+ result = [single_file_clean(d, initial) for d in data]
25
+ else:
26
+ result = single_file_clean(data, initial)
27
+ return result
28
+
29
+
12
30
  class NoColon(forms.ModelForm):
13
31
  def __init__(self, *args, **kwargs):
14
32
  kwargs.setdefault('label_suffix', '')
@@ -19,9 +37,8 @@ class NoColon(forms.ModelForm):
19
37
 
20
38
 
21
39
  class ProjectForm(NoColon):
22
- upload_media_files = forms.FileField(
40
+ upload_media_files = MultipleFileField(
23
41
  required=False,
24
- widget=forms.FileInput(attrs={'multiple': 'multiple'}),
25
42
  label='Upload media files',
26
43
  )
27
44
 
@@ -96,7 +113,7 @@ class ProjectForm(NoColon):
96
113
 
97
114
  def get_processed_text(self, text):
98
115
  """Given unprocessed text, process it and return the result."""
99
- text = cgi.escape(text) # HTML encode
116
+ text = html.escape(text, quote=False) # HTML encode
100
117
  text = text.replace('ÿþ', '').replace('þÿ', '') # remove UTF-16 BOM
101
118
  return text
102
119