All Projects → Kartones → Flask Calendar

Kartones / Flask Calendar

Licence: unlicense
Simple Python & Flask web-calendar

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Flask Calendar

Dockerized Flask
Dockerized web app using NGINX, Flask and PostgreSQL
Stars: ✭ 119 (-4.8%)
Mutual labels:  flask
Skcalendarview
SKCalendarView是一个高可控性的日历基础组件,为了提高应用的自由度,默认只提供了日历部分的视图封装,但不涵盖切换月份按钮、年月分显示等非关键性控件,但请不要担心,SKCalendarView为你提供了多样性的API,你可以很轻松的拿到这些信息去展示在你自己的自定义控件中。不仅如此,SKCalendarView还为你封装了公历、农历、节假日以及中国24节气的核心算法,即使你觉得默认的视图并不合胃口,也可以直接快速的利用这套算法创造出一个全新的日历控件。最后,SKCalendarView还提供了一些简单的切换动画,如果你不喜欢它,可以忽略掉,用自己的,这里完全不会受到任何限制。
Stars: ✭ 121 (-3.2%)
Mutual labels:  calendar
Explore Flask
Source of Explore Flask book
Stars: ✭ 1,595 (+1176%)
Mutual labels:  flask
Pyms
Library of utils to create REST Python Microservices
Stars: ✭ 120 (-4%)
Mutual labels:  flask
Whoogle Search
A self-hosted, ad-free, privacy-respecting metasearch engine
Stars: ✭ 4,645 (+3616%)
Mutual labels:  flask
Pytsp
A 2D/3D visualization of the Traveling Salesman Problem main heuristics
Stars: ✭ 122 (-2.4%)
Mutual labels:  flask
Cosmocalendar
📅 CosmoCalendar is a fully customizable calendar with a wide variety of features and displaying modes.
Stars: ✭ 1,547 (+1137.6%)
Mutual labels:  calendar
Widget
A set of widgets based on jQuery&&javascript. 一套基于jquery或javascript的插件库 :轮播、标签页、滚动条、下拉框、对话框、搜索提示、城市选择(城市三级联动)、日历等
Stars: ✭ 1,579 (+1163.2%)
Mutual labels:  calendar
Python Tutorial
🏃 Some of the python tutorial - 《Python学习笔记》
Stars: ✭ 122 (-2.4%)
Mutual labels:  flask
Search Libc
Web wrapper of niklasb/libc-database
Stars: ✭ 124 (-0.8%)
Mutual labels:  flask
Rcalendarpicker
RCalendarPicker A date picker control, Calendar calendar control, select control, calendar, date selection, the clock selection control. 日历控件 ,日历选择控件,日历,日期选择,时钟选择控件
Stars: ✭ 121 (-3.2%)
Mutual labels:  calendar
Gsimplecal
Simple and lightweight GTK calendar (BSD license)
Stars: ✭ 121 (-3.2%)
Mutual labels:  calendar
Jiosaavnapi
An unofficial API for JioSaavn written in Python 3
Stars: ✭ 123 (-1.6%)
Mutual labels:  flask
Yii2fullcalendar
JQuery Fullcalendar Yii2 Extension
Stars: ✭ 120 (-4%)
Mutual labels:  calendar
Python Resources 2019
A curated list of Python 3 resources, books, websites, tutorials, code challenges
Stars: ✭ 125 (+0%)
Mutual labels:  flask
30 Days Of Python
Learn Python for the next 30 (or so) Days.
Stars: ✭ 1,748 (+1298.4%)
Mutual labels:  flask
Sapic
sapic(picbed) - 基于Flask的Web自建图床,可存储到又拍云、七牛云、阿里云OSS、腾讯云COS、GitHub、Gitee等,支持自定义扩展。
Stars: ✭ 123 (-1.6%)
Mutual labels:  flask
Soul Manga
react + flask + scrapy 构建的单页应用漫画网站
Stars: ✭ 126 (+0.8%)
Mutual labels:  flask
Yspider
yspider -- 轻量级爬虫系统
Stars: ✭ 125 (+0%)
Mutual labels:  flask
Wxa Plugin Calendar
小程序插件-预约日历插件-微信小程序日历插件
Stars: ✭ 124 (-0.8%)
Mutual labels:  calendar

CircleCI

flask-calendar

Introduction

