Initial version
这个提交包含在:
		
							
								
								
									
										79
									
								
								CODE_OF_CONDUCT.rst
									
									
									
									
									
										普通文件
									
								
							
							
						
						
									
										79
									
								
								CODE_OF_CONDUCT.rst
									
									
									
									
									
										普通文件
									
								
							| @@ -0,0 +1,79 @@ | ||||
| Contributor Covenant Code of Conduct | ||||
| #################################### | ||||
|  | ||||
| Our Pledge | ||||
| ========== | ||||
|  | ||||
| In the interest of fostering an open and welcoming environment, we as | ||||
| contributors and maintainers pledge to making participation in our project and | ||||
| our community a harassment-free experience for everyone, regardless of age, body | ||||
| size, disability, ethnicity, gender identity and expression, level of experience, | ||||
| education, socio-economic status, nationality, personal appearance, race, | ||||
| religion, or sexual identity and orientation. | ||||
|  | ||||
| Our Standards | ||||
| ============= | ||||
|  | ||||
| Examples of behavior that contributes to creating a positive environment | ||||
| include: | ||||
|  | ||||
| - Using welcoming and inclusive language | ||||
| - Being respectful of differing viewpoints and experiences | ||||
| - Gracefully accepting constructive criticism | ||||
| - Focusing on what is best for the community | ||||
| - Showing empathy towards other community members | ||||
|  | ||||
| Examples of unacceptable behavior by participants include: | ||||
|  | ||||
| - The use of sexualized language or imagery and unwelcome sexual attention or | ||||
|   advances | ||||
| - Trolling, insulting/derogatory comments, and personal or political attacks | ||||
| - Public or private harassment | ||||
| - Publishing others' private information, such as a physical or electronic | ||||
|   address, without explicit permission | ||||
| - Other conduct which could reasonably be considered inappropriate in a | ||||
|   professional setting | ||||
|  | ||||
| Our Responsibilities | ||||
| ==================== | ||||
|  | ||||
| Project maintainers are responsible for clarifying the standards of acceptable | ||||
| behavior and are expected to take appropriate and fair corrective action in | ||||
| response to any instances of unacceptable behavior. | ||||
|  | ||||
| Project maintainers have the right and responsibility to remove, edit, or | ||||
| reject comments, commits, code, wiki edits, issues, and other contributions | ||||
| that are not aligned to this Code of Conduct, or to ban temporarily or | ||||
| permanently any contributor for other behaviors that they deem inappropriate, | ||||
| threatening, offensive, or harmful. | ||||
|  | ||||
| Scope | ||||
| ===== | ||||
|  | ||||
| This Code of Conduct applies both within project spaces and in public spaces | ||||
| when an individual is representing the project or its community. Examples of | ||||
| representing a project or community include using an official project e-mail | ||||
| address, posting via an official social media account, or acting as an appointed | ||||
| representative at an online or offline event. Representation of a project may be | ||||
| further defined and clarified by project maintainers. | ||||
|  | ||||
| Enforcement | ||||
| =========== | ||||
|  | ||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||||
| reported by contacting the project team at gergely@polonkai.eu. All | ||||
| complaints will be reviewed and investigated and will result in a response that | ||||
| is deemed necessary and appropriate to the circumstances. The project team is | ||||
| obligated to maintain confidentiality with regard to the reporter of an incident. | ||||
| Further details of specific enforcement policies may be posted separately. | ||||
|  | ||||
| Project maintainers who do not follow or enforce the Code of Conduct in good | ||||
| faith may face temporary or permanent repercussions as determined by other | ||||
| members of the project's leadership. | ||||
|  | ||||
| Attribution | ||||
| =========== | ||||
|  | ||||
| This Code of Conduct is adapted from the `Contributor Covenant | ||||
| <https://www.contributor-covenant.org>`_, version 1.4, available at | ||||
| https://www.contributor-covenant.org/version/1/4/code-of-conduct.html | ||||
| @@ -1,7 +1,7 @@ | ||||
|                     GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|                        Version 3, 19 November 2007 | ||||
| 
 | ||||
|  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | ||||
|  Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
| 
 | ||||
