├── .idea ├── .gitignore ├── BOSS直聘数据可视化分析项目.iml ├── csv-editor.xml ├── dataSources.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── jsLibraryMappings.xml ├── libraries │ └── Django_Lib.xml ├── misc.xml ├── modules.xml ├── other.xml ├── sqldialects.xml └── vcs.xml ├── README.md ├── __pycache__ ├── manage.cpython-310.pyc ├── manage.cpython-311.pyc ├── test_salaryMonth.cpython-311-pytest-7.4.4.pyc ├── word_cloud_picture.cpython-310.pyc └── word_cloud_picture.cpython-311.pyc ├── boss.sql ├── boss直聘数据可视化分析 ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-310.pyc │ ├── __init__.cpython-311.pyc │ ├── __init__.cpython-38.pyc │ ├── __init__.cpython-39.pyc │ ├── settings.cpython-310.pyc │ ├── settings.cpython-311.pyc │ ├── settings.cpython-38.pyc │ ├── settings.cpython-39.pyc │ ├── urls.cpython-310.pyc │ ├── urls.cpython-311.pyc │ ├── urls.cpython-38.pyc │ ├── urls.cpython-39.pyc │ ├── wsgi.cpython-310.pyc │ ├── wsgi.cpython-311.pyc │ └── wsgi.cpython-38.pyc ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py ├── db.sqlite3 ├── manage.py ├── media └── avatar │ ├── 1.png │ ├── L1030604.JPG │ ├── L1030604_wIwlOJe.JPG │ ├── L1030609.JPG │ ├── L1030613.JPG │ ├── L1030616.JPG │ ├── ailun.jpg │ ├── benren.jpg │ ├── benren_2HzZef4.jpg │ ├── benren_RchU3kn.jpg │ ├── default.png │ ├── touxiang.jpg │ ├── touxiang_31snY9p.jpg │ ├── touxiang_AU3sp6Y.jpg │ ├── touxiang_dT8uIag.jpg │ ├── touxiang_eoJqfOO.jpg │ └── touxiang_tOkAFxt.jpg ├── middleware ├── __pycache__ │ ├── userInfoMiddleWare.cpython-310.pyc │ ├── userInfoMiddleWare.cpython-311.pyc │ └── userInfoMiddleWare.cpython-38.pyc └── userInfoMiddleWare.py ├── myApp ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-310.pyc │ ├── __init__.cpython-311.pyc │ ├── __init__.cpython-38.pyc │ ├── __init__.cpython-39.pyc │ ├── admin.cpython-310.pyc │ ├── admin.cpython-311.pyc │ ├── admin.cpython-38.pyc │ ├── admin.cpython-39.pyc │ ├── apps.cpython-310.pyc │ ├── apps.cpython-311.pyc │ ├── error.cpython-310.pyc │ ├── error.cpython-311.pyc │ ├── error.cpython-38.pyc │ ├── error.cpython-39.pyc │ ├── models.cpython-310.pyc │ ├── models.cpython-311.pyc │ ├── models.cpython-38.pyc │ ├── models.cpython-39.pyc │ ├── urls.cpython-310.pyc │ ├── urls.cpython-311.pyc │ ├── urls.cpython-38.pyc │ ├── urls.cpython-39.pyc │ ├── views.cpython-310.pyc │ ├── views.cpython-311.pyc │ ├── views.cpython-38.pyc │ └── views.cpython-39.pyc ├── admin.py ├── apps.py ├── error.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20240115_1221.py │ ├── 0003_auto_20240115_1225.py │ ├── 0004_jobinfo_dist.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-310.pyc │ │ ├── 0001_initial.cpython-311.pyc │ │ ├── 0002_auto_20240115_1221.cpython-311.pyc │ │ ├── 0003_auto_20240115_1225.cpython-311.pyc │ │ ├── 0004_jobinfo_dist.cpython-310.pyc │ │ ├── 0004_jobinfo_dist.cpython-311.pyc │ │ ├── __init__.cpython-310.pyc │ │ └── __init__.cpython-311.pyc ├── models.py ├── templates │ ├── changePassword.html │ ├── companyChart.html │ ├── companyStatus.html │ ├── companyTagsWord_cloud.html │ ├── educationalChat.html │ ├── extra-timeline.html │ ├── historyTableData.html │ ├── index.html │ ├── salaryChart.html │ ├── selfInfo.html │ ├── tableData.html │ └── yuce.html ├── urls.py ├── utils │ ├── __pycache__ │ │ ├── getAddressCharData.cpython-311.pyc │ │ ├── getChangePassword.cpython-311.pyc │ │ ├── getCompanyCharData.cpython-311.pyc │ │ ├── getCompanyStatusCharData.cpython-311.pyc │ │ ├── getEducationalCharData.cpython-311.pyc │ │ ├── getHistoryTableData.cpython-311.pyc │ │ ├── getHomeData.cpython-311.pyc │ │ ├── getSalaryCharData.cpython-311.pyc │ │ ├── getSelfInfoData.cpython-311.pyc │ │ ├── getTableData.cpython-311.pyc │ │ └── publicData.cpython-311.pyc │ ├── getAddressCharData.py │ ├── getChangePassword.py │ ├── getCompanyCharData.py │ ├── getCompanyStatusCharData.py │ ├── getEducationalCharData.py │ ├── getHistoryTableData.py │ ├── getHomeData.py │ ├── getModelpredice.py │ ├── getSalaryCharData.py │ ├── getSelfInfoData.py │ ├── getTableData.py │ └── publicData.py ├── views.py └── word_cloud_picture.py ├── spider ├── __pycache__ │ └── test_salaryMonth.cpython-311-pytest-7.4.4.pyc ├── audo_insert_sql.py ├── chromedriver.exe ├── clear.csv ├── clear.py ├── spiderMain.py ├── temp.csv ├── 删除自增id └── 数据.txt ├── static ├── companyTags.jpg ├── companyTitle.jpg ├── css │ ├── _all.css │ ├── _all1.css │ ├── _all2.css │ ├── _all3.css │ ├── aciTree.css │ ├── black.css │ ├── blue.css │ ├── bootstrap-wysihtml5.css │ ├── bootstrap.css │ ├── cafe.css │ ├── codemirror.css │ ├── component.css │ ├── css.css │ ├── custom.css │ ├── datatables.responsive.css │ ├── daterangepicker-bs3.css │ ├── dropzone.css │ ├── entypo.css │ ├── font-awesome.min.css │ ├── futurico.css │ ├── green.css │ ├── jquery-jvectormap-1.2.2.css │ ├── jquery-ui-1.10.3.custom.min.css │ ├── jquery.Jcrop.min.css │ ├── jquery.selectBoxIt.css │ ├── markdownarea.css │ ├── neon-core.css │ ├── neon-forms.css │ ├── neon-theme.css │ ├── polaris.css │ ├── purple.css │ ├── red.css │ ├── responsive-tables.css │ ├── rickshaw.min.css │ ├── select2-bootstrap.css │ ├── select2.css │ ├── style1.css │ ├── style_error.css │ ├── uikit.min.css │ ├── white.css │ └── yellow.css ├── font │ ├── entypo.eot │ ├── entypo.ttf │ ├── entypo.woff │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ ├── o-0IIpQlx3QUlC5A4PNr4TRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr5DRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr5TRA.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr5jRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr6DRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr6TRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr6jRAW_0.woff2 │ ├── o-0IIpQlx3QUlC5A4PNr6zRAW_0.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVYNyB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVZ9yB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVZNyB.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVZdyB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVa9yB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVaNyB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVadyB1Wk.woff2 │ ├── o-0NIpQlx3QUlC5A4PNjXhFVatyB1Wk.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARBQ_m87A.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARCQ_k.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARDQ_m87A.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARGQ_m87A.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARMQ_m87A.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4ARNQ_m87A.woff2 │ ├── o-0OIpQlx3QUlC5A4PNr4AROQ_m87A.woff2 │ └── o-0OIpQlx3QUlC5A4PNr4ARPQ_m87A.woff2 ├── image │ ├── Jcrop.gif │ ├── aero.png │ ├── aero1.png │ ├── aero2.png │ ├── aero@2x.png │ ├── aero@2x1.png │ ├── aero@2x2.png │ ├── alpha-horizontal.png │ ├── alpha.png │ ├── blue.png │ ├── blue1.png │ ├── blue2.png │ ├── blue@2x.png │ ├── blue@2x1.png │ ├── blue@2x2.png │ ├── boxed-pattern-3.png │ ├── drag-drop-rtl.png │ ├── drag-drop.png │ ├── flat.png │ ├── flat@2x.png │ ├── futurico.png │ ├── futurico@2x.png │ ├── green.png │ ├── green1.png │ ├── green2.png │ ├── green@2x.png │ ├── green@2x1.png │ ├── green@2x2.png │ ├── grey.png │ ├── grey1.png │ ├── grey2.png │ ├── grey@2x.png │ ├── grey@2x1.png │ ├── grey@2x2.png │ ├── hue-horizontal.png │ ├── hue.png │ ├── line.png │ ├── line@2x.png │ ├── load-node.gif │ ├── loader-1.gif │ ├── loader-2.gif │ ├── minimal.png │ ├── minimal@2x.png │ ├── minus.png │ ├── notes-lines.png │ ├── orange.png │ ├── orange1.png │ ├── orange2.png │ ├── orange@2x.png │ ├── orange@2x1.png │ ├── orange@2x2.png │ ├── pink.png │ ├── pink1.png │ ├── pink2.png │ ├── pink@2x.png │ ├── pink@2x1.png │ ├── pink@2x2.png │ ├── plus.png │ ├── polaris.png │ ├── polaris@2x.png │ ├── purple.png │ ├── purple1.png │ ├── purple2.png │ ├── purple@2x.png │ ├── purple@2x1.png │ ├── purple@2x2.png │ ├── red.png │ ├── red1.png │ ├── red2.png │ ├── red@2x.png │ ├── red@2x1.png │ ├── red@2x2.png │ ├── saturation.png │ ├── select2-spinner.gif │ ├── select2.png │ ├── select2x2.png │ ├── spritemap.png │ ├── spritemap@2x.png │ ├── square.png │ ├── square@2x.png │ ├── tree-arrow-big-rtl.png │ ├── tree-arrow-big.png │ ├── tree-arrow-small-rtl.png │ ├── tree-arrow-small.png │ ├── tree-big-rtl.png │ ├── tree-big.png │ ├── tree-branch.png │ ├── tree-check-big-rtl.png │ ├── tree-check-big.png │ ├── tree-check-small-rtl.png │ ├── tree-check-small.png │ ├── tree-small-rtl.png │ ├── tree-small.png │ ├── yellow.png │ ├── yellow1.png │ ├── yellow2.png │ ├── yellow@2x.png │ ├── yellow@2x1.png │ └── yellow@2x2.png ├── js │ ├── TableTools.min.js │ ├── bootstrap-colorpicker.min.js │ ├── bootstrap-datepicker.js │ ├── bootstrap-switch.min.js │ ├── bootstrap-tagsinput.min.js │ ├── bootstrap-timepicker.min.js │ ├── bootstrap-wysihtml5.js │ ├── bootstrap.js │ ├── china.js │ ├── ckeditor.js │ ├── codemirror.js │ ├── d3.v3.js │ ├── dataTables.bootstrap.js │ ├── datatables.responsive.js │ ├── daterangepicker.js │ ├── dropzone.js │ ├── echarts.js │ ├── fileinput.js │ ├── fullcalendar.min.js │ ├── gfm.js │ ├── html5.min.js │ ├── html5shiv.js │ ├── icheck.min.js │ ├── joinable.js │ ├── jquery-1.11.0.min.js │ ├── jquery-jvectormap-1.2.2.min.js │ ├── jquery-jvectormap-ar-merc-en.js │ ├── jquery-jvectormap-at-merc-en.js │ ├── jquery-jvectormap-au-mill-en.js │ ├── jquery-jvectormap-be-merc-en.js │ ├── jquery-jvectormap-ca-lcc-en.js │ ├── jquery-jvectormap-ch-mill-en.js │ ├── jquery-jvectormap-cn-mill-en.js │ ├── jquery-jvectormap-de-merc-en.js │ ├── jquery-jvectormap-dk-merc-en.js │ ├── jquery-jvectormap-es-merc-en.js │ ├── jquery-jvectormap-europe-merc-en.js │ ├── jquery-jvectormap-fr-merc-en.js │ ├── jquery-jvectormap-it-merc-en.js │ ├── jquery-jvectormap-nl-merc-en.js │ ├── jquery-jvectormap-uk-merc-en.js │ ├── jquery-jvectormap-us-aea-en.js │ ├── jquery-jvectormap-us-ny-newyork-mill-en.js │ ├── jquery-jvectormap-world-mill-en.js │ ├── jquery-ui-1.10.3.minimal.min.js │ ├── jquery.Jcrop.min.js │ ├── jquery.aciPlugin.min.js │ ├── jquery.aciTree.min.js │ ├── jquery.bootstrap.wizard.min.js │ ├── jquery.dataTables.columnFilter.js │ ├── jquery.dataTables.min.js │ ├── jquery.inputmask.bundle.min.js │ ├── jquery.js │ ├── jquery.knob.js │ ├── jquery.min.js │ ├── jquery.multi-select.js │ ├── jquery.nestable.js │ ├── jquery.peity.min.js │ ├── jquery.selectBoxIt.min.js │ ├── jquery.sparkline.min.js │ ├── jquery.tocify.min.js │ ├── jquery.validate.min.js │ ├── lodash.min.js │ ├── main-gsap.js │ ├── markdown.js │ ├── markdownarea.min.js │ ├── marked.js │ ├── moment.min.js │ ├── morris.min.js │ ├── neon-api.js │ ├── neon-calendar.js │ ├── neon-charts.js │ ├── neon-chat.js │ ├── neon-custom.js │ ├── neon-demo.js │ ├── neon-forgotpassword.js │ ├── neon-login.js │ ├── neon-mail.js │ ├── neon-notes.js │ ├── neon-register.js │ ├── overlay.js │ ├── parallax.min.js │ ├── raphael-min.js │ ├── resizeable.js │ ├── respond.min.js │ ├── responsive-tables.js │ ├── rickshaw.min.js │ ├── script.js │ ├── script1.js │ ├── select2.min.js │ ├── toastr.js │ ├── typeahead.min.js │ ├── uikit.min.js │ ├── wysihtml5-0.4.0pre.min.js │ └── xml.js ├── picture │ ├── 200x150.jpg │ ├── 320x160.jpg │ ├── album-image.jpg │ ├── album-thumb.jpg │ ├── attach-1.png │ ├── attach-2.png │ ├── burjkhalifa.jpg │ ├── crop-1.jpg │ ├── crop-2.jpg │ ├── crop-3.jpg │ ├── crop-4.jpg │ ├── flag-al.png │ ├── flag-de.png │ ├── flag-es.png │ ├── flag-fr.png │ ├── flag-uk.png │ ├── highlights-1-skins.png │ ├── highlights-2-0-bootstrap.png │ ├── highlights-2-1-icheck.png │ ├── highlights-2-10-rtl-support.png │ ├── highlights-2-2-new-editor.png │ ├── highlights-2-3-language-switcher.png │ ├── highlights-2-4-register-form.png │ ├── highlights-2-5-right-menu.png │ ├── highlights-2-6-login-form.png │ ├── highlights-2-7-left-chat.png │ ├── highlights-2-8-spinners.png │ ├── highlights-2-9-search-results.png │ ├── highlights-2-profile.png │ ├── highlights-3-1-comments.png │ ├── highlights-3-2-members.png │ ├── highlights-3-2-newpost.png │ ├── highlights-3-3-nestable.png │ ├── highlights-3-4-page-loading.png │ ├── highlights-3-5-settings-page.png │ ├── highlights-3-6-treeview.png │ ├── highlights-3-dashboard.png │ ├── highlights-3-front-end.png │ ├── highlights-3-notes.png │ ├── highlights-3-photoshop.png │ ├── highlights-4-1-boxed.png │ ├── highlights-4-datatables.png │ ├── highlights-5-profile_left.png │ ├── highlights-6-crop.png │ ├── highlights-7-gallery.png │ ├── highlights-8-timeline.png │ ├── laborator.png │ ├── lockscreen-user.png │ ├── logo-light@2x.png │ ├── logo@2x.png │ ├── member.jpg │ ├── profile-picture.png │ ├── sample-al.png │ ├── sample-au.png │ ├── sample-crop-2.png │ ├── sample-crop.jpg │ ├── sample-it.png │ ├── thumb-1.png │ ├── thumb-1@2x.png │ ├── thumb-2.png │ ├── thumb-3.png │ ├── thumb-4.png │ ├── timeline-image-1.png │ ├── timeline-image-2.png │ ├── timeline-image-3.png │ ├── timeline-image-4.png │ └── title.png ├── tag.jpg ├── timesalary.png ├── title.jpg └── yuce.jpg ├── templates ├── error.html ├── login.html └── register.html └── word_cloud_picture.py /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | # Zeppelin ignored files 10 | /ZeppelinRemoteNotebooks/ 11 | -------------------------------------------------------------------------------- /.idea/BOSS直聘数据可视化分析项目.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 37 | 38 | 39 | 41 | -------------------------------------------------------------------------------- /.idea/csv-editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/dataSources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | mysql.8 6 | true 7 | com.mysql.cj.jdbc.Driver 8 | jdbc:mysql://localhost:3306/boss 9 | $ProjectFileDir$ 10 | 11 | 12 | mysql.8 13 | true 14 | true 15 | $PROJECT_DIR$/boss直聘数据可视化分析/settings.py 16 | com.mysql.cj.jdbc.Driver 17 | jdbc:mysql://127.0.0.1:3306/boss 18 | $ProjectFileDir$ 19 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 43 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/libraries/Django_Lib.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/other.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /.idea/sqldialects.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 这是一个基于BOSS直聘实现的数据爬取与可视化分析 2 | 运行代码前要先导入数据库,先自行创建一个数据库,名叫boss;\ 3 | 在运行boss.sql文件在boss数据库中创建数据表\ 4 | 运行项目前要在setting.py中配置数据库连接 5 | >DATABASES = { 6 | 'default':{ 7 | 'ENGINE':'django.db.backends.mysql', 8 | 'NAME':'boss', 9 | 'USER':'数据库账户名', 10 | 'PASSWORD':'数据库密码', 11 | 'HOST':"localhost", 12 | 'PORT':'3306' 13 | } 14 | }\ 15 | 16 | 在spider目录中,spiderMain.py是爬虫文件,如果你要保留爬取到的数据文件,只需注释掉**os.remove("./temp.csv")**, 17 | ## 页面效果展示 18 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/3c24eb1f-29d6-4606-a639-75f1884757ff)\ 19 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/2831dbdd-0ee3-4e73-90ce-53cfaea74e94)\ 20 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/f3ceecb8-0a47-4a54-b1a4-b21b9c03d63e)\ 21 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/610cb19a-28a2-4512-b1af-50b27c726f82)\ 22 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/0bf4878a-d3a0-449d-b921-df8376761bd4)\ 23 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/434b33d5-d785-43e5-b2c2-0852a1aed812)\ 24 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/ce6b3feb-fcaf-4751-8287-56f00d452eda)\ 25 | ![image](https://github.com/YPYT1/Boss_direct_hire/assets/95224342/ec7ce08c-b900-43e0-99fa-33e3f80213e6)\ 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /__pycache__/manage.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/__pycache__/manage.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/manage.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/__pycache__/manage.cpython-311.pyc -------------------------------------------------------------------------------- /__pycache__/test_salaryMonth.cpython-311-pytest-7.4.4.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/__pycache__/test_salaryMonth.cpython-311-pytest-7.4.4.pyc -------------------------------------------------------------------------------- /__pycache__/word_cloud_picture.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/__pycache__/word_cloud_picture.cpython-310.pyc -------------------------------------------------------------------------------- /__pycache__/word_cloud_picture.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/__pycache__/word_cloud_picture.cpython-311.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__init__.py: -------------------------------------------------------------------------------- 1 | import pymysql 2 | pymysql.version_info=(1,4,3,"final",0) # 指定了pymysql的版本:1.4.3,按照你版本修改 3 | pymysql.install_as_MySQLdb() 4 | -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/settings.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/settings.cpython-310.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/settings.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/settings.cpython-311.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/settings.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/settings.cpython-38.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/settings.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/settings.cpython-39.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/urls.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/urls.cpython-310.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/urls.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/urls.cpython-311.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/wsgi.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/wsgi.cpython-310.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/wsgi.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/wsgi.cpython-311.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/__pycache__/wsgi.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/boss直聘数据可视化分析/__pycache__/wsgi.cpython-38.pyc -------------------------------------------------------------------------------- /boss直聘数据可视化分析/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for boss直聘数据可视化分析 project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss直聘数据可视化分析.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /boss直聘数据可视化分析/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django's settings for boss直聘数据可视化分析 project. 3 | 4 | Generated by 'django-admin startproject' using Django 4.0.6. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.0/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/4.0/ref/settings/ 11 | """ 12 | 13 | from pathlib import Path 14 | import os 15 | # Build paths inside the project like this: BASE_DIR / 'subdir'. 16 | BASE_DIR = Path(__file__).resolve().parent.parent 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = 'django-insecure-y5iipwpfnl%h3r=#9d&by33dgds@=x0t29+z$!7cr&x-9@&)pv' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'myApp', 41 | ] 42 | 43 | MIDDLEWARE = [ 44 | 'django.middleware.security.SecurityMiddleware', 45 | 'django.contrib.sessions.middleware.SessionMiddleware', 46 | 'django.middleware.common.CommonMiddleware', 47 | # 'django.middleware.csrf.CsrfViewMiddleware', 48 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 49 | 'django.contrib.messages.middleware.MessageMiddleware', 50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 51 | 'middleware.userInfoMiddleWare.UserMW' 52 | ] 53 | 54 | ROOT_URLCONF = 'boss直聘数据可视化分析.urls' 55 | 56 | TEMPLATES = [ 57 | { 58 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 59 | 'DIRS': [BASE_DIR / 'templates'], 60 | 'APP_DIRS': True, 61 | 'OPTIONS': { 62 | 'context_processors': [ 63 | 'django.template.context_processors.debug', 64 | 'django.template.context_processors.request', 65 | 'django.contrib.auth.context_processors.auth', 66 | 'django.contrib.messages.context_processors.messages', 67 | ], 68 | }, 69 | }, 70 | ] 71 | 72 | WSGI_APPLICATION = 'boss直聘数据可视化分析.wsgi.application' 73 | 74 | 75 | # Database 76 | # https://docs.djangoproject.com/en/4.0/ref/settings/#databases 77 | 78 | DATABASES = { 79 | 'default':{ 80 | 'ENGINE':'django.db.backends.mysql', 81 | 'NAME':'boss', 82 | 'USER':'root', 83 | 'PASSWORD':'123456', 84 | 'HOST':"localhost", 85 | 'PORT':'3306' 86 | } 87 | } 88 | 89 | 90 | # Password validation 91 | # https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators 92 | 93 | AUTH_PASSWORD_VALIDATORS = [ 94 | { 95 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 96 | }, 97 | { 98 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 99 | }, 100 | { 101 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 102 | }, 103 | { 104 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 105 | }, 106 | ] 107 | 108 | 109 | LANGUAGE_CODE = 'zh-hans' 110 | 111 | TIME_ZONE = 'Asia/Shanghai' 112 | 113 | USE_I18N = True 114 | 115 | USE_TZ = True 116 | 117 | 118 | STATIC_URL = 'static/' 119 | 120 | STATICFILES_DIRS = ( 121 | os.path.join(BASE_DIR,'static'), 122 | ) 123 | 124 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 125 | SESSION_COOKIE_AGE = 1209600 126 | SESSION_EXPIRE_AT_BROWSER_CLOSE = False 127 | 128 | MEDIA_URL = '/media/' 129 | MEDIA_ROOT = os.path.join(BASE_DIR,'media') -------------------------------------------------------------------------------- /boss直聘数据可视化分析/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path,include 3 | from django.conf import settings 4 | from django.conf.urls.static import static 5 | urlpatterns = [ 6 | path('admin/', admin.site.urls), 7 | path('myApp/',include('myApp.urls')) 8 | ] 9 | 10 | urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) -------------------------------------------------------------------------------- /boss直聘数据可视化分析/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for boss直聘数据可视化分析 project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss直聘数据可视化分析.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | def main(): 7 | """Run administrative tasks.""" 8 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss直聘数据可视化分析.settings') 9 | try: 10 | from django.core.management import execute_from_command_line 11 | except ImportError as exc: 12 | raise ImportError( 13 | "Couldn't import Django. Are you sure it's installed and " 14 | "available on your PYTHONPATH environment variable? Did you " 15 | "forget to activate a virtual environment?" 16 | ) from exc 17 | execute_from_command_line(sys.argv) 18 | 19 | if __name__ == '__main__': 20 | main() -------------------------------------------------------------------------------- /media/avatar/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/1.png -------------------------------------------------------------------------------- /media/avatar/L1030604.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/L1030604.JPG -------------------------------------------------------------------------------- /media/avatar/L1030604_wIwlOJe.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/L1030604_wIwlOJe.JPG -------------------------------------------------------------------------------- /media/avatar/L1030609.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/L1030609.JPG -------------------------------------------------------------------------------- /media/avatar/L1030613.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/L1030613.JPG -------------------------------------------------------------------------------- /media/avatar/L1030616.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/L1030616.JPG -------------------------------------------------------------------------------- /media/avatar/ailun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/ailun.jpg -------------------------------------------------------------------------------- /media/avatar/benren.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/benren.jpg -------------------------------------------------------------------------------- /media/avatar/benren_2HzZef4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/benren_2HzZef4.jpg -------------------------------------------------------------------------------- /media/avatar/benren_RchU3kn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/benren_RchU3kn.jpg -------------------------------------------------------------------------------- /media/avatar/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/default.png -------------------------------------------------------------------------------- /media/avatar/touxiang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang.jpg -------------------------------------------------------------------------------- /media/avatar/touxiang_31snY9p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang_31snY9p.jpg -------------------------------------------------------------------------------- /media/avatar/touxiang_AU3sp6Y.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang_AU3sp6Y.jpg -------------------------------------------------------------------------------- /media/avatar/touxiang_dT8uIag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang_dT8uIag.jpg -------------------------------------------------------------------------------- /media/avatar/touxiang_eoJqfOO.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang_eoJqfOO.jpg -------------------------------------------------------------------------------- /media/avatar/touxiang_tOkAFxt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/media/avatar/touxiang_tOkAFxt.jpg -------------------------------------------------------------------------------- /middleware/__pycache__/userInfoMiddleWare.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/middleware/__pycache__/userInfoMiddleWare.cpython-310.pyc -------------------------------------------------------------------------------- /middleware/__pycache__/userInfoMiddleWare.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/middleware/__pycache__/userInfoMiddleWare.cpython-311.pyc -------------------------------------------------------------------------------- /middleware/__pycache__/userInfoMiddleWare.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/middleware/__pycache__/userInfoMiddleWare.cpython-38.pyc -------------------------------------------------------------------------------- /middleware/userInfoMiddleWare.py: -------------------------------------------------------------------------------- 1 | from django.utils.deprecation import MiddlewareMixin 2 | from django.shortcuts import render,redirect 3 | import re 4 | class UserMW(MiddlewareMixin): 5 | def process_request(self,request): 6 | path = request.path_info 7 | if path == '/myApp/login/' or path == '/myApp/registry/' or re.search('^/admin.*',path): 8 | return None 9 | else: 10 | if not request.session.get('username'): 11 | return redirect('login') 12 | return None 13 | 14 | def process_view(self,request,callback,callback_args,callback_kwargs): 15 | return None 16 | 17 | def process_response(self,request,response): 18 | return response 19 | -------------------------------------------------------------------------------- /myApp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__init__.py -------------------------------------------------------------------------------- /myApp/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/admin.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/admin.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/admin.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/admin.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/admin.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/admin.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/admin.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/admin.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/apps.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/apps.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/apps.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/apps.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/error.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/error.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/error.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/error.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/error.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/error.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/error.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/error.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/models.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/models.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/models.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/models.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/models.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/models.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/models.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/models.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/urls.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/urls.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/urls.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/urls.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/urls.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/urls.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/views.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/views.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/views.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/views.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/views.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/views.cpython-38.pyc -------------------------------------------------------------------------------- /myApp/__pycache__/views.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/__pycache__/views.cpython-39.pyc -------------------------------------------------------------------------------- /myApp/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from myApp.models import JobInfo,User,History 3 | # Register your models here. 4 | 5 | class JobManager(admin.ModelAdmin): 6 | list_display = ["id","title","address","type","educational","workExperience","workTag","salary","salaryMonth","companyTags","hrWork","hrName","pratice","companyTitle","companyAvatar","companyNature","companyStatus","companyPeople","detailUrl","companyUrl","dist"] 7 | list_display_links = ['title'] 8 | list_filter = ['type'] 9 | search_fields = ['title'] 10 | list_editable = ["address","type","educational","workExperience","workTag","salary","salaryMonth", 11 | "companyTags","hrWork","hrName","pratice","companyTitle","companyAvatar","companyNature", 12 | "companyStatus","companyPeople","detailUrl","companyUrl","dist"] 13 | readonly_fields = ['id'] 14 | list_per_page = 20 15 | date_hierarchy = "createTime" 16 | 17 | class UserManager(admin.ModelAdmin): 18 | list_display = ['id','username','password','avatar','createTime','address','educational','work','workExpirence'] 19 | list_display_links = ['username'] 20 | search_fields = ['username'] 21 | list_editable = ['password','avatar','address','educational','work','workExpirence'] 22 | readonly_fields = ['username'] 23 | list_per_page = 5 24 | date_hierarchy = "createTime" 25 | 26 | class HistoryManager(admin.ModelAdmin): 27 | list_display = ['id','job','user','count'] 28 | list_display_links = ['id'] 29 | list_per_page = 5 30 | 31 | admin.site.register(JobInfo, JobManager) 32 | admin.site.register(User, UserManager) 33 | admin.site.register(History, HistoryManager) 34 | 35 | -------------------------------------------------------------------------------- /myApp/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | class MyappConfig(AppConfig): 3 | name = 'myApp' 4 | -------------------------------------------------------------------------------- /myApp/error.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | 3 | def errorResponse(request,errorMsg): 4 | return render(request,'error.html',{ 5 | 'errorMsg':errorMsg 6 | }) 7 | -------------------------------------------------------------------------------- /myApp/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.1 on 2024-01-15 06:06 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | initial = True 10 | 11 | dependencies = [ 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='JobInfo', 17 | fields=[ 18 | ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='id')), 19 | ('title', models.CharField(default='', max_length=255, verbose_name='工作名')), 20 | ('address', models.CharField(default='', max_length=255, verbose_name='地址')), 21 | ('type', models.CharField(default='', max_length=255, verbose_name='类型')), 22 | ('educational', models.CharField(default='', max_length=255, verbose_name='学历')), 23 | ('workExperience', models.CharField(default='', max_length=255, verbose_name='工作经验')), 24 | ('workTag', models.CharField(default='', max_length=2555, verbose_name='工作标签')), 25 | ('salary', models.CharField(default='', max_length=255, verbose_name='薪资')), 26 | ('salaryMonth', models.CharField(default='', max_length=255, verbose_name='年终奖')), 27 | ('companyTags', models.CharField(default='', max_length=2555, verbose_name='公司标签')), 28 | ('hrWork', models.CharField(default='', max_length=255, verbose_name='人事职位')), 29 | ('hrName', models.CharField(default='', max_length=255, verbose_name='人事名字')), 30 | ('pratice', models.BooleanField(default='', max_length=255, verbose_name='是否为实习单位')), 31 | ('companyTitle', models.CharField(default='', max_length=255, verbose_name='公司名称')), 32 | ('companyAvatar', models.CharField(default='', max_length=255, verbose_name='公司头像')), 33 | ('companyNature', models.CharField(default='', max_length=255, verbose_name='公司性质')), 34 | ('companyStatus', models.CharField(default='', max_length=255, verbose_name='公司状态')), 35 | ('companyPeople', models.CharField(default='', max_length=255, verbose_name='公司人数')), 36 | ('detailUrl', models.CharField(default='', max_length=2555, verbose_name='详情地址')), 37 | ('companyUrl', models.CharField(default='', max_length=2555, verbose_name='公司详情地址')), 38 | ('createTime', models.DateField(auto_now_add=True, verbose_name='创建时间')), 39 | ('dist', models.CharField(default='', max_length=255, verbose_name='行政区')), 40 | ], 41 | options={ 42 | 'db_table': 'jobInfo', 43 | }, 44 | ), 45 | migrations.CreateModel( 46 | name='User', 47 | fields=[ 48 | ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='id')), 49 | ('username', models.CharField(default='', max_length=255, verbose_name='用户名')), 50 | ('password', models.CharField(default='', max_length=255, verbose_name='密码')), 51 | ('educational', models.CharField(default='', max_length=255, verbose_name='学历')), 52 | ('workExpirence', models.CharField(default='', max_length=255, verbose_name='工作经验')), 53 | ('address', models.CharField(default='', max_length=255, verbose_name='意向城市')), 54 | ('work', models.CharField(default='', max_length=255, verbose_name='意向岗位')), 55 | ('avatar', models.FileField(default='avatar/default.png', upload_to='avatar', verbose_name='用户头像')), 56 | ('createTime', models.DateField(auto_now_add=True, verbose_name='创建时间')), 57 | ], 58 | options={ 59 | 'db_table': 'user', 60 | }, 61 | ), 62 | migrations.CreateModel( 63 | name='History', 64 | fields=[ 65 | ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='id')), 66 | ('count', models.IntegerField(default=1, verbose_name='点击次数')), 67 | ('job', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myApp.jobinfo')), 68 | ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myApp.user')), 69 | ], 70 | options={ 71 | 'db_table': 'histroy', 72 | }, 73 | ), 74 | ] 75 | -------------------------------------------------------------------------------- /myApp/migrations/0002_auto_20240115_1221.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.14 on 2024-01-15 04:21 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('myApp', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='history', 15 | name='count', 16 | field=models.IntegerField(default=1, verbose_name='点击次数'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /myApp/migrations/0003_auto_20240115_1225.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.14 on 2024-01-15 04:25 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('myApp', '0002_auto_20240115_1221'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='history', 15 | name='count', 16 | field=models.IntegerField(default=1, verbose_name='点击次数'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /myApp/migrations/0004_jobinfo_dist.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.14 on 2024-01-15 05:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('myApp', '0003_auto_20240115_1225'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='jobinfo', 15 | name='dist', 16 | field=models.CharField(default='', max_length=255, verbose_name='行政区'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /myApp/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__init__.py -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0001_initial.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0001_initial.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0001_initial.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0001_initial.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0002_auto_20240115_1221.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0002_auto_20240115_1221.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0003_auto_20240115_1225.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0003_auto_20240115_1225.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0004_jobinfo_dist.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0004_jobinfo_dist.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/0004_jobinfo_dist.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/0004_jobinfo_dist.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/__init__.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/__init__.cpython-310.pyc -------------------------------------------------------------------------------- /myApp/migrations/__pycache__/__init__.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/migrations/__pycache__/__init__.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | class JobInfo(models.Model): 4 | id = models.AutoField('id',primary_key=True) 5 | title = models.CharField('工作名',max_length=255,default='') 6 | address = models.CharField('地址',max_length=255,default='') 7 | type = models.CharField('类型',max_length=255,default='') 8 | educational = models.CharField('学历',max_length=255,default='') 9 | workExperience = models.CharField('工作经验',max_length=255,default='') 10 | workTag = models.CharField('工作标签',max_length=2555,default='') 11 | salary = models.CharField('薪资',max_length=255,default='') 12 | salaryMonth = models.CharField('年终奖',max_length=255,default='') 13 | companyTags = models.CharField('公司标签',max_length=2555,default='') 14 | hrWork = models.CharField('人事职位',max_length=255,default='') 15 | hrName = models.CharField('人事名字',max_length=255,default='') 16 | pratice = models.BooleanField('是否为实习单位',max_length=255,default='') 17 | companyTitle = models.CharField('公司名称',max_length=255,default='') 18 | companyAvatar = models.CharField('公司头像',max_length=255,default='') 19 | companyNature = models.CharField('公司性质',max_length=255,default='') 20 | companyStatus = models.CharField('公司状态',max_length=255,default='') 21 | companyPeople = models.CharField('公司人数',max_length=255,default='') 22 | detailUrl = models.CharField('详情地址',max_length=2555,default='') 23 | companyUrl = models.CharField('公司详情地址',max_length=2555,default='') 24 | createTime = models.DateField('创建时间',auto_now_add=True) 25 | dist = models.CharField('行政区',max_length=255,default='') 26 | class Meta: 27 | db_table = "jobInfo" 28 | 29 | class User(models.Model): 30 | id = models.AutoField('id',primary_key=True) 31 | username = models.CharField('用户名',max_length=255,default='') 32 | password = models.CharField('密码',max_length=255,default='') 33 | educational = models.CharField('学历',max_length=255,default='') 34 | workExpirence = models.CharField('工作经验',max_length=255,default='') 35 | address = models.CharField('意向城市',max_length=255,default='') 36 | work = models.CharField('意向岗位',max_length=255,default='') 37 | avatar = models.FileField("用户头像",upload_to="avatar",default="avatar/touxiang.jpg") 38 | createTime = models.DateField("创建时间",auto_now_add=True) 39 | class Meta: 40 | db_table = "user" 41 | 42 | class History(models.Model): 43 | id = models.AutoField('id',primary_key=True) 44 | job = models.ForeignKey(JobInfo,on_delete=models.CASCADE) 45 | user = models.ForeignKey(User,on_delete=models.CASCADE) 46 | count = models.IntegerField("点击次数",default=1) 47 | class Meta: 48 | db_table = "histroy" 49 | 50 | -------------------------------------------------------------------------------- /myApp/templates/extra-timeline.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 进入岗位收藏 6 | 7 | 8 | ffff 9 | 10 | -------------------------------------------------------------------------------- /myApp/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, re_path 2 | from django.conf import settings 3 | from django.conf.urls.static import static 4 | from . import views 5 | 6 | urlpatterns = [ 7 | path('home/', views.home, name='home'), 8 | path('login/', views.login, name='login'), 9 | path('registry/', views.registry, name='registry'), 10 | path('logOut/', views.logOut, name='logOut'), 11 | path('selfInfo/', views.selfInfo, name='selfInfo'), 12 | path('changePassword/', views.changePassword, name='changePassword'), 13 | path('tableData/', views.tableData, name='tableData'), 14 | path('historyTableData/', views.historyTableData, name='historyTableData'), 15 | re_path(r'historyTableData/(.*)', views.historyTableData, name='historyTableData'), 16 | path('addHistory/', views.addHistory, name='addHistory'), 17 | path('removeHistory/', views.removeHistory, name='removeHistory'), 18 | path('salary/', views.salary, name='salary'), 19 | path('company/', views.company, name='company'), 20 | path('companyTags/', views.companyTags, name='companyTags'), 21 | path('educational/', views.educational, name='educational'), 22 | path('companyStatus/', views.companyStatus, name='companyStatus'), 23 | path('yuce/', views.yuce, name='yuce') 24 | ] 25 | if settings.DEBUG: 26 | urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 27 | -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getAddressCharData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getAddressCharData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getChangePassword.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getChangePassword.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getCompanyCharData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getCompanyCharData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getCompanyStatusCharData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getCompanyStatusCharData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getEducationalCharData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getEducationalCharData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getHistoryTableData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getHistoryTableData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getHomeData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getHomeData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getSalaryCharData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getSalaryCharData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getSelfInfoData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getSelfInfoData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/getTableData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/getTableData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/__pycache__/publicData.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/myApp/utils/__pycache__/publicData.cpython-311.pyc -------------------------------------------------------------------------------- /myApp/utils/getAddressCharData.py: -------------------------------------------------------------------------------- 1 | from .publicData import * 2 | from myApp.models import JobInfo 3 | import json 4 | 5 | def getPageData(): 6 | return ['北京','上海','深圳','成都','昆明',"郑州",'重庆','广州','东莞','天津'] 7 | 8 | def getEducation(address): 9 | jobs = JobInfo.objects.filter(address=address) 10 | educationData = {} 11 | for job in jobs: 12 | if educationData.get(job.educational,-1) == -1: 13 | educationData[job.educational] = 1 14 | else: 15 | educationData[job.educational] += 1 16 | result = [] 17 | for k,v in educationData.items(): 18 | result.append({ 19 | "name":k, 20 | 'value':v 21 | }) 22 | return result 23 | 24 | def getDist(address): 25 | jobs = JobInfo.objects.filter(address=address) 26 | distData = {} 27 | for job in jobs: 28 | if job.dist != '': 29 | if distData.get(job.dist,-1) == -1: 30 | distData[job.dist] = 1 31 | else: 32 | distData[job.dist] += 1 33 | result = [] 34 | for k, v in distData.items(): 35 | result.append({ 36 | "name": k, 37 | 'value': v 38 | }) 39 | return result 40 | 41 | def getSalary(address): 42 | jobs = JobInfo.objects.filter(address=address) 43 | salaries = [] 44 | for i in jobs: 45 | if i.pratice == 0: 46 | salaries.append(json.loads(i.salary)[1]) 47 | salaryColumn = [0 for x in range(len(salaryList))] 48 | for i in salaries: 49 | s = i / 1000 50 | if s < 10: 51 | salaryColumn[0] += 1 52 | elif s < 20: 53 | salaryColumn[1] += 1 54 | elif s < 30: 55 | salaryColumn[2] += 1 56 | elif s < 40: 57 | salaryColumn[3] += 1 58 | else: 59 | salaryColumn[4] += 1 60 | return salaryList,salaryColumn 61 | 62 | def companyPeopleData(address): 63 | jobs = JobInfo.objects.filter(address=address) 64 | peoples = [] 65 | for i in jobs: 66 | peoples.append(json.loads(i.companyPeople)[1]) 67 | peopleColumn = [0 for x in range(len(companyPeople))] 68 | for p in peoples: 69 | if p <= 20: 70 | peopleColumn[0] += 1 71 | elif p < 100: 72 | peopleColumn[1] += 1 73 | elif p < 500: 74 | peopleColumn[2] += 1 75 | elif p < 1000: 76 | peopleColumn[3] += 1 77 | elif p < 10000: 78 | peopleColumn[4] += 1 79 | elif p == 10000: 80 | peopleColumn[5] += 1 81 | else: 82 | peopleColumn[6] += 1 83 | result = [] 84 | for index,item in enumerate(peopleColumn): 85 | result.append({ 86 | 'name':companyPeople[index], 87 | 'value':item 88 | }) 89 | return result -------------------------------------------------------------------------------- /myApp/utils/getChangePassword.py: -------------------------------------------------------------------------------- 1 | from myApp.models import User 2 | import hashlib 3 | def changePassword(passwordInfo,userInfo): 4 | oldPwd = passwordInfo['oldPassword'] 5 | newPwd = passwordInfo['newPassword'] 6 | newCheckPwd = passwordInfo['newCheckPassword'] 7 | user = User.objects.get(username=userInfo.username) 8 | md5 = hashlib.md5() 9 | md5.update(oldPwd.encode()) 10 | oldPwd = md5.hexdigest() 11 | 12 | if user.password != oldPwd: 13 | return '原始密码不正确' 14 | else: 15 | if newPwd != newCheckPwd: 16 | return '新密码两次不符合' 17 | else: 18 | md5 = hashlib.md5() 19 | md5.update(newPwd.encode()) 20 | newPwd = md5.hexdigest() 21 | user.password = newPwd 22 | user.save() 23 | -------------------------------------------------------------------------------- /myApp/utils/getCompanyCharData.py: -------------------------------------------------------------------------------- 1 | from myApp.models import JobInfo 2 | import json 3 | from .publicData import * 4 | 5 | def getPageData(): 6 | jobs = JobInfo.objects.all() 7 | typesData = [] 8 | for i in jobs: 9 | typesData.append(i.type) 10 | return list(set(typesData)) 11 | def getCompanyBar(type): 12 | if type == 'all': 13 | jobs = JobInfo.objects.all() 14 | else: 15 | jobs = JobInfo.objects.filter(type=type) 16 | natureData = {} 17 | for i in jobs: 18 | if natureData.get(i.companyNature, -1) == -1: 19 | natureData[i.companyNature] = 1 20 | else: 21 | natureData[i.companyNature] += 1 22 | return list(natureData.keys())[:30], list(natureData.values())[:30] 23 | 24 | 25 | def getCompanyPie(type): 26 | if type == 'all': 27 | jobs = JobInfo.objects.all() 28 | else: 29 | jobs = JobInfo.objects.filter(type=type) 30 | addressData = {} 31 | for i in jobs: 32 | if addressData.get(i.address, -1) == -1: 33 | addressData[i.address] = 1 34 | else: 35 | addressData[i.address] += 1 36 | result = [] 37 | for key, valye in addressData.items(): 38 | result.append({ 39 | 'name': key, 40 | 'value': valye 41 | }) 42 | return result[:57] 43 | 44 | 45 | def getCompanPeople(type): 46 | if type == 'all': 47 | jobs = JobInfo.objects.all() 48 | else: 49 | jobs = JobInfo.objects.filter(type=type) 50 | 51 | def map_fn(item): 52 | item.companyPeople = json.loads(item.companyPeople)[1] 53 | return item 54 | 55 | jobs = list(map(map_fn, jobs)) 56 | data = [0 for x in range(6)] 57 | for i in jobs: 58 | p = i.companyPeople 59 | if p <= 20: 60 | data[0] += 1 61 | elif p <= 100: 62 | data[1] += 1 63 | elif p <= 500: 64 | data[2] += 1 65 | elif p <= 1000: 66 | data[3] += 1 67 | elif p < 10000: 68 | data[4] += 1 69 | else: 70 | data[5] += 1 71 | return companyPeople,data 72 | -------------------------------------------------------------------------------- /myApp/utils/getCompanyStatusCharData.py: -------------------------------------------------------------------------------- 1 | from myApp.models import JobInfo 2 | from .publicData import * 3 | import json 4 | def getPageData(): 5 | return getTypes() 6 | 7 | def getTeachnologyData(type): 8 | if type == '不限': 9 | jobs = JobInfo.objects.all() 10 | else: 11 | jobs = JobInfo.objects.filter(type=type) 12 | workTagData = {} 13 | for job in jobs: 14 | workTag = json.loads(job.workTag) 15 | for w in workTag: 16 | if not w: break; 17 | #result= {'java':2,'python':2,'andriid':1} 18 | if workTagData.get(w,-1) == -1: 19 | workTagData[w] = 1 20 | else: 21 | workTagData[w] += 1 22 | result = sorted(workTagData.items(), key=lambda x:x[1],reverse=True)[:20] 23 | TeachnologyDataRow = [] 24 | TeachnologyDataColumn = [] 25 | for k,v in result: 26 | TeachnologyDataRow.append(k) 27 | #['java','python'] 28 | TeachnologyDataColumn.append(v) 29 | [2,3,1] 30 | return TeachnologyDataRow,TeachnologyDataColumn 31 | def getCompanyStatusData(): 32 | jobs = JobInfo.objects.all() 33 | statusData = {} 34 | for job in jobs: 35 | if statusData.get(job.companyStatus,-1) == -1: 36 | statusData[job.companyStatus] = 1 37 | else: 38 | statusData[job.companyStatus] += 1 39 | result = [] 40 | for k,v in statusData.items(): 41 | result.append({ 42 | 'name':k, 43 | 'value':v 44 | }) 45 | return result 46 | 47 | -------------------------------------------------------------------------------- /myApp/utils/getEducationalCharData.py: -------------------------------------------------------------------------------- 1 | from .publicData import * 2 | from myApp.models import JobInfo 3 | import json 4 | 5 | def getAverged(list): 6 | result = 0 7 | for i in list: 8 | result += i 9 | return round(result / len(list),2) 10 | 11 | def getExpirenceLineData(educational): 12 | hasEmpty = False 13 | if educational == '不限': 14 | jobs = JobInfo.objects.all() 15 | else: 16 | jobs = JobInfo.objects.filter(educational=educational) 17 | workExpirences = {'在校/应届':[], '经验不限':[], '1年以内':[], '1-3年':[], '3-5年':[], '5-10年':[], '10年以上':[]} 18 | workPeople = {'在校/应届':0, '经验不限':0, '1年以内':0, '1-3年':0, '3-5年':0, '5-10年':0, '10年以上':0} 19 | for job in jobs: 20 | for k,e in workExpirences.items(): 21 | if job.workExperience == k: 22 | workExpirences[k].append(json.loads(job.salary)[1]) 23 | workPeople[k] += 1 24 | 25 | for k,e in workExpirences.items(): 26 | try: 27 | workExpirences[k] = getAverged(e) 28 | except: 29 | workExpirences[k] = 0 30 | if len(jobs) == 0: 31 | hasEmpty = True 32 | return educations,list(workExpirences.keys()),list(workExpirences.values()),list(workPeople.values()),hasEmpty 33 | 34 | def getEducationsData(): 35 | jobs = JobInfo.objects.all() 36 | educationData = {} 37 | for j in jobs: 38 | if educationData.get(j.educational, -1) == -1: 39 | educationData[j.educational] = 1 40 | else: 41 | educationData[j.educational] += 1 42 | #{"benkesjia":1,"jshfa":2} 43 | return list(educationData.keys()),list(educationData.values()) 44 | -------------------------------------------------------------------------------- /myApp/utils/getHistoryTableData.py: -------------------------------------------------------------------------------- 1 | from myApp.models import History 2 | import json 3 | from django.db.models import F 4 | 5 | 6 | def addHistory(userInfo, jobId): 7 | hisData = History.objects.filter(job_id=jobId, user=userInfo) 8 | if len(hisData): 9 | hisData[0].count = F("count") + 1 10 | hisData[0].save() 11 | else: 12 | History.objects.create(job_id=jobId, user=userInfo) 13 | 14 | 15 | def removeHistory(hisId): 16 | his = History.objects.get(id=hisId) 17 | his.delete() 18 | 19 | 20 | def getHistoryData(userInfo): 21 | data = History.objects.filter(user=userInfo).order_by("-count") 22 | 23 | # 如果查询结果为空,则直接返回一个空列表 24 | if not data: 25 | return [] 26 | 27 | def map_fn(item): 28 | # 假设item.job.salary等字段已经存在并且为字符串格式的JSON 29 | item.job.salary = json.loads(item.job.salary) 30 | item.job.companyPeople = json.loads(item.job.companyPeople) 31 | item.job.workTag = json.loads(item.job.workTag) 32 | 33 | if item.job.companyTags == '无': 34 | item.job.companyTags = [] 35 | else: 36 | item.job.companyTags = json.loads(item.job.companyTags) 37 | 38 | if not item.job.pratice: 39 | item.job.salary = list(map(lambda x: str(int(x / 1000)), item.job.salary)) 40 | else: 41 | item.job.salary = list(map(str, item.job.salary)) 42 | item.job.salary = '-'.join(item.job.salary) 43 | 44 | item.job.companyPeople = list(map(str, item.job.companyPeople)) 45 | item.job.companyPeople = '-'.join(item.job.companyPeople) 46 | 47 | return item 48 | 49 | # 应用map函数转换查询结果 50 | return list(map(map_fn, data)) 51 | -------------------------------------------------------------------------------- /myApp/utils/getHomeData.py: -------------------------------------------------------------------------------- 1 | from myApp.models import User, JobInfo 2 | from .publicData import * 3 | import time 4 | import json 5 | import re 6 | 7 | 8 | # 首页时间+欢迎语 9 | def getNowTime(): 10 | timeFormat = time.localtime() 11 | year = timeFormat.tm_year 12 | month = timeFormat.tm_mon 13 | day = timeFormat.tm_mday 14 | monthList = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", 15 | "November", "December"] 16 | return year, monthList[month - 1], day 17 | 18 | 19 | # 首页右侧7指标 20 | def getTagData(): 21 | jobs = getAllJobInfo() 22 | users = getAllUser() 23 | educationsTop = "学历不限" 24 | salaryTop = 0 25 | salaryMonthTop = 0 26 | address = {} 27 | pratice = {} 28 | 29 | # Preprocessing salaries and salary months for non-practise jobs 30 | preprocessed_salaries = [(clean_salary(json.loads(job.salary)[1]), job) for job in jobs if not job.pratice and len(json.loads(job.salary)) > 1 and isinstance(json.loads(job.salary)[1], str)] 31 | preprocessed_salary_months = [(clean_salary(job.salaryMonth), job) for job in jobs] 32 | 33 | # Finding the top non-practise salary 34 | if preprocessed_salaries: 35 | salaryTop = max(preprocessed_salaries, key=lambda x: x[0])[0] 36 | 37 | # Finding the top salary month 38 | if preprocessed_salary_months: 39 | salaryMonthTop = max(preprocessed_salary_months, key=lambda x: x[0])[0] 40 | 41 | # Process for educational level and counting addresses and practice types 42 | for job in jobs: 43 | job_education_value = educations.get(job.educational, 9) # Assuming 9 is the default value 44 | if job_education_value < educations.get(educationsTop, 9): 45 | educationsTop = job.educational 46 | 47 | # Counting occurrences of address 48 | address[job.address] = address.get(job.address, 0) + 1 49 | 50 | # Counting occurrences of practice type 51 | pratice[job.pratice] = pratice.get(job.pratice, 0) + 1 52 | 53 | # Finding top 3 addresses 54 | addressStr = sorted(address.items(), key=lambda x: x[1], reverse=True)[:3] 55 | addressTop = ",".join([i[0] for i in addressStr]) 56 | 57 | # Finding the most common practice type 58 | praticeMax = max(pratice.items(), key=lambda x: x[1]) 59 | a = "普通岗位" if not praticeMax[0] else "实习岗位" 60 | 61 | return len(jobs), len(users), educationsTop, salaryTop, salaryMonthTop, addressTop, a 62 | # 用户创建时间饼状图 63 | def getUserCreateTime(): 64 | users = getAllUser() 65 | data = {} 66 | for u in users: 67 | if data.get(str(u.createTime), -1) == -1: 68 | data[str(u.createTime)] = 1 69 | else: 70 | data[str(u.createTime)] += 1 71 | result = [] 72 | for k, v in data.items(): 73 | result.append({ 74 | 'name': k, 75 | 'value': v 76 | }) 77 | return result 78 | 79 | 80 | def getUserTop5(): 81 | users = getAllUser() 82 | 83 | def sort_fn(item): 84 | return time.mktime(time.strptime(str(item.createTime), '%Y-%m-%d')) 85 | 86 | users = list(sorted(users, key=sort_fn, reverse=True))[:6] 87 | return users 88 | 89 | 90 | def getTableData(): 91 | jobs = getAllJobInfo() 92 | for i in jobs: 93 | i.workTag = '/'.join(json.loads(i.workTag)) 94 | if i.companyTags != "无": 95 | i.companyTags = '/'.join(json.loads(i.companyTags)) 96 | 97 | i.companyPeople = json.loads(i.companyPeople) 98 | i.companyPeople = list(map(lambda x: str(x) + '人', i.companyPeople)) 99 | i.companyPeople = '-'.join(i.companyPeople) 100 | i.salary = json.loads(i.salary)[1] 101 | return jobs 102 | # jobs[0].workTags = '/'.join(json.loads(jobs[0].workTag)) 103 | # def map_fn(item): 104 | # item.workTag = "/".join() 105 | # jobs = list(map(map_fn,jobs)) 106 | 107 | 108 | # 辅助函数 109 | def clean_salary(salary_str): 110 | # 使用正则表达式移除非数字字符 111 | cleaned_str = re.sub(r'[^\d]', '', salary_str) 112 | # 转换为整数 113 | return int(cleaned_str) if cleaned_str else 0 114 | -------------------------------------------------------------------------------- /myApp/utils/getModelpredice.py: -------------------------------------------------------------------------------- 1 | from myApp.models import JobInfo 2 | import pandas as pd 3 | from .publicData import * 4 | 5 | timesalary = pd.read_csv("data.txt") 6 | import matplotlib.pyplot as plt 7 | import matplotlib.pylab as pyl 8 | def getmodelspre(): 9 | jobsInfos = JobInfo.objects.exclude(workExperience ='经验不限') 10 | listtime=jobsInfos.objects.values_list('workExperience', flat=True) 11 | listsalary=jobsInfos.objects.values_list('salary', flat=True) 12 | list1=[] 13 | for l in listtime: 14 | if len(l)==3: 15 | worktime=int(l[0])/12 16 | elif len(l)==4: 17 | if l[1]=='-': 18 | worktime=int(l[2]) 19 | elif l[1]=='年': 20 | worktime=int(l[0]) 21 | elif len(l)==5: 22 | if l[2]=='/': 23 | worktime=0 24 | else: 25 | worktime=int(l[:2]) 26 | list1.append(worktime) 27 | print(list1) 28 | 29 | list2=[] 30 | for salary in listsalary: 31 | salaryres=(salary[0]+salary[1])/2 32 | list2.append(salaryres) 33 | print(list2) 34 | 35 | with open('filename.txt', 'w') as f: 36 | f.write('均资元,工时年\n') 37 | for i in range(len(list1)): 38 | f.write(str(list2[i]) + ",") 39 | f.write(str(list1[i]) + "\n") 40 | f.close() 41 | 42 | plt.rcParams['font.sans-serif'] = ['SimHei'] 43 | from sklearn.linear_model import LinearRegression 44 | model = LinearRegression() 45 | feature_cols = ['工时年'] 46 | X = timesalary[feature_cols] 47 | y = timesalary.均资元 48 | model.fit(X,y) 49 | plt.scatter(timesalary.工时年, timesalary.均资元) 50 | plt.plot(timesalary.工时年, model.predict(X) , color='blue') 51 | pyl.title("y="+str(model.coef_[0])+"x+"+str(model.intercept_)) 52 | plt.xlabel('工时年') 53 | plt.ylabel('均资元') 54 | plt.savefig('yuce.png') 55 | plt.show() 56 | print("截距与斜率:",model.intercept_,model.coef_) 57 | print("该线性回归方程组公式为:y="+str(model.coef_[0])+"x+"+str(model.intercept_)) -------------------------------------------------------------------------------- /myApp/utils/getSalaryCharData.py: -------------------------------------------------------------------------------- 1 | from .publicData import * 2 | from myApp.models import JobInfo 3 | import json 4 | 5 | def getPageData(): 6 | return list(educations.keys()), workExpirences 7 | def getBarData(educational, workExpirence): 8 | salaryList = ['0-10k', '10-20k', '20-30k', '30-40k', '40k以上'] 9 | if educational == '不限' and workExpirence == '不限': 10 | jobs = JobInfo.objects.all() 11 | elif workExpirence == '不限': 12 | jobs = JobInfo.objects.filter(educational=educational) 13 | elif educational == '不限': 14 | jobs = JobInfo.objects.filter(workExperience=workExpirence) 15 | else: 16 | jobs = JobInfo.objects.filter(educational=educational, workExperience=workExpirence) 17 | jobsType = {} 18 | for j in jobs: 19 | if j.pratice == 0: 20 | if jobsType.get(j.type, -1) == -1: 21 | # {Java:[1000,245646,4666,3646,5]} 22 | jobsType[j.type] = [json.loads(j.salary)[1]] 23 | else: 24 | jobsType[j.type].append(json.loads(j.salary)[1]) 25 | barData = {} 26 | for k, v in jobsType.items(): 27 | if not barData.get(k, 0): 28 | barData[k] = [0 for x in range(5)] 29 | for i in v: 30 | s = i / 1000 31 | if s < 10: 32 | barData[k][0] += 1 33 | elif s >= 10 and s < 20: 34 | barData[k][1] += 1 35 | elif s >= 20 and s < 30: 36 | barData[k][2] += 1 37 | elif s >= 30 and s < 40: 38 | barData[k][3] += 1 39 | else: 40 | barData[k][4] += 1 41 | legend = list(barData.keys()) 42 | # {java:} 43 | if len(legend) == 0: 44 | legend = None 45 | return salaryList, barData, list(barData.keys()) 46 | 47 | def addList(list): 48 | total = 0 49 | for i in list: 50 | total += i 51 | return round(total / len(list), 1) 52 | 53 | 54 | def pieData(): 55 | jobs = JobInfo.objects.all() 56 | jobsType = {} 57 | for j in jobs: 58 | if j.pratice == 1: 59 | if jobsType.get(j.type, -1) == -1: 60 | jobsType[j.type] = [json.loads(j.salary)[1]] 61 | else: 62 | jobsType[j.type].append(json.loads(j.salary)[1]) 63 | result = [] 64 | for k, v in jobsType.items(): 65 | result.append({ 66 | 'name': k, 67 | 'value': addList(v) 68 | }) 69 | return result 70 | 71 | 72 | def louDouData(): 73 | jobs = JobInfo.objects.filter(salaryMonth__gt=0) 74 | data = {} 75 | for j in jobs: 76 | x = str(j.salaryMonth) + '薪' 77 | if data.get(x, -1) == -1: 78 | data[x] = 1 79 | else: 80 | data[x] += 1 81 | result = [] 82 | for k, v in data.items(): 83 | result.append({ 84 | 'name': k, 85 | 'value': v 86 | }) 87 | return list(data.keys()), result 88 | 89 | -------------------------------------------------------------------------------- /myApp/utils/getSelfInfoData.py: -------------------------------------------------------------------------------- 1 | from .publicData import * 2 | # from myApp.models import User 3 | def getPageData(): 4 | jobs = getAllJobInfo() 5 | jobsType = {} 6 | educations = ["博士","硕士","本科","大专","高中","中专/中技","学历不限"] 7 | workExperience = ['在校/应届生','经验不限','1-3年','3-5年','5-10年','10年以上'] 8 | for i in jobs: 9 | if jobsType.get(i.type,-1) == -1: 10 | jobsType[i.type] = 1 11 | else: 12 | jobsType[i.type] += 1 13 | return educations,workExperience,jobsType.keys() 14 | 15 | def changeSelfInfo(newInfo,FileInfo): 16 | user = User.objects.get(username=newInfo['username']) 17 | user.educational = newInfo['educational'] 18 | user.workExpirence = newInfo['workExpirence'] 19 | user.address = newInfo['address'] 20 | user.work = newInfo['work'] 21 | if FileInfo['avatar'] != None: 22 | user.avatar = FileInfo['avatar'] 23 | user.save() 24 | -------------------------------------------------------------------------------- /myApp/utils/getTableData.py: -------------------------------------------------------------------------------- 1 | import json 2 | from myApp.models import JobInfo 3 | 4 | def getTableData(): 5 | data = list(JobInfo.objects.all()) 6 | def map_fn(item): 7 | item.salary = json.loads(item.salary) 8 | item.companyPeople = json.loads(item.companyPeople) 9 | item.workTag = json.loads(item.workTag) 10 | if item.companyTags != '无': 11 | item.companyTags = json.loads(item.companyTags) 12 | if not item.pratice: 13 | item.salary = list(map(lambda x: str(int(x / 1000)), item.salary)) 14 | else: 15 | item.salary = list(map(lambda x: str(x), item.salary)) 16 | item.salary = '-'.join(item.salary) 17 | item.companyPeople = list(map(lambda x: str(x), item.companyPeople)) 18 | item.companyPeople = '-'.join(item.companyPeople) 19 | return item 20 | data = list(map(map_fn, data)) 21 | return data -------------------------------------------------------------------------------- /myApp/utils/publicData.py: -------------------------------------------------------------------------------- 1 | from myApp.models import User,JobInfo 2 | 3 | educations = {"博士": 1, "硕士": 2, "本科": 3, "大专": 4, "高中": 5, "中专/中技": 6, "初中及以下":7,"学历不限": 8,"无": 9} 4 | workExpirences = ['在校/应届','经验不限','1年以内','1-3年','3-5年','5-10年','10年以上'] 5 | companyPeople = ['20人以下','100人以下','500人以下','1000人以下','1万人以下','1万人以上'] 6 | salaryList = ['0-10k', '10-20k', '20-30k', '30-40k', '40k以上'] 7 | 8 | def getAllUser(): 9 | return User.objects.all() 10 | 11 | def getAllJobInfo(): 12 | jobsInfos = JobInfo.objects.all() 13 | return jobsInfos 14 | 15 | def getTypes(): 16 | jobsInfos = JobInfo.objects.all() 17 | typesList = [] 18 | for i in jobsInfos:typesList.append(i.type) 19 | return list(set(typesList)) 20 | 21 | def getAddress(): 22 | jobsInfos = JobInfo.objects.all() 23 | addressList = [] 24 | for i in jobsInfos: addressList.append(i.address) 25 | return list(set(addressList)) -------------------------------------------------------------------------------- /myApp/word_cloud_picture.py: -------------------------------------------------------------------------------- 1 | import jieba # 分词 2 | from matplotlib import pylab as plt # 绘图,数据可视化 3 | from wordcloud import WordCloud # 词云 4 | from PIL import Image # 图片处理 5 | import numpy as np # 矩阵运算 6 | from pymysql import * 7 | import json 8 | # wordCloud 9 | 10 | # 所有词 11 | def get_img(field,targetImgSrc,resImgSrc): 12 | con = connect(host='localhost', user='root', password='', database='boss', port=3306, charset='utf8mb4') 13 | cursor = con.cursor() 14 | sql = f"select {field} from jobinfo" 15 | cursor.execute(sql) 16 | data = cursor.fetchall() 17 | text = '' 18 | for i,item in enumerate(data): 19 | text += item[0] 20 | cursor.close() 21 | con.close() 22 | 23 | # 分词 24 | cut = jieba.cut(text) 25 | string = ' '.join(cut) 26 | print(string) 27 | 28 | # 图片 29 | img = Image.open(targetImgSrc) # 打开遮罩图片 30 | img_arr = np.array(img) # 将图片转化为列表 31 | wc = WordCloud( 32 | background_color='white', 33 | mask=img_arr, 34 | font_path='STHUPO.TTF' 35 | ) 36 | wc.generate_from_text(string) 37 | 38 | # 绘制图片 39 | fig = plt.figure(1) 40 | plt.imshow(wc) 41 | plt.axis('off') # 不显示坐标轴 42 | # 显示生成的词语图片 43 | # plt.show() 44 | # 输入词语图片到文件 45 | plt.savefig(resImgSrc, dpi=500) 46 | 47 | def get_addressCompanyTags_img(targetImgSrc,resImgSrc,addrress): 48 | con = connect(host='localhost', user='root', password='root', database='boss', port=3306, charset='utf8mb4') 49 | cursor = con.cursor() 50 | sql = f"select companyTags from jobinfo where address = {addrress}" 51 | cursor.execute(sql) 52 | data = cursor.fetchall() 53 | text = '' 54 | for i, item in enumerate(data): 55 | tags = json.loads(item[0]) 56 | for j in tags: 57 | text += j 58 | cursor.close() 59 | con.close() 60 | # 分词 61 | cut = jieba.cut(text) 62 | string = ' '.join(cut) 63 | print(string) 64 | # 图片 65 | img = Image.open(targetImgSrc) # 打开遮罩图片 66 | img_arr = np.array(img) # 将图片转化为列表 67 | wc = WordCloud( 68 | background_color='white', 69 | mask=img_arr, 70 | font_path='STHUPO.TTF' 71 | ) 72 | wc.generate_from_text(string) 73 | # 绘制图片 74 | fig = plt.figure(1) 75 | plt.imshow(wc) 76 | plt.axis('off') # 不显示坐标轴 77 | # 显示生成的词语图片 78 | # plt.show() 79 | # 输入词语图片到文件 80 | plt.savefig(resImgSrc, dpi=500) 81 | 82 | # get_img('companyTitle',r'.\static\2.jpg',r'.\static\companyTitle.jpg') 83 | # get_img('summary',r'.\static\2.jpg',r'.\static\summary_cloud.jpg') 84 | 85 | 86 | -------------------------------------------------------------------------------- /spider/__pycache__/test_salaryMonth.cpython-311-pytest-7.4.4.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/spider/__pycache__/test_salaryMonth.cpython-311-pytest-7.4.4.pyc -------------------------------------------------------------------------------- /spider/audo_insert_sql.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from sqlalchemy import create_engine 3 | from sqlalchemy.sql import text 4 | 5 | # CSV文件路径 6 | csv_file_path = 'clear.csv' 7 | 8 | # 读取CSV文件,没有列名,所以设置header=None 9 | df = pd.read_csv(csv_file_path, header=None) 10 | 11 | # 检查DataFrame的列数 12 | print(f"The CSV file has {df.shape[1]} columns.") 13 | 14 | # 定义DataFrame的列名(确保与数据库中的列对应,不包括自增长的id列) 15 | columns = [ 16 | 'title', 'address', 'type', 'educational', 'workExperience', 'workTag', 17 | 'salary', 'salaryMonth', 'companyTags', 'hrWork', 'hrName', 'pratice', 18 | 'companyTitle', 'companyAvatar', 'companyNature', 'companyStatus', 'companyPeople', 19 | 'detailUrl', 'companyUrl', 'createTime','dist' 20 | ] 21 | 22 | # 确保列名的数量与CSV文件中的列数匹配 23 | if len(columns) != df.shape[1]: 24 | raise ValueError(f"Columns length mismatch. CSV has {df.shape[1]} columns, but {len(columns)} column names were provided.") 25 | 26 | # 设置DataFrame的列名 27 | df.columns = columns 28 | 29 | # MySQL数据库连接信息 30 | username = 'root' # 你的MySQL用户名 31 | password = '123456' # 你的MySQL密码 32 | host = 'localhost' # 数据库服务器地址 33 | port = 3306 # 端口号 34 | dbname = 'boss' # 数据库名称 35 | 36 | # 创建数据库引擎 37 | engine = create_engine(f'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}') 38 | 39 | # 查询表中现有的记录数 40 | with engine.connect() as conn: 41 | result = conn.execute(text("SELECT COUNT(*) FROM jobinfo")) 42 | initial_count = result.scalar() 43 | 44 | 45 | # 将DataFrame导入MySQL数据库,表名为jobinfo 46 | # if_exists='replace'会替换掉原有的表,请确保这是您想要的操作 47 | # chunksize可以根据需要设置,以便在导入大型DataFrame时分块导入 48 | # method='multi'允许执行多行的INSERT,可以提高导入性能 49 | df.to_sql('jobinfo', con=engine, if_exists='append', index=False, chunksize=1000, method='multi') 50 | # 查询更新后的记录数 51 | with engine.connect() as conn: 52 | result = conn.execute(text("SELECT COUNT(*) FROM jobinfo")) 53 | final_count = result.scalar() 54 | # 计算导入了多少条数据 55 | imported_rows = final_count - initial_count 56 | print(f'数据导入成功,{imported_rows}被导入') -------------------------------------------------------------------------------- /spider/chromedriver.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/spider/chromedriver.exe -------------------------------------------------------------------------------- /spider/clear.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | 3 | # 读取temp.csv文件 4 | temp_df = pd.read_csv('temp.csv', header=None) 5 | 6 | # 判断temp_df是否为空 7 | if temp_df.empty: 8 | print("temp.csv 文件为空,停止工作。") 9 | else: 10 | # 判断clear.csv文件是否存在 11 | try: 12 | clear_df = pd.read_csv('clear.csv', header=None) 13 | except pd.errors.EmptyDataError: 14 | clear_df = pd.DataFrame() 15 | 16 | # 判断clear_df是否为空 17 | if clear_df.empty: 18 | # 对temp.csv的数据进行清洗和填补缺失值 19 | temp_df.fillna('无', inplace=True) 20 | 21 | # 更新clear.csv文件 22 | temp_df.to_csv('clear.csv', header=False, index=False) 23 | print("clear.csv 文件为空,已写入清洗和填补缺失值后的 temp.csv 中的数据。") 24 | else: 25 | # 删除clear.csv中和temp.csv相同的行 26 | merged_df = pd.concat([temp_df, clear_df]).drop_duplicates(keep=False) 27 | 28 | # 使用 "无" 替换空值 29 | merged_df.fillna('无', inplace=True) 30 | 31 | # 更新clear.csv文件 32 | merged_df.to_csv('clear.csv', header=False, index=False) 33 | print("清洗完成,并更新 clear.csv 文件。") 34 | -------------------------------------------------------------------------------- /spider/temp.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/spider/temp.csv -------------------------------------------------------------------------------- /spider/删除自增id: -------------------------------------------------------------------------------- 1 | 删除id 2 | ALTER TABLE jobinfo 3 | DROP id; 4 | ALTER TABLE jobinfo 5 | ADD id int NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST; 6 | 7 | 删除表数据 8 | 情况 9 | DELETE FROM jobinfo; 10 | 删除特定的 11 | WHERE +条件 12 | 13 | 全删 14 | TRUNCATE TABLE jobinfo; 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/companyTags.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/companyTags.jpg -------------------------------------------------------------------------------- /static/companyTitle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/companyTitle.jpg -------------------------------------------------------------------------------- /static/css/bootstrap-wysihtml5.css: -------------------------------------------------------------------------------- 1 | ul.wysihtml5-toolbar { 2 | margin: 0; 3 | padding: 0; 4 | display: block; 5 | } 6 | 7 | ul.wysihtml5-toolbar::after { 8 | clear: both; 9 | display: table; 10 | content: ""; 11 | } 12 | 13 | ul.wysihtml5-toolbar > li { 14 | float: left; 15 | display: list-item; 16 | list-style: none; 17 | margin: 0 5px 10px 0; 18 | } 19 | 20 | ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] { 21 | font-weight: bold; 22 | } 23 | 24 | ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] { 25 | font-style: italic; 26 | } 27 | 28 | ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] { 29 | text-decoration: underline; 30 | } 31 | 32 | ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { 33 | background-image: none; 34 | -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 35 | -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 36 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); 37 | background-color: #E6E6E6; 38 | background-color: #D9D9D9; 39 | outline: 0; 40 | } 41 | 42 | ul.wysihtml5-commands-disabled .dropdown-menu { 43 | display: none !important; 44 | } 45 | 46 | ul.wysihtml5-toolbar div.wysihtml5-colors { 47 | display:block; 48 | width: 50px; 49 | height: 20px; 50 | margin-top: 2px; 51 | margin-left: 5px; 52 | position: absolute; 53 | pointer-events: none; 54 | } 55 | 56 | ul.wysihtml5-toolbar a.wysihtml5-colors-title { 57 | padding-left: 70px; 58 | } 59 | 60 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] { 61 | background: black !important; 62 | } 63 | 64 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] { 65 | background: silver !important; 66 | } 67 | 68 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] { 69 | background: gray !important; 70 | } 71 | 72 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] { 73 | background: maroon !important; 74 | } 75 | 76 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] { 77 | background: red !important; 78 | } 79 | 80 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] { 81 | background: purple !important; 82 | } 83 | 84 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] { 85 | background: green !important; 86 | } 87 | 88 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] { 89 | background: olive !important; 90 | } 91 | 92 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] { 93 | background: navy !important; 94 | } 95 | 96 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] { 97 | background: blue !important; 98 | } 99 | 100 | ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] { 101 | background: orange !important; 102 | } -------------------------------------------------------------------------------- /static/css/component.css: -------------------------------------------------------------------------------- 1 | 2 | .cbp_tmtimeline { 3 | margin: 30px 0 0 0; 4 | padding: 0; 5 | list-style: none; 6 | position: relative; 7 | } 8 | 9 | /* The line */ 10 | .cbp_tmtimeline:before { 11 | content: ''; 12 | position: absolute; 13 | top: 0; 14 | bottom: 0; 15 | width: 10px; 16 | background: #afdcf8; 17 | left: 20%; 18 | margin-left: -10px; 19 | } 20 | 21 | /* The date/time */ 22 | .cbp_tmtimeline > li { 23 | position: relative; 24 | } 25 | 26 | .cbp_tmtimeline > li .cbp_tmtime { 27 | display: block; 28 | width: 25%; 29 | padding-right: 100px; 30 | position: absolute; 31 | } 32 | 33 | .cbp_tmtimeline > li .cbp_tmtime span { 34 | display: block; 35 | text-align: right; 36 | } 37 | 38 | .cbp_tmtimeline > li .cbp_tmtime span:first-child { 39 | font-size: 0.9em; 40 | color: #bdd0db; 41 | } 42 | 43 | .cbp_tmtimeline > li .cbp_tmtime span:last-child { 44 | font-size: 2.9em; 45 | color: #3594cb; 46 | } 47 | 48 | .cbp_tmtimeline > li:nth-child(odd) .cbp_tmtime span:last-child { 49 | color: #6cbfee; 50 | } 51 | 52 | /* Right content */ 53 | .cbp_tmtimeline > li .cbp_tmlabel { 54 | margin: 0 0 15px 25%; 55 | background: #3594cb; 56 | color: #fff; 57 | padding: 2em; 58 | font-size: 1.2em; 59 | font-weight: 300; 60 | line-height: 1.4; 61 | position: relative; 62 | border-radius: 5px; 63 | } 64 | 65 | .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel { 66 | background: #6cbfee; 67 | } 68 | 69 | .cbp_tmtimeline > li .cbp_tmlabel h2 { 70 | margin-top: 0px; 71 | padding: 0 0 10px 0; 72 | border-bottom: 1px solid rgba(255,255,255,0.4); 73 | } 74 | 75 | /* The triangle */ 76 | .cbp_tmtimeline > li .cbp_tmlabel:after { 77 | right: 100%; 78 | border: solid transparent; 79 | content: " "; 80 | height: 0; 81 | width: 0; 82 | position: absolute; 83 | pointer-events: none; 84 | border-right-color: #3594cb; 85 | border-width: 10px; 86 | top: 10px; 87 | } 88 | 89 | .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel:after { 90 | border-right-color: #6cbfee; 91 | } 92 | 93 | /* The icons */ 94 | .cbp_tmtimeline > li .cbp_tmicon { 95 | width: 40px; 96 | height: 40px; 97 | speak: none; 98 | font-style: normal; 99 | font-weight: normal; 100 | font-variant: normal; 101 | text-transform: none; 102 | font-size: 1.4em; 103 | line-height: 40px; 104 | -webkit-font-smoothing: antialiased; 105 | position: absolute; 106 | color: #fff; 107 | background: #46a4da; 108 | border-radius: 50%; 109 | box-shadow: 0 0 0 8px #afdcf8; 110 | text-align: center; 111 | left: 20%; 112 | top: 0; 113 | margin: 0 0 0 -25px; 114 | } 115 | 116 | 117 | /* Example Media Queries */ 118 | @media screen and (max-width: 65.375em) { 119 | 120 | .cbp_tmtimeline > li .cbp_tmtime span:last-child { 121 | font-size: 1.5em; 122 | } 123 | } 124 | 125 | @media screen and (max-width: 47.2em) { 126 | .cbp_tmtimeline:before { 127 | display: none; 128 | } 129 | 130 | .cbp_tmtimeline > li .cbp_tmtime { 131 | width: 100%; 132 | position: relative; 133 | padding: 0 0 20px 0; 134 | } 135 | 136 | .cbp_tmtimeline > li .cbp_tmtime span { 137 | text-align: left; 138 | } 139 | 140 | .cbp_tmtimeline > li .cbp_tmlabel { 141 | margin: 0 0 30px 0; 142 | padding: 1em; 143 | font-weight: 400; 144 | font-size: 95%; 145 | } 146 | 147 | .cbp_tmtimeline > li .cbp_tmlabel:after { 148 | right: auto; 149 | left: 20px; 150 | border-right-color: transparent; 151 | border-bottom-color: #3594cb; 152 | top: -20px; 153 | } 154 | 155 | .cbp_tmtimeline > li:nth-child(odd) .cbp_tmlabel:after { 156 | border-right-color: transparent; 157 | border-bottom-color: #6cbfee; 158 | } 159 | 160 | .cbp_tmtimeline > li .cbp_tmicon { 161 | position: relative; 162 | float: right; 163 | left: auto; 164 | margin: -55px 5px 0 0px; 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /static/css/custom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * Apply Here your Custom CSS 4 | * 5 | */ 6 | 7 | body { 8 | 9 | } -------------------------------------------------------------------------------- /static/css/datatables.responsive.css: -------------------------------------------------------------------------------- 1 | table.has-columns-hidden > tbody > tr > td > span.responsiveExpander { 2 | background: url('../image/plus.png') no-repeat 5px center; 3 | padding-left: 32px; 4 | cursor: pointer; 5 | } 6 | 7 | table.has-columns-hidden > tbody > tr.detail-show > td span.responsiveExpander { 8 | background: url('../image/minus.png') no-repeat 5px center; 9 | } 10 | 11 | table.has-columns-hidden > tbody > tr.row-detail > td { 12 | background: #eee; 13 | } 14 | 15 | table.has-columns-hidden > tbody > tr.row-detail > td > ul { 16 | list-style: none; 17 | margin: 0; 18 | } 19 | 20 | table.has-columns-hidden > tbody > tr.row-detail > td > ul > li > span.columnTitle { 21 | font-weight: bold; 22 | } 23 | -------------------------------------------------------------------------------- /static/css/futurico.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Futurico skin 2 | ----------------------------------- */ 3 | .icheckbox_futurico, 4 | .iradio_futurico { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 16px; 11 | height: 17px; 12 | background: url(../image/futurico.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_futurico { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_futurico.checked { 21 | background-position: -18px 0; 22 | } 23 | .icheckbox_futurico.disabled { 24 | background-position: -36px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_futurico.checked.disabled { 28 | background-position: -54px 0; 29 | } 30 | 31 | .iradio_futurico { 32 | background-position: -72px 0; 33 | } 34 | .iradio_futurico.checked { 35 | background-position: -90px 0; 36 | } 37 | .iradio_futurico.disabled { 38 | background-position: -108px 0; 39 | cursor: default; 40 | } 41 | .iradio_futurico.checked.disabled { 42 | background-position: -126px 0; 43 | } 44 | 45 | /* Retina support */ 46 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 47 | only screen and (-moz-min-device-pixel-ratio: 1.5), 48 | only screen and (-o-min-device-pixel-ratio: 3/2), 49 | only screen and (min-device-pixel-ratio: 1.5) { 50 | .icheckbox_futurico, 51 | .iradio_futurico { 52 | background-image: url(../image/futurico@2x.png); 53 | -webkit-background-size: 144px 19px; 54 | background-size: 144px 19px; 55 | } 56 | } -------------------------------------------------------------------------------- /static/css/jquery-jvectormap-1.2.2.css: -------------------------------------------------------------------------------- 1 | .jvectormap-label { 2 | position: absolute; 3 | display: none; 4 | -webkit-border-radius: 3px; 5 | -moz-border-radius: 3px; 6 | border-radius: 3px; 7 | background: #262b34; 8 | color: white; 9 | font-family: sans-serif, Verdana; 10 | font-size: smaller; 11 | padding: 5px; 12 | font-size: 11px; 13 | font-family: Arial; 14 | font-family: inherit; 15 | z-index:11; 16 | } 17 | 18 | .jvectormap-zoomin, .jvectormap-zoomout { 19 | position: absolute; 20 | font-family: sans-serif; 21 | font-size: 14px; 22 | left: 10px; 23 | -webkit-border-radius: 3px; 24 | -moz-border-radius: 3px; 25 | border-radius: 3px; 26 | background: rgba(0,0,0,0.5); 27 | padding: 3px; 28 | color: white; 29 | width: 15px; 30 | height: 15px; 31 | cursor: pointer; 32 | line-height: 15px; 33 | text-align: center; 34 | padding: 0px; 35 | } 36 | 37 | .jvectormap-zoomin:hover, .jvectormap-zoomout:hover { 38 | background: rgba(0,0,0,1); 39 | } 40 | 41 | .jvectormap-zoomin { 42 | top: 10px; 43 | } 44 | 45 | .jvectormap-zoomout { 46 | top: 30px; 47 | } -------------------------------------------------------------------------------- /static/css/jquery.Jcrop.min.css: -------------------------------------------------------------------------------- 1 | /* jquery.Jcrop.min.css v0.9.12 (build:20130521) */ 2 | .jcrop-holder{-ms-touch-action:none;direction:ltr;text-align:left;} 3 | .jcrop-vline,.jcrop-hline{background:#FFF url(../image/Jcrop.gif);font-size:0;position:absolute;} 4 | .jcrop-vline{height:100%;width:1px!important;} 5 | .jcrop-vline.right{right:0;} 6 | .jcrop-hline{height:1px!important;width:100%;} 7 | .jcrop-hline.bottom{bottom:0;} 8 | .jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;} 9 | .jcrop-handle{background-color:#333;border:1px #EEE solid;font-size:1px;height:7px;width:7px;} 10 | .jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;} 11 | .jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;} 12 | .jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;} 13 | .jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;} 14 | .jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;} 15 | .jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;} 16 | .jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;} 17 | .jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;} 18 | .jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;} 19 | .jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;} 20 | .jcrop-dragbar.ord-n{margin-top:-4px;} 21 | .jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;} 22 | .jcrop-dragbar.ord-e{margin-right:-4px;right:0;} 23 | .jcrop-dragbar.ord-w{margin-left:-4px;} 24 | .jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:alpha(opacity=70)!important;opacity:.70!important;} 25 | .jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;} 26 | .jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important;} 27 | .jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;} 28 | .solid-line .jcrop-vline,.solid-line .jcrop-hline{background:#FFF;} 29 | .jcrop-holder img,img.jcrop-preview{max-width:none;} 30 | -------------------------------------------------------------------------------- /static/css/markdownarea.css: -------------------------------------------------------------------------------- 1 | /*! UIkit 2.3.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ 2 | 3 | /* ======================================================================== 4 | Addon: Markdownarea 5 | ========================================================================== */ 6 | /* Sub-object `uk-markdownarea-navbar` 7 | ========================================================================== */ 8 | .uk-markdownarea-navbar { 9 | background: #eeeeee; 10 | } 11 | /* 12 | * Micro clearfix 13 | */ 14 | .uk-markdownarea-navbar:before, 15 | .uk-markdownarea-navbar:after { 16 | content: " "; 17 | display: table; 18 | } 19 | .uk-markdownarea-navbar:after { 20 | clear: both; 21 | } 22 | /* Sub-object `uk-markdownarea-navbar-nav` 23 | ========================================================================== */ 24 | .uk-markdownarea-navbar-nav { 25 | margin: 0; 26 | padding: 0; 27 | list-style: none; 28 | float: left; 29 | } 30 | .uk-markdownarea-navbar-nav > li { 31 | float: left; 32 | } 33 | /* 34 | * 1. Dimensions 35 | * 2. Style 36 | */ 37 | .uk-markdownarea-navbar-nav > li > a { 38 | display: block; 39 | -moz-box-sizing: border-box; 40 | box-sizing: border-box; 41 | text-decoration: none; 42 | /* 1 */ 43 | height: 40px; 44 | padding: 0 15px; 45 | line-height: 40px; 46 | /* 2 */ 47 | color: #444444; 48 | font-size: 11px; 49 | cursor: pointer; 50 | } 51 | /* 52 | * Hover 53 | * 1. Apply hover style also to focus state 54 | * 2. Remove default focus style 55 | */ 56 | .uk-markdownarea-navbar-nav > li:hover > a, 57 | .uk-markdownarea-navbar-nav > li > a:focus { 58 | background-color: #f5f5f5; 59 | color: #444444; 60 | outline: none; 61 | /* 2 */ 62 | } 63 | /* OnClick */ 64 | .uk-markdownarea-navbar-nav > li > a:active { 65 | background-color: #dddddd; 66 | color: #444444; 67 | } 68 | /* Active */ 69 | .uk-markdownarea-navbar-nav > li.uk-active > a { 70 | background-color: #f5f5f5; 71 | color: #444444; 72 | } 73 | /* Sub-object: `uk-markdownarea-navbar-flip` 74 | ========================================================================== */ 75 | .uk-markdownarea-navbar-flip { 76 | float: right; 77 | } 78 | /* Sub-object for special buttons 79 | ========================================================================== */ 80 | [data-mode='split'] .uk-markdown-button-markdown, 81 | [data-mode='split'] .uk-markdown-button-preview { 82 | display: none; 83 | } 84 | /* Sub-object `uk-markdownarea-content` 85 | ========================================================================== */ 86 | .uk-markdownarea-content { 87 | border-left: 1px solid #dddddd; 88 | border-right: 1px solid #dddddd; 89 | border-bottom: 1px solid #dddddd; 90 | background: #ffffff; 91 | } 92 | /* 93 | * Micro clearfix 94 | */ 95 | .uk-markdownarea-content:before, 96 | .uk-markdownarea-content:after { 97 | content: " "; 98 | display: table; 99 | } 100 | .uk-markdownarea-content:after { 101 | clear: both; 102 | } 103 | /* Modifier `uk-markdownarea-fullscreen` 104 | ========================================================================== */ 105 | .uk-markdownarea-fullscreen { 106 | position: fixed; 107 | top: 0; 108 | left: 0; 109 | right: 0; 110 | bottom: 0; 111 | z-index: 1030; 112 | } 113 | .uk-markdownarea-fullscreen .uk-markdownarea-content { 114 | position: absolute; 115 | top: 40px; 116 | left: 0; 117 | right: 0; 118 | bottom: 0; 119 | } 120 | .uk-markdownarea-fullscreen .uk-icon-expand:before { 121 | content: "\f066"; 122 | } 123 | /* Sub-objects `uk-markdownarea-code` and `uk-markdownarea-preview` 124 | ========================================================================== */ 125 | .uk-markdownarea-code, 126 | .uk-markdownarea-preview { 127 | -moz-box-sizing: border-box; 128 | box-sizing: border-box; 129 | } 130 | .uk-markdownarea-preview { 131 | padding: 20px; 132 | overflow-y: scroll; 133 | } 134 | /* 135 | * Tab view 136 | */ 137 | [data-mode='tab'][data-active-tab='code'] .uk-markdownarea-preview, 138 | [data-mode='tab'][data-active-tab='preview'] .uk-markdownarea-code { 139 | display: none; 140 | } 141 | /* 142 | * Split view 143 | */ 144 | [data-mode='split'] .uk-markdownarea-code, 145 | [data-mode='split'] .uk-markdownarea-preview { 146 | float: left; 147 | width: 50%; 148 | } 149 | [data-mode='split'] .uk-markdownarea-code { 150 | border-right: 1px solid #eeeeee; 151 | } 152 | /* CodeMirror modifications 153 | ========================================================================== */ 154 | .uk-markdownarea .CodeMirror { 155 | padding: 10px; 156 | -moz-box-sizing: border-box; 157 | box-sizing: border-box; 158 | } 159 | -------------------------------------------------------------------------------- /static/css/polaris.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Polaris skin 2 | ----------------------------------- */ 3 | .icheckbox_polaris, 4 | .iradio_polaris { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 29px; 11 | height: 29px; 12 | background: url(../image/polaris.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_polaris { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_polaris.hover { 21 | background-position: -31px 0; 22 | } 23 | .icheckbox_polaris.checked { 24 | background-position: -62px 0; 25 | } 26 | .icheckbox_polaris.disabled { 27 | background-position: -93px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_polaris.checked.disabled { 31 | background-position: -124px 0; 32 | } 33 | 34 | .iradio_polaris { 35 | background-position: -155px 0; 36 | } 37 | .iradio_polaris.hover { 38 | background-position: -186px 0; 39 | } 40 | .iradio_polaris.checked { 41 | background-position: -217px 0; 42 | } 43 | .iradio_polaris.disabled { 44 | background-position: -248px 0; 45 | cursor: default; 46 | } 47 | .iradio_polaris.checked.disabled { 48 | background-position: -279px 0; 49 | } 50 | 51 | /* Retina support */ 52 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 53 | only screen and (-moz-min-device-pixel-ratio: 1.5), 54 | only screen and (-o-min-device-pixel-ratio: 3/2), 55 | only screen and (min-device-pixel-ratio: 1.5) { 56 | .icheckbox_polaris, 57 | .iradio_polaris { 58 | background-image: url(../image/polaris@2x.png); 59 | -webkit-background-size: 310px 31px; 60 | background-size: 310px 31px; 61 | } 62 | } -------------------------------------------------------------------------------- /static/css/responsive-tables.css: -------------------------------------------------------------------------------- 1 | /* Foundation v2.1.4 http://foundation.zurb.com */ 2 | /* Artfully masterminded by ZURB */ 3 | 4 | /* -------------------------------------------------- 5 | Table of Contents 6 | ----------------------------------------------------- 7 | :: Shared Styles 8 | :: Page Name 1 9 | :: Page Name 2 10 | */ 11 | 12 | 13 | /* ----------------------------------------- 14 | Shared Styles 15 | ----------------------------------------- */ 16 | 17 | 18 | /* Mobile */ 19 | @media only screen and (max-width: 767px) { 20 | 21 | table.responsive { margin-bottom: 0; } 22 | 23 | .pinned { position: absolute; left: 0; top: 0; background: #fff; width: 30%; overflow: hidden; overflow-x: scroll; border-right: 1px solid #ccc; } 24 | .pinned table { border-right: none; border-left: none; width: 100%; } 25 | .pinned table th, .pinned table td { white-space: nowrap; } 26 | .pinned td:last-child { border-bottom: 0; } 27 | 28 | div.table-wrapper { position: relative; margin-bottom: 20px; overflow: hidden; } 29 | div.table-wrapper div.rt-scrollable { margin-left: 30%; } 30 | div.table-wrapper div.rt-scrollable { overflow: scroll; overflow-y: hidden; } 31 | 32 | table.responsive td, table.responsive th { position: relative; white-space: nowrap; overflow: hidden; } 33 | table.responsive th:first-child, table.responsive td:first-child, table.responsive td:first-child, table.responsive.pinned td { display: none; } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /static/css/select2-bootstrap.css: -------------------------------------------------------------------------------- 1 | .form-control .select2-choice { 2 | border: 0; 3 | border-radius: 2px; 4 | } 5 | 6 | .form-control .select2-choice .select2-arrow { 7 | border-radius: 0 2px 2px 0; 8 | } 9 | 10 | .form-control.select2-container { 11 | height: auto !important; 12 | padding: 0px; 13 | } 14 | 15 | .form-control.select2-container.select2-dropdown-open { 16 | border-color: #5897FB; 17 | border-radius: 3px 3px 0 0; 18 | } 19 | 20 | .form-control .select2-container.select2-dropdown-open .select2-choices { 21 | border-radius: 3px 3px 0 0; 22 | } 23 | 24 | .form-control.select2-container .select2-choices { 25 | border: 0 !important; 26 | border-radius: 3px; 27 | } 28 | 29 | .control-group.warning .select2-container .select2-choice, 30 | .control-group.warning .select2-container .select2-choices, 31 | .control-group.warning .select2-container-active .select2-choice, 32 | .control-group.warning .select2-container-active .select2-choices, 33 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, 34 | .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, 35 | .control-group.warning .select2-container-multi.select2-container-active .select2-choices { 36 | border: 1px solid #C09853 !important; 37 | } 38 | 39 | .control-group.warning .select2-container .select2-choice div { 40 | border-left: 1px solid #C09853 !important; 41 | background: #FCF8E3 !important; 42 | } 43 | 44 | .control-group.error .select2-container .select2-choice, 45 | .control-group.error .select2-container .select2-choices, 46 | .control-group.error .select2-container-active .select2-choice, 47 | .control-group.error .select2-container-active .select2-choices, 48 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, 49 | .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, 50 | .control-group.error .select2-container-multi.select2-container-active .select2-choices { 51 | border: 1px solid #B94A48 !important; 52 | } 53 | 54 | .control-group.error .select2-container .select2-choice div { 55 | border-left: 1px solid #B94A48 !important; 56 | background: #F2DEDE !important; 57 | } 58 | 59 | .control-group.info .select2-container .select2-choice, 60 | .control-group.info .select2-container .select2-choices, 61 | .control-group.info .select2-container-active .select2-choice, 62 | .control-group.info .select2-container-active .select2-choices, 63 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, 64 | .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, 65 | .control-group.info .select2-container-multi.select2-container-active .select2-choices { 66 | border: 1px solid #3A87AD !important; 67 | } 68 | 69 | .control-group.info .select2-container .select2-choice div { 70 | border-left: 1px solid #3A87AD !important; 71 | background: #D9EDF7 !important; 72 | } 73 | 74 | .control-group.success .select2-container .select2-choice, 75 | .control-group.success .select2-container .select2-choices, 76 | .control-group.success .select2-container-active .select2-choice, 77 | .control-group.success .select2-container-active .select2-choices, 78 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, 79 | .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, 80 | .control-group.success .select2-container-multi.select2-container-active .select2-choices { 81 | border: 1px solid #468847 !important; 82 | } 83 | 84 | .control-group.success .select2-container .select2-choice div { 85 | border-left: 1px solid #468847 !important; 86 | background: #DFF0D8 !important; 87 | } 88 | -------------------------------------------------------------------------------- /static/css/style1.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin:300px; 3 | 4 | } -------------------------------------------------------------------------------- /static/font/entypo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/entypo.eot -------------------------------------------------------------------------------- /static/font/entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/entypo.ttf -------------------------------------------------------------------------------- /static/font/entypo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/entypo.woff -------------------------------------------------------------------------------- /static/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/font/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/font/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/font/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr4TRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr4TRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr5DRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr5DRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr5TRA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr5TRA.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr5jRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr5jRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr6DRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr6DRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr6TRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr6TRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr6jRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr6jRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0IIpQlx3QUlC5A4PNr6zRAW_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0IIpQlx3QUlC5A4PNr6zRAW_0.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVYNyB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVYNyB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVZ9yB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVZ9yB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVZNyB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVZNyB.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVZdyB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVZdyB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVa9yB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVa9yB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVaNyB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVaNyB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVadyB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVadyB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0NIpQlx3QUlC5A4PNjXhFVatyB1Wk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0NIpQlx3QUlC5A4PNjXhFVatyB1Wk.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARBQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARBQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARCQ_k.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARCQ_k.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARDQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARDQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARGQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARGQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARMQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARMQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARNQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARNQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4AROQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4AROQ_m87A.woff2 -------------------------------------------------------------------------------- /static/font/o-0OIpQlx3QUlC5A4PNr4ARPQ_m87A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/font/o-0OIpQlx3QUlC5A4PNr4ARPQ_m87A.woff2 -------------------------------------------------------------------------------- /static/image/Jcrop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/Jcrop.gif -------------------------------------------------------------------------------- /static/image/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero.png -------------------------------------------------------------------------------- /static/image/aero1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero1.png -------------------------------------------------------------------------------- /static/image/aero2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero2.png -------------------------------------------------------------------------------- /static/image/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero@2x.png -------------------------------------------------------------------------------- /static/image/aero@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero@2x1.png -------------------------------------------------------------------------------- /static/image/aero@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/aero@2x2.png -------------------------------------------------------------------------------- /static/image/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/alpha-horizontal.png -------------------------------------------------------------------------------- /static/image/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/alpha.png -------------------------------------------------------------------------------- /static/image/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue.png -------------------------------------------------------------------------------- /static/image/blue1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue1.png -------------------------------------------------------------------------------- /static/image/blue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue2.png -------------------------------------------------------------------------------- /static/image/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue@2x.png -------------------------------------------------------------------------------- /static/image/blue@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue@2x1.png -------------------------------------------------------------------------------- /static/image/blue@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/blue@2x2.png -------------------------------------------------------------------------------- /static/image/boxed-pattern-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/boxed-pattern-3.png -------------------------------------------------------------------------------- /static/image/drag-drop-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/drag-drop-rtl.png -------------------------------------------------------------------------------- /static/image/drag-drop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/drag-drop.png -------------------------------------------------------------------------------- /static/image/flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/flat.png -------------------------------------------------------------------------------- /static/image/flat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/flat@2x.png -------------------------------------------------------------------------------- /static/image/futurico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/futurico.png -------------------------------------------------------------------------------- /static/image/futurico@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/futurico@2x.png -------------------------------------------------------------------------------- /static/image/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green.png -------------------------------------------------------------------------------- /static/image/green1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green1.png -------------------------------------------------------------------------------- /static/image/green2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green2.png -------------------------------------------------------------------------------- /static/image/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green@2x.png -------------------------------------------------------------------------------- /static/image/green@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green@2x1.png -------------------------------------------------------------------------------- /static/image/green@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/green@2x2.png -------------------------------------------------------------------------------- /static/image/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey.png -------------------------------------------------------------------------------- /static/image/grey1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey1.png -------------------------------------------------------------------------------- /static/image/grey2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey2.png -------------------------------------------------------------------------------- /static/image/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey@2x.png -------------------------------------------------------------------------------- /static/image/grey@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey@2x1.png -------------------------------------------------------------------------------- /static/image/grey@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/grey@2x2.png -------------------------------------------------------------------------------- /static/image/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/hue-horizontal.png -------------------------------------------------------------------------------- /static/image/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/hue.png -------------------------------------------------------------------------------- /static/image/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/line.png -------------------------------------------------------------------------------- /static/image/line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/line@2x.png -------------------------------------------------------------------------------- /static/image/load-node.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/load-node.gif -------------------------------------------------------------------------------- /static/image/loader-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/loader-1.gif -------------------------------------------------------------------------------- /static/image/loader-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/loader-2.gif -------------------------------------------------------------------------------- /static/image/minimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/minimal.png -------------------------------------------------------------------------------- /static/image/minimal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/minimal@2x.png -------------------------------------------------------------------------------- /static/image/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/minus.png -------------------------------------------------------------------------------- /static/image/notes-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/notes-lines.png -------------------------------------------------------------------------------- /static/image/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange.png -------------------------------------------------------------------------------- /static/image/orange1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange1.png -------------------------------------------------------------------------------- /static/image/orange2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange2.png -------------------------------------------------------------------------------- /static/image/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange@2x.png -------------------------------------------------------------------------------- /static/image/orange@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange@2x1.png -------------------------------------------------------------------------------- /static/image/orange@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/orange@2x2.png -------------------------------------------------------------------------------- /static/image/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink.png -------------------------------------------------------------------------------- /static/image/pink1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink1.png -------------------------------------------------------------------------------- /static/image/pink2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink2.png -------------------------------------------------------------------------------- /static/image/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink@2x.png -------------------------------------------------------------------------------- /static/image/pink@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink@2x1.png -------------------------------------------------------------------------------- /static/image/pink@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/pink@2x2.png -------------------------------------------------------------------------------- /static/image/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/plus.png -------------------------------------------------------------------------------- /static/image/polaris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/polaris.png -------------------------------------------------------------------------------- /static/image/polaris@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/polaris@2x.png -------------------------------------------------------------------------------- /static/image/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple.png -------------------------------------------------------------------------------- /static/image/purple1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple1.png -------------------------------------------------------------------------------- /static/image/purple2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple2.png -------------------------------------------------------------------------------- /static/image/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple@2x.png -------------------------------------------------------------------------------- /static/image/purple@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple@2x1.png -------------------------------------------------------------------------------- /static/image/purple@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/purple@2x2.png -------------------------------------------------------------------------------- /static/image/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red.png -------------------------------------------------------------------------------- /static/image/red1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red1.png -------------------------------------------------------------------------------- /static/image/red2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red2.png -------------------------------------------------------------------------------- /static/image/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red@2x.png -------------------------------------------------------------------------------- /static/image/red@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red@2x1.png -------------------------------------------------------------------------------- /static/image/red@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/red@2x2.png -------------------------------------------------------------------------------- /static/image/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/saturation.png -------------------------------------------------------------------------------- /static/image/select2-spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/select2-spinner.gif -------------------------------------------------------------------------------- /static/image/select2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/select2.png -------------------------------------------------------------------------------- /static/image/select2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/select2x2.png -------------------------------------------------------------------------------- /static/image/spritemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/spritemap.png -------------------------------------------------------------------------------- /static/image/spritemap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/spritemap@2x.png -------------------------------------------------------------------------------- /static/image/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/square.png -------------------------------------------------------------------------------- /static/image/square@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/square@2x.png -------------------------------------------------------------------------------- /static/image/tree-arrow-big-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-arrow-big-rtl.png -------------------------------------------------------------------------------- /static/image/tree-arrow-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-arrow-big.png -------------------------------------------------------------------------------- /static/image/tree-arrow-small-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-arrow-small-rtl.png -------------------------------------------------------------------------------- /static/image/tree-arrow-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-arrow-small.png -------------------------------------------------------------------------------- /static/image/tree-big-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-big-rtl.png -------------------------------------------------------------------------------- /static/image/tree-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-big.png -------------------------------------------------------------------------------- /static/image/tree-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-branch.png -------------------------------------------------------------------------------- /static/image/tree-check-big-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-check-big-rtl.png -------------------------------------------------------------------------------- /static/image/tree-check-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-check-big.png -------------------------------------------------------------------------------- /static/image/tree-check-small-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-check-small-rtl.png -------------------------------------------------------------------------------- /static/image/tree-check-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-check-small.png -------------------------------------------------------------------------------- /static/image/tree-small-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-small-rtl.png -------------------------------------------------------------------------------- /static/image/tree-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/tree-small.png -------------------------------------------------------------------------------- /static/image/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow.png -------------------------------------------------------------------------------- /static/image/yellow1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow1.png -------------------------------------------------------------------------------- /static/image/yellow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow2.png -------------------------------------------------------------------------------- /static/image/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow@2x.png -------------------------------------------------------------------------------- /static/image/yellow@2x1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow@2x1.png -------------------------------------------------------------------------------- /static/image/yellow@2x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/image/yellow@2x2.png -------------------------------------------------------------------------------- /static/js/gfm.js: -------------------------------------------------------------------------------- 1 | CodeMirror.defineMode("gfm", function(config, modeConfig) { 2 | var codeDepth = 0; 3 | function blankLine(state) { 4 | state.code = false; 5 | return null; 6 | } 7 | var gfmOverlay = { 8 | startState: function() { 9 | return { 10 | code: false, 11 | codeBlock: false, 12 | ateSpace: false 13 | }; 14 | }, 15 | copyState: function(s) { 16 | return { 17 | code: s.code, 18 | codeBlock: s.codeBlock, 19 | ateSpace: s.ateSpace 20 | }; 21 | }, 22 | token: function(stream, state) { 23 | // Hack to prevent formatting override inside code blocks (block and inline) 24 | if (state.codeBlock) { 25 | if (stream.match(/^```/)) { 26 | state.codeBlock = false; 27 | return null; 28 | } 29 | stream.skipToEnd(); 30 | return null; 31 | } 32 | if (stream.sol()) { 33 | state.code = false; 34 | } 35 | if (stream.sol() && stream.match(/^```/)) { 36 | stream.skipToEnd(); 37 | state.codeBlock = true; 38 | return null; 39 | } 40 | // If this block is changed, it may need to be updated in Markdown mode 41 | if (stream.peek() === '`') { 42 | stream.next(); 43 | var before = stream.pos; 44 | stream.eatWhile('`'); 45 | var difference = 1 + stream.pos - before; 46 | if (!state.code) { 47 | codeDepth = difference; 48 | state.code = true; 49 | } else { 50 | if (difference === codeDepth) { // Must be exact 51 | state.code = false; 52 | } 53 | } 54 | return null; 55 | } else if (state.code) { 56 | stream.next(); 57 | return null; 58 | } 59 | // Check if space. If so, links can be formatted later on 60 | if (stream.eatSpace()) { 61 | state.ateSpace = true; 62 | return null; 63 | } 64 | if (stream.sol() || state.ateSpace) { 65 | state.ateSpace = false; 66 | if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { 67 | // User/Project@SHA 68 | // User@SHA 69 | // SHA 70 | return "link"; 71 | } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { 72 | // User/Project#Num 73 | // User#Num 74 | // #Num 75 | return "link"; 76 | } 77 | } 78 | if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i) && 79 | stream.string.slice(stream.start - 2, stream.start) != "](") { 80 | // URLs 81 | // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls 82 | // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine 83 | return "link"; 84 | } 85 | stream.next(); 86 | return null; 87 | }, 88 | blankLine: blankLine 89 | }; 90 | 91 | var markdownConfig = { 92 | underscoresBreakWords: false, 93 | taskLists: true, 94 | fencedCodeBlocks: true 95 | }; 96 | for (var attr in modeConfig) { 97 | markdownConfig[attr] = modeConfig[attr]; 98 | } 99 | markdownConfig.name = "markdown"; 100 | CodeMirror.defineMIME("gfmBase", markdownConfig); 101 | return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay); 102 | }, "markdown"); 103 | -------------------------------------------------------------------------------- /static/js/html5.min.js: -------------------------------------------------------------------------------- 1 | /** Kraken v4.0.0, by Chris Ferdinandi | http://github.com/cferdinandi/kraken | Licensed under MIT: http://gomakethings.com/mit/ */ 2 | !function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=y.elements;return"string"==typeof e?e.split(" "):e}function a(e,t){var n=y.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof e&&(e=e.join(" ")),y.elements=n+" "+e,m(t)}function c(e){var t=E[e[p]];return t||(t={},v++,e[p]=v,E[v]=t),t}function o(e,n,r){if(n||(n=t),u)return n.createElement(e);r||(r=c(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():g.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||f.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function i(e,n){if(e||(e=t),u)return e.createDocumentFragment();n=n||c(e);for(var a=n.frag.cloneNode(),o=0,i=r(),l=i.length;l>o;o++)a.createElement(i[o]);return a}function l(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return y.shivMethods?o(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(y,t.frag)}function m(e){e||(e=t);var r=c(e);return!y.shivCSS||s||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),u||l(e,r),e}var s,u,d="3.7.2",h=e.html5||{},f=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,p="_html5shiv",v=0,E={};!function(){try{var e=t.createElement("a");e.innerHTML="",s="hidden"in e,u=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){s=!0,u=!0}}();var y={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:u,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:m,createElement:o,createDocumentFragment:i,addElements:a};e.html5=y,m(t)}(this,document); -------------------------------------------------------------------------------- /static/js/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); 8 | if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d= v1.2.3 http://jquery.com 10 | */ 11 | 12 | (function(d,c,e){if(typeof aciPluginClass!=="undefined"){return}var a;this.aciPluginClass=function(){};aciPluginClass.extend=function(g,j){i.extend=arguments.callee;function i(){if(a){this._instance={};return this.__construct.apply(this,arguments)}}a=false;i.prototype=new this();a=true;var h=this.prototype;for(var f in g){i.prototype[f]=((typeof g[f]=="function")&&(f!="proxy"))?(function(k){return function(){var p=this._parent;this._parent=h;var n=this._super;this._super=h[k];var o=this._private;if(this._instance&&j){var m=this._instance._private;if(m[j]===e){m[j]={nameSpace:"."+j}}this._private=m[j]}var l=g[k].apply(this,arguments);this._parent=p;this._super=n;this._private=o;return l}})(f):g[f]}return i};var b=0;aciPluginClass.aciPluginUi=aciPluginClass.extend({__construct:function(k,l,i,h,j){var f="."+k;var g=l.data(f);if(g){this._instance=g._instance;return g.__request(i,h,j)}l.data(f,this);d.extend(true,this._instance,{_private:{},nameSpace:f,jQuery:l,options:d.extend(true,{},d.fn[k].defaults,(typeof i=="object")?i:{}),index:b++,wasInit:false});this.__extend();return this.__request(i,h,j)},__extend:function(){},__request:function(g,f,h){if((g===e)||(typeof g=="object")){if(this._instance.options.autoInit){this.init()}}else{if(typeof g=="string"){switch(g){case"init":this.init();break;case"api":return{object:this};case"options":if(f===e){return{object:this.options()}}else{if(typeof f=="string"){return{object:this.options(f)}}else{this.options(f)}}break;case"option":this.option(f,h);break;case"destroy":this.destroy();break}}}return this._instance.jQuery},proxy:function(j,h){var m=c.Array.prototype.slice;var f=m.call(arguments,2);var i=this,g=i._parent,l=i._super,k=i._private;return function(){i._parent=g;i._super=l;i._private=k;return j.apply(i,h?f.concat([this],m.call(arguments)):f.concat(m.call(arguments)))}},init:function(){if(!this._instance.wasInit){this._instance.wasInit=true;return true}return false},wasInit:function(){return this._instance.wasInit},__parent:function(h,f,l){var m=f.split(".");if(m.length>1){var j=h,k;for(var g in m){k=j;j=j[m[g]]}l.name=m[g];return k}l.name=f;return h},options:function(f){if(f){var i={name:null};var h;if(typeof f=="string"){h=this.__parent(this._instance.options,f,i);return h[i.name]}else{for(var g in f){h=this.__parent(this._instance.options,g,i);h[i.name]=f[g]}}}else{return this._instance.options}},option:function(g,i){var h={name:null};var f=this.__parent(this._instance.options,g,h);f[h.name]=i},destroy:function(){if(this._instance.wasInit){this._instance.wasInit=false;this._instance.jQuery.removeData(this._instance.nameSpace);return true}return false}});aciPluginClass.plugins={};aciPluginClass.publish=function(f,g){d.fn[f]=function(j,m,n){var h=null;for(var l=0,k=this.length;l").css({height:b,width:a}).addClass("peity").data("peity",this),this.canvas=d=c[0],this.context=d.getContext("2d"),this.$el.hide().after(d));d.height=c.height()*m;d.width=c.width()*m;return d};j.values=function(){return h.map(this.$el.text().split(this.opts.delimiter), 9 | function(a){return parseFloat(a)})};i.defaults={};i.graphers={};i.register=function(a,b,d){this.defaults[a]=b;this.graphers[a]=d};i.register("pie",{colours:["#ff9900","#fff4dd","#ffc66e"],delimiter:null,diameter:16},function(a){if(!a.delimiter){var b=this.$el.text().match(/[^0-9\.]/);a.delimiter=b?b[0]:","}b=this.values();if("/"==a.delimiter)var d=b[0],b=[d,b[1]-d];for(var c=0,d=b.length,f=0;c 0 19 | }); 20 | 21 | // Mail Container Height fit with the document 22 | if(neonCalendar.isPresent) 23 | { 24 | neonCalendar.$sidebar = neonCalendar.$container.find('.calendar-sidebar'); 25 | neonCalendar.$body = neonCalendar.$container.find('.calendar-body'); 26 | 27 | 28 | // Checkboxes 29 | var $cb = neonCalendar.$body.find('table thead input[type="checkbox"], table tfoot input[type="checkbox"]'); 30 | 31 | $cb.on('click', function() 32 | { 33 | $cb.attr('checked', this.checked).trigger('change'); 34 | 35 | calendar_toggle_checkbox_status(this.checked); 36 | }); 37 | 38 | // Highlight 39 | neonCalendar.$body.find('table tbody input[type="checkbox"]').on('change', function() 40 | { 41 | $(this).closest('tr')[this.checked ? 'addClass' : 'removeClass']('highlight'); 42 | }); 43 | 44 | 45 | // Setup Calendar 46 | if($.isFunction($.fn.fullCalendar)) 47 | { 48 | var calendar = $('#calendar'); 49 | 50 | calendar.fullCalendar({ 51 | header: { 52 | left: 'title', 53 | right: 'month,agendaWeek,agendaDay today prev,next' 54 | }, 55 | 56 | //defaultView: 'basicWeek', 57 | 58 | editable: true, 59 | firstDay: 1, 60 | height: 600, 61 | droppable: true, 62 | drop: function(date, allDay) { 63 | 64 | var $this = $(this), 65 | eventObject = { 66 | title: $this.text(), 67 | start: date, 68 | allDay: allDay, 69 | className: $this.data('event-class') 70 | }; 71 | 72 | calendar.fullCalendar('renderEvent', eventObject, true); 73 | 74 | $this.remove(); 75 | } 76 | }); 77 | 78 | $("#draggable_events li a").draggable({ 79 | zIndex: 999, 80 | revert: true, 81 | revertDuration: 0 82 | }).on('click', function() 83 | { 84 | return false; 85 | }); 86 | } 87 | else 88 | { 89 | alert("Please include full-calendar script!"); 90 | } 91 | 92 | 93 | $("body").on('submit', '#add_event_form', function(ev) 94 | { 95 | ev.preventDefault(); 96 | 97 | var text = $("#add_event_form input"); 98 | 99 | if(text.val().length == 0) 100 | return false; 101 | 102 | var classes = ['', 'color-green', 'color-blue', 'color-orange', 'color-primary', ''], 103 | _class = classes[ Math.floor(classes.length * Math.random()) ], 104 | $event = $('
  • '); 105 | 106 | $event.find('a').text(text.val()).addClass(_class).attr('data-event-class', _class); 107 | 108 | $event.appendTo($("#draggable_events")); 109 | 110 | $("#draggable_events li a").draggable({ 111 | zIndex: 999, 112 | revert: true, 113 | revertDuration: 0 114 | }).on('click', function() 115 | { 116 | return false; 117 | }); 118 | 119 | fit_calendar_container_height(); 120 | 121 | $event.hide().slideDown('fast'); 122 | text.val(''); 123 | 124 | return false; 125 | }); 126 | } 127 | }); 128 | 129 | })(jQuery, window); 130 | 131 | 132 | function fit_calendar_container_height() 133 | { 134 | if(neonCalendar.isPresent) 135 | { 136 | if(neonCalendar.$sidebar.height() < neonCalendar.$body.height()) 137 | { 138 | neonCalendar.$sidebar.height( neonCalendar.$body.height() ); 139 | } 140 | else 141 | { 142 | var old_height = neonCalendar.$sidebar.height(); 143 | 144 | neonCalendar.$sidebar.height(''); 145 | 146 | if(neonCalendar.$sidebar.height() < neonCalendar.$body.height()) 147 | { 148 | neonCalendar.$sidebar.height(old_height); 149 | } 150 | } 151 | } 152 | } 153 | 154 | function reset_calendar_container_height() 155 | { 156 | if(neonCalendar.isPresent) 157 | { 158 | neonCalendar.$sidebar.height('auto'); 159 | } 160 | } 161 | 162 | function calendar_toggle_checkbox_status(checked) 163 | { 164 | neonCalendar.$body.find('table tbody input[type="checkbox"]' + (checked ? '' : ':checked')).attr('checked', ! checked).click(); 165 | } -------------------------------------------------------------------------------- /static/js/neon-demo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Neon Demo Scripts (Demo Theme Only) 3 | * 4 | * Developed by Arlind Nushi - www.laborator.co 5 | */ 6 | 7 | if(typeof Dropzone != 'undefined') 8 | { 9 | Dropzone.autoDiscover = false; 10 | } 11 | 12 | ;(function($, window, undefined) 13 | { 14 | "use strict"; 15 | 16 | $(document).ready(function() 17 | { 18 | 19 | // Dropzone Example 20 | if(typeof Dropzone != 'undefined') 21 | { 22 | if($("#dropzone_example").length) 23 | { 24 | var dz = new Dropzone("#dropzone_example"), 25 | dze_info = $("#dze_info"), 26 | status = {uploaded: 0, errors: 0}; 27 | 28 | var $f = $(''); 29 | 30 | dz.on("success", function(file) { 31 | 32 | var _$f = $f.clone(); 33 | 34 | dze_info.removeClass('hidden'); 35 | 36 | _$f.addClass('success'); 37 | 38 | _$f.find('.name').html(file.name); 39 | _$f.find('.size').html(parseInt(file.size / 1024, 10) + ' KB'); 40 | _$f.find('.type').html(file.type); 41 | _$f.find('.status').html('Uploaded '); 42 | 43 | dze_info.find('tbody').append( _$f ); 44 | 45 | status.uploaded++; 46 | 47 | dze_info.find('tfoot td').html('' + status.uploaded + ' uploaded ' + status.errors + ' not uploaded'); 48 | 49 | }) 50 | .on('error', function(file) 51 | { 52 | var _$f = $f.clone(); 53 | 54 | dze_info.removeClass('hidden'); 55 | 56 | _$f.addClass('danger'); 57 | 58 | _$f.find('.name').html(file.name); 59 | _$f.find('.size').html(parseInt(file.size / 1024, 10) + ' KB'); 60 | _$f.find('.type').html(file.type); 61 | _$f.find('.status').html('Uploaded '); 62 | 63 | dze_info.find('tbody').append( _$f ); 64 | 65 | status.errors++; 66 | 67 | dze_info.find('tfoot td').html('' + status.uploaded + ' uploaded ' + status.errors + ' not uploaded'); 68 | }); 69 | } 70 | 71 | } 72 | }); 73 | 74 | })(jQuery, window); 75 | -------------------------------------------------------------------------------- /static/js/neon-mail.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Neon Mail Script 3 | * 4 | * Developed by Arlind Nushi - www.laborator.co 5 | */ 6 | 7 | var neonMail = neonMail || {}; 8 | 9 | ;(function($, window, undefined) 10 | { 11 | "use strict"; 12 | 13 | $(document).ready(function() 14 | { 15 | neonMail.$container = $(".mail-env"); 16 | 17 | $.extend(neonMail, { 18 | isPresent: neonMail.$container.length > 0 19 | }); 20 | 21 | // Mail Container Height fit with the document 22 | if(neonMail.isPresent) 23 | { 24 | neonMail.$sidebar = neonMail.$container.find('.mail-sidebar'); 25 | neonMail.$body = neonMail.$container.find('.mail-body'); 26 | 27 | 28 | // Checkboxes 29 | var $cb = neonMail.$body.find('table thead input[type="checkbox"], table tfoot input[type="checkbox"]'); 30 | 31 | $cb.on('click', function() 32 | { 33 | $cb.attr('checked', this.checked).trigger('change'); 34 | 35 | mail_toggle_checkbox_status(this.checked); 36 | }); 37 | 38 | // Highlight 39 | neonMail.$body.find('table tbody input[type="checkbox"]').on('change', function() 40 | { 41 | $(this).closest('tr')[this.checked ? 'addClass' : 'removeClass']('highlight'); 42 | }); 43 | } 44 | }); 45 | 46 | })(jQuery, window); 47 | 48 | 49 | function fit_mail_container_height() 50 | { 51 | if(neonMail.isPresent) 52 | { 53 | if(neonMail.$sidebar.height() < neonMail.$body.height()) 54 | { 55 | neonMail.$sidebar.height( neonMail.$body.height() ); 56 | } 57 | else 58 | { 59 | var old_height = neonMail.$sidebar.height(); 60 | 61 | neonMail.$sidebar.height(''); 62 | 63 | if(neonMail.$sidebar.height() < neonMail.$body.height()) 64 | { 65 | neonMail.$sidebar.height(old_height); 66 | } 67 | } 68 | } 69 | } 70 | 71 | function reset_mail_container_height() 72 | { 73 | if(neonMail.isPresent) 74 | { 75 | neonMail.$sidebar.height('auto'); 76 | } 77 | } 78 | 79 | function mail_toggle_checkbox_status(checked) 80 | { 81 | neonMail.$body.find('table tbody input[type="checkbox"]' + (checked ? '' : ':checked')).attr('checked', ! checked).click(); 82 | } -------------------------------------------------------------------------------- /static/js/overlay.js: -------------------------------------------------------------------------------- 1 | // Utility function that allows modes to be combined. The mode given 2 | // as the base argument takes care of most of the normal mode 3 | // functionality, but a second (typically simple) mode is used, which 4 | // can override the style of text. Both modes get to parse all of the 5 | // text, but when both assign a non-null style to a piece of code, the 6 | // overlay wins, unless the combine argument was true, in which case 7 | // the styles are combined. 8 | 9 | // overlayParser is the old, deprecated name 10 | CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, combine) { 11 | return { 12 | startState: function() { 13 | return { 14 | base: CodeMirror.startState(base), 15 | overlay: CodeMirror.startState(overlay), 16 | basePos: 0, baseCur: null, 17 | overlayPos: 0, overlayCur: null 18 | }; 19 | }, 20 | copyState: function(state) { 21 | return { 22 | base: CodeMirror.copyState(base, state.base), 23 | overlay: CodeMirror.copyState(overlay, state.overlay), 24 | basePos: state.basePos, baseCur: null, 25 | overlayPos: state.overlayPos, overlayCur: null 26 | }; 27 | }, 28 | 29 | token: function(stream, state) { 30 | if (stream.start == state.basePos) { 31 | state.baseCur = base.token(stream, state.base); 32 | state.basePos = stream.pos; 33 | } 34 | if (stream.start == state.overlayPos) { 35 | stream.pos = stream.start; 36 | state.overlayCur = overlay.token(stream, state.overlay); 37 | state.overlayPos = stream.pos; 38 | } 39 | stream.pos = Math.min(state.basePos, state.overlayPos); 40 | if (stream.eol()) state.basePos = state.overlayPos = 0; 41 | 42 | if (state.overlayCur == null) return state.baseCur; 43 | if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur; 44 | else return state.overlayCur; 45 | }, 46 | 47 | indent: base.indent && function(state, textAfter) { 48 | return base.indent(state.base, textAfter); 49 | }, 50 | electricChars: base.electricChars, 51 | 52 | innerMode: function(state) { return {state: state.base, mode: base}; }, 53 | 54 | blankLine: function(state) { 55 | if (base.blankLine) base.blankLine(state.base); 56 | if (overlay.blankLine) overlay.blankLine(state.overlay); 57 | } 58 | }; 59 | }; 60 | -------------------------------------------------------------------------------- /static/js/resizeable.js: -------------------------------------------------------------------------------- 1 | /* 2 | This function will be called in the event when browser breakpoint changes 3 | */ 4 | 5 | var public_vars = public_vars || {}; 6 | 7 | jQuery.extend(public_vars, { 8 | 9 | breakpoints: { 10 | largescreen: [991, -1], 11 | tabletscreen: [768, 990], 12 | devicescreen: [420, 767], 13 | sdevicescreen: [0, 419] 14 | }, 15 | 16 | lastBreakpoint: null 17 | }); 18 | 19 | 20 | /* Main Function that will be called each time when the screen breakpoint changes */ 21 | function resizable(breakpoint) 22 | { 23 | var sb_with_animation; 24 | 25 | 26 | // Large Screen Specific Script 27 | if(is('largescreen')) 28 | { 29 | sb_with_animation = public_vars.$sidebarMenu.find(".sidebar-collapse-icon").hasClass('with-animation') || public_vars.$sidebarMenu.hasClass('with-animation'); 30 | 31 | if(public_vars.$sidebarMenu.data('initial-state') == 'open') 32 | { 33 | show_sidebar_menu(sb_with_animation); 34 | } 35 | else 36 | { 37 | hide_sidebar_menu(sb_with_animation); 38 | } 39 | } 40 | 41 | 42 | // Tablet or larger screen 43 | if(ismdxl()) 44 | { 45 | public_vars.$mainMenu.attr('style', ''); 46 | } 47 | 48 | 49 | // Tablet Screen Specific Script 50 | if(is('tabletscreen')) 51 | { 52 | sb_with_animation = public_vars.$sidebarMenu.find(".sidebar-collapse-icon").hasClass('with-animation') || public_vars.$sidebarMenu.hasClass('with-animation'); 53 | 54 | hide_sidebar_menu(sb_with_animation); 55 | } 56 | 57 | 58 | // Tablet Screen Specific Script 59 | if(isxs()) 60 | { 61 | public_vars.$pageContainer.removeClass('sidebar-collapsed'); 62 | } 63 | 64 | 65 | // Trigger Event 66 | jQuery(window).trigger('neon.resize'); 67 | 68 | 69 | // Fit main content height 70 | fit_main_content_height(); 71 | } 72 | 73 | 74 | 75 | /* Functions */ 76 | 77 | // Get current breakpoint 78 | function get_current_breakpoint() 79 | { 80 | var width = jQuery(window).width(), 81 | breakpoints = public_vars.breakpoints; 82 | 83 | for(var breakpont_label in breakpoints) 84 | { 85 | var bp_arr = breakpoints[breakpont_label], 86 | min = bp_arr[0], 87 | max = bp_arr[1]; 88 | 89 | if(max == -1) 90 | max = width; 91 | 92 | if(min <= width && max >= width) 93 | { 94 | return breakpont_label; 95 | } 96 | } 97 | 98 | return null; 99 | } 100 | 101 | 102 | // Check current screen breakpoint 103 | function is(screen_label) 104 | { 105 | return get_current_breakpoint() == screen_label; 106 | } 107 | 108 | 109 | // Is xs device 110 | function isxs() 111 | { 112 | return is('devicescreen') || is('sdevicescreen'); 113 | } 114 | 115 | // Is md or xl 116 | function ismdxl() 117 | { 118 | return is('tabletscreen') || is('largescreen'); 119 | } 120 | 121 | 122 | // Trigger Resizable Function 123 | function trigger_resizable() 124 | { 125 | if(public_vars.lastBreakpoint != get_current_breakpoint()) 126 | { 127 | public_vars.lastBreakpoint = get_current_breakpoint(); 128 | resizable(public_vars.lastBreakpoint); 129 | } 130 | } -------------------------------------------------------------------------------- /static/js/responsive-tables.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | var switched = false; 3 | var updateTables = function() { 4 | if (($(window).width() < 767) && !switched ){ 5 | switched = true; 6 | $("table.responsive").each(function(i, element) { 7 | splitTable($(element)); 8 | }); 9 | return true; 10 | } 11 | else if (switched && ($(window).width() > 767)) { 12 | switched = false; 13 | $("table.responsive").each(function(i, element) { 14 | unsplitTable($(element)); 15 | }); 16 | } 17 | }; 18 | 19 | $(window).load(updateTables); 20 | $(window).on("redraw",function(){switched=false;updateTables();}); // An event to listen for 21 | $(window).on("resize", updateTables); 22 | 23 | 24 | function splitTable(original) 25 | { 26 | original.wrap("
    "); 27 | 28 | var copy = original.clone(); 29 | copy.find("td:not(:first-child), th:not(:first-child)").css("display", "none"); 30 | copy.removeClass("responsive"); 31 | 32 | original.closest(".table-wrapper").append(copy); 33 | copy.wrap("
    "); 34 | original.wrap("
    "); 35 | 36 | setCellHeights(original, copy); 37 | } 38 | 39 | function unsplitTable(original) { 40 | original.closest(".table-wrapper").find(".pinned").remove(); 41 | original.unwrap(); 42 | original.unwrap(); 43 | } 44 | 45 | function setCellHeights(original, copy) { 46 | var tr = original.find('tr'), 47 | tr_copy = copy.find('tr'), 48 | heights = []; 49 | 50 | tr.each(function (index) { 51 | var self = $(this), 52 | tx = self.find('th, td'); 53 | 54 | tx.each(function () { 55 | var height = $(this).outerHeight(true); 56 | heights[index] = heights[index] || 0; 57 | if (height > heights[index]) heights[index] = height; 58 | }); 59 | 60 | }); 61 | 62 | tr_copy.each(function (index) { 63 | $(this).height(heights[index]); 64 | }); 65 | } 66 | 67 | }); 68 | -------------------------------------------------------------------------------- /static/js/script.js: -------------------------------------------------------------------------------- 1 | // Parallax Code 2 | var scene = document.getElementById('scene'); 3 | var parallax = new Parallax(scene); -------------------------------------------------------------------------------- /static/js/script1.js: -------------------------------------------------------------------------------- 1 | var c = document.getElementById("canvas-club"); 2 | var ctx = c.getContext("2d"); 3 | var w = c.width = window.innerWidth; 4 | var h = c.height = window.innerHeight; 5 | var clearColor = 'rgba(0, 0, 0, .1)'; 6 | var max = 30; 7 | var drops = []; 8 | 9 | function random(min, max) { 10 | return Math.random() * (max - min) + min; 11 | } 12 | 13 | function O() {} 14 | 15 | O.prototype = { 16 | init: function() { 17 | this.x = random(0, w); 18 | this.y = 0; 19 | this.color = 'hsl(180, 100%, 50%)'; 20 | this.w = 2; 21 | this.h = 1; 22 | this.vy = random(4, 5); 23 | this.vw = 3; 24 | this.vh = 1; 25 | this.size = 2; 26 | this.hit = random(h * .8, h * .9); 27 | this.a = 1; 28 | this.va = .96; 29 | }, 30 | draw: function() { 31 | if (this.y > this.hit) { 32 | ctx.beginPath(); 33 | ctx.moveTo(this.x, this.y - this.h / 2); 34 | 35 | ctx.bezierCurveTo( 36 | this.x + this.w / 2, this.y - this.h / 2, 37 | this.x + this.w / 2, this.y + this.h / 2, 38 | this.x, this.y + this.h / 2); 39 | 40 | ctx.bezierCurveTo( 41 | this.x - this.w / 2, this.y + this.h / 2, 42 | this.x - this.w / 2, this.y - this.h / 2, 43 | this.x, this.y - this.h / 2); 44 | 45 | ctx.strokeStyle = 'hsla(180, 100%, 50%, '+this.a+')'; 46 | ctx.stroke(); 47 | ctx.closePath(); 48 | 49 | } else { 50 | ctx.fillStyle = this.color; 51 | ctx.fillRect(this.x, this.y, this.size, this.size * 5); 52 | } 53 | this.update(); 54 | }, 55 | update: function() { 56 | if(this.y < this.hit){ 57 | this.y += this.vy; 58 | } else { 59 | if(this.a > .03){ 60 | this.w += this.vw; 61 | this.h += this.vh; 62 | if(this.w > 100){ 63 | this.a *= this.va; 64 | this.vw *= .98; 65 | this.vh *= .98; 66 | } 67 | } else { 68 | this.init(); 69 | } 70 | } 71 | 72 | } 73 | } 74 | 75 | function resize(){ 76 | w = c.width = window.innerWidth; 77 | h = c.height = window.innerHeight; 78 | } 79 | 80 | function setup(){ 81 | for(var i = 0; i < max; i++){ 82 | (function(j){ 83 | setTimeout(function(){ 84 | var o = new O(); 85 | o.init(); 86 | drops.push(o); 87 | }, j * 200) 88 | }(i)); 89 | } 90 | } 91 | 92 | 93 | function anim() { 94 | ctx.fillStyle = clearColor; 95 | ctx.fillRect(0,0,w,h); 96 | for(var i in drops){ 97 | drops[i].draw(); 98 | } 99 | requestAnimationFrame(anim); 100 | } 101 | 102 | 103 | window.addEventListener("resize", resize); 104 | 105 | setup(); 106 | anim(); -------------------------------------------------------------------------------- /static/picture/200x150.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/200x150.jpg -------------------------------------------------------------------------------- /static/picture/320x160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/320x160.jpg -------------------------------------------------------------------------------- /static/picture/album-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/album-image.jpg -------------------------------------------------------------------------------- /static/picture/album-thumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/album-thumb.jpg -------------------------------------------------------------------------------- /static/picture/attach-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/attach-1.png -------------------------------------------------------------------------------- /static/picture/attach-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/attach-2.png -------------------------------------------------------------------------------- /static/picture/burjkhalifa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/burjkhalifa.jpg -------------------------------------------------------------------------------- /static/picture/crop-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/crop-1.jpg -------------------------------------------------------------------------------- /static/picture/crop-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/crop-2.jpg -------------------------------------------------------------------------------- /static/picture/crop-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/crop-3.jpg -------------------------------------------------------------------------------- /static/picture/crop-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/crop-4.jpg -------------------------------------------------------------------------------- /static/picture/flag-al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/flag-al.png -------------------------------------------------------------------------------- /static/picture/flag-de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/flag-de.png -------------------------------------------------------------------------------- /static/picture/flag-es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/flag-es.png -------------------------------------------------------------------------------- /static/picture/flag-fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/flag-fr.png -------------------------------------------------------------------------------- /static/picture/flag-uk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/flag-uk.png -------------------------------------------------------------------------------- /static/picture/highlights-1-skins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-1-skins.png -------------------------------------------------------------------------------- /static/picture/highlights-2-0-bootstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-0-bootstrap.png -------------------------------------------------------------------------------- /static/picture/highlights-2-1-icheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-1-icheck.png -------------------------------------------------------------------------------- /static/picture/highlights-2-10-rtl-support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-10-rtl-support.png -------------------------------------------------------------------------------- /static/picture/highlights-2-2-new-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-2-new-editor.png -------------------------------------------------------------------------------- /static/picture/highlights-2-3-language-switcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-3-language-switcher.png -------------------------------------------------------------------------------- /static/picture/highlights-2-4-register-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-4-register-form.png -------------------------------------------------------------------------------- /static/picture/highlights-2-5-right-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-5-right-menu.png -------------------------------------------------------------------------------- /static/picture/highlights-2-6-login-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-6-login-form.png -------------------------------------------------------------------------------- /static/picture/highlights-2-7-left-chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-7-left-chat.png -------------------------------------------------------------------------------- /static/picture/highlights-2-8-spinners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-8-spinners.png -------------------------------------------------------------------------------- /static/picture/highlights-2-9-search-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-9-search-results.png -------------------------------------------------------------------------------- /static/picture/highlights-2-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-2-profile.png -------------------------------------------------------------------------------- /static/picture/highlights-3-1-comments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-1-comments.png -------------------------------------------------------------------------------- /static/picture/highlights-3-2-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-2-members.png -------------------------------------------------------------------------------- /static/picture/highlights-3-2-newpost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-2-newpost.png -------------------------------------------------------------------------------- /static/picture/highlights-3-3-nestable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-3-nestable.png -------------------------------------------------------------------------------- /static/picture/highlights-3-4-page-loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-4-page-loading.png -------------------------------------------------------------------------------- /static/picture/highlights-3-5-settings-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-5-settings-page.png -------------------------------------------------------------------------------- /static/picture/highlights-3-6-treeview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-6-treeview.png -------------------------------------------------------------------------------- /static/picture/highlights-3-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-dashboard.png -------------------------------------------------------------------------------- /static/picture/highlights-3-front-end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-front-end.png -------------------------------------------------------------------------------- /static/picture/highlights-3-notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-notes.png -------------------------------------------------------------------------------- /static/picture/highlights-3-photoshop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-3-photoshop.png -------------------------------------------------------------------------------- /static/picture/highlights-4-1-boxed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-4-1-boxed.png -------------------------------------------------------------------------------- /static/picture/highlights-4-datatables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-4-datatables.png -------------------------------------------------------------------------------- /static/picture/highlights-5-profile_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-5-profile_left.png -------------------------------------------------------------------------------- /static/picture/highlights-6-crop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-6-crop.png -------------------------------------------------------------------------------- /static/picture/highlights-7-gallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-7-gallery.png -------------------------------------------------------------------------------- /static/picture/highlights-8-timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/highlights-8-timeline.png -------------------------------------------------------------------------------- /static/picture/laborator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/laborator.png -------------------------------------------------------------------------------- /static/picture/lockscreen-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/lockscreen-user.png -------------------------------------------------------------------------------- /static/picture/logo-light@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/logo-light@2x.png -------------------------------------------------------------------------------- /static/picture/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/logo@2x.png -------------------------------------------------------------------------------- /static/picture/member.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/member.jpg -------------------------------------------------------------------------------- /static/picture/profile-picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/profile-picture.png -------------------------------------------------------------------------------- /static/picture/sample-al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/sample-al.png -------------------------------------------------------------------------------- /static/picture/sample-au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/sample-au.png -------------------------------------------------------------------------------- /static/picture/sample-crop-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/sample-crop-2.png -------------------------------------------------------------------------------- /static/picture/sample-crop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/sample-crop.jpg -------------------------------------------------------------------------------- /static/picture/sample-it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/sample-it.png -------------------------------------------------------------------------------- /static/picture/thumb-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/thumb-1.png -------------------------------------------------------------------------------- /static/picture/thumb-1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/thumb-1@2x.png -------------------------------------------------------------------------------- /static/picture/thumb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/thumb-2.png -------------------------------------------------------------------------------- /static/picture/thumb-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/thumb-3.png -------------------------------------------------------------------------------- /static/picture/thumb-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/thumb-4.png -------------------------------------------------------------------------------- /static/picture/timeline-image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/timeline-image-1.png -------------------------------------------------------------------------------- /static/picture/timeline-image-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/timeline-image-2.png -------------------------------------------------------------------------------- /static/picture/timeline-image-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/timeline-image-3.png -------------------------------------------------------------------------------- /static/picture/timeline-image-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/timeline-image-4.png -------------------------------------------------------------------------------- /static/picture/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/picture/title.png -------------------------------------------------------------------------------- /static/tag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/tag.jpg -------------------------------------------------------------------------------- /static/timesalary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/timesalary.png -------------------------------------------------------------------------------- /static/title.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/title.jpg -------------------------------------------------------------------------------- /static/yuce.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YPYT1/Boss_direct_hire/6b024817b1f4224b55e16e39954245ef6a934c50/static/yuce.jpg -------------------------------------------------------------------------------- /templates/error.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 404 Page 6 | 7 | 8 | 9 | 10 | 11 |
    12 | 13 |
    14 | 15 |
    16 | 17 | 18 |
    19 | 20 |
    21 |
    22 | 23 | 24 | 25 |
    26 |
    27 | 28 |
    29 |
    30 | 31 | 32 | 33 |
    34 |
    35 | 36 |
    37 |
    38 | 39 | 40 | 41 |
    42 |
    43 | 44 |

    Error

    45 |

    Error

    46 | 47 |
    48 | 49 |
    50 |
    51 |

    {{ errorMsg }}

    52 | 53 |
    54 |
    55 | 56 |
    57 |
    58 | 59 | 60 | 61 | 62 | 68 | 69 | -------------------------------------------------------------------------------- /templates/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 登录 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 38 | 39 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /templates/register.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 注册 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /word_cloud_picture.py: -------------------------------------------------------------------------------- 1 | import jieba # 分词 2 | from matplotlib import pylab as plt # 绘图,数据可视化 3 | from wordcloud import WordCloud # 词云 4 | from PIL import Image # 图片处理 5 | import numpy as np # 矩阵运算 6 | from pymysql import * 7 | import json 8 | # wordCloud 9 | 10 | # 所有词 11 | def get_img(field,targetImgSrc,resImgSrc): 12 | con = connect(host='localhost', user='root', password='root', database='boss', port=3306, charset='utf8mb4') 13 | cursor = con.cursor() 14 | sql = f"select {field} from jobinfo" 15 | cursor.execute(sql) 16 | data = cursor.fetchall() 17 | text = '' 18 | for i,item in enumerate(data): 19 | text += item[0] 20 | cursor.close() 21 | con.close() 22 | 23 | # 分词 24 | cut = jieba.cut(text) 25 | string = ' '.join(cut) 26 | print(string) 27 | 28 | # 图片 29 | img = Image.open(targetImgSrc) # 打开遮罩图片 30 | img_arr = np.array(img) # 将图片转化为列表 31 | wc = WordCloud( 32 | background_color='white', 33 | mask=img_arr, 34 | font_path='STHUPO.TTF' 35 | ) 36 | wc.generate_from_text(string) 37 | 38 | # 绘制图片 39 | fig = plt.figure(1) 40 | plt.imshow(wc) 41 | plt.axis('off') # 不显示坐标轴 42 | 43 | # 显示生成的词语图片 44 | # plt.show() 45 | 46 | # 输入词语图片到文件 47 | plt.savefig(resImgSrc, dpi=500) 48 | 49 | def get_addressCompanyTags_img(targetImgSrc,resImgSrc,addrress): 50 | con = connect(host='localhost', user='root', password='root', database='boss', port=3306, charset='utf8mb4') 51 | cursor = con.cursor() 52 | sql = f"select companyTags from jobinfo where address = {addrress}" 53 | cursor.execute(sql) 54 | data = cursor.fetchall() 55 | text = '' 56 | for i, item in enumerate(data): 57 | tags = json.loads(item[0]) 58 | for j in tags: 59 | text += j 60 | cursor.close() 61 | con.close() 62 | 63 | # 分词 64 | cut = jieba.cut(text) 65 | string = ' '.join(cut) 66 | print(string) 67 | 68 | # 图片 69 | img = Image.open(targetImgSrc) # 打开遮罩图片 70 | img_arr = np.array(img) # 将图片转化为列表 71 | wc = WordCloud( 72 | background_color='white', 73 | mask=img_arr, 74 | font_path='STHUPO.TTF' 75 | ) 76 | wc.generate_from_text(string) 77 | 78 | # 绘制图片 79 | fig = plt.figure(1) 80 | plt.imshow(wc) 81 | plt.axis('off') # 不显示坐标轴 82 | 83 | # 显示生成的词语图片 84 | # plt.show() 85 | 86 | # 输入词语图片到文件 87 | plt.savefig(resImgSrc, dpi=500) 88 | 89 | # get_img('companyTitle',r'.\static\2.jpg',r'.\static\companyTitle.jpg') 90 | # get_img('summary',r'.\static\2.jpg',r'.\static\summary_cloud.jpg') 91 | # get_img('casts',r'.\static\3.jpg',r'.\static\casts_cloud.jpg') 92 | 93 | --------------------------------------------------------------------------------