At December 2017, I decided I wanted to opt out from Google services as much as possible. One of the services that tied me most was Calendar. There are not many alternatives, and even fewer web-based. I decided to try using a Trello board with due dates and some labels for a while, but proved to be harder to maintain. Add the lack of a month calendar view, and no support for recurrent/repetitive tasks, and I decided to do good use of a holidays to spend some hours and build a simple GCalendar clone.

Details

Main calendar view:

Main calendar view

Create new task view:

Create new task view

Supports a basic drag & drop on desktop of days (like Google Calendar), edition of existing tasks, creation of repetitive tasks (daily, montly, by weekday, by month day or on specific day number), custom colors, and a few options like hiding past tasks or being able to manually hide those repetitive task ocurrences (I like a "clean view" and usually remove/hide past tasks).

It is mobile friendly (buttons for actions are ugly and cannot drag & drop days on mobile, but otherwise works), might not be perfectly designed for all resolutions but at least works.

Remarks

Compatible with Firefox, Brave and Chrome. No plans for other browser support (but PRs are welcome).

No Javascript libraries and no CSS frameworks used, so this means the corresponding code and styles are accordingly non-impressive.

No databases, as I don't need to do any querying or complex stuff I couldn't also do with JSON files and basic dictionaries.

Authentication works using werkzeug SimpleCache for storage, which means if the application runs with more than one thread you'll get into problems. Run it with a single process uwsgi or similar.

HTML inputs are favoring HTML5 ones instead of fancy jquery-like plugins to reduce support and increase mobile compatibility.

Multi-Day tasks

This feature is built with a basic implementation, with certain limitations:

  • It will clone the task over to each day of the chosen timespan.
  • It doesn't supports edition. Once created, each day's task counts as a single, normal task.
  • It doesn't supports repetition.

Requirements

  • Python 3.5+ (type hints are compatible with 3.5 upwards)

Other requirements are on the requirements.txt file. Install them with pip or similar.

Data Migrations

Starting with version v1.0, there is a \scripts folder that will contain any required migrations. They will be listed here in this section to simplify things.

Migrations

  • data_migration_001: v0.9 -> v1.0. Not backwards compatible once migrated. Must be run before v1.0 logic or server will throw errors and maybe could override old due_time fields.

Docker Environment

  • Development strongly encourages using Docker and Docker Compose.

Running

  • Edit config.py and fill in or adapt to your needs.
make run

Sample username is a_username with password a_password.

Locale

dev Dockerfile installs a sample locale (es_ES), but does not activate it. Refer to that file and to the config.py file for setting up any locale or commenting the lines that install them to speed up container bootup if you're sure don't want them.

Remember you can check which locales you have installed with locale -a and add new ones with the following commands:

cd /usr/share/locales
sudo ./install-language-pack es_ES
sudo dpkg-reconfigure locales

Testing

  • Run tests:
make test
  • Extract code coverage:
make coverage

Contributing / Pull Requests

Please ensure you've setup pre-commit (it's installed, then run pre-commit install on the repository) so that flake8 and other linters run before pushing the code. This project uses black and isort so it might auto-format your files and modify them. Just check them and add to the commit (should only be text formatting and import ordering related).

Virtualenv Environment

  1. Create the virtual environment:
$ python3 -m venv .venv
  1. Activate it:
$ source .venv/bin/activate
  1. Install dependencies (in the virtual environment):
(.venv) $ pip install -r requirements.txt
(.venv) $ pip install -r requirements-dev.txt
  1. You are now ready to run the test, extract coverage or run a testing server:
(.venv) $ # Run tests
(.venv) $ pytest

(.venv) $ # Extract coverage into './cov_html' folder
(.venv) $ pytest --cov-report html:cov_html  --cov=. --cov-config .coveragerc

(.venv) $ # Run testing server
(.venv) $ python -m flask_calendar.app

Miscellaneous

User creation/deletion

As there is no admin interface, to create or delete users you should create a python file with code similar to the following example:

from authentication import Authentication
import config


authentication = Authentication(data_folder=config.USERS_DATA_FOLDER, password_salt=config.PASSWORD_SALT)

# Create a user
authentication.add_user(
    username="a username",
    plaintext_password="a plain password",
    default_calendar="a default calendar id"
)

# Delete a user
authentication.delete_user(username="a username")
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].