| @@ -629,12 +629,12 @@ to attach them to the start of each source file to most effectively | ||||
| state the exclusion of warranty; and each file should have at least | ||||
| the "copyright" line and a pointer to where the full notice is found. | ||||
| 
 | ||||
|     albums-social | ||||
|     Copyright (C) 2018  Gergely Polonkai (naurYl) | ||||
|     <one line to give the program's name and a brief idea of what it does.> | ||||
|     Copyright (C) <year>  <name of author> | ||||
| 
 | ||||
|     This program is free software: you can redistribute it and/or modify | ||||
|     it under the terms of the GNU Affero General Public License as published | ||||
|     by the Free Software Foundation, either version 3 of the License, or | ||||
|     it under the terms of the GNU Affero General Public License as published by | ||||
|     the Free Software Foundation, either version 3 of the License, or | ||||
|     (at your option) any later version. | ||||
| 
 | ||||
|     This program is distributed in the hope that it will be useful, | ||||
| @@ -643,7 +643,7 @@ the "copyright" line and a pointer to where the full notice is found. | ||||
|     GNU Affero General Public License for more details. | ||||
| 
 | ||||
|     You should have received a copy of the GNU Affero General Public License | ||||
|     along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
|     along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| Also add information on how to contact you by electronic and paper mail. | ||||
| 
 | ||||
| @@ -658,4 +658,4 @@ specific requirements. | ||||
|   You should also get your employer (if you work as a programmer) or school, | ||||
| if any, to sign a "copyright disclaimer" for the program, if necessary. | ||||
| For more information on this, and how to apply and follow the GNU AGPL, see | ||||
| <http://www.gnu.org/licenses/>. | ||||
| <https://www.gnu.org/licenses/>. | ||||
							
								
								
									
										15
									
								
								Pipfile
									
									
									
									
									
										普通文件
									
								
							
							
						
						
									
										15
									
								
								Pipfile
									
									
									
									
									
										普通文件
									
								
							| @@ -0,0 +1,15 @@ | ||||
| [[source]] | ||||
| url = "https://pypi.org/simple" | ||||
| verify_ssl = true | ||||
| name = "pypi" | ||||
|  | ||||
| [packages] | ||||
| flask = "*" | ||||
| flask-sqlalchemy = "*" | ||||
| flask-security = "*" | ||||
| gunicorn = "*" | ||||
|  | ||||
| [dev-packages] | ||||
|  | ||||
| [requires] | ||||
| python_version = "3.6" | ||||
							
								
								
									
										163
									
								
								Pipfile.lock
									
									
									
										自动生成的
									
									
									
										普通文件
									
								
							
							
						
						
									
										163
									
								
								Pipfile.lock
									
									
									
										自动生成的
									
									
									
										普通文件
									
								
							| @@ -0,0 +1,163 @@ | ||||
