"
- + __("Apart from Role based Permission Rules, you can apply User Permissions based on DocTypes.")
- + "
"
-
- + "
"
- + __("These permissions will apply for all transactions where the permitted record is linked. For example, if Company C is added to User Permissions of user X, user X will only be able to see transactions that has company C as a linked value.")
- + "
"
-
- + "
"
- + __("These will also be set as default values for those links, if only one such permission record is defined.")
- + "
"
-
- + "
"
- + __("A user can be permitted to multiple records of the same DocType.")
- + "
'
- +__("These restrictions will apply for Document Types where 'Apply User Permissions' is checked for the permission rule and a field with this value is present.")
- +'
Frappe is a full stack web application framework written in Python,
-Javascript, HTML/CSS with MySQL as the backend. It was built for ERPNext
-but is pretty generic and can be used to build database driven apps.
-
-
The key differece in Frappe compared to other frameworks is that Frappe
-is that meta-data is also treated as data and is used to build front-ends
-very easily. Frappe comes with a full blown admin UI called the Desk
-that handles forms, navigation, lists, menus, permissions, file attachment
-and much more out of the box.
-
-
Frappe also has a plug-in architecture that can be used to build plugins
-to ERPNext.
-
-
Frappe Framework was designed to build ERPNext, open source
-ERP for managing small and medium sized businesses.
-
-
-
-
-
-
\ No newline at end of file
diff --git a/frappe/docs/index.md b/frappe/docs/index.md
new file mode 100644
index 0000000000..1a88720be9
--- /dev/null
+++ b/frappe/docs/index.md
@@ -0,0 +1,25 @@
+# Frappé Framework
+
+### Tutorials, API documentation and Model Reference
+
+Frappé is a full stack web application framework written in Python,
+Javascript, HTML/CSS with MySQL as the backend. It was built for ERPNext
+but is pretty generic and can be used to build database driven apps.
+
+The key differece in Frappé compared to other frameworks is that Frappé
+is that meta-data is also treated as data and is used to build front-ends
+very easily. Frappé comes with a full blown admin UI called the **Desk**
+that handles forms, navigation, lists, menus, permissions, file attachment
+and much more out of the box.
+
+Frappé also has a plug-in architecture that can be used to build plugins
+to ERPNext.
+
+Frappé Framework was designed to build [ERPNext](https://erpnext.com), open source
+ERP for managing small and medium sized businesses.
+
+[Get started with the Tutorial](/docs/user/)
+
+### Feedback
+
+You're encouraged to help improve the quality of this documentation, by sending a pull request on the [GitHub Repository](https://github.com/frappe/erpnext). If you would like to have a discussion regarding the documentation, you can do so [at the forum](https://discuss.erpnext.com).
\ No newline at end of file
diff --git a/frappe/docs/index.txt b/frappe/docs/index.txt
deleted file mode 100644
index 4bdfdc4ac8..0000000000
--- a/frappe/docs/index.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-assets
-user
-contents
-current
-install
-license
diff --git a/frappe/docs/install.md b/frappe/docs/install.md
deleted file mode 100644
index 7350f8f4ab..0000000000
--- a/frappe/docs/install.md
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-# Installation
-
-Frappe Framework is based on the Frappe Framework, a full stack web framework based on Python, MariaDB, Redis, Node.
-
-To intall Frappe Framework, you will have to install the Frappe Bench, the command-line, package manager and site manager for Frappe Framework. For more details, read the Bench README.
-
-After you have installed Frappe Bench, go to you bench folder, which is `frappe.bench` by default and setup **frappe**.
-
- bench get-app frappe {{ source_link }}
-
-Then create a new site to install the app.
-
- bench new-site mysite
-
-This will create a new folder in your `/sites` directory and create a new database for this site.
-
-Next, install frappe in this site
-
- bench --site mysite install-app frappe
-
-To run this locally, run
-
- bench start
-
-Fire up your browser and go to http://localhost:8000 and you should see the login screen. Login as **Administrator** and **admin** (or the password you set at the time of `new-site`) and you are set.
-
-
-
\ No newline at end of file
diff --git a/frappe/docs/license.html b/frappe/docs/license.html
deleted file mode 100644
index 602685d65f..0000000000
--- a/frappe/docs/license.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
MIT
-
-
The MIT License (MIT)
-
-
Copyright (c) 2016 Frappe Technologies Pvt. Ltd.
-
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
\ No newline at end of file
diff --git a/frappe/docs/user/en/bench/guides/diagnosing-the-scheduler.md b/frappe/docs/user/en/bench/guides/diagnosing-the-scheduler.md
index a0661dbb17..492205cf5b 100755
--- a/frappe/docs/user/en/bench/guides/diagnosing-the-scheduler.md
+++ b/frappe/docs/user/en/bench/guides/diagnosing-the-scheduler.md
@@ -1,3 +1,5 @@
+# Diagnosing The Scheduler
+
If you're experiencing delays in scheduled jobs or they don't seem to run, you can run the several commands to diagnose the issue.
diff --git a/frappe/docs/user/en/bench/guides/index.md b/frappe/docs/user/en/bench/guides/index.md
index 0dff60b400..8ab035a2f5 100644
--- a/frappe/docs/user/en/bench/guides/index.md
+++ b/frappe/docs/user/en/bench/guides/index.md
@@ -1 +1,5 @@
+# Guides
+
+
+
{index}
\ No newline at end of file
diff --git a/frappe/docs/user/en/bench/guides/manual-setup.md b/frappe/docs/user/en/bench/guides/manual-setup.md
index a0c55f374f..bc9272b3b3 100755
--- a/frappe/docs/user/en/bench/guides/manual-setup.md
+++ b/frappe/docs/user/en/bench/guides/manual-setup.md
@@ -1,3 +1,5 @@
+# Manual Setup
+
Manual Setup
--------------
@@ -49,7 +51,7 @@ Basic Usage
* Add site
- Frappe apps are run by frappe sites and you will have to create at least one
+ Frappé apps are run by frappe sites and you will have to create at least one
site. The new-site command allows you to do that.
bench new-site site1.local
@@ -60,7 +62,7 @@ Basic Usage
bench start
- To login to Frappe / ERPNext, open your browser and go to `localhost:8000`
+ To login to Frappé / ERPNext, open your browser and go to `localhost:8000`
The default user name is "Administrator" and password is what you set when you created the new site.
diff --git a/frappe/docs/user/en/bench/guides/settings-limits.md b/frappe/docs/user/en/bench/guides/settings-limits.md
index 8d2a9e4b1d..0960b98843 100644
--- a/frappe/docs/user/en/bench/guides/settings-limits.md
+++ b/frappe/docs/user/en/bench/guides/settings-limits.md
@@ -1,6 +1,6 @@
# Setting Limits for your Site
-Frappe v7 has added support for setting limits and restrictions for your site.
+Frappé v7 has added support for setting limits and restrictions for your site.
These restrictions are set in the `site_config.json` file inside the site's folder.
{
@@ -36,4 +36,4 @@ Example:
You can check your usage by opening the "Usage Info" page from the toolbar / AwesomeBar. A limit will only show up on the page if it has been set.
-
+
diff --git a/frappe/docs/user/en/bench/guides/setup-multitenancy.md b/frappe/docs/user/en/bench/guides/setup-multitenancy.md
index 8f204cd9eb..1404fd707c 100755
--- a/frappe/docs/user/en/bench/guides/setup-multitenancy.md
+++ b/frappe/docs/user/en/bench/guides/setup-multitenancy.md
@@ -1,3 +1,5 @@
+# Setup Multitenancy
+
Assuming that you've already got your first site running and you've performed
the [production deployment steps](setup-production.html), this section explains how to host your second
site (and more). Your first site is automatically set as default site. You can
diff --git a/frappe/docs/user/en/bench/guides/setup-production.md b/frappe/docs/user/en/bench/guides/setup-production.md
index 414aab10e2..171adc3b9f 100644
--- a/frappe/docs/user/en/bench/guides/setup-production.md
+++ b/frappe/docs/user/en/bench/guides/setup-production.md
@@ -1,3 +1,5 @@
+# Setup Production
+
You can setup the bench for production use by configuring two programs, Supervisor and nginx. If you want to revert your Production Setup to Development Setup refer to [these commands](https://github.com/frappe/bench/wiki/Stopping-Production-and-starting-Development)
####Easy Production Setup
@@ -8,7 +10,7 @@ These steps are automated if you run `sudo bench setup production`
Supervisor
----------
-Supervisor makes sure that the process that power the Frappe system keep running
+Supervisor makes sure that the process that power the Frappé system keep running
and it restarts them if they happen to crash. You can generate the required
configuration for supervisor using the command `bench setup supervisor`. The
configuration will be available in `config/supervisor.conf` directory. You can
diff --git a/frappe/docs/user/en/bench/index.md b/frappe/docs/user/en/bench/index.md
index 0dff60b400..39e8cc0ffe 100644
--- a/frappe/docs/user/en/bench/index.md
+++ b/frappe/docs/user/en/bench/index.md
@@ -1 +1,3 @@
+# Bench
+
{index}
\ No newline at end of file
diff --git a/frappe/docs/user/en/bench/resources/background-services.md b/frappe/docs/user/en/bench/resources/background-services.md
index d019d25d8c..253f858c19 100755
--- a/frappe/docs/user/en/bench/resources/background-services.md
+++ b/frappe/docs/user/en/bench/resources/background-services.md
@@ -1,3 +1,5 @@
+# Background Services
+
External services
-----------------
@@ -6,7 +8,7 @@ External services
* nginx (for production deployment)
* supervisor (for production deployment)
-Frappe Processes
+Frappé Processes
----------------
@@ -19,12 +21,12 @@ Frappe Processes
* Redis Worker Processes
- * The Celery worker processes execute background jobs in the Frappe system.
+ * The Celery worker processes execute background jobs in the Frappé system.
These processes are automatically started when `bench start` is run and
for production are configured in supervisor configuration.
* Scheduler Process
* The Scheduler process schedules enqeueing of scheduled jobs in the
- Frappe system. This process is automatically started when `bench start` is
+ Frappé system. This process is automatically started when `bench start` is
run and for production are configured in supervisor configuration.
\ No newline at end of file
diff --git a/frappe/docs/user/en/bench/resources/bench-commands-cheatsheet.md b/frappe/docs/user/en/bench/resources/bench-commands-cheatsheet.md
index b412d5f78a..054cd072f6 100755
--- a/frappe/docs/user/en/bench/resources/bench-commands-cheatsheet.md
+++ b/frappe/docs/user/en/bench/resources/bench-commands-cheatsheet.md
@@ -1,3 +1,5 @@
+# Bench Commands Cheatsheet
+
### General Usage
* `bench --version` - Show bench version
* `bench src` - Show bench repo directory
diff --git a/frappe/docs/user/en/bench/resources/bench-procfile.md b/frappe/docs/user/en/bench/resources/bench-procfile.md
index 61ecfc6eec..9a9176556c 100755
--- a/frappe/docs/user/en/bench/resources/bench-procfile.md
+++ b/frappe/docs/user/en/bench/resources/bench-procfile.md
@@ -1,3 +1,5 @@
+# Bench Procfile
+
`bench start` uses [honcho](http://honcho.readthedocs.org) to manage multiple processes in **developer mode**.
### Processes
diff --git a/frappe/docs/user/en/bench/resources/index.md b/frappe/docs/user/en/bench/resources/index.md
index 0dff60b400..48852466ed 100644
--- a/frappe/docs/user/en/bench/resources/index.md
+++ b/frappe/docs/user/en/bench/resources/index.md
@@ -1 +1,5 @@
+# Resources
+
+
+
{index}
\ No newline at end of file
diff --git a/frappe/docs/user/en/guides/app-development/adding-custom-button-to-form.md b/frappe/docs/user/en/guides/app-development/adding-custom-button-to-form.md
index 29a1a608b3..fba6397b94 100644
--- a/frappe/docs/user/en/guides/app-development/adding-custom-button-to-form.md
+++ b/frappe/docs/user/en/guides/app-development/adding-custom-button-to-form.md
@@ -1,3 +1,5 @@
+# Adding Custom Button To Form
+
To create a custom button on your form, you need to edit the javascript file associated to your doctype. For example, If you want to add a custom button to User form then you must edit `user.js`.
In this file, you need to write a new method `add_custom_button` which should add a button to your form.
@@ -22,7 +24,7 @@ We should edit `frappe\core\doctype\user\user.js`
You should be seeing a button on user form as shown below,
-
+
diff --git a/frappe/docs/user/en/guides/app-development/adding-module-icons-on-desktop.md b/frappe/docs/user/en/guides/app-development/adding-module-icons-on-desktop.md
index 44b014267d..4fbf6fda1e 100755
--- a/frappe/docs/user/en/guides/app-development/adding-module-icons-on-desktop.md
+++ b/frappe/docs/user/en/guides/app-development/adding-module-icons-on-desktop.md
@@ -1,3 +1,5 @@
+# Adding Module Icons On Desktop
+
To create a module icon for a Page, List or Module, you will have to edit the `config/desktop.py` file in your app.
In this file you will have to write the `get_data` method that will return a dict object with the module icon parameters
diff --git a/frappe/docs/user/en/guides/app-development/custom-module-icon.md b/frappe/docs/user/en/guides/app-development/custom-module-icon.md
index 609f7f3803..4a001b9c2c 100755
--- a/frappe/docs/user/en/guides/app-development/custom-module-icon.md
+++ b/frappe/docs/user/en/guides/app-development/custom-module-icon.md
@@ -1,3 +1,5 @@
+# Custom Module Icon
+
If you want to create a custom icon for your module, you will have to create an SVG file for your module and set the path to this file in the `desktop/config.py` of your app.
This icon is loaded via AJAX first time, then it will be rendered.
@@ -8,10 +10,10 @@ Example:
def get_data():
return {
- "Frappe Apps": {
+ "Frappé Apps": {
"color": "orange",
"icon": "assets/frappe/images/frappe.svg",
- "label": _("Frappe.io Portal"),
+ "label": _("Frappé.io Portal"),
"type": "module"
}
}
diff --git a/frappe/docs/user/en/guides/app-development/dialogs-types.md b/frappe/docs/user/en/guides/app-development/dialogs-types.md
index a1aa4f9a07..99902aed71 100755
--- a/frappe/docs/user/en/guides/app-development/dialogs-types.md
+++ b/frappe/docs/user/en/guides/app-development/dialogs-types.md
@@ -1,8 +1,10 @@
-Frappe provide a group of standard dialogs that are very usefull while coding.
+# Dialogs Types
+
+Frappé provide a group of standard dialogs that are very usefull while coding.
## Alert Dialog
-
+
Is helpfull for show a non-obstructive message.
@@ -16,7 +18,7 @@ This dialog have 2 parameters `txt`that is the message and `seconds` that is the
## Prompt Dialog
-
+
Is helpful for ask a value for the user
@@ -42,7 +44,7 @@ This dialog have 4 parameters, they are:
---
## Confirm Dialog
-
+
Usefull to get a confirmation from the user before do an action
@@ -68,7 +70,7 @@ This dialog have 3 arguments, they are:
## Message Print
-
+
Is helpfull for show a informational dialog for the user;
@@ -91,7 +93,7 @@ This dialog have 2 arguments, they are:
### Custom Dialog
-
+
Frappé provide too a `Class` that you can extend and build your own custom dialogs
diff --git a/frappe/docs/user/en/guides/app-development/executing-code-on-doctype-events.md b/frappe/docs/user/en/guides/app-development/executing-code-on-doctype-events.md
index a5b57e0920..ff03f85236 100755
--- a/frappe/docs/user/en/guides/app-development/executing-code-on-doctype-events.md
+++ b/frappe/docs/user/en/guides/app-development/executing-code-on-doctype-events.md
@@ -1,3 +1,5 @@
+# Executing Code On Doctype Events
+
To execute code when a DocType is inserted, validated (before saving), updated, submitted, cancelled, deleted, you must write in the DocType's controller module.
#### 1. Controller Module
diff --git a/frappe/docs/user/en/guides/app-development/exporting-customizations.md b/frappe/docs/user/en/guides/app-development/exporting-customizations.md
index 12592ecb02..710db1d3e5 100644
--- a/frappe/docs/user/en/guides/app-development/exporting-customizations.md
+++ b/frappe/docs/user/en/guides/app-development/exporting-customizations.md
@@ -4,12 +4,12 @@ A common use case is to extend a DocType via Custom Fields and Property Setters
You will see a button for **Export Customizations**
-
+
Here you can select the module and whether you want these particular customizations to be synced after every update.
The customizations will be exported to a new folder `custom` in the module folder of your app. The customizations will be saved by the name of the DocType
-
+
When you do `bench update` or `bench migrate` these customizations will be synced to the app.
\ No newline at end of file
diff --git a/frappe/docs/user/en/guides/app-development/fetch-custom-field-value-from-master-to-all-related-transactions.md b/frappe/docs/user/en/guides/app-development/fetch-custom-field-value-from-master-to-all-related-transactions.md
index d6e495ca1e..7e47d63f5f 100755
--- a/frappe/docs/user/en/guides/app-development/fetch-custom-field-value-from-master-to-all-related-transactions.md
+++ b/frappe/docs/user/en/guides/app-development/fetch-custom-field-value-from-master-to-all-related-transactions.md
@@ -5,11 +5,11 @@ Let's say, there is a custom field "VAT Number" in Supplier, which should be fet
#### Steps:
1. Create a Custom Field **VAT Number** for *Supplier* document with *Field Type* as **Data**.
-
+
1. Create another Custom Field **VAT Number** for *Purchase Order* document, but in this case with *Field Type* as **Read Only** or check **Read Only** checkbox. Set the **Options** as `supplier.vat_number`.
-
+
1. Go to the user menu and click "Reload".
1. Now, on selection of Supplier in a new Purchase Order, **VAT Number** will be fetched automatically from the selected Supplier.
-
+
diff --git a/frappe/docs/user/en/guides/app-development/generating-docs.md b/frappe/docs/user/en/guides/app-development/generating-docs.md
index 8494533d22..3f08c68ec9 100755
--- a/frappe/docs/user/en/guides/app-development/generating-docs.md
+++ b/frappe/docs/user/en/guides/app-development/generating-docs.md
@@ -1,18 +1,17 @@
# Generating Documentation Website for your App
-Frappe version 6.7 onwards includes a full-blown documentation generator so that you can easily create a website for your app that has both user docs and developers docs (auto-generated). These pages are generated as static HTML pages so that you can add them as GitHub pages.
+Frappé version 6.7 onwards includes a full-blown documentation generator so that you can easily create a website for your app that has both user docs and developers docs (auto-generated).
+
+Version 8.7 onwards, these will be generated in a target app.
## Writing Docs
### 1. Setting up docs
-#### 1.1. Setup `docs.py`
-
The first step is to setup the docs folder. For that you must create a new file in your app `config/docs.py` if it is not auto-generated. In your `docs.py` file, add the following module properties.
source_link = "https://github.com/[orgname]/[reponame]"
- docs_base_url = "https://[orgname].github.io/[reponame]"
headline = "This is what my app does"
sub_heading = "Slightly more details with key features"
long_description = """(long description in markdown)"""
@@ -29,16 +28,6 @@ The first step is to setup the docs folder. For that you must create a new file
pass
-#### 1.2. Generate `/docs`
-
-To generate the docs for the `current` version, go to the command line and write
-
- bench --site [site] build-docs [appname]
-
-If you want to maintain versions of your docs, then you can add a version number instead of `current`
-
-This will create a `/docs` folder in your app.
-
### 2. Add User Documentation
To add user documentation, add folders and pages in your `/docs/user` folder in the same way you would build a website pages in the `www` folder.
@@ -51,64 +40,31 @@ Some quick tips:
### 3. Linking
-While linking make sure you add `{{ docs_base_url }}` to all your links.
+While linking make sure you add `/docs` to all your links.
- {% raw %}Link Description{% endraw %}
+ {% raw %}Link Description{% endraw %}
### 4. Adding Images
You can add images in the `/docs/assets` folder. You can add links to the images as follows:
- {% raw %}{% endraw %}
-
----
-
-## Setting up output docs
-
-The output docs are generated in your `docs/appname` folder using the `write-docs` command.
-
----
-
-## Viewing Locally
-
-To test your docs locally, add a `--local` option to the `write-docs` command.
-
- bench --site [site] write-docs [appname] --local
-
-Then it will build urls so that you can view these files locally. To view them locally in your browser, you can use the Python SimpleHTTPServer
-
-Run this from your `docs/myapp` folder:
-
- python -m SimpleHTTPServer 8080
+ {% raw %}{% endraw %}
---
-## Publishing to GitHub Pages
-To publish your docs on GitHub pages, you will have to create an empty and orphan branch in your repository called `gh-pages` and push your documentation there.
+## Building Docs
-1. To easily publish your docs on gh-pages, commit and push your `apps/docs` folder on you master branch first.
-2. The `/docs` generation will also generate a `/docs` folder in your bench, parallel to your `/sites` folder. e.g. `/frappe-bench/docs`
-3. Generate you documentation using the `write-docs` command.
-4. Go to your docs folder `cd docs/myapp`
-5. Checkout the gh-pages branch `git checkout --orphan gh-pages`
-6. Push your documentation to Github.
+You must create a new app that will have the output of the docs, which is called the "target" app. For example, the docs for ERPNext are hosted at erpnext.org, which is based on the app "foundation". You can create a new app just to push docs of any other app.
-Note > The branch name `gh-pages` is only if you are using GitHub. If you are hosting this on any other static file server, you can create any other orphan branch instead.
+To output docs to another app,
-Putting it all together:
+ bench --site [site] build-docs [app] --target [target_app]
- # build the apps/docs folder and write the compiled docs at docs/appname
- bench --site [site] build-docs [appname]
+This will create a new folder `/docs` inside the `www` folder of the target app and generate automatic docs (from code), model references and copy user docs and assets.
- # commit to the gh-pages branch (for GitHub Pages)
- cd docs/appname
- git checkout --orphan gh-pages
- git remote add origin [remote git repository]
- git add *
- git commit -m "Documentation Initialization"
- git push origin gh-pages
+To view the docs, just go the the `/docs` url on your target app. Example:
-To check your documentation online go to: https://[orgname].github.io/[reponame]
+ https://erpnext.org/docs
diff --git a/frappe/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe.md b/frappe/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe.md
index 5c47385fbd..b3c769828a 100755
--- a/frappe/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe.md
+++ b/frappe/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe.md
@@ -1,3 +1,5 @@
+# How Enable Developer Mode In Frappé
+
When you are in application design mode and you want the changes in your DocTypes, Reports etc to affect the app repository, you must be in **Developer Mode**.
To enable developer mode, update the `site_config.json` file of your site in the sites folder for example:
diff --git a/frappe/docs/user/en/guides/app-development/how-to-create-custom-fields-during-app-installation.md b/frappe/docs/user/en/guides/app-development/how-to-create-custom-fields-during-app-installation.md
index 20b7fdce30..0b71521116 100755
--- a/frappe/docs/user/en/guides/app-development/how-to-create-custom-fields-during-app-installation.md
+++ b/frappe/docs/user/en/guides/app-development/how-to-create-custom-fields-during-app-installation.md
@@ -1,6 +1,8 @@
+# How To Create Custom Fields During App Installation
+
Your custom app can automatically add **Custom Fields** to DocTypes outside of your app when it is installed to a new site.
-To do this, add the new custom fields that your app requires, using the Frappe web application.
+To do this, add the new custom fields that your app requires, using the Frappé web application.
In your `hooks.py` file, add `"Custom Fields"`
diff --git a/frappe/docs/user/en/guides/app-development/how-to-improve-a-standard-control.md b/frappe/docs/user/en/guides/app-development/how-to-improve-a-standard-control.md
index e3c8ef82c0..df137db2a9 100755
--- a/frappe/docs/user/en/guides/app-development/how-to-improve-a-standard-control.md
+++ b/frappe/docs/user/en/guides/app-development/how-to-improve-a-standard-control.md
@@ -1,3 +1,5 @@
+# How To Improve A Standard Control
+
Frappé has a couple of elegant and useful widgets, but some times we need to edit them to add small improvements. This small article will describe how to add new resources to the standard widgets.
Let me explain first our goal:
diff --git a/frappe/docs/user/en/guides/app-development/insert-a-document-via-api.md b/frappe/docs/user/en/guides/app-development/insert-a-document-via-api.md
index aab15b4ac9..c3a8358ddb 100755
--- a/frappe/docs/user/en/guides/app-development/insert-a-document-via-api.md
+++ b/frappe/docs/user/en/guides/app-development/insert-a-document-via-api.md
@@ -1,3 +1,5 @@
+# Insert A Document Via Api
+
You can insert documents via a script using the `frappe.get_doc` method
### Examples:
diff --git a/frappe/docs/user/en/guides/app-development/overriding-link-query-by-custom-script.md b/frappe/docs/user/en/guides/app-development/overriding-link-query-by-custom-script.md
index cc8c8058fd..4e78d7fd58 100755
--- a/frappe/docs/user/en/guides/app-development/overriding-link-query-by-custom-script.md
+++ b/frappe/docs/user/en/guides/app-development/overriding-link-query-by-custom-script.md
@@ -1,3 +1,5 @@
+# Overriding Link Query By Custom Script
+
You can override the standard link query by using `set_query`
### 1. Adding Fitlers
diff --git a/frappe/docs/user/en/guides/app-development/running-background-jobs.md b/frappe/docs/user/en/guides/app-development/running-background-jobs.md
index ae2972b855..f46349d36f 100644
--- a/frappe/docs/user/en/guides/app-development/running-background-jobs.md
+++ b/frappe/docs/user/en/guides/app-development/running-background-jobs.md
@@ -1,6 +1,8 @@
+# Running Background Jobs
+
Sometimes you may not want a user request to be executed immediately but added to a queue that will be executed by a background worker. The advantage of doing this is that your web workers remain free to execute other requests and longer jobs do not eat up all of your resources.
-From version 7, Frappe uses Python RQ to run background jobs.
+From version 7, Frappé uses Python RQ to run background jobs.
To enqueue a job,
diff --git a/frappe/docs/user/en/guides/app-development/single-type-doctype.md b/frappe/docs/user/en/guides/app-development/single-type-doctype.md
index ee5c24b492..3565246506 100755
--- a/frappe/docs/user/en/guides/app-development/single-type-doctype.md
+++ b/frappe/docs/user/en/guides/app-development/single-type-doctype.md
@@ -1,3 +1,5 @@
+# Single Type Doctype
+
DocTypes have a table associated with them. For example DocType **Customer** will have a table `tabCustomer` associated with it.
**Single** type DocTypes have no table associated and there is only one Document for it. This is similar to the Singleton pattern in Java. Single DocTypes are ideal for saving Settings (that are globally applicable) and for wizard / helper type forms that have no documents, but when the DocType is used for the Form UI.
@@ -6,4 +8,4 @@ The data in Single DocType is stored in `tabSingles` (`doctype`, `field`, `value
#### Examples
-In Frappe, Single types are **System Settings** and **Customize Form**
\ No newline at end of file
+In Frappé, Single types are **System Settings** and **Customize Form**
\ No newline at end of file
diff --git a/frappe/docs/user/en/guides/app-development/trigger-event-on-deletion-of-grid-row.md b/frappe/docs/user/en/guides/app-development/trigger-event-on-deletion-of-grid-row.md
index cc60f6d0b8..776742d4ea 100755
--- a/frappe/docs/user/en/guides/app-development/trigger-event-on-deletion-of-grid-row.md
+++ b/frappe/docs/user/en/guides/app-development/trigger-event-on-deletion-of-grid-row.md
@@ -1,3 +1,5 @@
+# Trigger Event On Deletion Of Grid Row
+
To trigger an event when a row from a Child Table has been deleted (when user clicks on `delete` button), you need to add a handler the `fieldname_remove` event to Child Table, where fieldname is the fieldname of the Child Table in Parent Table declaration.
For example:
diff --git a/frappe/docs/user/en/guides/app-development/using-html-templates-in-javascript.md b/frappe/docs/user/en/guides/app-development/using-html-templates-in-javascript.md
index f6242babb7..2de921551f 100755
--- a/frappe/docs/user/en/guides/app-development/using-html-templates-in-javascript.md
+++ b/frappe/docs/user/en/guides/app-development/using-html-templates-in-javascript.md
@@ -1,6 +1,8 @@
-Often while building javascript interfaces, there is a need to render DOM as an HTML template. Frappe Framework uses John Resig's Microtemplate script to render HTML templates in the Desk application.
+# Using Html Templates In Javascript
-> Note 1: In Frappe we use the Jinja-like `{% raw %}{%{% endraw %}` tags to embed code rather than the standard `<%`
+Often while building javascript interfaces, there is a need to render DOM as an HTML template. Frappé Framework uses John Resig's Microtemplate script to render HTML templates in the Desk application.
+
+> Note 1: In Frappé we use the Jinja-like `{% raw %}{%{% endraw %}` tags to embed code rather than the standard `<%`
> Note 2: Never use single quotes `'` inside the HTML template.
diff --git a/frappe/docs/user/en/guides/automated-testing/qunit-testing.md b/frappe/docs/user/en/guides/automated-testing/qunit-testing.md
index ac7a1f3ccf..55a1242e51 100644
--- a/frappe/docs/user/en/guides/automated-testing/qunit-testing.md
+++ b/frappe/docs/user/en/guides/automated-testing/qunit-testing.md
@@ -1,4 +1,4 @@
-# UI Testing with Frappe API
+# UI Testing with Frappé API
You can either write integration tests, or directly write tests in Javascript using [QUnit](http://api.qunitjs.com/)
@@ -12,7 +12,7 @@ To run your files, you can use the **Test Runner**. The **Test Runner** gives a
In the CI, all QUnit tests are run by the **Test Runner** using `frappe/tests/test_test_runner.py`
-
+
### Running Tests
diff --git a/frappe/docs/user/en/guides/automated-testing/unit-testing.md b/frappe/docs/user/en/guides/automated-testing/unit-testing.md
index 730ae792de..b5c2a8b8b2 100755
--- a/frappe/docs/user/en/guides/automated-testing/unit-testing.md
+++ b/frappe/docs/user/en/guides/automated-testing/unit-testing.md
@@ -2,12 +2,12 @@
## 1.Introduction
-Frappe provides some basic tooling to quickly write automated tests. There are some basic rules:
+Frappé provides some basic tooling to quickly write automated tests. There are some basic rules:
1. Test can be anywhere in your repository but must begin with `test_` and should be a `.py` file.
1. Tests must run on a site that starts with `test_`. This is to prevent accidental loss of data.
1. Test stubs are automatically generated for new DocTypes.
-1. Frappe test runner will automatically build test records for dependant DocTypes identified by the `Link` type field (Foreign Key)
+1. Frappé test runner will automatically build test records for dependant DocTypes identified by the `Link` type field (Foreign Key)
1. Tests can be executed using `bench run-tests`
1. For non-DocType tests, you can write simple unittests and prefix your file names with `test_`.
@@ -159,7 +159,7 @@ It’s designed for the CI Jenkins, but will work for anything else that underst
#### Example (for `test_event.py`):
- # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+ # Copyright (c) 2015, Frappé Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
import frappe
diff --git a/frappe/docs/user/en/guides/basics/apps.md b/frappe/docs/user/en/guides/basics/apps.md
index 5805ad38af..2498992172 100755
--- a/frappe/docs/user/en/guides/basics/apps.md
+++ b/frappe/docs/user/en/guides/basics/apps.md
@@ -1,6 +1,6 @@
-# Frappe Apps
+# Frappé Apps
-Frappe Apps are Python packages which use the Frappe platform. They can live
+Frappé Apps are Python packages which use the Frappé platform. They can live
anywhere on the [Python
path](https://docs.python.org/2/tutorial/modules.html#the-module-search-path)
and must have an entry in the `apps.txt` file.
@@ -8,7 +8,7 @@ and must have an entry in the `apps.txt` file.
### Creating an app
-Frappe ships with a boiler plate for a new app. The command `bench make-app
+Frappé ships with a boiler plate for a new app. The command `bench make-app
app-name` helps you start a new app by starting an interactive shell.
@@ -58,7 +58,7 @@ The boiler plate contains just enough files to show your app icon on the [Desk].
#### `hooks.py`
The `hooks.py` file defines the metadata of your app and integration points
-with other parts of Frappe or Frappe apps. Examples of such parts include task
+with other parts of Frappé or Frappé apps. Examples of such parts include task
scheduling or listening to updates to different documents in the system. For
now, it just contains the details you entered during app creation.
@@ -75,7 +75,7 @@ now, it just contains the details you entered during app creation.
#### `modules.txt`
-Modules in Frappe help you organize Documents in Frappe and they are defined in
+Modules in Frappé help you organize Documents in Frappé and they are defined in
the `modules.txt` file in your app. It is necessary for every [DocType] to be
attached to a module. By default a module by the name of your app is added.
Also, each module gets an icon on the [Desk]. For example, the [ERPNext] app is
diff --git a/frappe/docs/user/en/guides/basics/frappe_ajax_call.md b/frappe/docs/user/en/guides/basics/frappe_ajax_call.md
index a92356843a..7f5294015e 100644
--- a/frappe/docs/user/en/guides/basics/frappe_ajax_call.md
+++ b/frappe/docs/user/en/guides/basics/frappe_ajax_call.md
@@ -1,4 +1,6 @@
-In Frappe Framework, you can manage ajax calls via frappe.call. The frappe.call works in asynchronous manner ie. send requests and handle response via callback mechanism.
+# Frappé Ajax Call
+
+In Frappé Framework, you can manage ajax calls via frappe.call. The frappe.call works in asynchronous manner ie. send requests and handle response via callback mechanism.
## frappe.call Structure
diff --git a/frappe/docs/user/en/guides/basics/hooks.md b/frappe/docs/user/en/guides/basics/hooks.md
index 5a3eabf419..9fb71f7800 100755
--- a/frappe/docs/user/en/guides/basics/hooks.md
+++ b/frappe/docs/user/en/guides/basics/hooks.md
@@ -1,14 +1,14 @@
# Hooks
-Hooks are the duct tape of the Frappe system. Hooks allow you to "hook" in to
-functionality and events of other parts of the Frappe system. Following are the
-official hooks from Frappe.
+Hooks are the duct tape of the Frappé system. Hooks allow you to "hook" in to
+functionality and events of other parts of the Frappé system. Following are the
+official hooks from Frappé.
### Application Name and Details
1. `app_name` - slugified name with underscores e.g. "shopping\_cart"
-2. `app_title` - full title name e.g. "Frappe"
+2. `app_title` - full title name e.g. "Frappé"
3. `app_publisher`
4. `app_description`
5. `app_version`
@@ -31,7 +31,7 @@ Note, the `before_install` and `after_install` hooks are called with no argument
### Boot Session
-After a successful login, the Frappe JS Client requests for a resource called
+After a successful login, the Frappé JS Client requests for a resource called
`bootinfo`. The `bootinfo` is available as a global in Javascript via
`frappe.boot`. By default, the `bootinfo` contains
@@ -123,7 +123,7 @@ which will be called with a context (dictionary) argument.
### Customizing Email footer
-By default, for every email, a footer with content, "Sent via Frappe" is sent.
+By default, for every email, a footer with content, "Sent via Frappé" is sent.
You can customize this globally by adding a `mail_footer` hook. The hook should
be a dotted path to a variable.
@@ -144,7 +144,7 @@ Eg,
### Website Clear Cache
If you cache values in your views, the `website_clear_cache` allows you to hook
-methods that invalidate your caches when Frappe tries to clear cache for all
+methods that invalidate your caches when Frappé tries to clear cache for all
website related pages.
### Document hooks
diff --git a/frappe/docs/user/en/guides/basics/install.md b/frappe/docs/user/en/guides/basics/install.md
index 3afa43a37c..cf65752cf1 100755
--- a/frappe/docs/user/en/guides/basics/install.md
+++ b/frappe/docs/user/en/guides/basics/install.md
@@ -1,10 +1,10 @@
-# Installing Frappe
+# Installing Frappé
-## Frappe bench
+## Frappé bench
The following steps help you setup an isolated environment (bench) to run and
-develop Frappe apps. A virtualenv is installed in the env directory. You can
+develop Frappé apps. A virtualenv is installed in the env directory. You can
activate it by running `source ./env/bin/activate` or use execute using
absolute/relative path (eg, `./env/bin/frappe`).
-For more info, see [Frappe Bench](https://github.com/frappe/bench/)
+For more info, see [Frappé Bench](https://github.com/frappe/bench/)
diff --git a/frappe/docs/user/en/guides/basics/site_config.md b/frappe/docs/user/en/guides/basics/site_config.md
index cf56db9e9a..4f4407271e 100755
--- a/frappe/docs/user/en/guides/basics/site_config.md
+++ b/frappe/docs/user/en/guides/basics/site_config.md
@@ -28,7 +28,7 @@ Example:
### Remote Database Host Settings
- `db_host`: Database host if not `localhost`.
-To connect to a remote database server using ssl, you must first configure the database host to accept SSL connections. An example of how to do this is available at https://www.digitalocean.com/community/tutorials/how-to-configure-ssl-tls-for-mysql-on-ubuntu-16-04. After you do the configuration, set the following three options. All options must be set for Frappe to attempt to connect using SSL.
+To connect to a remote database server using ssl, you must first configure the database host to accept SSL connections. An example of how to do this is available at https://www.digitalocean.com/community/tutorials/how-to-configure-ssl-tls-for-mysql-on-ubuntu-16-04. After you do the configuration, set the following three options. All options must be set for Frappé to attempt to connect using SSL.
- `db_ssl_ca`: Full path to the ca.pem file used for connecting to a database host using ssl. Example value is `"/etc/mysql/ssl/ca.pem"`.
- `db_ssl_cert`: Full path to the cert.pem file used for connecting to a database host using ssl. Example value is `"/etc/mysql/ssl/client-cert.pem"`.
- `db_ssl_key`: Full path to the key.pem file used for connecting to a database host using ssl. Example value is `"/etc/mysql/ssl/client-key.pem"`.
diff --git a/frappe/docs/user/en/guides/basics/sites.md b/frappe/docs/user/en/guides/basics/sites.md
index 00b0007007..abf360cdf1 100755
--- a/frappe/docs/user/en/guides/basics/sites.md
+++ b/frappe/docs/user/en/guides/basics/sites.md
@@ -2,7 +2,7 @@
## Sites Directory
-Frappe is a multitenant platform and each tenant is called a site. Sites exist
+Frappé is a multitenant platform and each tenant is called a site. Sites exist
in a directory called `sites_dir`, assumed as the current working directory when
running a frappe command or other services like Celery worker or a WSGI server.
@@ -13,10 +13,10 @@ Apart from the sites, the `sites_dir` should contain the following.
#### apps.txt
-`apps.txt` contain a list of Python packages to treat as Frappe apps. Every
+`apps.txt` contain a list of Python packages to treat as Frappé apps. Every
frappe app that you intend to use in you site should have an entry in this file.
Also, they should be in the `PYTHONPATH`. For more information, refer
-[Frappe Apps](/help/apps).
+[Frappé Apps](/help/apps).
#### common\_site\_config.json
@@ -35,7 +35,7 @@ generated using the `bench build` command.
## Site
-A site is a directory in `sites_dir` which represents a tenant in Frappe Platform.
+A site is a directory in `sites_dir` which represents a tenant in Frappé Platform.
### Directory Structure
@@ -70,7 +70,7 @@ Presently, it is limited only to backups.
While responding to an HTTP request, a site is automatically selected based on,
* `Host` header in the HTTP request matches a site
-* `X-Frappe-Site-Name` header in the HTTP request matches a site
+* `X-Frappé-Site-Name` header in the HTTP request matches a site
It is also possible to force the development server to serve a specific site by
starting it with the following command.
diff --git a/frappe/docs/user/en/guides/basics/translations.md b/frappe/docs/user/en/guides/basics/translations.md
index e5ff22e9f2..86d630898f 100755
--- a/frappe/docs/user/en/guides/basics/translations.md
+++ b/frappe/docs/user/en/guides/basics/translations.md
@@ -1,3 +1,5 @@
+# Translations
+
diff --git a/frappe/docs/user/en/guides/data/import-large-csv-file.md b/frappe/docs/user/en/guides/data/import-large-csv-file.md
index 5194ebd98d..013d02ac92 100755
--- a/frappe/docs/user/en/guides/data/import-large-csv-file.md
+++ b/frappe/docs/user/en/guides/data/import-large-csv-file.md
@@ -1,3 +1,5 @@
+# Import Large Csv File
+
To import very large CSV files, you can use the bench utility `import-csv`.
The benefit is that this is not subject to timeouts if you use the web interface.
diff --git a/frappe/docs/user/en/guides/deployment/email-notifications-for-failed-background-jobs.md b/frappe/docs/user/en/guides/deployment/email-notifications-for-failed-background-jobs.md
index 03f57eb410..b56c57891b 100755
--- a/frappe/docs/user/en/guides/deployment/email-notifications-for-failed-background-jobs.md
+++ b/frappe/docs/user/en/guides/deployment/email-notifications-for-failed-background-jobs.md
@@ -1,6 +1,8 @@
+# Email Notifications For Failed Background Jobs
+
-
Frappe handles failure of jobs in the following way,
1) If a job fails, (raises exception), it's logged in Scheduler Log and logs/worker.error.log. 2) Keeps a lock file and would not run anymore if lock file is there. 3) Raises LockTimeoutError in case the lock file is more than 10 minutes old.
+
Frappé handles failure of jobs in the following way,
1) If a job fails, (raises exception), it's logged in Scheduler Log and logs/worker.error.log. 2) Keeps a lock file and would not run anymore if lock file is there. 3) Raises LockTimeoutError in case the lock file is more than 10 minutes old.
You can configure email notification for scheduler errors. By writing a file, sites/common_site_config.json with content
diff --git a/frappe/docs/user/en/guides/deployment/how-to-enable-social-logins.md b/frappe/docs/user/en/guides/deployment/how-to-enable-social-logins.md
index 441fa64ab0..bd16e88037 100755
--- a/frappe/docs/user/en/guides/deployment/how-to-enable-social-logins.md
+++ b/frappe/docs/user/en/guides/deployment/how-to-enable-social-logins.md
@@ -1,11 +1,13 @@
-Use Facebook, Google or GitHub authentication to login to Frappe, and your users will be spared from remembering another password.
+# How To Enable Social Logins
-The system uses the **Email Address** supplied by these services to **match with an existing user** in Frappe. If no such user is found, **a new user is created** of the default type **Website User**, if Signup is not disabled in Website Settings. Any System Manager can later change the user type from **Website User** to **System User**, so that the user can access the Desktop.
+Use Facebook, Google or GitHub authentication to login to Frappé, and your users will be spared from remembering another password.
+
+The system uses the **Email Address** supplied by these services to **match with an existing user** in Frappé. If no such user is found, **a new user is created** of the default type **Website User**, if Signup is not disabled in Website Settings. Any System Manager can later change the user type from **Website User** to **System User**, so that the user can access the Desktop.
#### Login screen with Social Logins enabled
-
+
-To enable these signups, you need to have **Client ID** and **Client Secret** from these authentication services for your Frappe site. The Client ID and Client Secret are to be set in Website > Setup > Social Login Keys. Here are the steps to obtain these credentials.
+To enable these signups, you need to have **Client ID** and **Client Secret** from these authentication services for your Frappé site. The Client ID and Client Secret are to be set in Website > Setup > Social Login Keys. Here are the steps to obtain these credentials.
> Use **https://{{ yoursite }}** if your site is HTTPS enabled.
diff --git a/frappe/docs/user/en/guides/deployment/how-to-migrate-doctype-changes-to-production.md b/frappe/docs/user/en/guides/deployment/how-to-migrate-doctype-changes-to-production.md
index 35a15645ab..4bf2ab9351 100755
--- a/frappe/docs/user/en/guides/deployment/how-to-migrate-doctype-changes-to-production.md
+++ b/frappe/docs/user/en/guides/deployment/how-to-migrate-doctype-changes-to-production.md
@@ -1,3 +1,5 @@
+# How To Migrate Doctype Changes To Production
+
#### 1. DocType / Schema Changes
If you are in `developer_mode`, the `.json` files for each **DocType** are automatically updated.
diff --git a/frappe/docs/user/en/guides/deployment/migrations.md b/frappe/docs/user/en/guides/deployment/migrations.md
index c40a2a7c4b..e40f48f0be 100755
--- a/frappe/docs/user/en/guides/deployment/migrations.md
+++ b/frappe/docs/user/en/guides/deployment/migrations.md
@@ -1,10 +1,10 @@
# Migrations
A project often undergoes changes related to database schema during course of
-its life. It may also be required patch existing data. Frappe bundles tools to
+its life. It may also be required patch existing data. Frappé bundles tools to
handle these schenarios.
-When you pull updates from any Frappe app (including Frappe), you should run
+When you pull updates from any Frappé app (including Frappé), you should run
`bench migrate` to apply schema changes and data migrations if any.
## Schema changes
@@ -23,7 +23,7 @@ table and however, they will not be visible in the documents. This is done to
avoid any potential data loss situations and to allow you write related data
migrations which might need values from deleted fields.
-Note: Frappe doesn't support reverse schema migrations.
+Note: Frappé doesn't support reverse schema migrations.
## Data Migrations
@@ -37,7 +37,7 @@ It is recommended to make a file with a patch number and name in its path and
add it to a patches package (directory) in your app. You can then add a line
with dotted path to the patch module to `patches.txt`.
-The directory structure followed in Frappe is as below
+The directory structure followed in Frappé is as below
frappe
diff --git a/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md b/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md
index ceb2a4474c..586477f32e 100644
--- a/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md
+++ b/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md
@@ -1,3 +1,5 @@
+# Formatter For Link Fields
+
In case where a code and a name is maintained for an entity, (for example for Employee there may be an Employee Code and Employee Name) and we want to show both the ID and name in a link field, we can make a formatter.
#### Example:
diff --git a/frappe/docs/user/en/guides/desk/index.md b/frappe/docs/user/en/guides/desk/index.md
index c32fa85913..47a3b43578 100755
--- a/frappe/docs/user/en/guides/desk/index.md
+++ b/frappe/docs/user/en/guides/desk/index.md
@@ -1,5 +1,5 @@
# Desk Customization
-Articles related to customization of Frappe Desk
+Articles related to customization of Frappé Desk
{index}
diff --git a/frappe/docs/user/en/guides/desk/making_charts_in_c3js.md b/frappe/docs/user/en/guides/desk/making_charts_in_c3js.md
index 91a5d9438a..c8143590f2 100644
--- a/frappe/docs/user/en/guides/desk/making_charts_in_c3js.md
+++ b/frappe/docs/user/en/guides/desk/making_charts_in_c3js.md
@@ -1,6 +1,6 @@
# Making Charts using c3.js
-Frappe bundles the c3.js libary to make charts inside the app and provides a wrapper class so that you can start using charts out of the box. To use chart, you need the x and y data, make a wrapper block and then just make the chart object.
+Frappé bundles the c3.js libary to make charts inside the app and provides a wrapper class so that you can start using charts out of the box. To use chart, you need the x and y data, make a wrapper block and then just make the chart object.
### Time Series Example
diff --git a/frappe/docs/user/en/guides/desk/making_graphs.md b/frappe/docs/user/en/guides/desk/making_graphs.md
index 9234fa58b4..d20f8b88d4 100644
--- a/frappe/docs/user/en/guides/desk/making_graphs.md
+++ b/frappe/docs/user/en/guides/desk/making_graphs.md
@@ -1,61 +1,100 @@
# Making Graphs
-The Frappe UI **Graph** object enables you to render simple line and bar graphs for a discreet set of data points. You can also set special checkpoint values and summary stats.
+The Frappé UI **Graph** object enables you to render simple line, bar or percentage graphs for single or multiple discreet sets of data points. You can also set special checkpoint values and summary stats.
### Example: Line graph
-Here's is an example of a simple sales graph:
-
- render_graph: function() {
- $('.form-graph').empty();
-
- var months = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'];
- var values = [2410, 3100, 1700, 1200, 2700, 1600, 2740, 1000, 850, 1500, 400, 2013];
-
- var goal = 2500;
- var current_val = 2013;
-
- new frappe.ui.Graph({
- parent: $('.form-graph'),
- width: 700,
- height: 140,
- mode: 'line-graph',
-
- title: 'Sales',
- subtitle: 'Monthly',
- y_values: values,
- x_points: months,
-
- specific_values: [
- {
- name: "Goal",
- line_type: "dashed", // "dashed" or "solid"
- value: goal
- },
- ],
- summary_values: [
- {
- name: "This month",
- color: 'green', // Indicator colors: 'grey', 'blue', 'red',
- // 'green', 'orange', 'purple', 'darkgrey',
- // 'black', 'yellow', 'lightblue'
- value: '₹ ' + current_val
- },
- {
- name: "Goal",
- color: 'blue',
- value: '₹ ' + goal
- },
- {
- name: "Completed",
- color: 'green',
- value: (current_val/goal*100).toFixed(1) + "%"
- }
- ]
- });
- },
-
-
-
-Setting the mode to 'bar-graph':
-
-
+Here's an example of a simple sales graph:
+
+ // Data
+ let months = ['August, 2016', 'September, 2016', 'October, 2016', 'November, 2016',
+ 'December, 2016', 'January, 2017', 'February, 2017', 'March, 2017', 'April, 2017',
+ 'May, 2017', 'June, 2017', 'July, 2017'];
+
+ let values1 = [24100, 31000, 17000, 12000, 27000, 16000, 27400, 11000, 8500, 15000, 4000, 20130];
+ let values2 = [17890, 10400, 12350, 20400, 17050, 23000, 7100, 13800, 16000, 20400, 11000, 13000];
+ let goal = 25000;
+ let current_val = 20130;
+
+ let g = new frappe.ui.Graph({
+ parent: $('.form-graph').empty(),
+ height: 200, // optional
+ mode: 'line', // 'line', 'bar' or 'percentage'
+
+ title: 'Sales',
+ subtitle: 'Monthly',
+
+ y: [
+ {
+ title: 'Data 1',
+ values: values1,
+ formatted: values1.map(d => '$ ' + d),
+ color: 'green' // Indicator colors: 'grey', 'blue', 'red',
+ // 'green', 'light-green', 'orange', 'purple', 'darkgrey',
+ // 'black', 'yellow', 'lightblue'
+ },
+ {
+ title: 'Data 2',
+ values: values2,
+ formatted: values2.map(d => '$ ' + d),
+ color: 'light-green'
+ }
+ ],
+
+ x: {
+ values: months.map(d => d.substring(0, 3)),
+ formatted: months
+ },
+
+ specific_values: [
+ {
+ name: 'Goal',
+ line_type: 'dashed', // 'dashed' or 'solid'
+ value: goal
+ },
+ ],
+
+ summary: [
+ {
+ name: 'This month',
+ color: 'orange',
+ value: '$ ' + current_val
+ },
+ {
+ name: 'Goal',
+ color: 'blue',
+ value: '$ ' + goal
+ },
+ {
+ name: 'Completed',
+ color: 'green',
+ value: (current_val/goal*100).toFixed(1) + "%"
+ }
+ ]
+ });
+
+
+
+`bar` mode yeilds:
+
+
+
+You can set the `colors` property of `x` to an array of color values for `percentage` mode:
+
+
+
+You can also change the values of an existing graph with a new set of `y` values:
+
+ setTimeout(() => {
+ g.change_values([
+ {
+ values: data[2],
+ formatted: data[2].map(d => d + 'L')
+ },
+ {
+ values: data[3],
+ formatted: data[3].map(d => d + 'L')
+ }
+ ]);
+ }, 1000);
+
+
diff --git a/frappe/docs/user/en/guides/index.md b/frappe/docs/user/en/guides/index.md
index 9eeed8baa8..765334be62 100755
--- a/frappe/docs/user/en/guides/index.md
+++ b/frappe/docs/user/en/guides/index.md
@@ -1,6 +1,6 @@
# Guides
-The Frappe Framework is a server side and client side framework and is built with the philosophy make it a "battries included" framework. It has libraries and API for everything from authentication to reports.
+The Frappé Framework is a server side and client side framework and is built with the philosophy make it a "battries included" framework. It has libraries and API for everything from authentication to reports.
In this section we will try and cover the most commonly used API on client and server side that will be useful for app development.
diff --git a/frappe/docs/user/en/guides/integration/how_to_setup_oauth.md b/frappe/docs/user/en/guides/integration/how_to_setup_oauth.md
index 37fd85de85..6a4fc93650 100644
--- a/frappe/docs/user/en/guides/integration/how_to_setup_oauth.md
+++ b/frappe/docs/user/en/guides/integration/how_to_setup_oauth.md
@@ -1,6 +1,6 @@
# How to setup oauth?
-OAuth 2.0 provider based on oauthlib is built into frappe. Third party apps can now access resources of users based on Frappe Role and User permission system. To setup an app to access
+OAuth 2.0 provider based on oauthlib is built into frappe. Third party apps can now access resources of users based on Frappé Role and User permission system. To setup an app to access
## OAuth defines four roles
@@ -26,11 +26,11 @@ Go to
> Setup > Integrations > OAuth Provider Settings
-
+
### Add Primary Server
-This is the main server hosting all the users. e.g. `https://frappe.io`. To setup this as the main server, go to *Setup* > *Integrations* > *Social Login Keys* and enter `https://frappe.io` in the field `Frappe Server URL`. This URL repeats in all other Frappe servers who connect to this server to authenticate. Effectively, this is the main Identity Provider (IDP).
+This is the main server hosting all the users. e.g. `https://frappe.io`. To setup this as the main server, go to *Setup* > *Integrations* > *Social Login Keys* and enter `https://frappe.io` in the field `Frappé Server URL`. This URL repeats in all other Frappé servers who connect to this server to authenticate. Effectively, this is the main Identity Provider (IDP).
Under this server add as many `OAuth Client`(s) as required.
@@ -40,7 +40,7 @@ As a System Manager go to
> Setup > Integrations > OAuth Client
-
+
To add a client fill in the following details
diff --git a/frappe/docs/user/en/guides/integration/openid_connect_and_frappe_social_login.md b/frappe/docs/user/en/guides/integration/openid_connect_and_frappe_social_login.md
index b214841f90..f9a4269ec7 100644
--- a/frappe/docs/user/en/guides/integration/openid_connect_and_frappe_social_login.md
+++ b/frappe/docs/user/en/guides/integration/openid_connect_and_frappe_social_login.md
@@ -1,8 +1,8 @@
-# OpenID Connect and Frappe social login
+# OpenID Connect and Frappé social login
## OpenID Connect
-Frappe also uses Open ID connect essential standard for authenticating users. To get `id_token` with `access_token`, pass `openid` as the value for the scope parameter during authorization request.
+Frappé also uses Open ID connect essential standard for authenticating users. To get `id_token` with `access_token`, pass `openid` as the value for the scope parameter during authorization request.
If the scope is `openid` the JSON response with `access_token` will also include a JSON Web Token (`id_token`) signed with `HS256` and `Client Secret`. The decoded `id_token` includes the `at_hash`.
@@ -19,54 +19,54 @@ Example Bearer Token with scope `openid`
}
```
-## Frappe social login setup
+## Frappé social login setup
In this example there are 2 servers,
### Primary Server
-This is the main server hosting all the users. e.g. `https://frappe.io`. To setup this as the main server, go to *Setup* > *Integrations* > *Social Login Keys* and enter `https://frappe.io` in the field `Frappe Server URL`. This URL repeats in all other Frappe servers who connect to this server to authenticate. Effectively, this is the main Identity Provider (IDP).
+This is the main server hosting all the users. e.g. `https://frappe.io`. To setup this as the main server, go to *Setup* > *Integrations* > *Social Login Keys* and enter `https://frappe.io` in the field `Frappé Server URL`. This URL repeats in all other Frappé servers who connect to this server to authenticate. Effectively, this is the main Identity Provider (IDP).
Under this server add as many `OAuth Client`(s) as required. Because we are setting up one app server, add only one `OAuth Client`
-### Frappe App Server
-This is the client connecting to the IDP. Go to *Setup* > *Integrations* > *Social Login Keys* on this server and add appropriate values to `Frappe Client ID` and `Frappe Client Secret` (refer to client added in primary server). As mentioned before keep the `Frappe Server URL` as `https://frappe.io`
+### Frappé App Server
+This is the client connecting to the IDP. Go to *Setup* > *Integrations* > *Social Login Keys* on this server and add appropriate values to `Frappé Client ID` and `Frappé Client Secret` (refer to client added in primary server). As mentioned before keep the `Frappé Server URL` as `https://frappe.io`
-Now you will see Frappe icon on the login page. Click on this icon to login with account created in primary server (IDP) `https://frappe.io`
+Now you will see Frappé icon on the login page. Click on this icon to login with account created in primary server (IDP) `https://frappe.io`
**Note**: If `Skip Authorization` is checked while registering a client, page to allow or deny the granting access to resource is not shown. This can be used if the apps are internal to one organization and seamless user experience is needed.
## Steps
-### Part 1 : on Frappe Identity Provider (IDP)
+### Part 1 : on Frappé Identity Provider (IDP)
Login to IDP
-
+
Add OAuth Client on IDP
-
+
Set Server URL on IDP
-
+
-### Part 2 : on Frappe App Server
+### Part 2 : on Frappé App Server
-Set `Frappe Client ID` and `Frappe Client Secret` on App server (refer the client set on IDP)
-
+Set `Frappé Client ID` and `Frappé Client Secret` on App server (refer the client set on IDP)
+
-**Note**: Frappe Server URL is the main server where identities from your organization are stored.
+**Note**: Frappé Server URL is the main server where identities from your organization are stored.
Login Screen on App Server (login with frappe)
-
+
### Part 3 : Redirected on IDP
login with user on IDP
-
+
Confirm Access on IDP
-
+
### Part 4 : Back on App Server
Logged in on app server with ID from IDP
-
+
diff --git a/frappe/docs/user/en/guides/integration/rest_api.md b/frappe/docs/user/en/guides/integration/rest_api.md
index 7f28f82b38..58e3815364 100755
--- a/frappe/docs/user/en/guides/integration/rest_api.md
+++ b/frappe/docs/user/en/guides/integration/rest_api.md
@@ -1,6 +1,6 @@
# REST API
-Frappe ships with an HTTP API. There are two parts of this API.
+Frappé ships with an HTTP API. There are two parts of this API.
1. Remote Procedure Calls (RPC)
2. REST
@@ -28,7 +28,7 @@ _Response:_
## 2. REST
-All documents in Frappe are available via a RESTful API with prefix
+All documents in Frappé are available via a RESTful API with prefix
`/api/resource/`.
### Login
diff --git a/frappe/docs/user/en/guides/integration/using_oauth.md b/frappe/docs/user/en/guides/integration/using_oauth.md
index 48bb853d0a..d3db092905 100644
--- a/frappe/docs/user/en/guides/integration/using_oauth.md
+++ b/frappe/docs/user/en/guides/integration/using_oauth.md
@@ -20,7 +20,7 @@ redirect_uri =
#### Confirmation Dialog
-
+
Click 'Allow' to receive authorization code in redirect uri.
@@ -106,4 +106,4 @@ status : 400
### Accessing Resource
-Add header `Authorizaton: Bearer ` to Frappe's REST API endpoints to access user's resource
+Add header `Authorizaton: Bearer ` to Frappé's REST API endpoints to access user's resource
diff --git a/frappe/docs/user/en/guides/portal-development/adding-pages.md b/frappe/docs/user/en/guides/portal-development/adding-pages.md
index c8bdd53552..c9cd0191c3 100755
--- a/frappe/docs/user/en/guides/portal-development/adding-pages.md
+++ b/frappe/docs/user/en/guides/portal-development/adding-pages.md
@@ -13,7 +13,7 @@ Either file must be present for the system to make this a valid folder to build
### Markdown
# This is a title
-
+
This is some page content
a [link](/link/to/page)
diff --git a/frappe/docs/user/en/guides/portal-development/generators.md b/frappe/docs/user/en/guides/portal-development/generators.md
index 78d83d20f6..8bf52d7299 100644
--- a/frappe/docs/user/en/guides/portal-development/generators.md
+++ b/frappe/docs/user/en/guides/portal-development/generators.md
@@ -22,7 +22,7 @@ We added `published`, `route` in the DocType
**Note:** The field `route` is mandatory
-
+
#### 2. Added Website Generator to Hooks
diff --git a/frappe/docs/user/en/guides/portal-development/index.md b/frappe/docs/user/en/guides/portal-development/index.md
index a9aaab4312..bba3ff1fb1 100755
--- a/frappe/docs/user/en/guides/portal-development/index.md
+++ b/frappe/docs/user/en/guides/portal-development/index.md
@@ -1,6 +1,6 @@
# Making Portals
-Frappe has powerful tools to build portals where pages can be dynamically generated using templates (Jinja) and users can be shown records after login
+Frappé has powerful tools to build portals where pages can be dynamically generated using templates (Jinja) and users can be shown records after login
#### Adding Pages
diff --git a/frappe/docs/user/en/guides/portal-development/portal-roles.md b/frappe/docs/user/en/guides/portal-development/portal-roles.md
index d3f5be7287..2248bb0b55 100644
--- a/frappe/docs/user/en/guides/portal-development/portal-roles.md
+++ b/frappe/docs/user/en/guides/portal-development/portal-roles.md
@@ -8,7 +8,7 @@ Roles can be assigned to Website Users and they will see menu based on their rol
1. Each Portal Menu Item can have a role associated with it. If that role is set, then only those users having that role can see that menu item
1. Rules can be set for default roles that will be set on default users on hooks
-
+
#### Rules for Default Role
diff --git a/frappe/docs/user/en/guides/portal-development/web-forms.md b/frappe/docs/user/en/guides/portal-development/web-forms.md
index 533790952e..7cca8de2cc 100644
--- a/frappe/docs/user/en/guides/portal-development/web-forms.md
+++ b/frappe/docs/user/en/guides/portal-development/web-forms.md
@@ -2,7 +2,7 @@
Web Forms are a powerful way to add forms to your website. Web forms are powerful and scriptable and from Version 7.1+ they also include tables, paging and other utilities
-
+
### Standard Web Forms
diff --git a/frappe/docs/user/en/guides/reports-and-printing/getting-information-from-another-document-in-print-format.md b/frappe/docs/user/en/guides/reports-and-printing/getting-information-from-another-document-in-print-format.md
index 321028d7af..afe87c04f8 100755
--- a/frappe/docs/user/en/guides/reports-and-printing/getting-information-from-another-document-in-print-format.md
+++ b/frappe/docs/user/en/guides/reports-and-printing/getting-information-from-another-document-in-print-format.md
@@ -1,3 +1,5 @@
+# Getting Information From Another Document In Print Format
+
In a print format, you can get data from another document. For example in if you have a fields called `sales_order` in Sales Invoice, then you can get the sales order details using `frappe.get_doc`:
{% raw %}
diff --git a/frappe/docs/user/en/guides/reports-and-printing/how-to-make-query-report.md b/frappe/docs/user/en/guides/reports-and-printing/how-to-make-query-report.md
index 9eb11b066a..c4c047a63f 100755
--- a/frappe/docs/user/en/guides/reports-and-printing/how-to-make-query-report.md
+++ b/frappe/docs/user/en/guides/reports-and-printing/how-to-make-query-report.md
@@ -1,3 +1,5 @@
+# How To Make Query Report
+
You can create tabulated reports using complex SQL queries by creating a new Report. These reports can be created by a System Manager and are stored in the Database
> Note: You will need System Manager Permissions for this.
@@ -6,7 +8,7 @@ To create a new Query Report:
### 1. Create a new Report
-
+
1. Set type as "Query Report"
1. Set the reference DocType - Users that have access to the reference DocType will have access to the report
@@ -35,11 +37,11 @@ You can define complex queries such as:
### 3. Check the Report
-
+
### 4. Advanced (adding filters)
-If you are making a standard report, you can add filters in your query report just like [script reports](https://frappe.github.io/frappe/user/en/guides/reports-and-printing/how-to-make-script-reports) by adding a `.js` file in your query report folder. To include filters in your query, use `%(filter_key)s` where your filter value will be shown.
+If you are making a standard report, you can add filters in your query report just like [script reports](https://frappe.io/docs/user/en/guides/reports-and-printing/how-to-make-script-reports) by adding a `.js` file in your query report folder. To include filters in your query, use `%(filter_key)s` where your filter value will be shown.
For example
diff --git a/frappe/docs/user/en/guides/reports-and-printing/how-to-make-script-reports.md b/frappe/docs/user/en/guides/reports-and-printing/how-to-make-script-reports.md
index ab03c11051..80522d435b 100755
--- a/frappe/docs/user/en/guides/reports-and-printing/how-to-make-script-reports.md
+++ b/frappe/docs/user/en/guides/reports-and-printing/how-to-make-script-reports.md
@@ -4,13 +4,13 @@ You can create tabulated reports using server side scripts by creating a new Rep
> Note: You will need Administrator Permissions for this.
-Since these reports give you unrestricted access via Python scripts, they can only be created by Administrators. The script part of the report becomes a part of the repository of the application. If you have not created an app, [read this](https://frappe.github.io/frappe/user/en/guides/app-development/).
+Since these reports give you unrestricted access via Python scripts, they can only be created by Administrators. The script part of the report becomes a part of the repository of the application. If you have not created an app, [read this](https://frappe.io/docs/user/en/guides/app-development/).
-> Note: You must be in [Developer Mode](https://frappe.github.io/frappe/user/en/guides/app-development/how-enable-developer-mode-in-frappe) to do this
+> Note: You must be in [Developer Mode](https://frappe.io/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe) to do this
### 1. Create a new Report
-
+
1. Set Report Type as "Script Report"
1. Set "Is Standard" as "Yes"
diff --git a/frappe/docs/user/en/guides/reports-and-printing/print-format-for-reports.md b/frappe/docs/user/en/guides/reports-and-printing/print-format-for-reports.md
index f663816757..07a7bc222b 100755
--- a/frappe/docs/user/en/guides/reports-and-printing/print-format-for-reports.md
+++ b/frappe/docs/user/en/guides/reports-and-printing/print-format-for-reports.md
@@ -58,7 +58,7 @@ Here is how the General Ledger Report is built:
Here is what the report looks like:
-
+
##### Comments:
diff --git a/frappe/docs/user/en/guides/reports-and-printing/where-do-i-find-standard-print-formats.md b/frappe/docs/user/en/guides/reports-and-printing/where-do-i-find-standard-print-formats.md
index 00e351c615..c1816751dd 100755
--- a/frappe/docs/user/en/guides/reports-and-printing/where-do-i-find-standard-print-formats.md
+++ b/frappe/docs/user/en/guides/reports-and-printing/where-do-i-find-standard-print-formats.md
@@ -1,3 +1,5 @@
+# Where Do I Find Standard Print Formats
+
Standard Print formats are auto generated from the layout of the DocType. You can customize the standard format by
diff --git a/frappe/docs/user/en/index.md b/frappe/docs/user/en/index.md
index a25785e59e..a68da6210b 100755
--- a/frappe/docs/user/en/index.md
+++ b/frappe/docs/user/en/index.md
@@ -1,3 +1,3 @@
-# Develop Apps with Frappe
+# Develop Apps with Frappé
{index}
diff --git a/frappe/docs/user/en/tutorial/app.md b/frappe/docs/user/en/tutorial/app.md
index e338ce8a17..4233b7cc1b 100755
--- a/frappe/docs/user/en/tutorial/app.md
+++ b/frappe/docs/user/en/tutorial/app.md
@@ -1,9 +1,9 @@
# What is an Application
-An Application in Frappe is just a standard Python application. You can structure a Frappe Application the same way you structure a standard Python Application. For deployment, Frappe uses the standard Python Setuptools, so you can easily port and install the application on any machine.
+An Application in Frappé is just a standard Python application. You can structure a Frappé Application the same way you structure a standard Python Application. For deployment, Frappé uses the standard Python Setuptools, so you can easily port and install the application on any machine.
-Frappe Framework provides a WSGI interface and for development you can use the built-in Werkzeug server. For implementing in production, we recommend using nginx and gunicorn.
+Frappé Framework provides a WSGI interface and for development you can use the built-in Werkzeug server. For implementing in production, we recommend using nginx and gunicorn.
-Frappe also has a multi-tenant architecture, grounds up. This means that you can run multiple "sites" in your setup, each could be serving a different set of applications and users. The database for each site is separate.
+Frappé also has a multi-tenant architecture, grounds up. This means that you can run multiple "sites" in your setup, each could be serving a different set of applications and users. The database for each site is separate.
{next}
diff --git a/frappe/docs/user/en/tutorial/before.md b/frappe/docs/user/en/tutorial/before.md
index 80f34e01dd..48c6f968a3 100755
--- a/frappe/docs/user/en/tutorial/before.md
+++ b/frappe/docs/user/en/tutorial/before.md
@@ -1,16 +1,17 @@
# Before You Start
-
A list of resources to help you get started with building apps using Frappe
+
A list of resources to help you get started with building apps using Frappé
---
#### 1. Python
-Frappe uses Python (v2.7) for server-side programming. It is highly recommended to learn Python before you start building apps with Frappe.
+Frappé uses Python (v2.7) for server-side programming. It is highly recommended to learn Python before you start building apps with Frappé.
To write quality server-side code, you must also include automated tests.
Resources:
+
1. [Codecademy Tutorial for Python](https://www.codecademy.com/learn/python)
1. [Official Python Tutorial](https://docs.python.org/2.7/tutorial/index.html)
1. [Basics of Test-driven development](http://code.tutsplus.com/tutorials/beginning-test-driven-development-in-python--net-30137)
@@ -19,20 +20,22 @@ Resources:
#### 2. MariaDB / MySQL
-To create database-driven apps with Frappe, you must understand the basics of database management, like how to install, login, create new databases, and basic SQL queries.
+To create database-driven apps with Frappé, you must understand the basics of database management, like how to install, login, create new databases, and basic SQL queries.
Resources:
+
1. [Codecademy Tutorial for SQL](https://www.codecademy.com/learn/learn-sql)
- 1. [A basic MySQL tutorial by DigitalOcean](https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial)
+ 1. [A basic MySQL tutorial by DigitalOcean](https://www.digitalocean.com/community/tutorials/a-basic-mysql-tutorial)
1. [Getting started with MariaDB](https://mariadb.com/kb/en/mariadb/documentation/getting-started/)
---
#### 3. HTML / CSS
-If you want to build user interfaces using Frappe, you will need to learn basic HTML / CSS and the Boostrap CSS Framework.
+If you want to build user interfaces using Frappé, you will need to learn basic HTML / CSS and the Boostrap CSS Framework.
Resources:
+
1. [Codecademy Tutorial for HTML/CSS](https://www.codecademy.com/learn/learn-html-css)
1. [Getting started with Bootstrap](https://getbootstrap.com/getting-started/)
@@ -44,6 +47,7 @@ To customize forms and create rich user interfaces, you should learn JavaScript
Resources:
+
1. [Codecademy Tutorial for JavaScript](https://www.codecademy.com/learn/learn-javascript)
1. [Codecademy Tutorial for jQuery](https://www.codecademy.com/learn/jquery)
---
@@ -53,6 +57,7 @@ Resources:
If you are customizing Print templates or Web pages, you need to learn the Jinja Templating language. It is an easy way to create dynamic web pages (HTML).
Resources:
+
1. [Primer on Jinja Templating](https://realpython.com/blog/python/primer-on-jinja-templating/)
1. [Official Documentation](http://jinja.pocoo.org/)
@@ -63,10 +68,11 @@ Resources:
Learn how to contribute back to an open source project using Git and GitHub, two great tools to help you manage your code and share it with others.
Resources:
+
1. [Basic Git Tutorial](https://try.github.io)
2. [How to contribute to Open Source](https://opensource.guide/how-to-contribute/)
---
-When you are ready, you can try [building a sample application]({{ docs_base_url }}/user/en/tutorial/app) using Frappe.
+When you are ready, you can try [building a sample application](/docs/user/en/tutorial/app) using Frappé.
diff --git a/frappe/docs/user/en/tutorial/bench.md b/frappe/docs/user/en/tutorial/bench.md
index e720d9dc98..8772638265 100755
--- a/frappe/docs/user/en/tutorial/bench.md
+++ b/frappe/docs/user/en/tutorial/bench.md
@@ -1,10 +1,10 @@
-# Installing the Frappe Bench
+# Installing the Frappé Bench
-Easiest way to setup frappe on a Unix Like system is to use frappe-bench. Read the detailed instructions on how to install using Frappe Bench.
+Easiest way to setup frappe on a Unix Like system is to use frappe-bench. Read the detailed instructions on how to install using Frappé Bench.
> [https://github.com/frappe/bench](https://github.com/frappe/bench)
-With Frappe Bench you will be able to setup and host multiple applications and sites and it will also setup a Python Virtualenv so that you can have an isolated environment to run your applications (and will not have version conflict with other development environments).
+With Frappé Bench you will be able to setup and host multiple applications and sites and it will also setup a Python Virtualenv so that you can have an isolated environment to run your applications (and will not have version conflict with other development environments).
The `bench` command line tool will also be installed that will help you in development and management of the installation.
diff --git a/frappe/docs/user/en/tutorial/conclusion.md b/frappe/docs/user/en/tutorial/conclusion.md
index f45b64ba23..bc254ba5d9 100755
--- a/frappe/docs/user/en/tutorial/conclusion.md
+++ b/frappe/docs/user/en/tutorial/conclusion.md
@@ -1,7 +1,7 @@
# Conclusion
-We hope this will give you an overview of how applications are developed in Frappe. The objective was to briefly touch on the various aspects of application development and give a broad overview. To get help on specific issues, look at the API.
+We hope this will give you an overview of how applications are developed in Frappé. The objective was to briefly touch on the various aspects of application development and give a broad overview. To get help on specific issues, look at the API.
For help, join the community at the [chat channel on Gitter](https://gitter.im/frappe/erpnext) or the [developer forum](https://discuss.erpnext.com)
diff --git a/frappe/docs/user/en/tutorial/controllers.md b/frappe/docs/user/en/tutorial/controllers.md
index b994f71971..09edce15d0 100755
--- a/frappe/docs/user/en/tutorial/controllers.md
+++ b/frappe/docs/user/en/tutorial/controllers.md
@@ -48,7 +48,7 @@ In this script:
Check if your validations work by creating new records
-
+
#### Debugging
diff --git a/frappe/docs/user/en/tutorial/doctypes.md b/frappe/docs/user/en/tutorial/doctypes.md
index 2e70ab4146..889f923b3f 100755
--- a/frappe/docs/user/en/tutorial/doctypes.md
+++ b/frappe/docs/user/en/tutorial/doctypes.md
@@ -6,7 +6,7 @@ To create a new **DocType**, go to:
> Developer > Documents > Doctype > New
-
+
In the DocType, first the Module, which in our case is **Library Management**
@@ -25,7 +25,7 @@ Fields are much more than database columns, they can be:
Let us add the fields of the Article.
-
+
When you add fields, you need to enter the **Type**. **Label** is optional for Section Break and Column Break. **Name** (`fieldname`) is the name of the database table column and also the property of the controller. This has to be *code friendly*, i.e. it has to have small cases are _ instead of " ". If you leave the Fieldname blank, it will be automatically set when you save it.
@@ -45,9 +45,9 @@ We can add the following fields:
#### Add Permissions
-After adding the fields, hit done and add a new row in the Permission Rules section. For now, let us give Read, Write, Create, Delete and Report access to **Librarian**. Frappe has a finely grained Role based permission model. You can also change permissions later using the **Role Permissions Manager** from **Setup**.
+After adding the fields, hit done and add a new row in the Permission Rules section. For now, let us give Read, Write, Create, Delete and Report access to **Librarian**. Frappé has a finely grained Role based permission model. You can also change permissions later using the **Role Permissions Manager** from **Setup**.
-
+
#### Saving
diff --git a/frappe/docs/user/en/tutorial/form-client-scripting.md b/frappe/docs/user/en/tutorial/form-client-scripting.md
index a70b8475ff..d4673c55d4 100755
--- a/frappe/docs/user/en/tutorial/form-client-scripting.md
+++ b/frappe/docs/user/en/tutorial/form-client-scripting.md
@@ -1,3 +1,5 @@
+# Form Client Scripting
+
## Scripting Forms
Now we have created a basic system that works out of the box without us having to write any code. Let us now write some scripts to make the application richer and add validations so that the user does not enter wrong data.
diff --git a/frappe/docs/user/en/tutorial/index.md b/frappe/docs/user/en/tutorial/index.md
index 43f04583e9..69f276db10 100755
--- a/frappe/docs/user/en/tutorial/index.md
+++ b/frappe/docs/user/en/tutorial/index.md
@@ -1,6 +1,6 @@
-# Frappe Tutorial
+# Frappé Tutorial
-In this guide, we will show you how to create an application from scratch using **Frappe**. Using the example of a Library Management System, we will cover:
+In this guide, we will show you how to create an application from scratch using **Frappé**. Using the example of a Library Management System, we will cover:
1. Installation
1. Making a New App
@@ -12,9 +12,9 @@ In this guide, we will show you how to create an application from scratch using
## Who is This For?
-This guide is intended for software developers who are familiar with how the web applications are built and served. Frappe Framework is built on Python and uses MariaDB database and for creating web views, HTML/CSS/Javascript is used. So it would be great if you are familiar with all these technologies. At the minimum, if you have never used Python before, you should take a quick tutorial before your use this Guide.
+This guide is intended for software developers who are familiar with how the web applications are built and served. Frappé Framework is built on Python and uses MariaDB database and for creating web views, HTML/CSS/Javascript is used. So it would be great if you are familiar with all these technologies. At the minimum, if you have never used Python before, you should take a quick tutorial before your use this Guide.
-Frappe uses the git version control system on GitHub. It is also important that you are familiar with basic git and have an account on GitHub to manage your applications.
+Frappé uses the git version control system on GitHub. It is also important that you are familiar with basic git and have an account on GitHub to manage your applications.
## Example
@@ -26,7 +26,7 @@ For this guide book, we will build a simple **Library Management** application.
1. Library Membership (A period in which a member is allowed to transact)
1. Library Management Setting (Global settings like period of loan)
-The user interface (UI) for the librarian will be the **Frappe Desk**, a built-in browser based UI environment where forms are automatically generated from the models and roles and permissions are also applied.
+The user interface (UI) for the librarian will be the **Frappé Desk**, a built-in browser based UI environment where forms are automatically generated from the models and roles and permissions are also applied.
We will also create web views for library where users can browse articles from a website.
diff --git a/frappe/docs/user/en/tutorial/models.md b/frappe/docs/user/en/tutorial/models.md
index 04114e1369..0dbb1b1b32 100755
--- a/frappe/docs/user/en/tutorial/models.md
+++ b/frappe/docs/user/en/tutorial/models.md
@@ -1,6 +1,6 @@
# Making Models
-The next step is to create the models as we discussed in the introduction. In Frappe, models are called **DocTypes**. You can create new DocTypes from the Desk UI. **DocTypes** are made of fields called **DocField** and role based permissions are integrated into the models, these are called **DocPerms**.
+The next step is to create the models as we discussed in the introduction. In Frappé, models are called **DocTypes**. You can create new DocTypes from the Desk UI. **DocTypes** are made of fields called **DocField** and role based permissions are integrated into the models, these are called **DocPerms**.
When a DocType is saved, a new table is created in the database. This table is named as `tab[doctype]`.
diff --git a/frappe/docs/user/en/tutorial/naming-and-linking.md b/frappe/docs/user/en/tutorial/naming-and-linking.md
index dd0fca7245..546af3d50d 100755
--- a/frappe/docs/user/en/tutorial/naming-and-linking.md
+++ b/frappe/docs/user/en/tutorial/naming-and-linking.md
@@ -4,7 +4,7 @@ Then let us create the other DocType and save it too:
1. Library Member (First Name, Last Name, Email Address, Phone, Address)
-
+
#### Naming of DocTypes
@@ -20,21 +20,21 @@ This can be set by entering the **Autoname** field. For controller, leave blank.
> **Search Fields**: A DocType may be named on a series but it still needs to be searched by name. In our case, the Article will be searched by the title or the author name. So this can be entered in search field.
-
+
#### Link and Select Fields
-Foreign keys are specified in Frappe as **Link** type fields. The target DocType must be mentioned in the Options text area.
+Foreign keys are specified in Frappé as **Link** type fields. The target DocType must be mentioned in the Options text area.
In our example, in the Library Transaction DocType, we have to link both the Library Member and the Article.
**Note:** Remeber that Link fields are not automatically set as Foreign Keys in the MariaDB database, because that will implicitly index the column. This may not be optimum hence the Foreign Key validation is done by the Framework.
-
+
For select fields, as we mentioned earlier, add the various options in the **Options** input box, each option on a new row.
-
+
Similary complete making the other models.
@@ -44,7 +44,7 @@ A standard pattern is when you select an ID, say **Library Member** in **Library
To do this, we can use Read Only fields and in options, we can set the the name of the link and the fieldname of the property we want to fetch. For this example in **Member First Name** we can set `library_member.first_name`
-
+
### Complete the Models
@@ -52,19 +52,19 @@ In the same way, you can complete all the models so that the final fields look l
#### Article
-
+
#### Library Member
-
+
#### Library Membership
-
+
#### Library Transaction
-
+
> Make sure to give permissions to **Librarian** on each DocType
diff --git a/frappe/docs/user/en/tutorial/new-app.md b/frappe/docs/user/en/tutorial/new-app.md
index cbb60cc3d3..94a3ad1f1e 100755
--- a/frappe/docs/user/en/tutorial/new-app.md
+++ b/frappe/docs/user/en/tutorial/new-app.md
@@ -7,7 +7,7 @@ To make a new application, go to your bench folder and run, `bench new-app {app_
$ bench new-app library_management
App Title (defaut: Lib Mgt): Library Management
App Description: App for managing Articles, Members, Memberships and Transactions for Libraries
- App Publisher: Frappe
+ App Publisher: Frappé
App Email: info@frappe.io
App Icon (default 'octicon octicon-file-directory'): octicon octicon-book
App Color (default 'grey'): #589494
@@ -44,11 +44,11 @@ The application will be created in a folder called `library_management` and will
1. `config` folder contains application configuration info
1. `desktop.py` is where desktop icons can be added to the Desk
1. `hooks.py` is where integrations with the environment and other applications is mentioned.
-1. `library_management` (inner) is a **module** that is bootstrapped. In Frappe, a **module** is where model and controller files reside.
+1. `library_management` (inner) is a **module** that is bootstrapped. In Frappé, a **module** is where model and controller files reside.
1. `modules.txt` contains list of **modules** in the app. When you create a new module, it is required that you update it in this file.
1. `patches.txt` is where migration patches are written. They are python module references using the dot notation.
1. `templates` is the folder where web view templates are maintained. Templates for **Login** and other standard pages are bootstrapped in frappe.
-1. `generators` are where templates for models are maintained, where each model instance has a separte web route, for example a **Blog Post** where each post has its unique web url. In Frappe, the templating engine used is Jinja2
+1. `generators` are where templates for models are maintained, where each model instance has a separte web route, for example a **Blog Post** where each post has its unique web url. In Frappé, the templating engine used is Jinja2
1. `pages` is where single route templates are maintained. For example for a "/blog" type of page.
{next}
diff --git a/frappe/docs/user/en/tutorial/reports.md b/frappe/docs/user/en/tutorial/reports.md
index 03b61822f2..6e2a2b6c42 100755
--- a/frappe/docs/user/en/tutorial/reports.md
+++ b/frappe/docs/user/en/tutorial/reports.md
@@ -2,6 +2,6 @@
You can also click on the Reports text on the sidebar (left) to see tabulated records
-
+
{next}
diff --git a/frappe/docs/user/en/tutorial/roles.md b/frappe/docs/user/en/tutorial/roles.md
index d358556083..42b8246bec 100755
--- a/frappe/docs/user/en/tutorial/roles.md
+++ b/frappe/docs/user/en/tutorial/roles.md
@@ -9,6 +9,6 @@ To create a new Role, go to:
> Setup > Users > Role > New
-
+
{next}
diff --git a/frappe/docs/user/en/tutorial/setting-up-the-site.md b/frappe/docs/user/en/tutorial/setting-up-the-site.md
index 30f4b86d1f..2a823dc5f3 100755
--- a/frappe/docs/user/en/tutorial/setting-up-the-site.md
+++ b/frappe/docs/user/en/tutorial/setting-up-the-site.md
@@ -18,7 +18,7 @@ Let us create a new site and call it `library`.
You can then install a new site, by the command `bench new-site library`.
-This will create a new database and site folder and install `frappe` (which is also an application!) in the new site. The `frappe` application has two built-in modules **Core** and **Website**. The Core module contains the basic models for the application. Frappe is a batteries included framework and comes with a lot of built-in models. These models are called **DocTypes**. More on that later.
+This will create a new database and site folder and install `frappe` (which is also an application!) in the new site. The `frappe` application has two built-in modules **Core** and **Website**. The Core module contains the basic models for the application. Frappé is a batteries included framework and comes with a lot of built-in models. These models are called **DocTypes**. More on that later.
$ bench new-site library
MySQL root password:
diff --git a/frappe/docs/user/en/tutorial/single-doctypes.md b/frappe/docs/user/en/tutorial/single-doctypes.md
index 9b0e4171b1..d01f13d700 100755
--- a/frappe/docs/user/en/tutorial/single-doctypes.md
+++ b/frappe/docs/user/en/tutorial/single-doctypes.md
@@ -1,9 +1,9 @@
# Single DocTypes
-A application will usually have a Settings page. In our application, we can define a page where we can set the loan period. We also need to save this property. In Frappe, this can be done using a **Single** type DocType. A Single DocType is like the Singleton pattern in Java. It is an object with only one instance. Let us call this as **Library Managment Settings**.
+A application will usually have a Settings page. In our application, we can define a page where we can set the loan period. We also need to save this property. In Frappé, this can be done using a **Single** type DocType. A Single DocType is like the Singleton pattern in Java. It is an object with only one instance. Let us call this as **Library Managment Settings**.
To create an new Single DocType, mark the **Is Single** property as checked.
-
+
{next}
diff --git a/frappe/docs/user/en/tutorial/start.md b/frappe/docs/user/en/tutorial/start.md
index 0182654494..10c921a2f2 100755
--- a/frappe/docs/user/en/tutorial/start.md
+++ b/frappe/docs/user/en/tutorial/start.md
@@ -14,7 +14,7 @@ To start the development server, run `bench start`
You can now open your browser and go to `http://localhost:8000`. You should see this login page if all goes well:
-
+
Now login with :
@@ -24,8 +24,8 @@ Password : **Use the password that was created during installation**
When you login, you should see the "Desk" home page
-
+
-As you can see, the Frappe basic system comes with several pre-loaded applications like To Do, File Manager etc. These apps can integrated in your app workflow as we progress.
+As you can see, the Frappé basic system comes with several pre-loaded applications like To Do, File Manager etc. These apps can integrated in your app workflow as we progress.
{next}
diff --git a/frappe/docs/user/en/tutorial/task-runner.md b/frappe/docs/user/en/tutorial/task-runner.md
index fcf520fedb..0afdfeaa1b 100755
--- a/frappe/docs/user/en/tutorial/task-runner.md
+++ b/frappe/docs/user/en/tutorial/task-runner.md
@@ -1,6 +1,6 @@
# Scheduled Tasks
-Finally, an application also has to send email notifications and do other kind of scheduled tasks. In Frappe, if you have setup the bench, the task / scheduler is setup via Celery using Redis Queue.
+Finally, an application also has to send email notifications and do other kind of scheduled tasks. In Frappé, if you have setup the bench, the task / scheduler is setup via Celery using Redis Queue.
To add a new task handler, go to `hooks.py` and add a new handler. Default handlers are `all`, `daily`, `weekly`, `monthly`. The `all` handler is called every 3 minutes by default.
@@ -15,7 +15,7 @@ To add a new task handler, go to `hooks.py` and add a new handler. Default handl
Here we can point to a Python function and that function will be executed every day. Let us look what this function looks like:
- # Copyright (c) 2013, Frappe
+ # Copyright (c) 2013, Frappé
# For license information, please see license.txt
from __future__ import unicode_literals
diff --git a/frappe/docs/user/en/tutorial/users-and-records.md b/frappe/docs/user/en/tutorial/users-and-records.md
index 394899a795..4f0b0ad85d 100755
--- a/frappe/docs/user/en/tutorial/users-and-records.md
+++ b/frappe/docs/user/en/tutorial/users-and-records.md
@@ -1,6 +1,6 @@
# Making Users and Records
-Now that we have created the models, we can directly start making records using Frappe Desk UI. You do not have to create views! Views in Frappe are automatically made based on the DocType properties.
+Now that we have created the models, we can directly start making records using Frappé Desk UI. You do not have to create views! Views in Frappé are automatically made based on the DocType properties.
### 4.1 Creating User
@@ -12,7 +12,7 @@ Create a new User and set the name and first name and new password.
Also give the Librarian and Library Member Roles to this user
-
+
Now logout and login using the new user id and password.
@@ -20,36 +20,36 @@ Now logout and login using the new user id and password.
You will now see an icon for the Library Management module. Click on that icon and you will see the Module page:
-
+
Here you can see the DocTypes that we have created for the application. Let us start creating a few records.
First let us create a new Article:
-
+
Here you will see that the DocType you had created has been rendered as a form. The validations and other rules will also apply as designed. Let us fill out one Article.
-
+
You can also add an image.
-
+
Now let us create a new member:
-
+
After this, let us create a new membership record for the member.
Here if you remember we had set the values of Member First Name and Member Last Name to be directly fetched from the Member records and as soon as you will select the member id, the names will be updated.
-
+
As you can see that the date is formatted as year-month-day which is a system format. To set / change date, time and number formats, go to
> Setup > Settings > System Settings
-
+
{next}
diff --git a/frappe/docs/user/en/tutorial/web-views.md b/frappe/docs/user/en/tutorial/web-views.md
index 2953104958..9eb36d48c7 100755
--- a/frappe/docs/user/en/tutorial/web-views.md
+++ b/frappe/docs/user/en/tutorial/web-views.md
@@ -1,8 +1,8 @@
# Web Views
-Frappe has two main user environments, the Desk and Web. Desk is a controlled UI environment with a rich AJAX application and the web is more traditional HTML templates served for public consumption. Web views can also be generated to create more controlled views for users who may login but still do not have access to the Desk.
+Frappé has two main user environments, the Desk and Web. Desk is a controlled UI environment with a rich AJAX application and the web is more traditional HTML templates served for public consumption. Web views can also be generated to create more controlled views for users who may login but still do not have access to the Desk.
-In Frappe, Web Views are managed by templates and they are usually in the `templates` folder. There are 2 main types of templates.
+In Frappé, Web Views are managed by templates and they are usually in the `templates` folder. There are 2 main types of templates.
1. Pages: These are Jinja templates where a single view exists for a single web route e.g. `/blog`.
2. Generators: These are templates where each instance of a DocType has a separate web route `/blog/a-blog`, `blog/b-blog` etc.
@@ -16,11 +16,11 @@ Let us look at the standard Web Views:
If you are logged in as the test user, go to `/article` and you should see the list of articles:
-
+
Click on one article and you will see the default web view
-
+
Now if you want to make a better list view for the article, drop a file called `row_template.html` in the
`library_management/templates/includes/list/` folder. Here is an example file:
@@ -46,11 +46,11 @@ Here, you will get all the properties of the article in the `doc` object.
The updated list view looks like this!
-
+
#### Home Page
-Frappe also has a built-in signup workflow which also includes 3rd party signups via Google, Facebook and GitHub. When a user signs up on the web, she does not have access to the desk interface by default.
+Frappé also has a built-in signup workflow which also includes 3rd party signups via Google, Facebook and GitHub. When a user signs up on the web, she does not have access to the desk interface by default.
> To allow user access into the Desk, open set the user from Setup > User and set the User Type as "System User"
diff --git a/frappe/docs/user/en/videos/index.md b/frappe/docs/user/en/videos/index.md
index 8b095501e4..f95904a615 100755
--- a/frappe/docs/user/en/videos/index.md
+++ b/frappe/docs/user/en/videos/index.md
@@ -1,8 +1,8 @@
-# Video Tutorials for Frappe Framework
+# Video Tutorials for Frappé Framework
-This 10-part video tutorial will teach you how to build complex apps in Frappe
+This 10-part video tutorial will teach you how to build complex apps in Frappé
-Pre-requisites: You must have some understanding of Python, Javascript and MySQL before you start this tutorial.
+Pre-requisites: You must have some understanding of Python, Javascript and MySQL before you start this tutorial.
---
diff --git a/frappe/docs/user/es/bench/guides/diagnosing-the-scheduler.md b/frappe/docs/user/es/bench/guides/diagnosing-the-scheduler.md
index d1317c9bcc..18faa2fbe2 100644
--- a/frappe/docs/user/es/bench/guides/diagnosing-the-scheduler.md
+++ b/frappe/docs/user/es/bench/guides/diagnosing-the-scheduler.md
@@ -1,3 +1,5 @@
+# Diagnosing The Scheduler
+
En caso que estes experimentando inconvenientes con las tareas programadas, puedes ejecutar varios comandos para diagnosticar el problema.
diff --git a/frappe/docs/user/es/bench/guides/index.md b/frappe/docs/user/es/bench/guides/index.md
index 0dff60b400..8ab035a2f5 100644
--- a/frappe/docs/user/es/bench/guides/index.md
+++ b/frappe/docs/user/es/bench/guides/index.md
@@ -1 +1,5 @@
+# Guides
+
+
+
{index}
\ No newline at end of file
diff --git a/frappe/docs/user/es/bench/guides/manual-setup.md b/frappe/docs/user/es/bench/guides/manual-setup.md
index e07c56433c..de314b1675 100644
--- a/frappe/docs/user/es/bench/guides/manual-setup.md
+++ b/frappe/docs/user/es/bench/guides/manual-setup.md
@@ -1,3 +1,5 @@
+# Manual Setup
+
Instalación Manual
--------------
@@ -30,7 +32,7 @@ Uso básico
* Crea un nuevo bench
- El comando init va a crear un directorio conteniendo el framework Frappe instalado.
+ El comando init va a crear un directorio conteniendo el framework Frappé instalado.
Va a ser configurado para copias de seguridad periódicas y actualizaciones automáticas una vez por día.
bench init frappe-bench && cd frappe-bench
@@ -47,7 +49,7 @@ Uso básico
* Agregar Site
- Las aplicaciones Frappe son montadas en los Sites y por tanto tendras que crear por lo menos un site.
+ Las aplicaciones Frappé son montadas en los Sites y por tanto tendras que crear por lo menos un site.
El comando new-site te permite crearlos.
bench new-site site1.local
@@ -58,7 +60,7 @@ Uso básico
bench start
- Para acceder a Frappe / ERPNext, abra su navegador favorito y escriba la ruta `localhost:8000`
+ Para acceder a Frappé / ERPNext, abra su navegador favorito y escriba la ruta `localhost:8000`
El usuario por defecto es "Administrator" y la contraseña es la que específicaste al momento de crear el nuevo site.
diff --git a/frappe/docs/user/es/bench/guides/settings-limits.md b/frappe/docs/user/es/bench/guides/settings-limits.md
index a72ddc2d79..d918cd7c60 100644
--- a/frappe/docs/user/es/bench/guides/settings-limits.md
+++ b/frappe/docs/user/es/bench/guides/settings-limits.md
@@ -1,6 +1,6 @@
# Estableciendo límites para su sitio
-La versión 7 de Frappe ha agregado soporte para la configuración de límites y restricciones para su site.
+La versión 7 de Frappé ha agregado soporte para la configuración de límites y restricciones para su site.
Estas restricciones están en el archivo `site_config.json` dentro de la carpeta del site.
{
@@ -36,4 +36,4 @@ Ejemplo:
Puedes verificar el uso abriendo la página de "Usage Info" ubicada en el toolbar / AwesomeBar. Un límite solo va a mostrarse en la página si ha sido configurado.
-
+
diff --git a/frappe/docs/user/es/bench/guides/setup-multitenancy.md b/frappe/docs/user/es/bench/guides/setup-multitenancy.md
index f663704521..ca7469f1fd 100644
--- a/frappe/docs/user/es/bench/guides/setup-multitenancy.md
+++ b/frappe/docs/user/es/bench/guides/setup-multitenancy.md
@@ -1,3 +1,5 @@
+# Setup Multitenancy
+
Asumiento que tiene su primer site corriendo y ha realizado los
[pasos para producción](setup-production.html), esta sección explica como montar su segundo site (y más).
Su primer site se configuró como el site por defecto de forma automática. Puedes cambiarlo ejecutando el comando,
diff --git a/frappe/docs/user/es/bench/guides/setup-production.md b/frappe/docs/user/es/bench/guides/setup-production.md
index 2ab7e290dc..6ef279c84f 100644
--- a/frappe/docs/user/es/bench/guides/setup-production.md
+++ b/frappe/docs/user/es/bench/guides/setup-production.md
@@ -1,3 +1,5 @@
+# Setup Production
+
Puedes configurar el bench para producción configurando dos parametros, Supervisor y nginx. Si quieres volver a ponerlo en desarrollo debes ver [estos comandos](https://github.com/frappe/bench/wiki/Stopping-Production-and-starting-Development)
####Configuración para producción facíl
@@ -7,7 +9,7 @@ Estos pasos son automátizados si ejecutas `sudo bench setup production`
####Configuración manual para producción
Supervisor
----------
-Supervisor se asegura de mantener el proceso que inició Frappe corriendo y lo reinicia en caso de cualquier inconveniente.
+Supervisor se asegura de mantener el proceso que inició Frappé corriendo y lo reinicia en caso de cualquier inconveniente.
Puedes generar la configuración necesaria para supervisor ejecutando el comando `bench setup supervisor`.
La configuración va a estar disponible en la carpeta `config/supervisor.conf`. Luego puedes copiar/enlazar este archivo al directorio de configuración
de supervisor y reiniciar el servicio para que tome efecto de los cambios realizados.
diff --git a/frappe/docs/user/es/bench/index.md b/frappe/docs/user/es/bench/index.md
index ccd28db145..24baef4875 100644
--- a/frappe/docs/user/es/bench/index.md
+++ b/frappe/docs/user/es/bench/index.md
@@ -1 +1,5 @@
+# Bench
+
+
+
{index}
diff --git a/frappe/docs/user/es/bench/resources/background-services.md b/frappe/docs/user/es/bench/resources/background-services.md
index 093d666e3a..52294cc1f5 100644
--- a/frappe/docs/user/es/bench/resources/background-services.md
+++ b/frappe/docs/user/es/bench/resources/background-services.md
@@ -1,3 +1,5 @@
+# Background Services
+
Servicios Externos
-----------------
@@ -6,7 +8,7 @@ Servicios Externos
* nginx (para producción)
* supervisor (para producción)
-Procesos de Frappe
+Procesos de Frappé
----------------
@@ -18,12 +20,12 @@ Procesos de Frappe
* Procesos de Redis Worker
- * Los procesos de Celery se encargan de ejecutar tareas en background en Frappe.
+ * Los procesos de Celery se encargan de ejecutar tareas en background en Frappé.
Estos procesos son iniciados automáticamente cuando se ejecuta el comando `bench start` y
para producción se configuran en las configuraciones de supervisor.
* Procesos Scheduler
- * Los procesos del Scheduler programan la lista de tareas programadas en Frappe.
+ * Los procesos del Scheduler programan la lista de tareas programadas en Frappé.
Este proceso es iniciado automáticamente cuando se ejecuta el comando `bench start` y
para producción se configuran en las configuraciones de supervisor.
diff --git a/frappe/docs/user/es/bench/resources/bench-commands-cheatsheet.md b/frappe/docs/user/es/bench/resources/bench-commands-cheatsheet.md
index e816124fe4..c5277c45bc 100644
--- a/frappe/docs/user/es/bench/resources/bench-commands-cheatsheet.md
+++ b/frappe/docs/user/es/bench/resources/bench-commands-cheatsheet.md
@@ -1,3 +1,5 @@
+# Bench Commands Cheatsheet
+
### Uso General
* `bench --version` - Muestra la versión del bench
* `bench src` - Muestra el directorio repo del bench
diff --git a/frappe/docs/user/es/bench/resources/bench-procfile.md b/frappe/docs/user/es/bench/resources/bench-procfile.md
index c80bf03481..dc357bdd4e 100644
--- a/frappe/docs/user/es/bench/resources/bench-procfile.md
+++ b/frappe/docs/user/es/bench/resources/bench-procfile.md
@@ -1,3 +1,5 @@
+# Bench Procfile
+
`bench start` usa [honcho](http://honcho.readthedocs.org) para manejar múltiples procesos en **developer mode**.
### Procesos
diff --git a/frappe/docs/user/es/bench/resources/index.md b/frappe/docs/user/es/bench/resources/index.md
index 0dff60b400..48852466ed 100644
--- a/frappe/docs/user/es/bench/resources/index.md
+++ b/frappe/docs/user/es/bench/resources/index.md
@@ -1 +1,5 @@
+# Resources
+
+
+
{index}
\ No newline at end of file
diff --git a/frappe/docs/user/es/index.md b/frappe/docs/user/es/index.md
index d483120e16..56c4acd3db 100644
--- a/frappe/docs/user/es/index.md
+++ b/frappe/docs/user/es/index.md
@@ -1,3 +1,3 @@
-# Desarrollo de aplicaciones con Frappe
+# Desarrollo de aplicaciones con Frappé
{index}
diff --git a/frappe/docs/user/es/tutorial/app.md b/frappe/docs/user/es/tutorial/app.md
index c7df575fbe..02122f510e 100644
--- a/frappe/docs/user/es/tutorial/app.md
+++ b/frappe/docs/user/es/tutorial/app.md
@@ -1,10 +1,10 @@
# Qué es una aplicación
-Una aplicación en Frappe es una aplicación estandar en Python. Puedes estructurar una aplicación hecha en Frappe de la misma forma que estructuras una aplicación en Python.
-Para implementación, Frappe usa los Python Setuptools, lo que nos permite facilmente instalar la aplicación en cualquier computadora.
+Una aplicación en Frappé es una aplicación estandar en Python. Puedes estructurar una aplicación hecha en Frappé de la misma forma que estructuras una aplicación en Python.
+Para implementación, Frappé usa los Python Setuptools, lo que nos permite facilmente instalar la aplicación en cualquier computadora.
-El Framework Frappe provee una interfaz WSGI y para el desarrollo puedes usar el servidor interno de frappe llamado Werkzeug. Para implementación en producción, recomendamos usar nginx y gunicorn.
+El Framework Frappé provee una interfaz WSGI y para el desarrollo puedes usar el servidor interno de frappe llamado Werkzeug. Para implementación en producción, recomendamos usar nginx y gunicorn.
-Frappe tambien soporta la architectura multi-tenant. Esto significa que puedes correr varios "sitios" en su instalación, cada uno de ellos estará poniendo a disposición un conjunto de aplicaciones y usuarios. La base de datos para cada sitio es separada.
+Frappé tambien soporta la architectura multi-tenant. Esto significa que puedes correr varios "sitios" en su instalación, cada uno de ellos estará poniendo a disposición un conjunto de aplicaciones y usuarios. La base de datos para cada sitio es separada.
{next}
diff --git a/frappe/docs/user/es/tutorial/before.md b/frappe/docs/user/es/tutorial/before.md
index e894a3301c..b9eeb84541 100644
--- a/frappe/docs/user/es/tutorial/before.md
+++ b/frappe/docs/user/es/tutorial/before.md
@@ -1,12 +1,12 @@
# Antes de empezar
-
Una lista de recursos que te ayudaran a inicar con el desarrollo de aplicaciones usando Frappe.
+
Una lista de recursos que te ayudaran a inicar con el desarrollo de aplicaciones usando Frappé.
---
#### 1. Python
-Frappe usa Python (v2.7) como lenguaje de parte del servidor. Es altamente recomendable aprender Python antes de iniciar a crear aplicaciones con Frappe.
+Frappé usa Python (v2.7) como lenguaje de parte del servidor. Es altamente recomendable aprender Python antes de iniciar a crear aplicaciones con Frappé.
Para escribir código de calidad del lado del servidor, también debes incluir pruebas automatizadas.
@@ -30,7 +30,7 @@ Recursos:
#### 3. HTML / CSS
-Si quieres construir interfaces de usuario usando Frappe, necesitas aprender los conceptops básicos de HTML / CSS y el framework de CSS Bootstrap.
+Si quieres construir interfaces de usuario usando Frappé, necesitas aprender los conceptops básicos de HTML / CSS y el framework de CSS Bootstrap.
Recursos:
1. [Tutorial sobre HTML/CSS de Codecademy](https://www.codecademy.com/learn/learn-html-css)
@@ -68,4 +68,4 @@ Recursos:
---
-Cuando estes listo, puedes intentar [crear una aplicación simple]({{ docs_base_url }}/user/es/tutorial/app) usando Frappe.
+Cuando estes listo, puedes intentar [crear una aplicación simple](/docs/user/es/tutorial/app) usando Frappé.
diff --git a/frappe/docs/user/es/tutorial/bench.md b/frappe/docs/user/es/tutorial/bench.md
index bc9e3ce215..5ce2f40c0f 100644
--- a/frappe/docs/user/es/tutorial/bench.md
+++ b/frappe/docs/user/es/tutorial/bench.md
@@ -1,10 +1,10 @@
-# Instalando el Frappe Bench
+# Instalando el Frappé Bench
-La forma más facíl de configurar frappe en un computador usando sitemas basados en Unix es usando frappe-bench. Lee las instrucciones detalladas acerca de como instalarlo usando Frappe Bench.
+La forma más facíl de configurar frappe en un computador usando sitemas basados en Unix es usando frappe-bench. Lee las instrucciones detalladas acerca de como instalarlo usando Frappé Bench.
> [https://github.com/frappe/bench](https://github.com/frappe/bench)
-Con Frappe Bench vas a poder configurar y hostear multiples aplicaciones y sitios, también va a configurar un entorno virtual de Python por lo que vas a tener un entorno apartado para correr sus aplicaciones (y no va a tener conflictos de versiones con otros entornos de desarrollo).
+Con Frappé Bench vas a poder configurar y hostear multiples aplicaciones y sitios, también va a configurar un entorno virtual de Python por lo que vas a tener un entorno apartado para correr sus aplicaciones (y no va a tener conflictos de versiones con otros entornos de desarrollo).
El comando `bench` va a ser instalado en su sistema para ayudarlo en la fase de desarrollo y el manejo de la aplicación.
diff --git a/frappe/docs/user/es/tutorial/conclusion.md b/frappe/docs/user/es/tutorial/conclusion.md
index 05118d1b48..6f9a07fd1c 100644
--- a/frappe/docs/user/es/tutorial/conclusion.md
+++ b/frappe/docs/user/es/tutorial/conclusion.md
@@ -1,5 +1,5 @@
# Conclusión
-Esperamos que esto te haya dado una idea de como son desarrolladas las aplicaicones en Frappe. El objetivo era de que de manera breve se tocaran varios de los aspectos del desarrollo de aplicaciones. Para obtener ayuda en inconvenientes o temas específicos, favor revisar el API.
+Esperamos que esto te haya dado una idea de como son desarrolladas las aplicaicones en Frappé. El objetivo era de que de manera breve se tocaran varios de los aspectos del desarrollo de aplicaciones. Para obtener ayuda en inconvenientes o temas específicos, favor revisar el API.
Para ayuda, únete a la comunidad en el [canal de chat en Gitter](https://gitter.im/frappe/erpnext) o el [foro de desarrollo](https://discuss.erpnext.com)
diff --git a/frappe/docs/user/es/tutorial/controllers.md b/frappe/docs/user/es/tutorial/controllers.md
index e9ea7527e8..7053719970 100644
--- a/frappe/docs/user/es/tutorial/controllers.md
+++ b/frappe/docs/user/es/tutorial/controllers.md
@@ -48,7 +48,7 @@ En este script:
Verifica si sus validaciones funcionan creando nuevos registros.
-
+
#### Depurando
diff --git a/frappe/docs/user/es/tutorial/doctypes.md b/frappe/docs/user/es/tutorial/doctypes.md
index 6d574ac721..6a13bde650 100644
--- a/frappe/docs/user/es/tutorial/doctypes.md
+++ b/frappe/docs/user/es/tutorial/doctypes.md
@@ -6,7 +6,7 @@ Para crear un nuevo **DocType**, ir a:
> Developer > Documents > Doctype > New
-
+
En el DocType, primero el módulo, lo que en nuestro caso es **Library Management**
@@ -26,7 +26,7 @@ Fields are much more than database columns, they can be:
Vamos a agregar los campos de el Article.
-
+
Cuando agredas los campos, necesitas llenar el campo **Type**. **Label** es opcional para los Section Break y Column Break. **Name** (`fieldname`) es el nombre de la columna en la tabla de la base de datos y tambien el nombre de la propiedad para el controlador. Esto tiene que ser *code friendly*, i.e. Necesitas poner _ en lugar de " ". Si dejas en blanco este campo, se va a llenar automáticamente al momento de guardar.
@@ -46,9 +46,9 @@ Podemos agregar los siguientes campos:
#### Agregar permisos
-Despues de agregar los campos, dar click en hecho y agrega una nueva fila en la sección de Permission Roles. Por ahora, vamos a darle accesos Lectura, Escritura, Creación y Reportes al Role **Librarian**. Frappe cuenta con un sistema basados en el modelo de Roles finamente granulado. Puedes cambiar los permisos más adealante usando el **Role Permissions Manager** desde **Setup**.
+Despues de agregar los campos, dar click en hecho y agrega una nueva fila en la sección de Permission Roles. Por ahora, vamos a darle accesos Lectura, Escritura, Creación y Reportes al Role **Librarian**. Frappé cuenta con un sistema basados en el modelo de Roles finamente granulado. Puedes cambiar los permisos más adealante usando el **Role Permissions Manager** desde **Setup**.
-
+
#### Guardando
diff --git a/frappe/docs/user/es/tutorial/form-client-scripting.md b/frappe/docs/user/es/tutorial/form-client-scripting.md
index b0c4b97f21..26f5410b83 100644
--- a/frappe/docs/user/es/tutorial/form-client-scripting.md
+++ b/frappe/docs/user/es/tutorial/form-client-scripting.md
@@ -1,3 +1,5 @@
+# Form Client Scripting
+
## Añadir Scripts a nuestros formularios
Ya que tenemos creado el sistema básico que funciona sin problemas sin escribir una linea de código. Vamos a escribir algunos scripts
diff --git a/frappe/docs/user/es/tutorial/index.md b/frappe/docs/user/es/tutorial/index.md
index 62d30a873c..652e7f9773 100644
--- a/frappe/docs/user/es/tutorial/index.md
+++ b/frappe/docs/user/es/tutorial/index.md
@@ -1,6 +1,6 @@
-# Tutorial sobre Frappe
+# Tutorial sobre Frappé
-En esta guía, vamos a mostrarte como crear una aplicación desde cero usando **Frappe**. Usando el ejemplo de un Sistema de Gestión de Librería. Vamos a cubrir:
+En esta guía, vamos a mostrarte como crear una aplicación desde cero usando **Frappé**. Usando el ejemplo de un Sistema de Gestión de Librería. Vamos a cubrir:
1. Instalación
1. Creando una nueva App
@@ -12,10 +12,10 @@ En esta guía, vamos a mostrarte como crear una aplicación desde cero usando **
## Para Quién es este tutorial?
-Esta guía esta orientada para desarrolladores de software que estan familiarizados con el proceso de como son creadas y servidas las aplicaciones web. El Framework Frappe está escrito en Python y usa MariaDB como base de datos y para la creación de las vistas web usa HTML/CSS/Javascript. Por lo que sería excelente si estas familiarizado con estas tecnologías.
+Esta guía esta orientada para desarrolladores de software que estan familiarizados con el proceso de como son creadas y servidas las aplicaciones web. El Framework Frappé está escrito en Python y usa MariaDB como base de datos y para la creación de las vistas web usa HTML/CSS/Javascript. Por lo que sería excelente si estas familiarizado con estas tecnologías.
Por lo menos, si nunca haz usado Python antes, deberías tomar un tutorial rápido antes de iniciar con este tutorial.
-Frappe usa el sistema de gestión de versiones en GitHub. También, es importante estar familiarizado con los conceptos básicos de git y tener una cuenta en GitHub para manejar sus aplicaciones.
+Frappé usa el sistema de gestión de versiones en GitHub. También, es importante estar familiarizado con los conceptos básicos de git y tener una cuenta en GitHub para manejar sus aplicaciones.
## Ejemplo
@@ -27,7 +27,7 @@ Para esta guía, vamos a crear una aplicación simple llamada **Library Manageme
1. Library Membership (Un período en el que un miembro esta permitido hacer una trasacción)
1. Library Management Setting (Configuraciones generales, como el tiempo que dura el prestamo de un artículo)
-La interfaz de usuario (UI) para la aplicación va a ser el **Frappe Desk**, un entorno para UI basado en el navegador y viene integrado en Frappe donde los formularios son generados automáticamente desde los modelos y los roles y permisos son aplicados.
+La interfaz de usuario (UI) para la aplicación va a ser el **Frappé Desk**, un entorno para UI basado en el navegador y viene integrado en Frappé donde los formularios son generados automáticamente desde los modelos y los roles y permisos son aplicados.
También, vamos a crear vistas webs para la librería donde los usuarios pueden buscar los artículos desde una página web.
diff --git a/frappe/docs/user/es/tutorial/models.md b/frappe/docs/user/es/tutorial/models.md
index 4951c55ec0..406558cae1 100644
--- a/frappe/docs/user/es/tutorial/models.md
+++ b/frappe/docs/user/es/tutorial/models.md
@@ -1,6 +1,6 @@
# Creando Modelos
-El siguiente paso es crear los modelos que discutimos en la introducción. En Frappe, los modelos son llamados **DocTypes**. Puedes crear nuevos DocTypes desde el UI Escritorio de Frappe. **DocTypes** son creados de campos llamados **DocField** y los permisos basados en roles son integrados dentro de los modelos, estos son llamados **DocPerms**.
+El siguiente paso es crear los modelos que discutimos en la introducción. En Frappé, los modelos son llamados **DocTypes**. Puedes crear nuevos DocTypes desde el UI Escritorio de Frappé. **DocTypes** son creados de campos llamados **DocField** y los permisos basados en roles son integrados dentro de los modelos, estos son llamados **DocPerms**.
Cuando un DocType es guardado, se crea una nueva tabla en la base de datos. Esta tabla se nombra `tab[doctype]`.
diff --git a/frappe/docs/user/es/tutorial/naming-and-linking.md b/frappe/docs/user/es/tutorial/naming-and-linking.md
index da929b0272..52de06add7 100644
--- a/frappe/docs/user/es/tutorial/naming-and-linking.md
+++ b/frappe/docs/user/es/tutorial/naming-and-linking.md
@@ -4,7 +4,7 @@ Vamos a crear otro DocType y guardarlo:
1. Library Member (First Name, Last Name, Email Address, Phone, Address)
-
+
#### Nombrando DocTypes
@@ -20,21 +20,21 @@ Esto puede ser seteado a traves del campo **Autoname**. Para el controlador, dej
> **Search Fields**: Un DocType puede ser nombrado por serie pero seguir teniendo la necesidad de ser buscado por nombre. En nuestro caso, el Article va ser buscado por el título o el nombre del autor. Por lo que vamos a poner esos campos en el campo de search.
-
+
#### Campo de Enlace y Campo Select
-Las claves foraneas son específicadas en Frappe como campos **Link** (Enlace). El DocType debe ser mencionado en el area de texto de Options.
+Las claves foraneas son específicadas en Frappé como campos **Link** (Enlace). El DocType debe ser mencionado en el area de texto de Options.
En nuestro ejemplo, en el DocType de Library Transaction,tenemos que enlazar los dos DocTypes de Library Member and the Article.
**Nota:** Recuerda que los campos de Enlace no son automáticamente establecidos como claves foraneas en la base de datos MariaDB, porque esto crearía un indice en la columna. Las validaciones de claves foraneas son realizadas por el Framework.
-
+
Por campos de tipo Select, como mencionamos antes, agrega varias opciones en la caja de texto **Options**, cada una en una nueva linea.
-
+
De manera similar continua haciendo los otros modelos.
@@ -44,7 +44,7 @@ Un patrón estandar es que cuando seleccionas un ID, dice **Library Member** en
Para hacer esto, podemos usar campos de solo lectura y en opciones, podemos especificar el nombre del link (enlace) y el campo o propiedad que deseas obtener. Para este ejempo en **Member First Name** podemos especificar `library_member.first_name`.
-
+
### Completar los modelos
@@ -52,19 +52,19 @@ En la misma forma, puedes completar todos los modelos, todos los campos deben ve
#### Article
-
+
#### Library Member
-
+
#### Library Membership
-
+
#### Library Transaction
-
+
> Asegurate de dar permiso a **Librarian** en cada DocType
diff --git a/frappe/docs/user/es/tutorial/new-app.md b/frappe/docs/user/es/tutorial/new-app.md
index 2978145db7..5591c9d997 100644
--- a/frappe/docs/user/es/tutorial/new-app.md
+++ b/frappe/docs/user/es/tutorial/new-app.md
@@ -7,7 +7,7 @@ Para crear una nueva aplicación, debes posicionarte en el directorio del bench
$ bench new-app library_management
App Title (defaut: Lib Mgt): Library Management
App Description: App for managing Articles, Members, Memberships and Transactions for Libraries
- App Publisher: Frappe
+ App Publisher: Frappé
App Email: info@frappe.io
App Icon (default 'octicon octicon-file-directory'): octicon octicon-book
App Color (default 'grey'): #589494
@@ -44,11 +44,11 @@ La aplicación va a ser creada en el directorio llamado `library_management` y v
1. `config` contiene la información de configuración de la aplicación.
1. `desktop.py` es donde los íconos del escritorio pueden ser agregados al mismo.
1. `hooks.py` es donde se configuran las integraciones con el entorno y otras aplicaciones.
-1. `library_management` (dentro) es un **módulo** que está contenido. En Frappe, un **módulo** es donde los modelos y controladores se almacenan.
+1. `library_management` (dentro) es un **módulo** que está contenido. En Frappé, un **módulo** es donde los modelos y controladores se almacenan.
1. `modules.txt` contiene la lista de **módulos** en la aplicación. Cuando creas un nuevo módulo, es obligatorio que lo agregues a este archivo.
1. `patches.txt` es donde los patches para migraciones son establecidos. Son módulos de Python referenciados usando la nomenclatura de punto.
-1. `templates` es el directorio donde son mantenidos las plantillas de vistas web. Plantillas para **Login** y otras páginas estandar estan contenidas en Frappe.
-1. `generators` son donde las plantillas para los modelos son almacenadas, donde cada instancia de modelo tiene una ruta web separada, por ejemplo un **Blog Post** donde cada post tiene una url única. En Frappe, el manejador de plantillas utilizado es Jinja2.
+1. `templates` es el directorio donde son mantenidos las plantillas de vistas web. Plantillas para **Login** y otras páginas estandar estan contenidas en Frappé.
+1. `generators` son donde las plantillas para los modelos son almacenadas, donde cada instancia de modelo tiene una ruta web separada, por ejemplo un **Blog Post** donde cada post tiene una url única. En Frappé, el manejador de plantillas utilizado es Jinja2.
1. `pages` es donde las rutas simples son almacenadas. Por ejemplo para un tipo de página "/blog".
{next}
diff --git a/frappe/docs/user/es/tutorial/reports.md b/frappe/docs/user/es/tutorial/reports.md
index 3fb5a9d76e..99d6655792 100644
--- a/frappe/docs/user/es/tutorial/reports.md
+++ b/frappe/docs/user/es/tutorial/reports.md
@@ -2,6 +2,6 @@
Puedes dar click en el texto que dice Reportes en el panel lateral izquierdo para ver los registros de manera tabulada.
-
+
{next}
diff --git a/frappe/docs/user/es/tutorial/roles.md b/frappe/docs/user/es/tutorial/roles.md
index d65aed184c..017cd064c9 100644
--- a/frappe/docs/user/es/tutorial/roles.md
+++ b/frappe/docs/user/es/tutorial/roles.md
@@ -9,6 +9,6 @@ Para crear un nuevo Role, ir a:
> Setup > Users > Role > New
-
+
{next}
diff --git a/frappe/docs/user/es/tutorial/setting-up-the-site.md b/frappe/docs/user/es/tutorial/setting-up-the-site.md
index 83c925d909..28a0dd7301 100644
--- a/frappe/docs/user/es/tutorial/setting-up-the-site.md
+++ b/frappe/docs/user/es/tutorial/setting-up-the-site.md
@@ -19,7 +19,7 @@ Vamos a crear un nuevo Site llamado `library`.
Ahora puedes instalar un nuevo site, ejecutando el comando `bench new-site library`.
La ejecución del comando anterior va a generar una nueva base de datos, un directorio en la carpeta sites y va a instalar `frappe` (el cual también es una aplicación!) en el nuevo site.
- La aplicación `frappe` tiene dos módulos integrados que son **Core** y **Website**. El módulo Core contiene los modelos básicos para la aplicación. Frappe es un Framework con muchas funcionalidades incluidas y viene con muchos modelos integrados. Estos modelos son llamados **DocTypes**. Vamos a ver más de esto en lo adelante.
+ La aplicación `frappe` tiene dos módulos integrados que son **Core** y **Website**. El módulo Core contiene los modelos básicos para la aplicación. Frappé es un Framework con muchas funcionalidades incluidas y viene con muchos modelos integrados. Estos modelos son llamados **DocTypes**. Vamos a ver más de esto en lo adelante.
$ bench new-site library
MySQL root password:
diff --git a/frappe/docs/user/es/tutorial/single-doctypes.md b/frappe/docs/user/es/tutorial/single-doctypes.md
index 0b8d7745c2..cb6d55644b 100644
--- a/frappe/docs/user/es/tutorial/single-doctypes.md
+++ b/frappe/docs/user/es/tutorial/single-doctypes.md
@@ -1,9 +1,9 @@
# DocTypes Simples
-Una aplicación normalmente va a tener una página de configuración. En nuestra aplicación, podemos definir una página donde específiquemos el período de prestamos. Necesitaremos almacenar esta propiedad. En Frappe, esto puede lograrse usando los DocType de tipo **Simple**. Un DocType Simple es como el patrón Singleton en Java. Es un objeto con tan solo una instancia. Vamos a llamarlo **Library Managment Settings**.
+Una aplicación normalmente va a tener una página de configuración. En nuestra aplicación, podemos definir una página donde específiquemos el período de prestamos. Necesitaremos almacenar esta propiedad. En Frappé, esto puede lograrse usando los DocType de tipo **Simple**. Un DocType Simple es como el patrón Singleton en Java. Es un objeto con tan solo una instancia. Vamos a llamarlo **Library Managment Settings**.
Para crear un Single DocType, marca el checkbox **Is Single**.
-
+
{next}
diff --git a/frappe/docs/user/es/tutorial/start.md b/frappe/docs/user/es/tutorial/start.md
index f8abb4d675..51f63b6acb 100644
--- a/frappe/docs/user/es/tutorial/start.md
+++ b/frappe/docs/user/es/tutorial/start.md
@@ -14,7 +14,7 @@ Para iniciar el servidor de desarrollo, ejecuta `bench start`.
Ahora abre tu navegador y ve a la dirección `http://localhost:8000`. Deberías ver la páagina de inicio de sesión si todo salió bien.:
-
+
Ahora accede con :
@@ -24,8 +24,8 @@ Password : **Usa la contraseña que creaste durante la instalación**
Cuando accedas, deberías poder ver la página de inicio (Desk).
-
+
-Como puedes ver, el sistema básico de Frappe viene con algunas aplicaciones preinstaladas como To Do, File Manager etc. Estas aplicaciones pueden integrarse en el flujo de trabajo de su aplicació a medida que avancemos.
+Como puedes ver, el sistema básico de Frappé viene con algunas aplicaciones preinstaladas como To Do, File Manager etc. Estas aplicaciones pueden integrarse en el flujo de trabajo de su aplicació a medida que avancemos.
{next}
diff --git a/frappe/docs/user/es/tutorial/task-runner.md b/frappe/docs/user/es/tutorial/task-runner.md
index 215bd6b46d..148ae61b00 100644
--- a/frappe/docs/user/es/tutorial/task-runner.md
+++ b/frappe/docs/user/es/tutorial/task-runner.md
@@ -1,6 +1,6 @@
# Tareas Programadas
-Finalmente, una aplicación también tiene que mandar notificaciones de email y hacer otros tipos de tareas programadas. En Frappe, si tienes el bench configurado, el programador de tareas es configurado vía Celery usando Redis Queue.
+Finalmente, una aplicación también tiene que mandar notificaciones de email y hacer otros tipos de tareas programadas. En Frappé, si tienes el bench configurado, el programador de tareas es configurado vía Celery usando Redis Queue.
Para agregar un nuevo manejador(Handler) de tareas, ir a `hooks.py` y agrega un nuevo manejador. Los manejadores (Handlers) por defecto son `all`, `daily`, `weekly`, `monthly`. El manejador `all` es llamado cada 3 minutos por defecto.
@@ -15,7 +15,7 @@ Para agregar un nuevo manejador(Handler) de tareas, ir a `hooks.py` y agrega un
Aquí hacemos referencia a una función Python que va a ser ejecutada diariamente. Vamos a ver como se ve esta función:
- # Copyright (c) 2013, Frappe
+ # Copyright (c) 2013, Frappé
# For license information, please see license.txt
from __future__ import unicode_literals
diff --git a/frappe/docs/user/es/tutorial/users-and-records.md b/frappe/docs/user/es/tutorial/users-and-records.md
index e599c4301b..2885c6bd5c 100644
--- a/frappe/docs/user/es/tutorial/users-and-records.md
+++ b/frappe/docs/user/es/tutorial/users-and-records.md
@@ -1,6 +1,6 @@
# Creando Usuarios y Registros
-Teniendo los modelos creados, podemos empezar a crear registros usando la interfaz gráfica de usuario de Frappe. No necesitas crear vistas! Las vistas en Frappe son automáticamente creadas basadas en las propiedades del DocType.
+Teniendo los modelos creados, podemos empezar a crear registros usando la interfaz gráfica de usuario de Frappé. No necesitas crear vistas! Las vistas en Frappé son automáticamente creadas basadas en las propiedades del DocType.
### 4.1 Creando Usuarios
@@ -12,7 +12,7 @@ Crea un nuevo Usuario y llena los campos de nombre, primer nombre y nueva contra
Luego dale los Roles de Librarian y de Library Member a este usuario.
-
+
Ahora cierra sesión y accede usando las credenciales del nuevo usuario.
@@ -20,36 +20,36 @@ Ahora cierra sesión y accede usando las credenciales del nuevo usuario.
Debes ver un ícono del módulo de Library Management. Dar click en el ícono para entrar a la página del módulo:
-
+
Aquí puedes ver los DocTypes que fueron creados para la aplicación. Vamos a comenzar a crear nuevos registros.
Primero vamos a crear un nuevo Article:
-
+
Aquí vas a ver que los DocTypes que haz creado han sido renderizados como un formulario. Las validaciones y las otras restricciones también están aplicadas según se diseñaron. Vamos a llenar los datos de un Article.
-
+
Puedes agregar una imagen si deseas.
-
+
Ahora vamos a crear un nuevo miembro:
-
+
Despues de esto, crearemos una nueva membresía (membership) para el miembro.
Si recuerdas, aquí hemos específicado los valores del nombre y apellido del miembro directamente desde el registro del miembro tan pronto selecciones el miembro id, los nombres serán actualizados.
-
+
Como puedes ver la fecha tiene un formato de año-mes-día lo cual es una fecha del sistema. Para seleccionar o cambiar la fecha, tiempo y formatos de números, ir a:
> Setup > Settings > System Settings
-
+
{next}
diff --git a/frappe/docs/user/es/tutorial/web-views.md b/frappe/docs/user/es/tutorial/web-views.md
index 2fe98f1523..79a311e7b5 100644
--- a/frappe/docs/user/es/tutorial/web-views.md
+++ b/frappe/docs/user/es/tutorial/web-views.md
@@ -1,8 +1,8 @@
# Vistas Web (Web Views)
-Frappe tiene dos entornos principales, El escritorio y la Web. El escritorio es una interfaz de usuario controlada con una excelente aplicación AJAX y la web es mas plantillas de HTML tradicionales dispuestas para consumo público. Vistas Web pueden también ser generadas para crear vistas controladas para los usuarios que puedes acceder al sistema pero aún así no tener acceso al escritorio.
+Frappé tiene dos entornos principales, El escritorio y la Web. El escritorio es una interfaz de usuario controlada con una excelente aplicación AJAX y la web es mas plantillas de HTML tradicionales dispuestas para consumo público. Vistas Web pueden también ser generadas para crear vistas controladas para los usuarios que puedes acceder al sistema pero aún así no tener acceso al escritorio.
-En Frappe, Las vistas web son manejadas por plantillas que estan usualmente en el directorio `templates`. Hay dos tipos principales de plantillas.
+En Frappé, Las vistas web son manejadas por plantillas que estan usualmente en el directorio `templates`. Hay dos tipos principales de plantillas.
1. Pages: Estos son plantillas Jinja donde una vista existe solo para una ruta. ejemplo. `/blog`.
2. Generators: Estas son plantiallas donde cada instancia de un DocType tiene una ruta diferente `/blog/a-blog`, `blog/b-blog` etc.
@@ -16,11 +16,11 @@ Vamos a ver las Vistas web estandar:
Si estas logueado como el usuario de prueba, ve a `/article` y deberías ver la lista de artículos.
-
+
Da click en uno de los artículos y vas a ver una vista web por defecto
-
+
Si deseas hacer una mejor vista para la lista de artículos, crea un archivo llamado `row_template.html` en el directorio `library_management/templates/includes/list/`.
Aquí hay un archivo de ejemplo:
@@ -45,11 +45,11 @@ Aquí, vas a tener todas las propiedades de un artículo en el objeto `doc`.
La lista actualizada debe lucir de esta manera!
-
+
#### Página de Inicio
-Frappe también tiene vistas para el registro de usuarios que incluye opciones de registro usando Google, Facebook y GitHub. Cuando un usuario se registra vía la web, no tiene acceso a la interfaz del Escritorio por defecto.
+Frappé también tiene vistas para el registro de usuarios que incluye opciones de registro usando Google, Facebook y GitHub. Cuando un usuario se registra vía la web, no tiene acceso a la interfaz del Escritorio por defecto.
> Para permitirles a los usuarios acceso al Escritorio, debes especificar que el usuario es de tipo "System User" en Setup > User
diff --git a/frappe/docs/user/es/videos/index.md b/frappe/docs/user/es/videos/index.md
index a5fb5f4638..ef190c1a14 100644
--- a/frappe/docs/user/es/videos/index.md
+++ b/frappe/docs/user/es/videos/index.md
@@ -1,8 +1,8 @@
-# Videos Tutoriales acerca del Framework Frappe
+# Videos Tutoriales acerca del Framework Frappé
-Este video tutorial de 10 videos va a enseñarte como crear aplicaciones complejas en Frappe.
+Este video tutorial de 10 videos va a enseñarte como crear aplicaciones complejas en Frappé.
-Prerrequisitos: Debes tener conocimientos básicos de Python, Javascript y MySQl antes de empezar este tutorial.
+Prerrequisitos: Debes tener conocimientos básicos de Python, Javascript y MySQl antes de empezar este tutorial.
---
diff --git a/frappe/docs/user/fr/index.md b/frappe/docs/user/fr/index.md
index a25785e59e..a68da6210b 100644
--- a/frappe/docs/user/fr/index.md
+++ b/frappe/docs/user/fr/index.md
@@ -1,3 +1,3 @@
-# Develop Apps with Frappe
+# Develop Apps with Frappé
{index}
diff --git a/frappe/docs/user/fr/tutorial/app.md b/frappe/docs/user/fr/tutorial/app.md
index 54c4fffd1e..9061e5348c 100644
--- a/frappe/docs/user/fr/tutorial/app.md
+++ b/frappe/docs/user/fr/tutorial/app.md
@@ -1,13 +1,13 @@
# Qu'est ce qu'une application ?
-Dans Frappe, une application est juste une application Python standard. Vous pouvez structurer une application Frappe de
-la même facon que vous structurez une application Python standard. Pour le déploiement, Frappe utilise Setuptools donc
+Dans Frappé, une application est juste une application Python standard. Vous pouvez structurer une application Frappé de
+la même facon que vous structurez une application Python standard. Pour le déploiement, Frappé utilise Setuptools donc
vous pouvez facilement déployer votre application sur n'importe quelle machine.
-Frappe fournit une interface WSGI et pendant vos développements vous pouvez utiliser le serveur Werkzeug embarqué. Pour le
+Frappé fournit une interface WSGI et pendant vos développements vous pouvez utiliser le serveur Werkzeug embarqué. Pour le
déploiement en production, nous recommandons d'utiliser nginx et gunicorn.
-Frappe, c'est aussi une une architecture multi-tenant ce qui signifie que vous pouvez lancer plusieurs sites sur une même
+Frappé, c'est aussi une une architecture multi-tenant ce qui signifie que vous pouvez lancer plusieurs sites sur une même
configuration, chaque site utilisant ses propres applications et utilisateurs. La base de données de chaque site est indépendante.
{next}
diff --git a/frappe/docs/user/fr/tutorial/before.md b/frappe/docs/user/fr/tutorial/before.md
index 9c73c934dc..b10e89c33d 100644
--- a/frappe/docs/user/fr/tutorial/before.md
+++ b/frappe/docs/user/fr/tutorial/before.md
@@ -1,6 +1,6 @@
# Avant de commencer
-
Liste des outils et technologies utiles dans le développement d'applications avec Frappe.
+
Liste des outils et technologies utiles dans le développement d'applications avec Frappé.
Il y a un grand nombres de tutoriels en ligne et nous recommandons [CodeAcademy](http://www.codecademy.com/) ou vous trouverez beaucoup de ressources de qualité.
@@ -8,7 +8,7 @@ Il y a un grand nombres de tutoriels en ligne et nous recommandons [CodeAcademy]
#### 1. Python
-La partie serveur de Frappe est codée en Python et c'est une bonne idée d'[apprendre rapidement Python](http://www.codecademy.com/tracks/python) avant de commencer à comprendre Frappe. [Le tutoriel sur docs.python.org](https://docs.python.org/2.7/tutorial/index.html) est aussi une excellente ressource pour apprendre Python. Notez que Frappe utilise Python 2.7.
+La partie serveur de Frappé est codée en Python et c'est une bonne idée d'[apprendre rapidement Python](http://www.codecademy.com/tracks/python) avant de commencer à comprendre Frappé. [Le tutoriel sur docs.python.org](https://docs.python.org/2.7/tutorial/index.html) est aussi une excellente ressource pour apprendre Python. Notez que Frappé utilise Python 2.7.
Pour produire une application de qualité, vous devez inclure des tests automatiques. Vous pouvez comprendre les bases du développement par les tests [ici](http://code.tutsplus.com/tutorials/beginning-test-driven-development-in-python--net-30137).
@@ -45,5 +45,5 @@ Si vous voulez modifier les affichages, vous devez apprendre le [language de tem
---
-Quand vous êtes prêts, [essayez de développer une application simple avec Frappe]({{ docs_base_url }}/user/fr/tutorial/app)
+Quand vous êtes prêts, [essayez de développer une application simple avec Frappé](/docs/user/fr/tutorial/app)
diff --git a/frappe/docs/user/fr/tutorial/bench.md b/frappe/docs/user/fr/tutorial/bench.md
index c2902b3a87..979202dfd5 100644
--- a/frappe/docs/user/fr/tutorial/bench.md
+++ b/frappe/docs/user/fr/tutorial/bench.md
@@ -1,8 +1,8 @@
-# Installer le bench de Frappe
+# Installer le bench de Frappé
-La façon la plus rapide d'installer Frappe sur un système Unix est d'utiliser frappe-bench. Lisez les instructions détaillées sur l'installation et l'utilisation de Frappe Bench : [https://github.com/frappe/bench](https://github.com/frappe/bench)
+La façon la plus rapide d'installer Frappé sur un système Unix est d'utiliser frappe-bench. Lisez les instructions détaillées sur l'installation et l'utilisation de Frappé Bench : [https://github.com/frappe/bench](https://github.com/frappe/bench)
-Avec Frappe Bench vous pourrez configurer et héberger plusieurs sites et applications. Frappe Bench configure aussi un environnement virtuel Python (Virtualenv), vos applications seront donc isolées les unes des autres et vous n'aurez pas de conflits avec d'autres environnements de développement.
+Avec Frappé Bench vous pourrez configurer et héberger plusieurs sites et applications. Frappé Bench configure aussi un environnement virtuel Python (Virtualenv), vos applications seront donc isolées les unes des autres et vous n'aurez pas de conflits avec d'autres environnements de développement.
La commande `bench` sera ajoutée pour vous aider dans le développement et la gestion de vos applications.
diff --git a/frappe/docs/user/fr/tutorial/conclusion.md b/frappe/docs/user/fr/tutorial/conclusion.md
index 8428b362b2..16929104c6 100644
--- a/frappe/docs/user/fr/tutorial/conclusion.md
+++ b/frappe/docs/user/fr/tutorial/conclusion.md
@@ -1,6 +1,6 @@
# Conclusion
-Nous espérons vous avoir donné un apercu de comment les applications sont développées avec Frappe. L'ojectif était de vous
+Nous espérons vous avoir donné un apercu de comment les applications sont développées avec Frappé. L'ojectif était de vous
montrer brievement, les différents aspects du développement d'une application en vous donnant un apércu général. Pour aller plus
loin dans les explications, consultez l'API.
diff --git a/frappe/docs/user/fr/tutorial/controllers.md b/frappe/docs/user/fr/tutorial/controllers.md
index dd9f2ab69d..2175ffbac8 100644
--- a/frappe/docs/user/fr/tutorial/controllers.md
+++ b/frappe/docs/user/fr/tutorial/controllers.md
@@ -50,7 +50,7 @@ Dans ce script:
Vérifiez vos validations en créant de nouveaux enregistrements.
-
+
#### Debogage
diff --git a/frappe/docs/user/fr/tutorial/doctypes.md b/frappe/docs/user/fr/tutorial/doctypes.md
index 698e1e6c69..69dae3a41a 100644
--- a/frappe/docs/user/fr/tutorial/doctypes.md
+++ b/frappe/docs/user/fr/tutorial/doctypes.md
@@ -6,7 +6,7 @@ Pour créer un nouveau **DocType**, rendez-vous sur:
> Developer > Documents > Doctype > New
-
+
Dans un premier temps, saisissez le module, dans notre cas, **Library Managment**
@@ -25,7 +25,7 @@ Les champs sont bien plus que des colonnes d'une base de données, ils peuvent
Ajoutons des champs pour l'article.
-
+
Quand vous ajoutez des champs, vous devez entrer le **Type**. Le **Label** est optionnel pour les retours de sections et de colonnes.
Le **Name** (`fieldname`) ets le nom de la colonne dans la base de données et aussi la propriété du controleur. Les définitions
@@ -50,11 +50,11 @@ sur chacune des lignes comme ci-dessous
#### Ajouter des permissins
Après avoir ajouté les champs, validez et ajoutez un nouveau rôle dans la section des règles de permissions. Pour le moment
-ajoutons les droits le lecture, écriture, création et suppression au modèle **Librarian**. Frappe à une gestion fine des
+ajoutons les droits le lecture, écriture, création et suppression au modèle **Librarian**. Frappé à une gestion fine des
permissions sur les modèles. Vous pouvez aussi changer les permissions plus tard en utilisant le gestionnaire de permissions
dans la configuration.
-
+
#### Sauvegarde
diff --git a/frappe/docs/user/fr/tutorial/form-client-scripting.md b/frappe/docs/user/fr/tutorial/form-client-scripting.md
index f2f2e21894..a6ab64a60c 100644
--- a/frappe/docs/user/fr/tutorial/form-client-scripting.md
+++ b/frappe/docs/user/fr/tutorial/form-client-scripting.md
@@ -1,3 +1,5 @@
+# Form Client Scripting
+
## Codes des formulaires
Jusqu'a maintenant, nous avons développé un système basique qui fonctionne parfaitement sans avoir eu besoin d'écrire une
diff --git a/frappe/docs/user/fr/tutorial/index.md b/frappe/docs/user/fr/tutorial/index.md
index b518478c72..3aa6ccb6ee 100644
--- a/frappe/docs/user/fr/tutorial/index.md
+++ b/frappe/docs/user/fr/tutorial/index.md
@@ -1,6 +1,6 @@
-# Tutoriel Frappe
+# Tutoriel Frappé
-Dans ce guide nous allons vous montrer comment créer une application de A à Z en utilisant **Frappe**. Avec un
+Dans ce guide nous allons vous montrer comment créer une application de A à Z en utilisant **Frappé**. Avec un
exemple de gestion de bibliothèque, nous allons aborder les sujets suivants:
1. Installation
@@ -13,12 +13,12 @@ exemple de gestion de bibliothèque, nous allons aborder les sujets suivants:
## A qui s'adresse ce tutoriel ?
-Ce guide est à destination des développeurs familiers avec la création d'applications web. Le framework Frappe est développé
+Ce guide est à destination des développeurs familiers avec la création d'applications web. Le framework Frappé est développé
avec Python, utilise le système de base de données MariaDB et HTML/CSS/Javascript pour le rendu des pages.
Il est donc nécessaire d'être familier avec ces technologies. Si vous n'avez jamais utilisé Python auparavant, vous devriez
suivre un tutoriel rapide avant de suivre ce guide.
-Frappe utilise le système de gestion de version git sur Github. Il est donc important que vous connaissiez les bases de
+Frappé utilise le système de gestion de version git sur Github. Il est donc important que vous connaissiez les bases de
l'utilisation de git et que vous ayez un compte sur Github pour gérer vos applications.
## Exemple
@@ -32,7 +32,7 @@ les modèles suivants:
1. Library Membership (période pendant laquelle un membre peut emprunter)
1. Library Management Setting (configuration générale)
-L'interface utilisateur (UI) pour le bibliothécaire sera **Frappe Desk**, un système de rendu d'interface où les formulaires sont
+L'interface utilisateur (UI) pour le bibliothécaire sera **Frappé Desk**, un système de rendu d'interface où les formulaires sont
automatiquement générés depuis les modèles en appliquant rôles et permissions.
Nous allons aussi créer des vues pour la bibliothèque afin que les utilisateurs puissent parcourir la liste des livres depuis un site internet.
diff --git a/frappe/docs/user/fr/tutorial/models.md b/frappe/docs/user/fr/tutorial/models.md
index f67d356bf6..3d69438512 100644
--- a/frappe/docs/user/fr/tutorial/models.md
+++ b/frappe/docs/user/fr/tutorial/models.md
@@ -1,6 +1,6 @@
# Définir des modèles
-La prochaine étape est de définir les modèles que nous avons présenté en introduction. Dans **Frappe**, les modèles sont appelés
+La prochaine étape est de définir les modèles que nous avons présenté en introduction. Dans **Frappé**, les modèles sont appelés
des **DocTypes**. Vous pouvez définir de nouveaux **DocTypes** depuis l'interface. Les **DocTypes** sont faits de **DocField**
et de permissions appelées **DocPerms**.
diff --git a/frappe/docs/user/fr/tutorial/naming-and-linking.md b/frappe/docs/user/fr/tutorial/naming-and-linking.md
index 28ef965efa..0cb2be8bf0 100644
--- a/frappe/docs/user/fr/tutorial/naming-and-linking.md
+++ b/frappe/docs/user/fr/tutorial/naming-and-linking.md
@@ -4,7 +4,7 @@ Définissons un nouveau **DocType**:
1. Library Member (First Name, Last Name, Email Address, Phone, Address)
-
+
#### Le nommage des DocTypes
@@ -21,11 +21,11 @@ Cela peut être configuré par le champs **Autoname**. Pour le controleur, laiss
> **Search Fields**: Un **DocType** peut être nommé sur la base d'une serie mais nous devons toujours pouvoir le chercher par un nom.
Dans notre cas, l'arcicle peut etre cherché par un titre ou par l'auteur. Remplissons donc le champs **Search Fields**.
-
+
#### Relation et champs select
-Les clés étrangères sont, dans Frappe, traduits par un champs de type **Link**. Le **DocType** ciblé doit être mentionné
+Les clés étrangères sont, dans Frappé, traduits par un champs de type **Link**. Le **DocType** ciblé doit être mentionné
dans le champs **Options**.
Dans notre exemple, pour le **doctype** `Library Transaction`, nous avons un lien vers `Library Member` et vers `Article`.
@@ -34,12 +34,12 @@ Dans notre exemple, pour le **doctype** `Library Transaction`, nous avons un lie
d'indexer la colonne. Cela pourrait ne pas être optimum, c'est pour cela que la validation de la clé étrangère est faite
par le framework.
-
+
Pour les champs **select**, comme mentionné plus tôt, ajoutez chacune des options dans le champs **Options**, chaque
option sur une nouvelle ligne.
-
+
faites de même pour les autres modèles.
@@ -52,7 +52,7 @@ Pour cela, nous pouvons utiliser des champs en lecture seules et, dans les optio
et le nom du champs de la propriété que nous voulons parcourir. Dans cet exemple, dans **Member First Name** nous pouvons
définir `library_member.first_name`
-
+
### Completer les Modeles
@@ -60,19 +60,19 @@ De la même facon, vous pouvez compléter les autres modèles pour qu'au final l
#### Article
-
+
#### Library Member
-
+
#### Library Membership
-
+
#### Library Transaction
-
+
> Vérifiez que le modèles **Librarian** aient les permissions sur chaque **DocType**.
diff --git a/frappe/docs/user/fr/tutorial/new-app.md b/frappe/docs/user/fr/tutorial/new-app.md
index 418a1643be..c3db75226c 100644
--- a/frappe/docs/user/fr/tutorial/new-app.md
+++ b/frappe/docs/user/fr/tutorial/new-app.md
@@ -9,7 +9,7 @@ remplissez les informations à propos de votre application. Cela va créer un te
$ bench new-app library_management
App Title (defaut: Lib Mgt): Library Management
App Description: App for managing Articles, Members, Memberships and Transactions for Libraries
- App Publisher: Frappe
+ App Publisher: Frappé
App Email: info@frappe.io
App Icon (default 'octicon octicon-file-directory'): octicon octicon-book
App Color (default 'grey'): #589494
@@ -46,11 +46,11 @@ L'application sera créée dans un répertoire appelé `library_management` et a
1. `config` contient les configurations de l'application
1. `desktop.py` est l'endroit ou les icones peuvent être ajoutées au bureau
1. `hooks.py` contient les définitions de la facon dont l'intégration avec l'environnement et les autres applications est faite.
-1. `library_management` (interne) est un **module** bootstrappé. Dans Frappe, un **module** est l'endroit où sont les controlleurs et les modeles.
+1. `library_management` (interne) est un **module** bootstrappé. Dans Frappé, un **module** est l'endroit où sont les controlleurs et les modeles.
1. `modules.txt` contient la liste des **modules** dans l'application. Quand vous créez un nouveau module, c'est obligatoire de l'ajouter dans ce fichier.
1. `patches.txt` contient les patchs de migration. Ce sont des références Python utilisant la notation par point.
-1. `templates` est le repertoire qui contient les templates des vues. Les templates pour **Login** et autres pages par défaut sont déjà contenus dans Frappe.
-1. `generators` est l'endroit où sont stockés les templates des modèles. Chaque instance du modèle a une route web comme par exemple les **articles de blog** ou chaque article a une adresse unique. Dans Frappe, Jinj2 est utilisé pour les templates.
+1. `templates` est le repertoire qui contient les templates des vues. Les templates pour **Login** et autres pages par défaut sont déjà contenus dans Frappé.
+1. `generators` est l'endroit où sont stockés les templates des modèles. Chaque instance du modèle a une route web comme par exemple les **articles de blog** ou chaque article a une adresse unique. Dans Frappé, Jinj2 est utilisé pour les templates.
1. `pages` contient les routes uniques pour les templates. Par exemple "/blog" ou "/article"
{next}
diff --git a/frappe/docs/user/fr/tutorial/reports.md b/frappe/docs/user/fr/tutorial/reports.md
index 92b0ef4d45..b9bf4d024d 100644
--- a/frappe/docs/user/fr/tutorial/reports.md
+++ b/frappe/docs/user/fr/tutorial/reports.md
@@ -2,6 +2,6 @@
Vous pouvez aussi cliquer sur le texte "Rapports" dans la barre latérale de gauche pour voir vos données dans un tableau.
-
+
{next}
diff --git a/frappe/docs/user/fr/tutorial/roles.md b/frappe/docs/user/fr/tutorial/roles.md
index ce5add6000..e0bc38da5b 100644
--- a/frappe/docs/user/fr/tutorial/roles.md
+++ b/frappe/docs/user/fr/tutorial/roles.md
@@ -10,6 +10,6 @@ Pour créer un nouveau rôle, se rendre sur:
> Setup > Users > Role > New
-
+
{next}
diff --git a/frappe/docs/user/fr/tutorial/setting-up-the-site.md b/frappe/docs/user/fr/tutorial/setting-up-the-site.md
index 11b7aad611..2637bde1d4 100644
--- a/frappe/docs/user/fr/tutorial/setting-up-the-site.md
+++ b/frappe/docs/user/fr/tutorial/setting-up-the-site.md
@@ -21,7 +21,7 @@ Vous pouvez installer un nouveau site avec la commande `bench new-site library`
Cette commande va créer une nouvelle base de données, un repertoire et installer `frappe` (qui est aussi une application!)
dans le nouveau site. L'application `frappe` a deux modules par défaut, **Core** et **Website**. Le module **Core**
-contient les modèles basiques pour l'application. En effet, Frappe contient des modèles par défaut qui sont appelés **DocTypes**
+contient les modèles basiques pour l'application. En effet, Frappé contient des modèles par défaut qui sont appelés **DocTypes**
mais nous en reparlerons plus tard.
$ bench new-site library
diff --git a/frappe/docs/user/fr/tutorial/single-doctypes.md b/frappe/docs/user/fr/tutorial/single-doctypes.md
index e3b10a0523..8f06d09b02 100644
--- a/frappe/docs/user/fr/tutorial/single-doctypes.md
+++ b/frappe/docs/user/fr/tutorial/single-doctypes.md
@@ -1,12 +1,12 @@
# Les DocTypes de type Single
Une application aura en générale une seule page de configuration. Dans notre application nous pouvons donc définir une page
-ou nous définierons la période prêt. Nous avons aussi besoin de sauvegarder cette propriété. Dans Frappe, ceci est possible
+ou nous définierons la période prêt. Nous avons aussi besoin de sauvegarder cette propriété. Dans Frappé, ceci est possible
en utilisant un un Doctype de type **Single**. Un DocType **Single** est comme le pattern Singleton, une instance unique
d'une classe. Appelons le **Library Managment Settings**.
Pour créer un DocType de type **Single** cochez la case **Is Single**.
-
+
{suite}
diff --git a/frappe/docs/user/fr/tutorial/start.md b/frappe/docs/user/fr/tutorial/start.md
index 608127c0d5..b5ba0d1e73 100644
--- a/frappe/docs/user/fr/tutorial/start.md
+++ b/frappe/docs/user/fr/tutorial/start.md
@@ -14,7 +14,7 @@ Pour démarrer le serveur de développement, lancez la commande `bench start`
Vous pouvez maintenant ouvrir votre navigateur et vous rendre sur `http://localhost:8000`. Si tout se passe bien vous devriez voir:
-
+
Maintenant, connectez vous avec les identifiants suivants:
@@ -24,9 +24,9 @@ Mot de passe: **Le mot de passe que vous avez définis pendant l'installation**
Une fois connecté, vous devriez voir le `Desk`, c'est à dire la page d'accueil
-
+
-Comme vous pouvez le voir, Frappe fournit quelques applications comme un To Do, un gestionnaire de fichiers etc. Ces applications
+Comme vous pouvez le voir, Frappé fournit quelques applications comme un To Do, un gestionnaire de fichiers etc. Ces applications
peuvent être intégrées par la suite.
{next}
diff --git a/frappe/docs/user/fr/tutorial/task-runner.md b/frappe/docs/user/fr/tutorial/task-runner.md
index b455fb6af9..74d39f7de8 100644
--- a/frappe/docs/user/fr/tutorial/task-runner.md
+++ b/frappe/docs/user/fr/tutorial/task-runner.md
@@ -1,6 +1,6 @@
# Les tâches planifiées
-Finalement, une application a aussi à envoyer des emails de notifications ou d'autres taches planifiées. Dans Frappe, si
+Finalement, une application a aussi à envoyer des emails de notifications ou d'autres taches planifiées. Dans Frappé, si
vous avez configuré le **bench**, la tâche / planificateur est configuré via Celery en utilisant les queues Redis.
Pour ajouter un nouveau gestionnaire de tâches, ouvrez le fichier `hooks.py` et ajoutez un nouveau gestionnaire. Les gestionnaires
@@ -18,7 +18,7 @@ Pour ajouter un nouveau gestionnaire de tâches, ouvrez le fichier `hooks.py` et
Ici, nous pointons sur une fonction en Python et cette fonction sera appelée tous les jours. Voyons à quoi cette fonction
ressemble:
- # Copyright (c) 2013, Frappe
+ # Copyright (c) 2013, Frappé
# For license information, please see license.txt
from __future__ import unicode_literals
diff --git a/frappe/docs/user/fr/tutorial/users-and-records.md b/frappe/docs/user/fr/tutorial/users-and-records.md
index e0a714c9c4..a46ebf0fbb 100644
--- a/frappe/docs/user/fr/tutorial/users-and-records.md
+++ b/frappe/docs/user/fr/tutorial/users-and-records.md
@@ -1,7 +1,7 @@
# Créer des utilisateurs et des enregistrements
Maintenant que nous avons définis des modèles, nous pouvons créér des enregistrements directement depuis l'interface. Vous
-n'avez pas à créer des vues ! Les vues dans Frappe sont automatiquements créées à partir des propriétés de vos **DocTypes**.
+n'avez pas à créer des vues ! Les vues dans Frappé sont automatiquements créées à partir des propriétés de vos **DocTypes**.
### 4.1 Créer des utilisateurs
@@ -12,7 +12,7 @@ Afin de créer des enregistrements, nous avons tout d'abord besoin de créer un
Saisissez un nom, un prénom ainsi qu'un mot de passe à votre utilisateur pour le créer et donnez lui les rôles `Librarian`
et `Library Member`.
-
+
Maintenant déconnectez-vous puis connectez-vous avec l'utilisateur que vous venez de créer.
@@ -21,39 +21,39 @@ Maintenant déconnectez-vous puis connectez-vous avec l'utilisateur que vous ven
Vous allez désormais voir une icone pour notre module de gestion de librairie. Cliquez sur cette icone et vous apercevrez
la page du module:
-
+
Vous pouvez donc voir les **DocTypes** que nous avons créés pour l'application. Créons quelques enregistrements.
Définissons un nouvel Article:
-
+
Le **DocType** que vous avons définis est transformé en formulaire. Les règles de validation seront appliquées selon nos
définitions. Remplissons le formulaire pour créer notre premier article.
-
+
Vous pouvez aussi ajouter une image.
-
+
Maintenant créons un nouveau membre.
-
+
Après cela, définissons un nouvel abonnement pour ce membre.
Ici, si vous vous souvenez, nous avons définis que les noms et prénoms doivent automatiquement être renseignés dès que nous
avons selectionné l'ID du membre.
-
+
Comme vous pouvez le voir, la date est formattée en années-mois-jour qui est le format du système. Pour configurer / changer
le format de la date et de l'heure, rendez-vous sur:
> Setup > Settings > System Settings
-
+
{suite}
diff --git a/frappe/docs/user/fr/tutorial/web-views.md b/frappe/docs/user/fr/tutorial/web-views.md
index 9b0f80a0e9..de7c0a2318 100644
--- a/frappe/docs/user/fr/tutorial/web-views.md
+++ b/frappe/docs/user/fr/tutorial/web-views.md
@@ -1,11 +1,11 @@
# Les vues web
-Frappe a deux principaux environnements, le **bureau** et **le web**. Le **bureau** est un environnement riche AJAX alors
+Frappé a deux principaux environnements, le **bureau** et **le web**. Le **bureau** est un environnement riche AJAX alors
que **le web** est une collection plus traditionnelle de fichiers HTML pour la consultation publique. Les vues web peuvent
aussi être générées pour créer des vues plus controllées pour les utilisateurs qui peuvent se connecter mais qui n'ont pas
accès au desk.
-Dans Frappe, les vues sont gérées par des templates et sont tout naturellement placés dans le repertoire `templates`. Il
+Dans Frappé, les vues sont gérées par des templates et sont tout naturellement placés dans le repertoire `templates`. Il
y a 2 principaux types de templates.
1. Pages: Ce sont des templates Jinja ou une vue unique existe pour une route (exemple:`/blog`).
@@ -20,11 +20,11 @@ Jettons un oeil aux vues standards:
Si vous êtes connecté avec votre utilisateur de test, rendez-vous sur`/article` et vous devriez voir la liste des articles:
-
+
Cliquez sur un article et vous devriez voir une vue par défaut.
-
+
Maintenant, si vous voulez une meilleur liste pour vos articles, créez un fichier appelé `row_template.html` dans le
repertoire `library_management/templates/includes/list/`. Voici un exemple du contenu de ce fichier:
@@ -50,11 +50,11 @@ Ici, vous aurez toutes les propriétés d'un article dans l'object `doc`.
La mise à jour de la liste ressemble à ca !
-
+
#### La page d'accueil
-Frappe permet l'inscription et inclut les inscriptions via Google, Facebook et Github. Quand un utilisateur s'inscrit via
+Frappé permet l'inscription et inclut les inscriptions via Google, Facebook et Github. Quand un utilisateur s'inscrit via
le web, il n'a pas accès à l'interface du desk par defaut.
> Pour autoriser les utilisateurs à accéder au `Desk`, ouvrez la configuration de l'utilisateur (Setup > User) et définissez
diff --git a/frappe/docs/user/index.md b/frappe/docs/user/index.md
index 4091cec362..91ceae5836 100644
--- a/frappe/docs/user/index.md
+++ b/frappe/docs/user/index.md
@@ -1,8 +1,8 @@
-# Frappe Developer Tutorial
+# Frappé Developer Tutorial
Select your language
-1. [English]({{docs_base_url}}/user/en)
-1. [Français]({{docs_base_url}}/user/fr)
-1. [Português]({{docs_base_url}}/user/pt)
-1. [Español]({{docs_base_url}}/user/es)
\ No newline at end of file
+1. [English](/docs/user/en)
+1. [Français](/docs/user/fr)
+1. [Português](/docs/user/pt)
+1. [Español](/docs/user/es)
\ No newline at end of file
diff --git a/frappe/docs/user/pt/index.md b/frappe/docs/user/pt/index.md
index a25785e59e..a68da6210b 100755
--- a/frappe/docs/user/pt/index.md
+++ b/frappe/docs/user/pt/index.md
@@ -1,3 +1,3 @@
-# Develop Apps with Frappe
+# Develop Apps with Frappé
{index}
diff --git a/frappe/docs/user/pt/tutorial/app.md b/frappe/docs/user/pt/tutorial/app.md
index dd1a2597e3..3d0d327db1 100755
--- a/frappe/docs/user/pt/tutorial/app.md
+++ b/frappe/docs/user/pt/tutorial/app.md
@@ -1,9 +1,9 @@
# O que é uma aplicação
-Uma Aplicação em Frappe é apenas uma aplicação padrão em Python. Você pode estruturar uma aplicação Frappe da mesma forma que estrutura uma aplicação padrão do Python. Para fazer o deploy, Frappe usa o padrão Setuptools do Python, assim você pode facilmente portar e instalar o aplicativo em qualquer máquina.
+Uma Aplicação em Frappé é apenas uma aplicação padrão em Python. Você pode estruturar uma aplicação Frappé da mesma forma que estrutura uma aplicação padrão do Python. Para fazer o deploy, Frappé usa o padrão Setuptools do Python, assim você pode facilmente portar e instalar o aplicativo em qualquer máquina.
-Frappe Framework fornece uma interface WSGI e para o desenvolvimento você pode usar o servidor embutido Werkzeug. Para a implementação em produção, recomendamos o uso do nginx e gunicorn.
+Frappé Framework fornece uma interface WSGI e para o desenvolvimento você pode usar o servidor embutido Werkzeug. Para a implementação em produção, recomendamos o uso do nginx e gunicorn.
-Frappe também tem uma arquitetura multi-tenant, a partir da base. Isso significa que você pode executar vários "sites" em sua configuração, cada um poderia estar servindo um conjunto diferente de aplicativos e usuários. O banco de dados de cada site é separado.
+Frappé também tem uma arquitetura multi-tenant, a partir da base. Isso significa que você pode executar vários "sites" em sua configuração, cada um poderia estar servindo um conjunto diferente de aplicativos e usuários. O banco de dados de cada site é separado.
{next}
diff --git a/frappe/docs/user/pt/tutorial/before.md b/frappe/docs/user/pt/tutorial/before.md
index 31f407a7d2..6d8cba9a12 100755
--- a/frappe/docs/user/pt/tutorial/before.md
+++ b/frappe/docs/user/pt/tutorial/before.md
@@ -1,6 +1,6 @@
# Antes de começar
-
Uma lista de ferramentas, tecnologias que serão muito úteis para a construção de aplicativos com Frappe.
+
Uma lista de ferramentas, tecnologias que serão muito úteis para a construção de aplicativos com Frappé.
Há uma série de bons tutoriais on-line e encontramos [Codecademy] (http://www.codecademy.com/) como um dos mais bonitos tutoriais, aqui há um monte de lições que você pode aprender com Codecademy
@@ -8,7 +8,7 @@ Há uma série de bons tutoriais on-line e encontramos [Codecademy] (http://www.
#### 1. Python
-O lado do servidor do Frappe é escrito em Python e é uma boa idéia para [aprender rapidamente Python] (http://www.codecademy.com/tracks/python) antes de começar a se aprofundar em Frappe. Outro bom lugar para aprender Pytohn é o [tutorial no docs.python.org](https://docs.python.org/2.7/tutorial/index.html). Note-se que o Frappe usa Python 2.7
+O lado do servidor do Frappé é escrito em Python e é uma boa idéia para [aprender rapidamente Python] (http://www.codecademy.com/tracks/python) antes de começar a se aprofundar em Frappé. Outro bom lugar para aprender Pytohn é o [tutorial no docs.python.org](https://docs.python.org/2.7/tutorial/index.html). Note-se que o Frappé usa Python 2.7
Para escrever código do lado do servidor de qualidade, você deve incluir testes automáticos. Você pode aprender as noções básicas de [test driven development (TDD) - aqui] (http://code.tutsplus.com/tutorials/beginning-test-driven-development-in-python--net-30137).
@@ -44,4 +44,4 @@ Se estiver personalizando modelos de impressão, você precisa aprender a [líng
---
-Quando estiver pronto, [tente construir uma aplicação de exemplo em Frappe]({{docs_base_url}}/user/pt/tutorial/app)
+Quando estiver pronto, [tente construir uma aplicação de exemplo em Frappé](/docs/user/pt/tutorial/app)
diff --git a/frappe/docs/user/pt/tutorial/bench.md b/frappe/docs/user/pt/tutorial/bench.md
index 5b764d7a8e..0402dbe4c0 100755
--- a/frappe/docs/user/pt/tutorial/bench.md
+++ b/frappe/docs/user/pt/tutorial/bench.md
@@ -1,10 +1,10 @@
-# Instalando o Frappe Bench
+# Instalando o Frappé Bench
-A maneira mais fácil de instalar o frappe em um sistema baseado em Unix, é utilizando o frappe-bench. Leia as instruções detalhadas sobre como instalar usando o Frappe Bench.
+A maneira mais fácil de instalar o frappe em um sistema baseado em Unix, é utilizando o frappe-bench. Leia as instruções detalhadas sobre como instalar usando o Frappé Bench.
> [https://github.com/frappe/bench](https://github.com/frappe/bench)
-Com Frappe Bench você será capaz de configurar e hospedar vários aplicativos e sites e vai também configurar um Virtualenv do Python de modo que você pode ter um ambiente isolado para executar seus aplicativos (e não terá conflito de versões com outros ambientes de desenvolvimento).
+Com Frappé Bench você será capaz de configurar e hospedar vários aplicativos e sites e vai também configurar um Virtualenv do Python de modo que você pode ter um ambiente isolado para executar seus aplicativos (e não terá conflito de versões com outros ambientes de desenvolvimento).
O `bench` ferramenta de linha de comando também será instalado, o que irá ajudá-lo no desenvolvimento e na gestão da instalação.
{next}
diff --git a/frappe/docs/user/pt/tutorial/conclusion.md b/frappe/docs/user/pt/tutorial/conclusion.md
index 8163004eeb..a3b62d9a0d 100755
--- a/frappe/docs/user/pt/tutorial/conclusion.md
+++ b/frappe/docs/user/pt/tutorial/conclusion.md
@@ -1,6 +1,6 @@
# Conclusão
-Esperamos que este tutorial lhe de uma visão geral de como as aplicações são desenvolvidas em Frappe. O objetivo era abordar brevemente os vários aspectos do desenvolvimento de aplicações e dar uma visão ampla. Para obter ajuda em questões específicas, olhe nossa API.
+Esperamos que este tutorial lhe de uma visão geral de como as aplicações são desenvolvidas em Frappé. O objetivo era abordar brevemente os vários aspectos do desenvolvimento de aplicações e dar uma visão ampla. Para obter ajuda em questões específicas, olhe nossa API.
Para obter ajuda, faça parte da comunidade no [canal de bate-papo no Gitter](https://gitter.im/frappe/erpnext) ou no [fórum de desenvolvedores](https://discuss.erpnext.com)
diff --git a/frappe/docs/user/pt/tutorial/controllers.md b/frappe/docs/user/pt/tutorial/controllers.md
index cf657e9d0d..85fc8fd1f6 100755
--- a/frappe/docs/user/pt/tutorial/controllers.md
+++ b/frappe/docs/user/pt/tutorial/controllers.md
@@ -48,7 +48,7 @@ Nesse script:
Verifique se suas validações funcionaram, criando de novos registros.
-
+
#### Debugging
diff --git a/frappe/docs/user/pt/tutorial/doctypes.md b/frappe/docs/user/pt/tutorial/doctypes.md
index fa6c7a26ee..5be3e534d4 100755
--- a/frappe/docs/user/pt/tutorial/doctypes.md
+++ b/frappe/docs/user/pt/tutorial/doctypes.md
@@ -6,7 +6,7 @@ Para criar um novo **DocType**, vá para:
> Developer > Documents > Doctype > New
-
+
No DocType, criamos o módulo, que no nosso caso é **Library Managment**
@@ -25,7 +25,7 @@ Os campos são muito mais do que colunas de banco de dados, eles podem ser:
Vamos adicionar os campos do artigo.
-
+
Quando você adiciona campos, você precisa digitar o **Type**. **Label** é opcional para quebra de seção e quebra de coluna. **Name** (`fieldname`) é o nome da coluna da tabela de banco de dados e também a propriedade do controlador. Isso tem que ser um *código amigável*, ou seja, ele tem que ter caracteres minusculos e _ em vez de "". Se você deixar o nome do campo em branco, ele será ajustado automaticamente quando você salvá-lo.
@@ -45,9 +45,9 @@ Nós podemos adicionar os seguintes campos:
#### Adicionando permissões
-Depois de adicionar os campos, finalize e adicione uma nova linha na seção Regras de permissão. Por enquanto, vamos dar permissão de Read, Write, Create, Delete and Report, a **Librarian**. Frappe tem uma Role baseado nas permissões do modelo. Você também pode alterar as permissões posteriormente usando o **Role Permissions Manager** do **Setup**.
+Depois de adicionar os campos, finalize e adicione uma nova linha na seção Regras de permissão. Por enquanto, vamos dar permissão de Read, Write, Create, Delete and Report, a **Librarian**. Frappé tem uma Role baseado nas permissões do modelo. Você também pode alterar as permissões posteriormente usando o **Role Permissions Manager** do **Setup**.
-
+
#### Salvando
diff --git a/frappe/docs/user/pt/tutorial/form-client-scripting.md b/frappe/docs/user/pt/tutorial/form-client-scripting.md
index c37196757f..faf453c57a 100755
--- a/frappe/docs/user/pt/tutorial/form-client-scripting.md
+++ b/frappe/docs/user/pt/tutorial/form-client-scripting.md
@@ -1,3 +1,5 @@
+# Form Client Scripting
+
## Escrevendo script de formulários
Até agora nós criamos um sistema básico que funciona fora da caixa, sem ter que escrever nenhum código. Vamos agora escrever alguns scripts para tornar a aplicação mais rica e adicionar validações de formulários para o usuário não inserir dados incorretos.
diff --git a/frappe/docs/user/pt/tutorial/index.md b/frappe/docs/user/pt/tutorial/index.md
index 56f5817fc5..fad825afcf 100755
--- a/frappe/docs/user/pt/tutorial/index.md
+++ b/frappe/docs/user/pt/tutorial/index.md
@@ -1,6 +1,6 @@
-# Frappe Tutorial
+# Frappé Tutorial
-In this guide we will show you how to create an application from scratch using **Frappe**. Using the example of a Library Management System, we will cover:
+In this guide we will show you how to create an application from scratch using **Frappé**. Using the example of a Library Management System, we will cover:
1. Installation
1. Making a New App
@@ -12,9 +12,9 @@ In this guide we will show you how to create an application from scratch using *
## Who is This For?
-This guide is intended for software developers who are familiar with how the web applications are built and served. Frappe Framework is built on Python and uses MariaDB database and for creating web views, HTML/CSS/Javascript is used. So it would be great if you are familiar with all these technologies. At minimum if you have never used Python before, you should take a quick tutorial before your use this Guide.
+This guide is intended for software developers who are familiar with how the web applications are built and served. Frappé Framework is built on Python and uses MariaDB database and for creating web views, HTML/CSS/Javascript is used. So it would be great if you are familiar with all these technologies. At minimum if you have never used Python before, you should take a quick tutorial before your use this Guide.
-Frappe uses the git version control system on GitHub. It is also important that you are familiar with basic git and have an account on GitHub to manage your applications.
+Frappé uses the git version control system on GitHub. It is also important that you are familiar with basic git and have an account on GitHub to manage your applications.
## Example
@@ -26,7 +26,7 @@ For this guide book, we will build a simple **Library Management** application.
1. Library Membership (A period in which a member is allowed to transact)
1. Library Management Setting (Global settings like period of loan)
-The user interface (UI) for the librarian will be the **Frappe Desk**, a built-in browser based UI environment where forms are automatically generated from the models and roles and permissions are also applied.
+The user interface (UI) for the librarian will be the **Frappé Desk**, a built-in browser based UI environment where forms are automatically generated from the models and roles and permissions are also applied.
We will also create web views for library where users can browse articles from a website.
diff --git a/frappe/docs/user/pt/tutorial/models.md b/frappe/docs/user/pt/tutorial/models.md
index f31c5c9864..4b0d7ac9f0 100755
--- a/frappe/docs/user/pt/tutorial/models.md
+++ b/frappe/docs/user/pt/tutorial/models.md
@@ -1,6 +1,6 @@
# Criando modelos
-O próximo passo é criar os modelos como discutimos na introdução. Em Frappe, os modelos são chamados **DocTypes**. Você pode criar novos doctypes atravez da interface do Desk. **DocTypes** são feitos de campos chamados **DocField** e de permissões com base nas permissões que são integrados nos modelos, estes são chamados **DocPerms**.
+O próximo passo é criar os modelos como discutimos na introdução. Em Frappé, os modelos são chamados **DocTypes**. Você pode criar novos doctypes atravez da interface do Desk. **DocTypes** são feitos de campos chamados **DocField** e de permissões com base nas permissões que são integrados nos modelos, estes são chamados **DocPerms**.
Quando um DocType é salvo, uma nova tabela é criada no banco de dados. Esta tabela é nomeado como `tab[doctype]`.
diff --git a/frappe/docs/user/pt/tutorial/naming-and-linking.md b/frappe/docs/user/pt/tutorial/naming-and-linking.md
index 1d72cd55c3..b8a6dbe952 100755
--- a/frappe/docs/user/pt/tutorial/naming-and-linking.md
+++ b/frappe/docs/user/pt/tutorial/naming-and-linking.md
@@ -4,7 +4,7 @@ Em seguida, vamos criar outro DocType e salva-lo também:
1. Library Member (First Name, Last Name, Email Address, Phone, Address)
-
+
#### Nomeação de DocTypes
@@ -20,21 +20,21 @@ Isso pode ser definido através do preenchimento do campo **Autoname**. Para o c
> **Search Fields**: A DocType pode ser nomeado em uma série, mas ele ainda precisa ser pesquisado por nome. No nosso caso, o artigo será procurado pelo título ou o nome do autor. Portanto, este pode ser inserido no campo de pesquisa.
-
+
#### Vinculando e selecionando campos
-As chaves estrangeiras são especificados no Frappe como um tipo de campo **Link**. O DocType alvo deve ser mencionado na área de Opções de texto.
+As chaves estrangeiras são especificados no Frappé como um tipo de campo **Link**. O DocType alvo deve ser mencionado na área de Opções de texto.
No nosso exemplo, na Library Transaction DocType, temos que ligar o Membro da Biblioteca e o artigo.
**Observação:** Lembre-se que os campos link não são automaticamente configurados como chaves estrangeiras no banco de dados MariaDB, porque isso vai implicitamente indexar a coluna. Isto pode não ser ideal, mas, a validação de chave estrangeira é feito pelo Framework.
-
+
Para campos de multipla escolha, como mencionamos anteriormente, adicione as várias opções na caixa de entrada **Options**, cada opção em uma nova linha.
-
+
Fazer o mesmo para outros modelos.
@@ -44,7 +44,7 @@ Um modelo padrão é quando você seleciona um ID, **Library Member** na **Libra
Para fazer isso, podemos usar campos de somente leitura e de opções, podemos definir o nome do link e o nome do campo da propriedade que deseja buscar. Para este exemplo no **Member First Name** podemos definir `library_member.first_name`
-
+
### Complete os modelos
@@ -52,19 +52,19 @@ Da mesma forma, você pode completar todos os modelos de modo que os campos fina
#### Article
-
+
#### Library Member
-
+
#### Library Membership
-
+
#### Library Transaction
-
+
> Lembre-se de dar permissões para **Librarian** em cada DocType
diff --git a/frappe/docs/user/pt/tutorial/new-app.md b/frappe/docs/user/pt/tutorial/new-app.md
index 1390f60766..56027e640a 100755
--- a/frappe/docs/user/pt/tutorial/new-app.md
+++ b/frappe/docs/user/pt/tutorial/new-app.md
@@ -7,7 +7,7 @@ Para criar uma nova aplicação, vá para a pasta do bench e execute, `bench new
$ bench new-app library_management
App Title (defaut: Lib Mgt): Library Management
App Description: App for managing Articles, Members, Memberships and Transactions for Libraries
- App Publisher: Frappe
+ App Publisher: Frappé
App Email: info@frappe.io
App Icon (default 'octicon octicon-file-directory'): octicon octicon-book
App Color (default 'grey'): #589494
@@ -44,11 +44,11 @@ O aplicativo será criado em uma pasta chamada `library_management` e terá a se
1. `config` pasta que contém as informações de configuração do aplicativo
1. `desktop.py` é onde os ícones da área de trabalho pode ser adicionado ao Desk
1. `hooks.py` é onde integrações com o ambiente da aplicação e outras aplicações é mencionada.
-1. `library_management` (Interior) é um **módulo** que foi criado. Em Frappe, um **módulo** é onde os arquivos do modelo e do controlador residem.
+1. `library_management` (Interior) é um **módulo** que foi criado. Em Frappé, um **módulo** é onde os arquivos do modelo e do controlador residem.
1. `modules.txt` contém a lista dos **módulos** do aplicativo. Quando você cria um novo módulo, é necessário que você atualize este arquivo.
1. `patches.txt` é o lugar onde os patches de migração são escritos. Eles são referências de módulos Python utilizando a notação de ponto.
1. `templates` é a pasta onde os modelos de web view são mantidos. Modelos para **Login** e outras páginas padrão são criadas pelo frappe.
-1. `generators` é onde os templates para os modelos são mantidas, onde cada instância de modelo tem uma rota web separada, por exemplo, um **Post de um Blog**, onde cada post tem a sua única url web. Em Frappe, o mecanismo de modelagem utilizada é o Jinja2
+1. `generators` é onde os templates para os modelos são mantidas, onde cada instância de modelo tem uma rota web separada, por exemplo, um **Post de um Blog**, onde cada post tem a sua única url web. Em Frappé, o mecanismo de modelagem utilizada é o Jinja2
1. `pages` É onde uma única rota para os modelos são mantidas. Por exemplo, para um "/blog" tipo da página.
{next}
diff --git a/frappe/docs/user/pt/tutorial/reports.md b/frappe/docs/user/pt/tutorial/reports.md
index 1889705874..c7a241bbc4 100755
--- a/frappe/docs/user/pt/tutorial/reports.md
+++ b/frappe/docs/user/pt/tutorial/reports.md
@@ -2,6 +2,6 @@
Você também pode clicar sobre o texto Relatórios na barra lateral (esquerda) para ver os registros tabulados
-
+
{next}
diff --git a/frappe/docs/user/pt/tutorial/roles.md b/frappe/docs/user/pt/tutorial/roles.md
index 286d39afa7..07b687f936 100755
--- a/frappe/docs/user/pt/tutorial/roles.md
+++ b/frappe/docs/user/pt/tutorial/roles.md
@@ -9,6 +9,6 @@ Para criar um novo roles, vá para:
> Setup > Users > Role > New
-
+
{next}
diff --git a/frappe/docs/user/pt/tutorial/setting-up-the-site.md b/frappe/docs/user/pt/tutorial/setting-up-the-site.md
index 90f499c9c7..e6fa9f40a4 100755
--- a/frappe/docs/user/pt/tutorial/setting-up-the-site.md
+++ b/frappe/docs/user/pt/tutorial/setting-up-the-site.md
@@ -19,7 +19,7 @@ Vamos criar um novo site e chamá-lo de `library`.
Você pode instalar um novo site, pelo comando `bench new-site library`
-Isto irá criar uma nova pasta para o site e um banco de dados e instalar o `frappe` (que também é uma aplicação!) No novo site. A aplicação `frappe` tem dois módulos embutidos **Core** e **WebSite**. O módulo de Core contém os modelos básicos para a aplicação. Frappe é uma estrutura como as pilhas e vem com um monte de modelos internos. Estes modelos são chamados doctypes **Mais sobre isso mais tarde**.
+Isto irá criar uma nova pasta para o site e um banco de dados e instalar o `frappe` (que também é uma aplicação!) No novo site. A aplicação `frappe` tem dois módulos embutidos **Core** e **WebSite**. O módulo de Core contém os modelos básicos para a aplicação. Frappé é uma estrutura como as pilhas e vem com um monte de modelos internos. Estes modelos são chamados doctypes **Mais sobre isso mais tarde**.
$ bench new-site library
MySQL root password:
diff --git a/frappe/docs/user/pt/tutorial/single-doctypes.md b/frappe/docs/user/pt/tutorial/single-doctypes.md
index c21115244e..41f218e2b5 100755
--- a/frappe/docs/user/pt/tutorial/single-doctypes.md
+++ b/frappe/docs/user/pt/tutorial/single-doctypes.md
@@ -1,9 +1,9 @@
# Single DocTypes
-A aplicação irá normalmente têm uma página de configurações. Em nossa aplicação, podemos definir uma página onde podemos definir o período de empréstimo. Também precisamos salvar esta propriedade. Em Frappe, isso pode ser feito usando um tipo DocType **Single** . Um DocType Single é como o padrão Singleton em Java. É um objecto com uma única instância. Vamos chamar isso de **Library Managment Settings**.
+A aplicação irá normalmente têm uma página de configurações. Em nossa aplicação, podemos definir uma página onde podemos definir o período de empréstimo. Também precisamos salvar esta propriedade. Em Frappé, isso pode ser feito usando um tipo DocType **Single** . Um DocType Single é como o padrão Singleton em Java. É um objecto com uma única instância. Vamos chamar isso de **Library Managment Settings**.
Para criar um DocType Single, marque a propriedade **Is Single** como verdadeira.
-
+
{next}
diff --git a/frappe/docs/user/pt/tutorial/start.md b/frappe/docs/user/pt/tutorial/start.md
index c4ed5e5f3c..80504b58f8 100755
--- a/frappe/docs/user/pt/tutorial/start.md
+++ b/frappe/docs/user/pt/tutorial/start.md
@@ -14,7 +14,7 @@ Para iniciar o servidor de desenvolvimento, digite `bench start`
Agora você pode abrir o seu navegador e ir para `http://localhost:8000`. Você deve ver esta página de login, se tudo correu bem:
-
+
Agora logue com :
@@ -24,8 +24,8 @@ Senha : **Use a senha que foi criada durante a instalação**
Quando voce logar, voce deverá ver o "Desk" da pagine home
-
+
-Como você pode ver, o básico do sistema Frappe vem com vários aplicativos pré-carregados como coisas a fazer, o Gerenciador de arquivos etc. Esses aplicativos podem ser integrados no fluxo de trabalho do app à medida que progredimos.
+Como você pode ver, o básico do sistema Frappé vem com vários aplicativos pré-carregados como coisas a fazer, o Gerenciador de arquivos etc. Esses aplicativos podem ser integrados no fluxo de trabalho do app à medida que progredimos.
{next}
diff --git a/frappe/docs/user/pt/tutorial/task-runner.md b/frappe/docs/user/pt/tutorial/task-runner.md
index c0f696410f..9d514eb151 100755
--- a/frappe/docs/user/pt/tutorial/task-runner.md
+++ b/frappe/docs/user/pt/tutorial/task-runner.md
@@ -1,6 +1,6 @@
# Tarefas agendadas
-Finalmente, uma aplicação também tem que enviar notificações de e-mail e fazer outros tipos de tarefas agendadas. Em Frappe, se você instalou o bench, o task / scheduler foi instalado via Celery usando Redis Queue.
+Finalmente, uma aplicação também tem que enviar notificações de e-mail e fazer outros tipos de tarefas agendadas. Em Frappé, se você instalou o bench, o task / scheduler foi instalado via Celery usando Redis Queue.
Para adicionar um novo task handler, vá para `hooks.py` e adicione um novo handler. Handlers padrão são os `all`,` daily`, `weekly`,` monthly`. O handler `all` é chamado a cada 3 minutos por padrão.
@@ -15,7 +15,7 @@ Para adicionar um novo task handler, vá para `hooks.py` e adicione um novo hand
Aqui podemos apontar para uma função Python e esta função será executada todos os dias. Vejamos como é essa função:
- # Copyright (c) 2013, Frappe
+ # Copyright (c) 2013, Frappé
# For license information, please see license.txt
from __future__ import unicode_literals
diff --git a/frappe/docs/user/pt/tutorial/users-and-records.md b/frappe/docs/user/pt/tutorial/users-and-records.md
index 878253bf0b..f581f13e59 100755
--- a/frappe/docs/user/pt/tutorial/users-and-records.md
+++ b/frappe/docs/user/pt/tutorial/users-and-records.md
@@ -1,6 +1,6 @@
# Fazendo Usuários e Registros
-Agora que já criamos os modelos, podemos começar diretamente criando registros usando a interface Desk do Frappe. Você não precisa criar Views! Views no Frappe são geradas automaticamente com base nas propriedades do DocType.
+Agora que já criamos os modelos, podemos começar diretamente criando registros usando a interface Desk do Frappé. Você não precisa criar Views! Views no Frappé são geradas automaticamente com base nas propriedades do DocType.
### 4.1 Criando Usuarios
@@ -12,7 +12,7 @@ Crie um novo usuário e definá o nome, o primeiro nome e uma nova senha.
Também de as roles de Librarian e Library Member para este usuario
-
+
Agora saia e se autentique usando o novo ID de usuário e senha.
@@ -20,36 +20,36 @@ Agora saia e se autentique usando o novo ID de usuário e senha.
Você vai ver agora um ícone para o módulo de Library Management. Clique nesse ícone e você verá a página do modelo:
-
+
Aqui você pode ver os doctypes que criamos para a aplicação. Vamos começar a criar alguns registros.
Primeiro, vamos criar um novo artigo:
-
+
Aqui você vai ver que o DocType que você tinha criado foi processado como um formulário. As validações e outras regras também serão aplicadas conforme projetado. Vamos preencher um artigo.
-
+
Você também pode adicionar uma imagem.
-
+
Agora vamos criar um novo membro:
-
+
Depois disso, vamos criar um novo registro de membership para o membro.
Aqui se você se lembra, nós tinhamos definido os valores do primeiro e do ultimo nome do membro para ser diretamente obtido a partir dos registros de membros e, logo que você selecionar o ID de membro, os nomes serão atualizados.
-
+
Como você pode ver que a data é formatada como ano-mês-dia, que é um formato de sistema. Para definir/mudar a data, hora e número de formatos, acesse
> Setup > Settings > System Settings
-
+
{next}
diff --git a/frappe/docs/user/pt/tutorial/web-views.md b/frappe/docs/user/pt/tutorial/web-views.md
index de7d5b93c9..ec1be924b6 100755
--- a/frappe/docs/user/pt/tutorial/web-views.md
+++ b/frappe/docs/user/pt/tutorial/web-views.md
@@ -1,8 +1,8 @@
# Web Views
-Frappe tem dois ambientes de usuário principais, o Desk e o Web. Desk é um ambiente UI controlado com uma rica aplicação AJAX e a web usa template HTML tradicional que serve para consumo público. Web Views também podem ser gerados para criar views mais controladas para os usuários que pode fazer o login mas ainda não têm acesso à Desk.
+Frappé tem dois ambientes de usuário principais, o Desk e o Web. Desk é um ambiente UI controlado com uma rica aplicação AJAX e a web usa template HTML tradicional que serve para consumo público. Web Views também podem ser gerados para criar views mais controladas para os usuários que pode fazer o login mas ainda não têm acesso à Desk.
-Em Frappe, Web Views são geridas por modelos e eles geralmente estão na pasta `templates`. Existem 2 tipos principais de templates.
+Em Frappé, Web Views são geridas por modelos e eles geralmente estão na pasta `templates`. Existem 2 tipos principais de templates.
1. Pages: Estes são Jinja Templates, onde existe uma única view para uma única rota web, por exemplo, `/blog`.
2. Generators: Estes são templates em que cada instância de um DocType tem uma rota web separada `/blog/a-blog`, `blog/b-blog` etc.
@@ -16,11 +16,11 @@ Vamos dar uma olhada na standard Web Views:
Se você estiver logado como usuário de teste, vá para `/article` e você deverá ver a lista de artigos:
-
+
Clique em um artigo e você vai ver uma Web View padrão
-
+
Agora, se você quiser fazer uma List View melhor para o artigo, crie um arquivo chamado `row_template.html` na pasta
`library_management/templates/includes/list/`. Aqui está um exemplo de arquivo:
@@ -46,11 +46,11 @@ Aqui, você vai ter todas as propriedades do artigo no objeto `doc`.
A List View atualizada se parece com isso!
-
+
#### Home Page
-Frappe também tem um fluxo de trabalho de inscrição built-in que também inclui inscrições de terceiros via Google, Facebook e GitHub. Quando um usuário se inscreve na web, ele não tem acesso à interface Desk por padrão.
+Frappé também tem um fluxo de trabalho de inscrição built-in que também inclui inscrições de terceiros via Google, Facebook e GitHub. Quando um usuário se inscreve na web, ele não tem acesso à interface Desk por padrão.
> Para permitir o acesso do usuário ao Desk, abra as configurações pelo Setup > User e defina o usuário como "System User"
diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py
index 6aecac38c1..f4bce6f5cd 100755
--- a/frappe/email/doctype/email_alert/email_alert.py
+++ b/frappe/email/doctype/email_alert/email_alert.py
@@ -242,7 +242,7 @@ def evaluate_alert(doc, alert, event):
alert.send(doc)
except TemplateError:
frappe.throw(_("Error while evaluating Email Alert {0}. Please fix your template.").format(alert))
- except Exception, e:
+ except Exception as e:
frappe.log_error(message=frappe.get_traceback(), title=e)
frappe.throw(_("Error in Email Alert"))
diff --git a/frappe/email/doctype/newsletter/newsletter.py b/frappe/email/doctype/newsletter/newsletter.py
index 29ecbee853..4f4713edbe 100755
--- a/frappe/email/doctype/newsletter/newsletter.py
+++ b/frappe/email/doctype/newsletter/newsletter.py
@@ -13,7 +13,6 @@ from frappe.utils.background_jobs import enqueue
from frappe.utils.scheduler import log
from frappe.email.queue import send
from frappe.email.doctype.email_group.email_group import add_subscribers
-from frappe.utils.file_manager import get_file
from frappe.utils import parse_addr
@@ -68,7 +67,7 @@ class Newsletter(Document):
files = frappe.get_all("File", fields = ["name"], filters = {"attached_to_doctype": "Newsletter",
"attached_to_name":self.name}, order_by="creation desc")
- for file in files:
+ for a in files:
try:
# these attachments will be attached on-demand
# and won't be stored in the message
diff --git a/frappe/email/doctype/newsletter/test_newsletter.py b/frappe/email/doctype/newsletter/test_newsletter.py
index a198037dc0..2b13799775 100644
--- a/frappe/email/doctype/newsletter/test_newsletter.py
+++ b/frappe/email/doctype/newsletter/test_newsletter.py
@@ -5,7 +5,7 @@ from __future__ import unicode_literals
import frappe, unittest
from frappe.email.doctype.newsletter.newsletter import confirmed_unsubscribe
-from urllib import unquote
+from six.moves.urllib.parse import unquote
emails = ["test_subscriber1@example.com", "test_subscriber2@example.com",
"test_subscriber3@example.com"]
diff --git a/frappe/email/email_body.py b/frappe/email/email_body.py
index 7f97a34b4d..a94163ed20 100755
--- a/frappe/email/email_body.py
+++ b/frappe/email/email_body.py
@@ -8,7 +8,7 @@ from frappe.email.smtp import get_outgoing_email_account
from frappe.utils import (get_url, scrub_urls, strip, expand_relative_urls, cint,
split_emails, to_markdown, markdown, encode, random_string, parse_addr)
import email.utils
-from six import iteritems
+from six import iteritems, text_type
from email.mime.multipart import MIMEMultipart
@@ -233,7 +233,8 @@ class EMail:
self.make()
return self.msg_root.as_string()
-def get_formatted_html(subject, message, footer=None, print_html=None, email_account=None, header=None):
+def get_formatted_html(subject, message, footer=None, print_html=None,
+ email_account=None, header=None, unsubscribe_link=None):
if not email_account:
email_account = get_outgoing_email_account(False)
@@ -247,9 +248,23 @@ def get_formatted_html(subject, message, footer=None, print_html=None, email_acc
"subject": subject
})
- sanitized_html = scrub_urls(rendered_email)
- transformed_html = inline_style_in_html(sanitized_html)
- return transformed_html
+ html = scrub_urls(rendered_email)
+
+ if unsubscribe_link:
+ html = html.replace("", unsubscribe_link.html)
+
+ html = inline_style_in_html(html)
+ return html
+
+@frappe.whitelist()
+def get_email_html(template, args, subject, header=None):
+ import json
+
+ args = json.loads(args)
+ if header and header.startswith('['):
+ header = json.loads(header)
+ email = frappe.utils.jinja.get_email_from_template(template, args)
+ return get_formatted_html(subject, email[0], header=header)
def inline_style_in_html(html):
''' Convert email.css and html to inline-styled html
@@ -292,7 +307,7 @@ def add_attachment(fname, fcontent, content_type=None,
maintype, subtype = content_type.split('/', 1)
if maintype == 'text':
# Note: we should handle calculating the charset
- if isinstance(fcontent, unicode):
+ if isinstance(fcontent, text_type):
fcontent = fcontent.encode("utf-8")
part = MIMEText(fcontent, _subtype=subtype, _charset="utf-8")
elif maintype == 'image':
@@ -331,25 +346,20 @@ def get_footer(email_account, footer=None):
"""append a footer (signature)"""
footer = footer or ""
- if email_account and email_account.footer:
- footer += '
{0}
'.format(email_account.footer)
+ args = {}
- footer += ""
+ if email_account and email_account.footer:
+ args.update({'email_account_footer': email_account.footer})
company_address = frappe.db.get_default("email_footer_address")
if company_address:
- company_address = company_address.splitlines(True)
- footer += '
'
- footer += '
'
- for x in company_address:
- footer += '
{0}
'\
- .format(x)
- footer += "
"
+ args.update({'company_address': company_address})
if not cint(frappe.db.get_default("disable_standard_email_footer")):
- for default_mail_footer in frappe.get_hooks("default_mail_footer"):
- footer += '
{0}
'.format(default_mail_footer)
+ args.update({'default_mail_footer': frappe.get_hooks('default_mail_footer')})
+
+ footer += frappe.utils.jinja.get_email_from_template('email_footer', args)[0]
return footer
diff --git a/frappe/email/queue.py b/frappe/email/queue.py
index e48dbb9115..e3e2267f6e 100755
--- a/frappe/email/queue.py
+++ b/frappe/email/queue.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
from six.moves import range
import frappe
-import HTMLParser
+from six.moves import html_parser as HTMLParser
import smtplib, quopri, json
from frappe import msgprint, throw, _
from frappe.email.smtp import SMTPServer, get_outgoing_email_account
@@ -15,6 +15,7 @@ from frappe.utils import get_url, nowdate, encode, now_datetime, add_days, split
from frappe.utils.file_manager import get_file
from rq.timeouts import JobTimeoutException
from frappe.utils.scheduler import log
+from six import text_type
class EmailLimitCrossedError(frappe.ValidationError): pass
@@ -75,8 +76,6 @@ def send(recipients=None, sender=None, subject=None, message=None, text_content=
except HTMLParser.HTMLParseError:
text_content = "See html attachment"
- formatted = get_formatted_html(subject, message, email_account=email_account, header=header)
-
if reference_doctype and reference_name:
unsubscribed = [d.email for d in frappe.db.get_all("Email Unsubscribe", "email",
{"reference_doctype": reference_doctype, "reference_name": reference_name})]
@@ -88,14 +87,22 @@ def send(recipients=None, sender=None, subject=None, message=None, text_content=
recipients = [r for r in list(set(recipients)) if r and r not in unsubscribed]
- email_content = formatted
email_text_context = text_content
- if add_unsubscribe_link and reference_doctype and (unsubscribe_message or reference_doctype=="Newsletter") and add_unsubscribe_link==1:
+ should_append_unsubscribe = (add_unsubscribe_link
+ and reference_doctype
+ and (unsubscribe_message or reference_doctype=="Newsletter")
+ and add_unsubscribe_link==1)
+
+ unsubscribe_link = None
+ if should_append_unsubscribe or True:
unsubscribe_link = get_unsubscribe_message(unsubscribe_message, expose_recipients)
- email_content = email_content.replace("", unsubscribe_link.html)
email_text_context += unsubscribe_link.text
+ email_content = get_formatted_html(subject, message,
+ email_account=email_account, header=header,
+ unsubscribe_link=unsubscribe_link)
+
# add to queue
add(recipients, sender, subject,
formatted=email_content,
@@ -230,17 +237,21 @@ def get_emails_sent_this_month():
status='Sent' and MONTH(creation)=MONTH(CURDATE())""")[0][0]
def get_unsubscribe_message(unsubscribe_message, expose_recipients):
- if not unsubscribe_message:
- unsubscribe_message = _("Unsubscribe from this list")
+ if unsubscribe_message:
+ unsubscribe_html = '''{0}'''.format(unsubscribe_message)
+ else:
+ unsubscribe_link = '''{0}'''.format(_('Unsubscribe'))
+ unsubscribe_html = _("{0} to stop receiving emails of this type").format(unsubscribe_link)
- html = """