From aeffbd5ae9624aed20c48d4bf914a7b8dd9dedd0 Mon Sep 17 00:00:00 2001 From: Jairo Lopez Date: Wed, 24 Apr 2019 21:57:28 -0400 Subject: [PATCH 1/2] Issue 1,2,4: login, register, postgres, docker-compose --- .../solutions/Jlopezjlx/src/Dockerfile | 10 + .../solutions/Jlopezjlx/src/LICENSE | 201 ++++++++++++++++++ .../solutions/Jlopezjlx/src/README.md | 50 +++++ .../Jlopezjlx/src/docker-compose.yml | 27 +++ .../solutions/Jlopezjlx/src/docs/README.md | 0 .../solutions/Jlopezjlx/src/hub/bin/activate | 78 +++++++ .../Jlopezjlx/src/hub/bin/activate.csh | 42 ++++ .../Jlopezjlx/src/hub/bin/activate.fish | 101 +++++++++ .../Jlopezjlx/src/hub/bin/activate.ps1 | 60 ++++++ .../Jlopezjlx/src/hub/bin/activate.xsh | 39 ++++ .../Jlopezjlx/src/hub/bin/activate_this.py | 46 ++++ .../Jlopezjlx/src/hub/bin/django-admin | 10 + .../Jlopezjlx/src/hub/bin/django-admin.py | 5 + .../Jlopezjlx/src/hub/bin/easy_install | 10 + .../Jlopezjlx/src/hub/bin/easy_install-3.7 | 10 + .../solutions/Jlopezjlx/src/hub/bin/epylint | 10 + .../solutions/Jlopezjlx/src/hub/bin/isort | 10 + .../solutions/Jlopezjlx/src/hub/bin/pip | 10 + .../solutions/Jlopezjlx/src/hub/bin/pip3 | 10 + .../solutions/Jlopezjlx/src/hub/bin/pip3.7 | 10 + .../solutions/Jlopezjlx/src/hub/bin/pylint | 10 + .../solutions/Jlopezjlx/src/hub/bin/pyreverse | 10 + .../solutions/Jlopezjlx/src/hub/bin/python | 1 + .../Jlopezjlx/src/hub/bin/python-config | 78 +++++++ .../solutions/Jlopezjlx/src/hub/bin/python3 | Bin 0 -> 15432 bytes .../solutions/Jlopezjlx/src/hub/bin/python3.7 | 1 + .../solutions/Jlopezjlx/src/hub/bin/symilar | 10 + .../solutions/Jlopezjlx/src/hub/bin/wheel | 10 + .../Jlopezjlx/src/hub/include/python3.7m | 1 + .../solutions/Jlopezjlx/src/hub/lib64 | 1 + .../solutions/Jlopezjlx/src/requirements.txt | 11 + .../Jlopezjlx/src/src/account/__init__.py | 0 .../Jlopezjlx/src/src/account/admin.py | 13 ++ .../Jlopezjlx/src/src/account/apps.py | 5 + .../Jlopezjlx/src/src/account/forms.py | 14 ++ .../src/account/migrations/0001_initial.py | 44 ++++ .../src/src/account/migrations/__init__.py | 0 .../Jlopezjlx/src/src/account/models.py | 14 ++ .../src/account/templates/account/index.html | 3 + .../templates/account/login/login.html | 25 +++ .../templates/account/register/register.html | 11 + .../src/account/templates/devhub/index.html | 30 +++ .../Jlopezjlx/src/src/account/tests.py | 3 + .../Jlopezjlx/src/src/account/urls.py | 10 + .../Jlopezjlx/src/src/account/views.py | 48 +++++ .../Jlopezjlx/src/src/devhub/__init__.py | 0 .../Jlopezjlx/src/src/devhub/settings.py | 128 +++++++++++ .../Jlopezjlx/src/src/devhub/urls.py | 26 +++ .../Jlopezjlx/src/src/devhub/views.py | 5 + .../Jlopezjlx/src/src/devhub/wsgi.py | 16 ++ .../solutions/Jlopezjlx/src/src/manage.py | 15 ++ .../Jlopezjlx/src/src/static/css.css | 79 +++++++ .../Jlopezjlx/src/src/static/index.css | 15 ++ .../Jlopezjlx/src/src/static/register.css | 45 ++++ .../solutions/Jlopezjlx/src/tests/README.md | 0 55 files changed, 1421 insertions(+) create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/Dockerfile create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/LICENSE create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/README.md create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/docker-compose.yml create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/docs/README.md create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse create mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 create mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3.7 create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/symilar create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/wheel create mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/include/python3.7m create mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/lib64 create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/requirements.txt create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/__init__.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/admin.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/apps.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/forms.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/migrations/0001_initial.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/migrations/__init__.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/models.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/index.html create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/login/login.html create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/register/register.html create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/devhub/index.html create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/tests.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/urls.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/account/views.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/__init__.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/settings.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/urls.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/views.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/wsgi.py create mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/src/manage.py create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/static/css.css create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/static/index.css create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/src/static/register.css create mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/tests/README.md diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/Dockerfile b/assignments/assignment2/solutions/Jlopezjlx/src/Dockerfile new file mode 100644 index 0000000..7a08710 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3 + +WORKDIR /usr/src/app + +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt +COPY . . +EXPOSE 8000 +CMD [ "python", "./src/manage.py", "runserver", "0.0.0.0:8000"] + diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/LICENSE b/assignments/assignment2/solutions/Jlopezjlx/src/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/README.md b/assignments/assignment2/solutions/Jlopezjlx/src/README.md new file mode 100644 index 0000000..da9a6e0 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/README.md @@ -0,0 +1,50 @@ +# DevHub + +Hub for DEVelopment related stuff: news, articles, source codes, ideas, etc. + +## Related [YouTube](http://youtube.com/CoderVlogger "CoderVlogger's YouTube channel") videos + +Please check out the following videos to learn more about DevHub: + +1. [Introduction & Custom User Model](https://youtu.be/cg0KNJZqInY) +2. [Setup URLs, templates and HTML views for Account application](https://youtu.be/yNlRzTfZi8Q) + +# Setup + +## Using `virtualenv` + +1. Make sure you have [Python 3] and [virtualenv] installed +2. Clone this repository: `git clone https://github.com/CoderVlogger/devhub.git` +3. Move into the project folder: `cd devhub` +4. Create a new virtualenv: `virtualenv venv -p python3` +5. Activate the virtualenv: `source ./venv/bin/activate` +6. Install dependencies: `pip install -r requirements.txt` + +## Using `Docker` + +1. Make sure you have Docker installed +2. Clone this repository: `git clone https://github.com/CoderVlogger/devhub.git` +3. Move into the project folder: `cd devhub` +4. Build the Image using Dockerfile: `docker build -t [Image-Name] .` +5. Run a container: `docker run -p 8000:8000 -it --rm --name [Container-Name] [Image-Name]` + +# Project Structure + +## Repository structure + +1. `src` - source code +2. `docs` - auto generated Sphinx documentation (to be added) +3. `tests` - high level tests (e2e, load, etc. - to be added) + +## Django applications + +1. Account + 1. User side register, login and logout + 2. Profile and account settings +2. Board (to be added) + 1. Share public posts + 2. Post rating system + 3. Post comments + +[Python 3]: https://www.python.org/downloads/ +[virtualenv]: https://virtualenv.pypa.io/en/stable/ diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/docker-compose.yml b/assignments/assignment2/solutions/Jlopezjlx/src/docker-compose.yml new file mode 100644 index 0000000..8645baf --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3' + + +services: + db_devhub: + container_name: db_devhub + image: postgres:9.6.12 + environment: + - "POSTGRES_PASSWORD:12345" + ports: + - 8085:8080 + - 5432:5432 + networks: + - devhub + web-app: + container_name: devhub_run_app + build: . + ports: + - 8000:8000 + depends_on: + - db_devhub + networks: + - devhub + + +networks: + devhub: \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/docs/README.md b/assignments/assignment2/solutions/Jlopezjlx/src/docs/README.md new file mode 100644 index 0000000..e69de29 diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate new file mode 100644 index 0000000..e1bead6 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate @@ -0,0 +1,78 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + unset -f pydoc >/dev/null 2>&1 + + # reset old environment variables + # ! [ -z ${VAR+_} ] returns true if VAR is declared at all + if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then + PATH="$_OLD_VIRTUAL_PATH" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then + PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null + fi + + if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then + PS1="$_OLD_VIRTUAL_PS1" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/jlopez/Desktop/python/devhub/devhub/hub" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +if ! [ -z "${PYTHONHOME+_}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1-}" + if [ "x" != x ] ; then + PS1="${PS1-}" + else + PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}" + fi + export PS1 +fi + +# Make sure to unalias pydoc if it's already there +alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true + +pydoc () { + python -m pydoc "$@" +} + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then + hash -r 2>/dev/null +fi diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh new file mode 100644 index 0000000..f94b9e0 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh @@ -0,0 +1,42 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . + +set newline='\ +' + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/jlopez/Desktop/python/devhub/devhub/hub" + +set _OLD_VIRTUAL_PATH="$PATH:q" +setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q" + + + +if ("" != "") then + set env_name = "" +else + set env_name = "$VIRTUAL_ENV:t:q" +endif + +# Could be in a non-interactive environment, +# in which case, $prompt is undefined and we wouldn't +# care about the prompt anyway. +if ( $?prompt ) then + set _OLD_VIRTUAL_PROMPT="$prompt:q" +if ( "$prompt:q" =~ *"$newline:q"* ) then + : +else + set prompt = "[$env_name:q] $prompt:q" +endif +endif + +unset env_name + +alias pydoc python -m pydoc + +rehash diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish new file mode 100644 index 0000000..4f9f920 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish @@ -0,0 +1,101 @@ +# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. +# Do not run it directly. + +function _bashify_path -d "Converts a fish path to something bash can recognize" + set fishy_path $argv + set bashy_path $fishy_path[1] + for path_part in $fishy_path[2..-1] + set bashy_path "$bashy_path:$path_part" + end + echo $bashy_path +end + +function _fishify_path -d "Converts a bash path to something fish can recognize" + echo $argv | tr ':' '\n' +end + +function deactivate -d 'Exit virtualenv mode and return to the normal environment.' + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling + if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 + set -gx PATH (_fishify_path $_OLD_VIRTUAL_PATH) + else + set -gx PATH $_OLD_VIRTUAL_PATH + end + set -e _OLD_VIRTUAL_PATH + end + + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. + set -l fish_function_path + + # Erase virtualenv's `fish_prompt` and restore the original. + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + end + + set -e VIRTUAL_ENV + + if test "$argv[1]" != 'nondestructive' + # Self-destruct! + functions -e pydoc + functions -e deactivate + functions -e _bashify_path + functions -e _fishify_path + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/jlopez/Desktop/python/devhub/devhub/hub" + +# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling +if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 + set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH) +else + set -gx _OLD_VIRTUAL_PATH $PATH +end +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset `$PYTHONHOME` if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +function pydoc + python -m pydoc $argv +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # Copy the current `fish_prompt` function as `_old_fish_prompt`. + functions -c fish_prompt _old_fish_prompt + + function fish_prompt + # Save the current $status, for fish_prompts that display it. + set -l old_status $status + + # Prompt override provided? + # If not, just prepend the environment name. + if test -n "" + printf '%s%s' "" (set_color normal) + else + printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") + end + + # Restore the original $status + echo "exit $old_status" | source + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 new file mode 100644 index 0000000..6d8ae2a --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 @@ -0,0 +1,60 @@ +# This file must be dot sourced from PoSh; you cannot run it directly. Do this: . ./activate.ps1 + +$script:THIS_PATH = $myinvocation.mycommand.path +$script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent + +function global:deactivate([switch] $NonDestructive) +{ + if (test-path variable:_OLD_VIRTUAL_PATH) + { + $env:PATH = $variable:_OLD_VIRTUAL_PATH + remove-variable "_OLD_VIRTUAL_PATH" -scope global + } + + if (test-path function:_old_virtual_prompt) + { + $function:prompt = $function:_old_virtual_prompt + remove-item function:\_old_virtual_prompt + } + + if ($env:VIRTUAL_ENV) + { + $old_env = split-path $env:VIRTUAL_ENV -leaf + remove-item env:VIRTUAL_ENV -erroraction silentlycontinue + } + + if (!$NonDestructive) + { + # Self destruct! + remove-item function:deactivate + remove-item function:pydoc + } +} + +function global:pydoc +{ + python -m pydoc $args +} + +# unset irrelevant variables +deactivate -nondestructive + +$VIRTUAL_ENV = $BASE_DIR +$env:VIRTUAL_ENV = $VIRTUAL_ENV + +$global:_OLD_VIRTUAL_PATH = $env:PATH +$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH +if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) +{ + function global:_old_virtual_prompt + { + "" + } + $function:_old_virtual_prompt = $function:prompt + function global:prompt + { + # Add a prefix to the current prompt, but don't discard it. + write-host "($( split-path $env:VIRTUAL_ENV -leaf )) " -nonewline + & $function:_old_virtual_prompt + } +} diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh new file mode 100644 index 0000000..97aab26 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh @@ -0,0 +1,39 @@ +"""Xonsh activate script for virtualenv""" +from xonsh.tools import get_sep as _get_sep + +def _deactivate(args): + if "pydoc" in aliases: + del aliases["pydoc"] + + if ${...}.get("_OLD_VIRTUAL_PATH", ""): + $PATH = $_OLD_VIRTUAL_PATH + del $_OLD_VIRTUAL_PATH + + if ${...}.get("_OLD_VIRTUAL_PYTHONHOME", ""): + $PYTHONHOME = $_OLD_VIRTUAL_PYTHONHOME + del $_OLD_VIRTUAL_PYTHONHOME + + if "VIRTUAL_ENV" in ${...}: + del $VIRTUAL_ENV + + if "nondestructive" not in args: + # Self destruct! + del aliases["deactivate"] + + +# unset irrelevant variables +_deactivate(["nondestructive"]) +aliases["deactivate"] = _deactivate + +$VIRTUAL_ENV = r"/home/jlopez/Desktop/python/devhub/devhub/hub" + +$_OLD_VIRTUAL_PATH = $PATH +$PATH = $PATH[:] +$PATH.add($VIRTUAL_ENV + _get_sep() + "bin", front=True, replace=True) + +if ${...}.get("PYTHONHOME", ""): + # unset PYTHONHOME if set + $_OLD_VIRTUAL_PYTHONHOME = $PYTHONHOME + del $PYTHONHOME + +aliases["pydoc"] = ["python", "-m", "pydoc"] diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py new file mode 100644 index 0000000..59b5d72 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py @@ -0,0 +1,46 @@ +"""Activate virtualenv for current interpreter: + +Use exec(open(this_file).read(), {'__file__': this_file}). + +This can be used when you must use an existing Python interpreter, not the virtualenv bin/python. +""" +import os +import site +import sys + +try: + __file__ +except NameError: + raise AssertionError("You must use exec(open(this_file).read(), {'__file__': this_file}))") + +# prepend bin to PATH (this file is inside the bin directory) +bin_dir = os.path.dirname(os.path.abspath(__file__)) +os.environ["PATH"] = os.pathsep.join([bin_dir] + os.environ.get("PATH", "").split(os.pathsep)) + +base = os.path.dirname(bin_dir) + +# virtual env is right above bin directory +os.environ["VIRTUAL_ENV"] = base + +# add the virtual environments site-package to the host python import mechanism +IS_PYPY = hasattr(sys, "pypy_version_info") +IS_JYTHON = sys.platform.startswith("java") +if IS_JYTHON: + site_packages = os.path.join(base, "Lib", "site-packages") +elif IS_PYPY: + site_packages = os.path.join(base, "site-packages") +else: + IS_WIN = sys.platform == "win32" + if IS_WIN: + site_packages = os.path.join(base, "Lib", "site-packages") + else: + site_packages = os.path.join(base, "lib", "python{}".format(sys.version[:3]), "site-packages") + +prev = set(sys.path) +site.addsitedir(site_packages) +sys.real_prefix = sys.prefix +sys.prefix = base + +# Move the added items to the front of the path, in place +new = list(sys.path) +sys.path[:] = [i for i in new if i not in prev] + [i for i in new if i in prev] diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin new file mode 100755 index 0000000..c0752f4 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from django.core.management import execute_from_command_line + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(execute_from_command_line()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py new file mode 100755 index 0000000..416fc1d --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py @@ -0,0 +1,5 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +from django.core import management + +if __name__ == "__main__": + management.execute_from_command_line() diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install new file mode 100755 index 0000000..16e47ef --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 new file mode 100755 index 0000000..16e47ef --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from setuptools.command.easy_install import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint new file mode 100755 index 0000000..595fbce --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pylint import run_epylint + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(run_epylint()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort new file mode 100755 index 0000000..410a7e1 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from isort.main import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip new file mode 100755 index 0000000..1ee3c57 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 new file mode 100755 index 0000000..1ee3c57 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 new file mode 100755 index 0000000..1ee3c57 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pip._internal import main + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint new file mode 100755 index 0000000..0218865 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pylint import run_pylint + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(run_pylint()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse new file mode 100755 index 0000000..66c3b72 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse @@ -0,0 +1,10 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys + +from pylint import run_pyreverse + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) + sys.exit(run_pyreverse()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config new file mode 100755 index 0000000..95b4472 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config @@ -0,0 +1,78 @@ +#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python + +import sys +import getopt +import sysconfig + +valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', + 'ldflags', 'help'] + +if sys.version_info >= (3, 2): + valid_opts.insert(-1, 'extension-suffix') + valid_opts.append('abiflags') +if sys.version_info >= (3, 3): + valid_opts.append('configdir') + + +def exit_with_usage(code=1): + sys.stderr.write("Usage: {0} [{1}]\n".format( + sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) + sys.exit(code) + +try: + opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) +except getopt.error: + exit_with_usage() + +if not opts: + exit_with_usage() + +pyver = sysconfig.get_config_var('VERSION') +getvar = sysconfig.get_config_var + +opt_flags = [flag for (flag, val) in opts] + +if '--help' in opt_flags: + exit_with_usage(code=0) + +for opt in opt_flags: + if opt == '--prefix': + print(sysconfig.get_config_var('prefix')) + + elif opt == '--exec-prefix': + print(sysconfig.get_config_var('exec_prefix')) + + elif opt in ('--includes', '--cflags'): + flags = ['-I' + sysconfig.get_path('include'), + '-I' + sysconfig.get_path('platinclude')] + if opt == '--cflags': + flags.extend(getvar('CFLAGS').split()) + print(' '.join(flags)) + + elif opt in ('--libs', '--ldflags'): + abiflags = getattr(sys, 'abiflags', '') + libs = ['-lpython' + pyver + abiflags] + libs += getvar('LIBS').split() + libs += getvar('SYSLIBS').split() + # add the prefix/lib/pythonX.Y/config dir, but only if there is no + # shared library in prefix/lib/. + if opt == '--ldflags': + if not getvar('Py_ENABLE_SHARED'): + libs.insert(0, '-L' + getvar('LIBPL')) + if not getvar('PYTHONFRAMEWORK'): + libs.extend(getvar('LINKFORSHARED').split()) + print(' '.join(libs)) + + elif opt == '--extension-suffix': + ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') + if ext_suffix is None: + ext_suffix = sysconfig.get_config_var('SO') + print(ext_suffix) + + elif opt == '--abiflags': + if not getattr(sys, 'abiflags', None): + exit_with_usage() + print(sys.abiflags) + + elif opt == '--configdir': + print(sysconfig.get_config_var('LIBPL')) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 new file mode 100755 index 0000000000000000000000000000000000000000..1d9cfb75ed30b94feb52f51ec7d9ee9e6f6de793 GIT binary patch literal 15432 zcmeHOZ)_CT5r1d<@Dc2@AwUgA^?^Vlre4kl+;bwzox%3HHNgS9I0|HazFYe)oX^hP zUSda)pmJLElDI)>r9}OJqN=L;AySe0B~nw#2#Dy1sOAGrTBnr-p~4LjuG%1yG~Uj< zojI?UGeu1*^}~*JJ8%B{=DnTw_Mdn5WLsBziN_f>=MM$iI z?IuwxR)Ab4b(TGBF|b;cC|SyVq%Q@IxL=ap$v2T7a~>gb#4Sf^xn*H4Xg?6=MH9(R zeuX+<&h|oo0R#gD&GamdlHC9Z-73&Qx-s zdH2p#ydjlL=f)bwLd^}$yOr#S(j@mA%X4d?xzk2Jt zm)|oleDu3B`HPSL_-AOtrGqhWzkc}GW^X`$VLR#`fFH(hZM$;wsg?Wx@SAI|K40BPyOK3}=^>KSldmezwMP{jHR(5)$=ZvtJQi2g0m z74wfQm28=$-kTY~T_^cPOjz-6g#7KIV z^37pfKaEOIXq`O=wYZ+qhmu)C&-5JJpBhQ)J<)-bE;MaucqFZ5jcCTuG|RQ9BStn7 z89f@uutDr8p0ZXbG;>B$3XQ0j9XDeuh7QfpNo*{t4JOmkRPs6O6HV0Ta5R|~TKBlt zn@)}$l!9fBWpfBg3QdnkjVPdyStuCiA!x;uX)Tx4;~WtofG_}(M&&>@Oa2{Qovr(| zCZ$QCGkpnVzC?JI`I`g}O1sEyOs>QuZUf8{5})t*{1m2n=%@1;>tS(7N;vc^zrWA2 z<1tC0rDE2m=aHh}hE0#hG}F9IUswxZykpa2A551>kH8xEXLW@c*8He^h<_Gj-yoPkqVzN4VEkzdvP^nA7US1>bo&baT(Epf1^YJOflcVnOGc}KmxV624zUJBqdX9uh54lLqve5dw)szAuxj$U>6}$$t@n zJ>GV6hY-E$WCQXeT@PKyoZmRPV4CW=FG`KN#u>tQimkBii}F#ROx2I8(^wJQijSlrFg$a5La$z|DZ00XG9~2HXs|8E`Y; zX28vWn*qvz2j1CuYD*spf{gD)HqD!69C#P-mw_Jx-i7ktP4nl#-v)jYIKEFs@;rA~ zc*d$dwH4*Q)9_S}dVFW^0~|ba!wctf`HE;OH1Qqs*;}TGeF=YcyT9h!RjZ!$of7*t zK2pDH>lRca{uun;0zdnE8hB(E2K?TDxH@pr?yr8Oq|IORqtZ5iV6v>uzx`#e>JR>4 zh3XGYly~^UX@4l<4@UgkTm6Ane@&~uy4CNK@2lPh_$7#AkB=c;ax>s&z|DZ00XG9~ z2HXs|8E`Y;X28wBf0F^OcXQUaaSfZ3KS7P>3d}ahEd_F{?GHt*7 zPkqOsqoTeI6oqFcIe%PdUyx9}kxQW=zTAF=>r^ z1=ek^1}zHvmzg`cZtiF9o%4&p|MmQG9+?-L7q&4k=EHMedyh51bAN^A zu22`>0JZT-u%Sg6j5W0=@Tr9cpIXHAf!vUI;MTyLP-MBek{PjhHjyVrSM!P=vt3$!H2%LnE*;^fB1t7`1376CJnQsEvo~m!j7J4W|eAZ>&Ym?_l^k zOlIlJZRB{l#A_epo!|ciz-A}9To+VZpk>E@NP(E+|8MQ*CXZMgPv|310^GROZR zBk}QrYt~LF5b)lB@qGWl{B=wY5FV4*WISKLe+xS7lJR^$!kq6vz(o>;V^RKZ8L#b( z=j%E1E#%4LXFuj|fF17@Smyf$<^jSx$4_eUJ!oJ~8PE4G%%{ka`*-gDUkTqzetbW~ zJZQt?xzCB81s&$3aL%Li2473~J`r3bIp_Z)(Ax0{){1XSBzvp3|b4(Zy zkK-M6;Q9K-yl^cbfOGt~_OXk?H&p?0B<}QQnfb549q~MWWsD<^?>_9rIM(4uH+Fm| zU|E}N@f>xcC(fdR+Q zc>aDT@gMLU51&hL?J=J3bNM^SFeR4PC-=+iU>>mc{`vXg>`tqPZi^MRjAxEmJ6?pz zHE40?e4($MWAccount/Index + +

