diff --git a/doc/_themes/pretix_theme/static/css/pretix.css b/doc/_themes/pretix_theme/static/css/pretix.css index 06955154c..2424fb24d 100644 --- a/doc/_themes/pretix_theme/static/css/pretix.css +++ b/doc/_themes/pretix_theme/static/css/pretix.css @@ -6063,3 +6063,7 @@ url('../opensans_regular_macroman/OpenSans-Regular-webfont.svg#open_sansregular' white-space: normal; } } + +img.screenshot, a.screenshot img { + box-shadow: 0 4px 18px 0 rgba(0,0,0,0.1), 0 6px 20px 0 rgba(0,0,0,0.09); +} diff --git a/doc/api/fundamentals.rst b/doc/api/fundamentals.rst index fa0f1b66e..027c60ccf 100644 --- a/doc/api/fundamentals.rst +++ b/doc/api/fundamentals.rst @@ -4,6 +4,8 @@ Basic concepts This page describes basic concepts and definition that you need to know to interact with pretix' REST API, such as authentication, pagination and similar definitions. +.. _`rest-auth`: + Obtaining an API token ---------------------- @@ -13,12 +15,14 @@ or choose an existing team that has the level of permissions the token should ha create a new token using the form below the list of team members: .. image:: img/token_form.png + :class: screenshot You can enter a description for the token to distinguish from other tokens later on. Once you click "Add", you will be provided with an API token in the success message. Copy this token, as you won't be able to retrieve it again. .. image:: img/token_success.png + :class: screenshot Authentication -------------- diff --git a/doc/conf.py b/doc/conf.py index cb2cea407..87d8ea873 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -13,6 +13,10 @@ # All configuration values have a default; values that are commented out # serve to show the default. +from docutils.parsers.rst.directives.admonitions import BaseAdmonition +from sphinx.util import compat +compat.make_admonition = BaseAdmonition # See https://github.com/spinus/sphinxcontrib-images/issues/41 + import sys import os @@ -41,6 +45,7 @@ extensions = [ 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinxcontrib.httpdomain', + 'sphinxcontrib.images', ] # Add any paths that contain templates here, relative to this directory. @@ -281,3 +286,8 @@ texinfo_documents = [ # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False + + +images_config = { + 'default_image_width': '250px' +} diff --git a/doc/screens/organizer/edit.png b/doc/screens/organizer/edit.png new file mode 100644 index 000000000..4c7e6c911 Binary files /dev/null and b/doc/screens/organizer/edit.png differ diff --git a/doc/screens/organizer/event_list.png b/doc/screens/organizer/event_list.png new file mode 100644 index 000000000..d524998bd Binary files /dev/null and b/doc/screens/organizer/event_list.png differ diff --git a/doc/screens/organizer/list.png b/doc/screens/organizer/list.png new file mode 100644 index 000000000..31a46b50b Binary files /dev/null and b/doc/screens/organizer/list.png differ diff --git a/doc/screens/organizer/team_detail.png b/doc/screens/organizer/team_detail.png new file mode 100644 index 000000000..c21956bf4 Binary files /dev/null and b/doc/screens/organizer/team_detail.png differ diff --git a/doc/screens/organizer/team_edit.png b/doc/screens/organizer/team_edit.png new file mode 100644 index 000000000..b7e817a3c Binary files /dev/null and b/doc/screens/organizer/team_edit.png differ diff --git a/doc/screens/organizer/team_list.png b/doc/screens/organizer/team_list.png new file mode 100644 index 000000000..72f1009c8 Binary files /dev/null and b/doc/screens/organizer/team_list.png differ diff --git a/doc/user/index.rst b/doc/user/index.rst index d56b4b190..2f208927a 100644 --- a/doc/user/index.rst +++ b/doc/user/index.rst @@ -1,7 +1,11 @@ User Guide ========== +This section of our documentation is dedicated to show you the way around pretix if you are an event organizer +wanting to use pretix to sell tickets. + .. toctree:: :maxdepth: 2 + organizers/index payments/index diff --git a/doc/user/organizers/index.rst b/doc/user/organizers/index.rst new file mode 100644 index 000000000..e3f37d55b --- /dev/null +++ b/doc/user/organizers/index.rst @@ -0,0 +1,92 @@ +Organizer accounts and teams +============================ + +Organizer account +----------------- + +The basis of all your operations within pretix is your organizer account. It represents an entity that is running +events, for example a company, yourself or any other institution. +Every event belongs to one organizer account and events within the same organizer account are assumed to belong together +in some sense, whereas events in different organizer accounts are completely isolated. + +If you want to use the hosted pretix service, you can create an organizer account on our `Get started`_ page. Otherwise, +ask your pretix administrator for access to an organizer account. + +You can find out all organizer accounts you have access to by going to your global dashboard (click on the pretix logo +in the top-left corner) and then select "Organizers" from the navigation bar on the left side. Then, choose one of the +organizer accounts presented, if there are multiple of them: + +.. thumbnail:: ../../screens/organizer/list.png + :align: center + :class: screenshot + +This overview shows you all event that belong to the organizer and you have access to: + +.. thumbnail:: ../../screens/organizer/event_list.png + :align: center + :class: screenshot + +With the "Edit" button at the top, next to the organizer account name, you can modify properties of the organizer +account such as its name and display settings for the public profile page of the organizer account: + +.. thumbnail:: ../../screens/organizer/edit.png + :align: center + :class: screenshot + +.. tip:: + + The profile page will be shown as ``https://pretix.eu/slug/`` where ``slug`` is to be replaced by the short form of + the organizer name that you entered during account creation and ``pretix.eu`` is to be replaced by your + installation's domain name if you are not using our hosted service. + + Instead, you can also use a custom domain for the profile page and your events, for example + ``https://tickets.example.com/`` if ``example.com`` is a domain that you own. In this case, please contact the pretix + hosted support or your system administrator to set up the custom domain. + +Teams +----- + +We don't expect you to work on your events all by yourself and therefore, pretix comes with ways to invite your fellow +team members to access your pretix organizer account. To manage teams, click on the "Teams" link on your organizer +settings page (see above how to find it). This shows you a list of teams that should contain at least one team already: + +.. thumbnail:: ../../screens/organizer/team_list.png + :align: center + :class: screenshot + +If you click on a team name, you get to a page that shows you the current members of the team: + +.. thumbnail:: ../../screens/organizer/team_detail.png + :align: center + :class: screenshot + +You see that there is a list of pretix user accounts (i.e. email addresses), who are part of the team. To add a user to +the team, just enter their email address in the text box next to the "Add" button. If the user already has an account +in the pretix system they will instantly get access to the team. Otherwise, they will be sent an email with an invitation +link that can be used to create an account. This account will then instantly have access to the team. Users can be part +of as many teams as you want. + +In the section below, you can also create access tokens for our :ref:`rest-api`. You can read more on this topic in the +section :ref:`rest-auth` of the API documentation. + +Next to the team name, you again see a button called "Edit" that allows you to modify the permissions of the team. +Permissions separate into two areas: + +* **Organizer permissions** allow actions on the level of an organizer account, in particular: + + * Can create events – To create a new event under this organizer account, users need to have this permission + + * Can change teams and permissions – This permission is required to perform the kind of action you are doing right now. + Anyone with this permission can assign arbitrary other permissions to themselves, so this is the most powerful + permission there is to give. + + * Can change organizer settings – This permission is required to perform changes to the settings of the organizer + account, e.g. its name or display settings. + +* **Event permissions** allow actions on the level of an event. You can give the team access to all events + +.. thumbnail:: ../../screens/organizer/team_edit.png + :align: center + :class: screenshot + +.. _Get started: https://pretix.eu/about/en/setup \ No newline at end of file diff --git a/doc/user/payments/banktransfer.rst b/doc/user/payments/banktransfer.rst index 46bdd5a11..a71f58530 100644 --- a/doc/user/payments/banktransfer.rst +++ b/doc/user/payments/banktransfer.rst @@ -17,6 +17,7 @@ The easiest way to import payment data is to download a CSV file from your onlin export of some sort. You can go to "Import bank data" in pretix to upload a new file: .. image:: img/bank1.png + :class: screenshot If you upload a file for the first time, pretix will not know what information is contained in which column as every bank builds completely different CSV files. Therefore, pretix will ask you for that information. It will show you the diff --git a/doc/user/payments/paypal.rst b/doc/user/payments/paypal.rst index 742bc4c85..e3e8ea7ed 100644 --- a/doc/user/payments/paypal.rst +++ b/doc/user/payments/paypal.rst @@ -8,41 +8,49 @@ PayPal account, you can create one on `paypal.com`_. If you look into pretix' settings, you are required to fill in two keys: .. image:: img/paypal_pretix.png + :class: screenshot Unfortunately, it is not straightforward how to get those keys from PayPal's website. In order to do so, you need to go to `developer.paypal.com`_ to link the account to your pretix event. Click on "Log In" in the top-right corner and log in with your PayPal account. .. image:: img/paypal2.png + :class: screenshot Then, click on "Dashboard" in the top-right corner. .. image:: img/paypal3.png + :class: screenshot In the dashboard, scroll down until you see the headline "REST API Apps". Click "Create App". .. image:: img/paypal4.png + :class: screenshot Enter any name for the application that helps you to identify it later. Then confirm with "Create App". .. image:: img/paypal5.png + :class: screenshot On the next page, before you do anything else, switch the mode on the right to "Live" to get the correct keys. Then, copy the "Client ID" and the "Secret" and enter them into the appropriate fields in the payment settings in pretix. .. image:: img/paypal6.png + :class: screenshot Finally, we need to create a webhook. The webhook tells PayPal to notify pretix e.g. if a payment gets cancelled so pretix can cancel the ticket as well. If you have multiple events connected to your PayPal account, you need multiple webhooks. To create one, scroll a bit down and click "Add Webhook". .. image:: img/paypal7.png + :class: screenshot Then, enter the webhook URL that you find on the pretix settings page. It should look similar to the one in the screenshot but contain your event name. Tick the box "All events" and save. .. image:: img/paypal8.png + :class: screenshot That's it, you are ready to go! diff --git a/doc/user/payments/stripe.rst b/doc/user/payments/stripe.rst index fc09005a7..0853b62d6 100644 --- a/doc/user/payments/stripe.rst +++ b/doc/user/payments/stripe.rst @@ -9,6 +9,7 @@ Dashboard. As you can see in the following screenshot, you will be presented wit and one for live payments. In each set, there is a secret and a publishable keys. .. image:: img/stripe1.png + :class: screenshot Choose one of the two sets and copy the two keys to the appropriate fields in pretix' settings. To perform actual payments, you will need to use the live keys, but you can use the test keys to test the payment flow before you go live. @@ -21,6 +22,7 @@ that you are currently on. Then, click "Add endpoint" and enter the URL that you configuration in pretix' settings. .. image:: img/stripe2.png + :class: screenshot Again, you can choose between live mode and test mode here. diff --git a/src/pretix/static/fontawesome/scss/_path.scss b/src/pretix/static/fontawesome/scss/_path.scss index 5a347ed07..eaa8bfee7 100644 --- a/src/pretix/static/fontawesome/scss/_path.scss +++ b/src/pretix/static/fontawesome/scss/_path.scss @@ -3,12 +3,12 @@ @font-face { font-family: 'FontAwesome'; - src: url(static('fontawesome/fonts/fontawesome-webfont.eot?v=#{$fa-version}')); - src: url(static('fontawesome/fonts/fontawesome-webfont.eot?#iefix&v=#{$fa-version}')) format('embedded-opentype'), - url(static('fontawesome/fonts/fontawesome-webfont.woff2?v=#{$fa-version}')) format('woff2'), - url(static('fontawesome/fonts/fontawesome-webfont.woff?v=#{$fa-version}')) format('woff'), - url(static('fontawesome/fonts/fontawesome-webfont.ttf?v=#{$fa-version}')) format('truetype'), - url(static('fontawesome/fonts/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular')) format('svg'); + src: url(static('fontawesome/fonts/fontawesome-webfont.eot')); + src: url(static('fontawesome/fonts/fontawesome-webfont.eot')) format('embedded-opentype'), + url(static('fontawesome/fonts/fontawesome-webfont.woff2')) format('woff2'), + url(static('fontawesome/fonts/fontawesome-webfont.woff')) format('woff'), + url(static('fontawesome/fonts/fontawesome-webfont.ttf')) format('truetype'), + url(static('fontawesome/fonts/fontawesome-webfont.svg')) format('svg'); // src: url('fontawesome/fonts/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; diff --git a/src/pretix/testutils/settings.py b/src/pretix/testutils/settings.py index 4012ef1e9..53243d54e 100644 --- a/src/pretix/testutils/settings.py +++ b/src/pretix/testutils/settings.py @@ -18,6 +18,7 @@ EMAIL_BACKEND = 'django.core.mail.outbox' COMPRESS_ENABLED = COMPRESS_OFFLINE = False STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' +PRETIX_INSTANCE_NAME = 'pretix.eu' DEBUG = True DEBUG_PROPAGATE_EXCEPTIONS = True