| { | ||||
|     "_meta": { | ||||
|         "hash": { | ||||
|             "sha256": "11e0c3bf9031ac561ba1a3392c1a5458ca8ea23c37b21b151921835666171bfa" | ||||
|         }, | ||||
|         "pipfile-spec": 6, | ||||
|         "requires": { | ||||
|             "python_version": "3.6" | ||||
|         }, | ||||
|         "sources": [ | ||||
|             { | ||||
|                 "name": "pypi", | ||||
|                 "url": "https://pypi.org/simple", | ||||
|                 "verify_ssl": true | ||||
|             } | ||||
|         ] | ||||
|     }, | ||||
|     "default": { | ||||
|         "babel": { | ||||
|             "hashes": [ | ||||
|                 "sha256:6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669", | ||||
|                 "sha256:8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23" | ||||
|             ], | ||||
|             "version": "==2.6.0" | ||||
|         }, | ||||
|         "blinker": { | ||||
|             "hashes": [ | ||||
|                 "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" | ||||
|             ], | ||||
|             "version": "==1.4" | ||||
|         }, | ||||
|         "click": { | ||||
|             "hashes": [ | ||||
|                 "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", | ||||
|                 "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" | ||||
|             ], | ||||
|             "version": "==6.7" | ||||
|         }, | ||||
|         "flask": { | ||||
|             "hashes": [ | ||||
|                 "sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48", | ||||
|                 "sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==1.0.2" | ||||
|         }, | ||||
|         "flask-babelex": { | ||||
|             "hashes": [ | ||||
|                 "sha256:cf79cdedb5ce860166120136b0e059e9d97b8df07a3bc2411f6243de04b754b4" | ||||
|             ], | ||||
|             "version": "==0.9.3" | ||||
|         }, | ||||
|         "flask-login": { | ||||
|             "hashes": [ | ||||
|                 "sha256:c815c1ac7b3e35e2081685e389a665f2c74d7e077cb93cecabaea352da4752ec" | ||||
|             ], | ||||
|             "version": "==0.4.1" | ||||
|         }, | ||||
|         "flask-mail": { | ||||
|             "hashes": [ | ||||
|                 "sha256:22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41" | ||||
|             ], | ||||
|             "version": "==0.9.1" | ||||
|         }, | ||||
|         "flask-principal": { | ||||
|             "hashes": [ | ||||
|                 "sha256:f5d6134b5caebfdbb86f32d56d18ee44b080876a27269560a96ea35f75c99453" | ||||
|             ], | ||||
|             "version": "==0.4.0" | ||||
|         }, | ||||
|         "flask-security": { | ||||
|             "hashes": [ | ||||
|                 "sha256:d61daa5f5a48f89f30f50555872bdf581b2c65804668b0313345cd7beff26432", | ||||
|                 "sha256:ef837c03558db41335c8dabd16ae4977af0a5ef0c2cdecf738e33ef5202ce489" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==3.0.0" | ||||
|         }, | ||||
|         "flask-sqlalchemy": { | ||||
|             "hashes": [ | ||||
|                 "sha256:3bc0fac969dd8c0ace01b32060f0c729565293302f0c4269beed154b46bec50b", | ||||
|                 "sha256:5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==2.3.2" | ||||
|         }, | ||||
|         "flask-wtf": { | ||||
|             "hashes": [ | ||||
|                 "sha256:5d14d55cfd35f613d99ee7cba0fc3fbbe63ba02f544d349158c14ca15561cc36", | ||||
|                 "sha256:d9a9e366b32dcbb98ef17228e76be15702cd2600675668bca23f63a7947fd5ac" | ||||
|             ], | ||||
|             "version": "==0.14.2" | ||||
|         }, | ||||
|         "gunicorn": { | ||||
|             "hashes": [ | ||||
|                 "sha256:7ef2b828b335ed58e3b64ffa84caceb0a7dd7c5ca12f217241350dec36a1d5dc", | ||||
|                 "sha256:bc59005979efb6d2dd7d5ba72d99f8a8422862ad17ff3a16e900684630dd2a10" | ||||
|             ], | ||||
|             "index": "pypi", | ||||
|             "version": "==19.8.1" | ||||
|         }, | ||||
|         "itsdangerous": { | ||||
|             "hashes": [ | ||||
|                 "sha256:cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519" | ||||
|             ], | ||||
|             "version": "==0.24" | ||||
|         }, | ||||
|         "jinja2": { | ||||
|             "hashes": [ | ||||
|                 "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", | ||||
|                 "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" | ||||
|             ], | ||||
|             "version": "==2.10" | ||||
|         }, | ||||
|         "markupsafe": { | ||||
|             "hashes": [ | ||||
|                 "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" | ||||
|             ], | ||||
|             "version": "==1.0" | ||||
|         }, | ||||
|         "passlib": { | ||||
|             "hashes": [ | ||||
|                 "sha256:3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0", | ||||
|                 "sha256:43526aea08fa32c6b6dbbbe9963c4c767285b78147b7437597f992812f69d280" | ||||
|             ], | ||||
|             "version": "==1.7.1" | ||||
|         }, | ||||
|         "pytz": { | ||||
|             "hashes": [ | ||||
|                 "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", | ||||
|                 "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" | ||||
|             ], | ||||
|             "version": "==2018.4" | ||||
|         }, | ||||
|         "speaklater": { | ||||
|             "hashes": [ | ||||
|                 "sha256:59fea336d0eed38c1f0bf3181ee1222d0ef45f3a9dd34ebe65e6bfffdd6a65a9" | ||||
|             ], | ||||
|             "version": "==1.3" | ||||
|         }, | ||||
|         "sqlalchemy": { | ||||
|             "hashes": [ | ||||
|                 "sha256:2d5f08f714a886a1382c18be501e614bce50d362384dc089474019ce0768151c" | ||||
|             ], | ||||
|             "version": "==1.2.8" | ||||
|         }, | ||||
|         "werkzeug": { | ||||
|             "hashes": [ | ||||
|                 "sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c", | ||||
|                 "sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b" | ||||
|             ], | ||||
|             "version": "==0.14.1" | ||||
|         }, | ||||
|         "wtforms": { | ||||
|             "hashes": [ | ||||
|                 "sha256:49c6dc46a188db98be7582046db35bae3e4701b71a2e8f4212873289cd51553a", | ||||
|                 "sha256:88e9c32e37d7eae1bd032fd1771a88f17c7b7e671465705acd217fabdfbb1794" | ||||
|             ], | ||||
|             "version": "==2.2" | ||||
|         } | ||||
|     }, | ||||
|     "develop": {} | ||||
| } | ||||
							
								
								
									
										49
									
								
								README.rst
									
									
									
									
									
										普通文件
									
								
							
							
						
						
									
										49
									
								
								README.rst
									
									
									
									
									
										普通文件
									
								
							| @@ -0,0 +1,49 @@ | ||||
| Albums.social | ||||
| ############# | ||||
|  | ||||
| Federated photo album sharing for everyone. | ||||
|  | ||||
| ----- | ||||
|  | ||||
| !WARNING! This software, including this document, is under active development, and is not intended | ||||
| for production use! | ||||
|  | ||||
| Running the application locally | ||||
| ------------------------------- | ||||
|  | ||||
| Albums.social uses Pipenv to manage dependencies.  To install it, use:: | ||||
|  | ||||
|   $ pip install pipenv | ||||
|  | ||||
| See the `Pipenv documentation <https://docs.pipenv.org/>`_ for details. | ||||
|  | ||||
| After Pipenv is installed, you can install the dependencies with:: | ||||
|  | ||||
|   $ pipenv install | ||||
|  | ||||
| And run the application with:: | ||||
|  | ||||
|   $ pipenv run gunicorn app:app | ||||
|  | ||||
| This will boot up the applicatio on https://127.0.0.1:8000/ | ||||
|  | ||||
| Hacking | ||||
| ------- | ||||
|  | ||||
| If you want to hack on the sources, just go ahead and edit the `.py` files and restart the application. | ||||
|  | ||||
| Contributing | ||||
| ------------ | ||||
|  | ||||
| To contribute to the project, go to the `project page <https://gitlab.com/gergelypolonkai/albums-social>`_, open issues, send merge requests, and all the usual stuff. | ||||
|  | ||||
| License | ||||
| ------- | ||||
|  | ||||
| The project is licensed under the GNU Affero General Public License.  See the LICENSE.txt file, or | ||||
| the `online version <https://www.gnu.org/licenses/agpl-3.0.en.html>`_ for details. | ||||
|  | ||||
| Code of Conduct | ||||
| --------------- | ||||
|  | ||||
| We use the `Contributor Covenant <https://www.contributor-covenant.org/version/1/4/code-of-conduct>`_.  Please act accordingly. | ||||
							
								
								
									
										19
									
								
								app/__init__.py
									
									
									
									
									
										普通文件
									
								
							
							
						
						
									
										19
									
								
								app/__init__.py
									
									
									
									
									
										普通文件
									
								
							| @@ -0,0 +1,19 @@ | ||||
| # Albums.social | ||||
| # Copyright (C) 2018 Gergely Polonkai | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify | ||||
| # it under the terms of the GNU Affero General Public License as published by | ||||
| # the Free Software Foundation, either version 3 of the License, or | ||||
| # (at your option) any later version. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| # GNU Affero General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Affero General Public License | ||||
| # along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  | ||||
| from flask import Flask | ||||
|  | ||||
| app = Flask(__name__) | ||||
		在新工单中引用
	
	屏蔽一个用户