You are in Account's index page.

diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/login/login.html b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/login/login.html new file mode 100644 index 0000000..692950e --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/login/login.html @@ -0,0 +1,25 @@ +
+ {% csrf_token %} + + + + + +
+ + + + + + + + +
+ +
+ + Forgot password? +
+
\ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/register/register.html b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/register/register.html new file mode 100644 index 0000000..e836490 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/account/register/register.html @@ -0,0 +1,11 @@ +{% block content %} + + + +
+

Sign up

+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock %} \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/devhub/index.html b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/devhub/index.html new file mode 100644 index 0000000..12b7907 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/templates/devhub/index.html @@ -0,0 +1,30 @@ + + + + + +

+ DevHub Page +

+ +
+ This a web app based on django
urls: +
+ +
+ /account +
+ Go to Account index + +
+ /account/login +
+ Go to Login + +
+ /account/register/ +
+ Go to register + + + diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/tests.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/urls.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/urls.py new file mode 100644 index 0000000..cd07cf0 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/urls.py @@ -0,0 +1,10 @@ +from django.urls import path + +from account import views + +urlpatterns = [ + path('', views.index, name='index'), + path(r'login/', views.login), + path(r'register/', views.register) + +] diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/account/views.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/views.py new file mode 100644 index 0000000..478b3b6 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/account/views.py @@ -0,0 +1,48 @@ +from .forms import CustomCreateUser +from django.shortcuts import render +from django.contrib.auth import authenticate, logout +from django.contrib.auth import login as auth_login +from django.http import HttpResponseRedirect, HttpResponse +from django.urls import reverse + + + + + + +def index(request): + return render(request, "account/index.html") + + +def register(request): + if request.method == 'POST': + form = CustomCreateUser(request.POST) + if form.is_valid(): + User = form.save() + username = form.cleaned_data.get('username') + raw_password = form.cleaned_data.get('password1') + User = authenticate(username=username, password=raw_password) + auth_login(request, User) + return HttpResponseRedirect(reverse("index")) + else: + form = CustomCreateUser() + return render(request, "account/register/register.html", {'form': form}) + + +def login(request): + if request.method == 'POST': + username = request.POST.get('username') + password = request.POST.get('psw') + user = authenticate(username=username, password=password) + if user: + if user.is_active: + auth_login(request, user) + return HttpResponseRedirect(reverse("index")) + else: + return HttpResponse ("Your account was inactive") + else: + print("Someone tried to log in and Failed") + return HttpResponse ("Invalid credentials") + else: + return render(request, "account/login/login.html") + diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/__init__.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/settings.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/settings.py new file mode 100644 index 0000000..ba68398 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/settings.py @@ -0,0 +1,128 @@ +""" +Django settings for devhub project. + +Generated by 'django-admin startproject' using Django 2.1.7. + +For more information on this file, see +https://docs.djangoproject.com/en/2.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/2.1/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '%sl=sr@84$rrenr8=!p@7733st0ggv4&6(#ipbq()1yvbd2rjv' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'account.apps.AccountConfig', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'devhub.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'devhub.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/2.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': '172.19.0.2', + 'PORT': 5432, + } +} + + +# Password validation +# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/2.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.1/howto/static-files/ + +STATIC_URL = '/static/' +STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),] +# Custom User model +# https://docs.djangoproject.com/en/dev/topics/auth/customizing/#using-a-custom-user-model-when-starting-a-project +AUTH_USER_MODEL = 'account.Account' diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/urls.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/urls.py new file mode 100644 index 0000000..89dd848 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/urls.py @@ -0,0 +1,26 @@ +"""devhub URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/2.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include +from django.conf import settings +from django.conf.urls.static import static +from devhub import views + +urlpatterns = [ + path('', views.index, name='index' ), + path('admin/', admin.site.urls), + path('account/', include('account.urls')), +] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/views.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/views.py new file mode 100644 index 0000000..db33e7e --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/views.py @@ -0,0 +1,5 @@ +from django.shortcuts import render + + +def index(request): + return render(request, "devhub/index.html") \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/wsgi.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/wsgi.py new file mode 100644 index 0000000..5f213e2 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/devhub/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for devhub project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'devhub.settings') + +application = get_wsgi_application() diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/manage.py b/assignments/assignment2/solutions/Jlopezjlx/src/src/manage.py new file mode 100755 index 0000000..480b352 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/manage.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == '__main__': + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'devhub.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/static/css.css b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/css.css new file mode 100644 index 0000000..dee0f7f --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/css.css @@ -0,0 +1,79 @@ +/* Bordered form */ +* { + margin: 0; + padding: 0; + font-family: sans-serif; + box-sizing: border-box; +} + + +body { + background: #ffffff; + display: flex; + min-height: 100vh; +} + + +form { + margin: auto; + width: 50%; + max-width: 500px; + background: #ffffff; + padding: 30px; + border: 1px solid rgba(0,0,0,0.2); + } + + /* Full-width inputs */ + input[type=text], input[type=password] { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + box-sizing: border-box; + } + + /* Set a style for all buttons */ + button { + background-color: #4DAEFA; + color: #FBC08C; + padding: 14px 20px; + margin: 8px 0; + border: none; + cursor: pointer; + width: 100%; + } + + /* Add a hover effect for buttons */ + button:hover { + opacity: 0.8; + } + + /* Extra style for the cancel button (red) */ + .cancelbtn { + width: auto; + padding: 10px 18px; + background-color: #4DAEFA; + } + + /* Add padding to containers */ + .container { + padding: 16px; + } + + /* The "Forgot password" text */ + span.psw { + float: right; + padding-top: 16px; + } + + /* Change styles for span and cancel button on extra small screens */ + @media screen and (max-width: 300px) { + span.psw { + display: block; + float: none; + } + .cancelbtn { + width: 100%; + } + } \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/static/index.css b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/index.css new file mode 100644 index 0000000..9ed2144 --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/index.css @@ -0,0 +1,15 @@ +h3{ + text-align: center; +} + +h5 { + text-align: center; +} + +h6 { + text-align: center; +} + +body{ + background-color: #ffffff; +} diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/src/static/register.css b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/register.css new file mode 100644 index 0000000..6f6541b --- /dev/null +++ b/assignments/assignment2/solutions/Jlopezjlx/src/src/static/register.css @@ -0,0 +1,45 @@ +* { + margin: 0; + padding: 0; + font-family: sans-serif; + box-sizing: border-box; +} + + +body { + background: #ffffff; + display: flex; + min-height: 100vh; +} + + +form { + margin: auto; + width: 50%; + max-width: 500px; + background: #ffffff; + padding: 30px; + border: 1px solid rgba(0,0,0,0.2); + +} + +input[type=text], input[type=password] { + width: 100%; + margin-bottom: 5px; + margin: 10px 0; + padding: 12px 20px; +} + +h1 { + text-align: center; +} + +button { + background-color: #4DAEFA; + color: #FBC08C; + padding: 14px 20px; + margin: 8px 0; + border: none; + cursor: pointer; + width: 100%; + } \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/tests/README.md b/assignments/assignment2/solutions/Jlopezjlx/src/tests/README.md new file mode 100644 index 0000000..e69de29 From d104205bb9330ed5fc0ade433fb9a5aae5df4585 Mon Sep 17 00:00:00 2001 From: Jairo Lopez Date: Wed, 24 Apr 2019 22:07:43 -0400 Subject: [PATCH 2/2] Issue 1,2,4: login, register, postgres, docker-compose --- .../solutions/Jlopezjlx/src/hub/bin/activate | 78 -------------- .../Jlopezjlx/src/hub/bin/activate.csh | 42 -------- .../Jlopezjlx/src/hub/bin/activate.fish | 101 ------------------ .../Jlopezjlx/src/hub/bin/activate.ps1 | 60 ----------- .../Jlopezjlx/src/hub/bin/activate.xsh | 39 ------- .../Jlopezjlx/src/hub/bin/activate_this.py | 46 -------- .../Jlopezjlx/src/hub/bin/django-admin | 10 -- .../Jlopezjlx/src/hub/bin/django-admin.py | 5 - .../Jlopezjlx/src/hub/bin/easy_install | 10 -- .../Jlopezjlx/src/hub/bin/easy_install-3.7 | 10 -- .../solutions/Jlopezjlx/src/hub/bin/epylint | 10 -- .../solutions/Jlopezjlx/src/hub/bin/isort | 10 -- .../solutions/Jlopezjlx/src/hub/bin/pip | 10 -- .../solutions/Jlopezjlx/src/hub/bin/pip3 | 10 -- .../solutions/Jlopezjlx/src/hub/bin/pip3.7 | 10 -- .../solutions/Jlopezjlx/src/hub/bin/pylint | 10 -- .../solutions/Jlopezjlx/src/hub/bin/pyreverse | 10 -- .../solutions/Jlopezjlx/src/hub/bin/python | 1 - .../Jlopezjlx/src/hub/bin/python-config | 78 -------------- .../solutions/Jlopezjlx/src/hub/bin/python3 | Bin 15432 -> 0 bytes .../solutions/Jlopezjlx/src/hub/bin/python3.7 | 1 - .../solutions/Jlopezjlx/src/hub/bin/symilar | 10 -- .../solutions/Jlopezjlx/src/hub/bin/wheel | 10 -- .../Jlopezjlx/src/hub/include/python3.7m | 1 - .../solutions/Jlopezjlx/src/hub/lib64 | 1 - 25 files changed, 573 deletions(-) delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh delete mode 100644 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse delete mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 delete mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3.7 delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/symilar delete mode 100755 assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/wheel delete mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/include/python3.7m delete mode 120000 assignments/assignment2/solutions/Jlopezjlx/src/hub/lib64 diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate deleted file mode 100644 index e1bead6..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate +++ /dev/null @@ -1,78 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - unset -f pydoc >/dev/null 2>&1 - - # reset old environment variables - # ! [ -z ${VAR+_} ] returns true if VAR is declared at all - if ! [ -z "${_OLD_VIRTUAL_PATH+_}" ] ; then - PATH="$_OLD_VIRTUAL_PATH" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then - PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then - hash -r 2>/dev/null - fi - - if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then - PS1="$_OLD_VIRTUAL_PS1" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - if [ ! "${1-}" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -VIRTUAL_ENV="/home/jlopez/Desktop/python/devhub/devhub/hub" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -if ! [ -z "${PYTHONHOME+_}" ] ; then - _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" - unset PYTHONHOME -fi - -if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then - _OLD_VIRTUAL_PS1="${PS1-}" - if [ "x" != x ] ; then - PS1="${PS1-}" - else - PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}" - fi - export PS1 -fi - -# Make sure to unalias pydoc if it's already there -alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true - -pydoc () { - python -m pydoc "$@" -} - -# This should detect bash and zsh, which have a hash command that must -# be called to get it to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then - hash -r 2>/dev/null -fi diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh deleted file mode 100644 index f94b9e0..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.csh +++ /dev/null @@ -1,42 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . - -set newline='\ -' - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/home/jlopez/Desktop/python/devhub/devhub/hub" - -set _OLD_VIRTUAL_PATH="$PATH:q" -setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q" - - - -if ("" != "") then - set env_name = "" -else - set env_name = "$VIRTUAL_ENV:t:q" -endif - -# Could be in a non-interactive environment, -# in which case, $prompt is undefined and we wouldn't -# care about the prompt anyway. -if ( $?prompt ) then - set _OLD_VIRTUAL_PROMPT="$prompt:q" -if ( "$prompt:q" =~ *"$newline:q"* ) then - : -else - set prompt = "[$env_name:q] $prompt:q" -endif -endif - -unset env_name - -alias pydoc python -m pydoc - -rehash diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish deleted file mode 100644 index 4f9f920..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.fish +++ /dev/null @@ -1,101 +0,0 @@ -# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. -# Do not run it directly. - -function _bashify_path -d "Converts a fish path to something bash can recognize" - set fishy_path $argv - set bashy_path $fishy_path[1] - for path_part in $fishy_path[2..-1] - set bashy_path "$bashy_path:$path_part" - end - echo $bashy_path -end - -function _fishify_path -d "Converts a bash path to something fish can recognize" - echo $argv | tr ':' '\n' -end - -function deactivate -d 'Exit virtualenv mode and return to the normal environment.' - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling - if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 - set -gx PATH (_fishify_path $_OLD_VIRTUAL_PATH) - else - set -gx PATH $_OLD_VIRTUAL_PATH - end - set -e _OLD_VIRTUAL_PATH - end - - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. - set -l fish_function_path - - # Erase virtualenv's `fish_prompt` and restore the original. - functions -e fish_prompt - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - set -e _OLD_FISH_PROMPT_OVERRIDE - end - - set -e VIRTUAL_ENV - - if test "$argv[1]" != 'nondestructive' - # Self-destruct! - functions -e pydoc - functions -e deactivate - functions -e _bashify_path - functions -e _fishify_path - end -end - -# Unset irrelevant variables. -deactivate nondestructive - -set -gx VIRTUAL_ENV "/home/jlopez/Desktop/python/devhub/devhub/hub" - -# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling -if test (echo $FISH_VERSION | tr "." "\n")[1] -lt 3 - set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH) -else - set -gx _OLD_VIRTUAL_PATH $PATH -end -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# Unset `$PYTHONHOME` if set. -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -function pydoc - python -m pydoc $argv -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # Copy the current `fish_prompt` function as `_old_fish_prompt`. - functions -c fish_prompt _old_fish_prompt - - function fish_prompt - # Save the current $status, for fish_prompts that display it. - set -l old_status $status - - # Prompt override provided? - # If not, just prepend the environment name. - if test -n "" - printf '%s%s' "" (set_color normal) - else - printf '%s(%s) ' (set_color normal) (basename "$VIRTUAL_ENV") - end - - # Restore the original $status - echo "exit $old_status" | source - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" -end diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 deleted file mode 100644 index 6d8ae2a..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.ps1 +++ /dev/null @@ -1,60 +0,0 @@ -# This file must be dot sourced from PoSh; you cannot run it directly. Do this: . ./activate.ps1 - -$script:THIS_PATH = $myinvocation.mycommand.path -$script:BASE_DIR = split-path (resolve-path "$THIS_PATH/..") -Parent - -function global:deactivate([switch] $NonDestructive) -{ - if (test-path variable:_OLD_VIRTUAL_PATH) - { - $env:PATH = $variable:_OLD_VIRTUAL_PATH - remove-variable "_OLD_VIRTUAL_PATH" -scope global - } - - if (test-path function:_old_virtual_prompt) - { - $function:prompt = $function:_old_virtual_prompt - remove-item function:\_old_virtual_prompt - } - - if ($env:VIRTUAL_ENV) - { - $old_env = split-path $env:VIRTUAL_ENV -leaf - remove-item env:VIRTUAL_ENV -erroraction silentlycontinue - } - - if (!$NonDestructive) - { - # Self destruct! - remove-item function:deactivate - remove-item function:pydoc - } -} - -function global:pydoc -{ - python -m pydoc $args -} - -# unset irrelevant variables -deactivate -nondestructive - -$VIRTUAL_ENV = $BASE_DIR -$env:VIRTUAL_ENV = $VIRTUAL_ENV - -$global:_OLD_VIRTUAL_PATH = $env:PATH -$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH -if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) -{ - function global:_old_virtual_prompt - { - "" - } - $function:_old_virtual_prompt = $function:prompt - function global:prompt - { - # Add a prefix to the current prompt, but don't discard it. - write-host "($( split-path $env:VIRTUAL_ENV -leaf )) " -nonewline - & $function:_old_virtual_prompt - } -} diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh deleted file mode 100644 index 97aab26..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate.xsh +++ /dev/null @@ -1,39 +0,0 @@ -"""Xonsh activate script for virtualenv""" -from xonsh.tools import get_sep as _get_sep - -def _deactivate(args): - if "pydoc" in aliases: - del aliases["pydoc"] - - if ${...}.get("_OLD_VIRTUAL_PATH", ""): - $PATH = $_OLD_VIRTUAL_PATH - del $_OLD_VIRTUAL_PATH - - if ${...}.get("_OLD_VIRTUAL_PYTHONHOME", ""): - $PYTHONHOME = $_OLD_VIRTUAL_PYTHONHOME - del $_OLD_VIRTUAL_PYTHONHOME - - if "VIRTUAL_ENV" in ${...}: - del $VIRTUAL_ENV - - if "nondestructive" not in args: - # Self destruct! - del aliases["deactivate"] - - -# unset irrelevant variables -_deactivate(["nondestructive"]) -aliases["deactivate"] = _deactivate - -$VIRTUAL_ENV = r"/home/jlopez/Desktop/python/devhub/devhub/hub" - -$_OLD_VIRTUAL_PATH = $PATH -$PATH = $PATH[:] -$PATH.add($VIRTUAL_ENV + _get_sep() + "bin", front=True, replace=True) - -if ${...}.get("PYTHONHOME", ""): - # unset PYTHONHOME if set - $_OLD_VIRTUAL_PYTHONHOME = $PYTHONHOME - del $PYTHONHOME - -aliases["pydoc"] = ["python", "-m", "pydoc"] diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py deleted file mode 100644 index 59b5d72..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/activate_this.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Activate virtualenv for current interpreter: - -Use exec(open(this_file).read(), {'__file__': this_file}). - -This can be used when you must use an existing Python interpreter, not the virtualenv bin/python. -""" -import os -import site -import sys - -try: - __file__ -except NameError: - raise AssertionError("You must use exec(open(this_file).read(), {'__file__': this_file}))") - -# prepend bin to PATH (this file is inside the bin directory) -bin_dir = os.path.dirname(os.path.abspath(__file__)) -os.environ["PATH"] = os.pathsep.join([bin_dir] + os.environ.get("PATH", "").split(os.pathsep)) - -base = os.path.dirname(bin_dir) - -# virtual env is right above bin directory -os.environ["VIRTUAL_ENV"] = base - -# add the virtual environments site-package to the host python import mechanism -IS_PYPY = hasattr(sys, "pypy_version_info") -IS_JYTHON = sys.platform.startswith("java") -if IS_JYTHON: - site_packages = os.path.join(base, "Lib", "site-packages") -elif IS_PYPY: - site_packages = os.path.join(base, "site-packages") -else: - IS_WIN = sys.platform == "win32" - if IS_WIN: - site_packages = os.path.join(base, "Lib", "site-packages") - else: - site_packages = os.path.join(base, "lib", "python{}".format(sys.version[:3]), "site-packages") - -prev = set(sys.path) -site.addsitedir(site_packages) -sys.real_prefix = sys.prefix -sys.prefix = base - -# Move the added items to the front of the path, in place -new = list(sys.path) -sys.path[:] = [i for i in new if i not in prev] + [i for i in new if i in prev] diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin deleted file mode 100755 index c0752f4..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from django.core.management import execute_from_command_line - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(execute_from_command_line()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py deleted file mode 100755 index 416fc1d..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/django-admin.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -from django.core import management - -if __name__ == "__main__": - management.execute_from_command_line() diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install deleted file mode 100755 index 16e47ef..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 deleted file mode 100755 index 16e47ef..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/easy_install-3.7 +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint deleted file mode 100755 index 595fbce..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/epylint +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pylint import run_epylint - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(run_epylint()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort deleted file mode 100755 index 410a7e1..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/isort +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from isort.main import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip deleted file mode 100755 index 1ee3c57..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pip._internal import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 deleted file mode 100755 index 1ee3c57..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3 +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pip._internal import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 deleted file mode 100755 index 1ee3c57..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pip3.7 +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pip._internal import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint deleted file mode 100755 index 0218865..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pylint +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pylint import run_pylint - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(run_pylint()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse deleted file mode 100755 index 66c3b72..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/pyreverse +++ /dev/null @@ -1,10 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python3 -# -*- coding: utf-8 -*- -import re -import sys - -from pylint import run_pyreverse - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(run_pyreverse()) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python deleted file mode 120000 index b8a0adb..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3 \ No newline at end of file diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config deleted file mode 100755 index 95b4472..0000000 --- a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python-config +++ /dev/null @@ -1,78 +0,0 @@ -#!/home/jlopez/Desktop/python/devhub/devhub/hub/bin/python - -import sys -import getopt -import sysconfig - -valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', - 'ldflags', 'help'] - -if sys.version_info >= (3, 2): - valid_opts.insert(-1, 'extension-suffix') - valid_opts.append('abiflags') -if sys.version_info >= (3, 3): - valid_opts.append('configdir') - - -def exit_with_usage(code=1): - sys.stderr.write("Usage: {0} [{1}]\n".format( - sys.argv[0], '|'.join('--'+opt for opt in valid_opts))) - sys.exit(code) - -try: - opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) -except getopt.error: - exit_with_usage() - -if not opts: - exit_with_usage() - -pyver = sysconfig.get_config_var('VERSION') -getvar = sysconfig.get_config_var - -opt_flags = [flag for (flag, val) in opts] - -if '--help' in opt_flags: - exit_with_usage(code=0) - -for opt in opt_flags: - if opt == '--prefix': - print(sysconfig.get_config_var('prefix')) - - elif opt == '--exec-prefix': - print(sysconfig.get_config_var('exec_prefix')) - - elif opt in ('--includes', '--cflags'): - flags = ['-I' + sysconfig.get_path('include'), - '-I' + sysconfig.get_path('platinclude')] - if opt == '--cflags': - flags.extend(getvar('CFLAGS').split()) - print(' '.join(flags)) - - elif opt in ('--libs', '--ldflags'): - abiflags = getattr(sys, 'abiflags', '') - libs = ['-lpython' + pyver + abiflags] - libs += getvar('LIBS').split() - libs += getvar('SYSLIBS').split() - # add the prefix/lib/pythonX.Y/config dir, but only if there is no - # shared library in prefix/lib/. - if opt == '--ldflags': - if not getvar('Py_ENABLE_SHARED'): - libs.insert(0, '-L' + getvar('LIBPL')) - if not getvar('PYTHONFRAMEWORK'): - libs.extend(getvar('LINKFORSHARED').split()) - print(' '.join(libs)) - - elif opt == '--extension-suffix': - ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') - if ext_suffix is None: - ext_suffix = sysconfig.get_config_var('SO') - print(ext_suffix) - - elif opt == '--abiflags': - if not getattr(sys, 'abiflags', None): - exit_with_usage() - print(sys.abiflags) - - elif opt == '--configdir': - print(sysconfig.get_config_var('LIBPL')) diff --git a/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 b/assignments/assignment2/solutions/Jlopezjlx/src/hub/bin/python3 deleted file mode 100755 index 1d9cfb75ed30b94feb52f51ec7d9ee9e6f6de793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15432 zcmeHOZ)_CT5r1d<@Dc2@AwUgA^?^Vlre4kl+;bwzox%3HHNgS9I0|HazFYe)oX^hP zUSda)pmJLElDI)>r9}OJqN=L;AySe0B~nw#2#Dy1sOAGrTBnr-p~4LjuG%1yG~Uj< zojI?UGeu1*^}~*JJ8%B{=DnTw_Mdn5WLsBziN_f>=MM$iI z?IuwxR)Ab4b(TGBF|b;cC|SyVq%Q@IxL=ap$v2T7a~>gb#4Sf^xn*H4Xg?6=MH9(R zeuX+<&h|oo0R#gD&GamdlHC9Z-73&Qx-s zdH2p#ydjlL=f)bwLd^}$yOr#S(j@mA%X4d?xzk2Jt zm)|oleDu3B`HPSL_-AOtrGqhWzkc}GW^X`$VLR#`fFH(hZM$;wsg?Wx@SAI|K40BPyOK3}=^>KSldmezwMP{jHR(5)$=ZvtJQi2g0m z74wfQm28=$-kTY~T_^cPOjz-6g#7KIV z^37pfKaEOIXq`O=wYZ+qhmu)C&-5JJpBhQ)J<)-bE;MaucqFZ5jcCTuG|RQ9BStn7 z89f@uutDr8p0ZXbG;>B$3XQ0j9XDeuh7QfpNo*{t4JOmkRPs6O6HV0Ta5R|~TKBlt zn@)}$l!9fBWpfBg3QdnkjVPdyStuCiA!x;uX)Tx4;~WtofG_}(M&&>@Oa2{Qovr(| zCZ$QCGkpnVzC?JI`I`g}O1sEyOs>QuZUf8{5})t*{1m2n=%@1;>tS(7N;vc^zrWA2 z<1tC0rDE2m=aHh}hE0#hG}F9IUswxZykpa2A551>kH8xEXLW@c*8He^h<_Gj-yoPkqVzN4VEkzdvP^nA7US1>bo&baT(Epf1^YJOflcVnOGc}KmxV624zUJBqdX9uh54lLqve5dw)szAuxj$U>6}$$t@n zJ>GV6hY-E$WCQXeT@PKyoZmRPV4CW=FG`KN#u>tQimkBii}F#ROx2I8(^wJQijSlrFg$a5La$z|DZ00XG9~2HXs|8E`Y; zX28vWn*qvz2j1CuYD*spf{gD)HqD!69C#P-mw_Jx-i7ktP4nl#-v)jYIKEFs@;rA~ zc*d$dwH4*Q)9_S}dVFW^0~|ba!wctf`HE;OH1Qqs*;}TGeF=YcyT9h!RjZ!$of7*t zK2pDH>lRca{uun;0zdnE8hB(E2K?TDxH@pr?yr8Oq|IORqtZ5iV6v>uzx`#e>JR>4 zh3XGYly~^UX@4l<4@UgkTm6Ane@&~uy4CNK@2lPh_$7#AkB=c;ax>s&z|DZ00XG9~ z2HXs|8E`Y;X28wBf0F^OcXQUaaSfZ3KS7P>3d}ahEd_F{?GHt*7 zPkqOsqoTeI6oqFcIe%PdUyx9}kxQW=zTAF=>r^ z1=ek^1}zHvmzg`cZtiF9o%4&p|MmQG9+?-L7q&4k=EHMedyh51bAN^A zu22`>0JZT-u%Sg6j5W0=@Tr9cpIXHAf!vUI;MTyLP-MBek{PjhHjyVrSM!P=vt3$!H2%LnE*;^fB1t7`1376CJnQsEvo~m!j7J4W|eAZ>&Ym?_l^k zOlIlJZRB{l#A_epo!|ciz-A}9To+VZpk>E@NP(E+|8MQ*CXZMgPv|310^GROZR zBk}QrYt~LF5b)lB@qGWl{B=wY5FV4*WISKLe+xS7lJR^$!kq6vz(o>;V^RKZ8L#b( z=j%E1E#%4LXFuj|fF17@Smyf$<^jSx$4_eUJ!oJ~8PE4G%%{ka`*-gDUkTqzetbW~ zJZQt?xzCB81s&$3aL%Li2473~J`r3bIp_Z)(Ax0{){1XSBzvp3|b4(Zy zkK-M6;Q9K-yl^cbfOGt~_OXk?H&p?0B<}QQnfb549q~MWWsD<^?>_9rIM(4uH+Fm| zU|E}N@f>xcC(fdR+Q zc>aDT@gMLU51&hL?J=J3bNM^SFeR4PC-=+iU>>mc{`vXg>`tqPZi^MRjAxEmJ6?pz zHE40?e4($MW