API:Holidays viewer/tr

Genel bakış
Bu eğitim, Vikipedi'den belirli bir tarihe ait tatilleri ve kutlamaları getiren bir demo uygulamasının nasıl oluşturulacağını ve yeni tatiller eklemek için oturum açma seçeneğini kapsar.

Kodu GitHub'dan indirin Toolforge'da uygulamaya göz atın

Demo uygulamasını oluşturmak için kullanılan araçlar ve teknolojiler şunlardır:


 * Python 3 ve Flask, bir Python çerçevesi.
 * JQuery ve Bootstrap.
 * MediaWiki Eylem API modülleri:, ve.

1. adım: Python ve Flask geliştirme ortamını ayarlayın
Python, çoğu Linux dağıtımında önceden yüklenmiş olarak gelir. Diğer işletim sistemleri için kurulum talimatları için Python başlangıç ​​kılavuzuna bakın.

çalıştırarak Flask'ı kurun. Pip'iniz yoksa, resmi Pip web sitesinden alın.

2. adım: Basit bir Flask uygulaması oluşturun
Ana dizininizde, tüm uygulamanın dosyalarını içerecek  adlı bir klasör oluşturun. Klasörün içinde  adlı bir dosya oluşturun ve aşağıdaki kodu içine yerleştirin:

komutunu kullanarak uygulamayı çalıştırın ve tarayıcınızda  açın. "Holidays and observances" görüntülendiğinizi görmelisiniz.

3. adım: Temel düzeni oluşturun
Uygulamanın dört sayfası olacaktır: ana sayfa, bir arama sayfası, bir giriş sayfası ve bir ekleme sayfası. Her sayfanın bazı ortak öğeleri olacaktır, bu nedenle bu öğeleri içermek için  adında bir temel düzen dosyası oluşturmamız gerekir.

Bir öğeye belirli bir CSS stilini uygulamak için Bootstrap sınıfları, ekle, ara ve geri ok simgeleri için [$ url Materialize simgeleri] ve temel düzeni diğer sayfalara genişletmek ve Python'dan HTML'ye değişkenleri aktarmak için Jinja kullandığımızı unutmayın.

Diğer sayfalar aşağıdaki  kodu kullanarak uzatacak:

4. adım: Tatilleri listeleyin
Uygulamanın kök URL'si, belirli bir tarihteki tatilleri listeleyen  işlevini tetikleyecektir.

In the function and throughout the app,  refers to the date of the holidays to be listed,   refers to the title of the page, and   refers to the html which contains the holidays to be listed. We'll also be using the  function which renders a specific html file from the templates directory. Other arguments added to the function are variables which are being passed to the html file.

In, update   with the code below:

Get today's date
If no date is specified, we'll list holidays for today's date. To use Python's datetime module to get today's date, import the module with  then create the following function:

Call the function in :

Get the holidays to be listed
Once we have the date, we get the holidays for that date. Wikipedia has a page for each date and the holidays are under a section titled "Holidays and observances". To get the holidays, we need to get it's section number and the content in that section number.

Create a function to get the section number using :

Create a function called  to get the holidays in that section using  as well, then call the functions in  :

Update holiday links
The HTML of the holidays returned contains internal links that point to those holidays, e.g " ". We need to prepend " " to these links using jQuery in order to make them external links in our app, and make them open in a new tab. To do that, add the following code to :

Then add jQuery to  using:

Step 5: Search for holidays of other dates
To get holidays of other dates, create a search route to display a form that collects the month and day to search for:

Once the search form has been submitted, update  to be the date that has been entered. To do that, add the following code to :

Step 6: Add a holiday
The page to which we'll be adding a new holiday is protected from edits by anonymous users, so we need to log in using API:Login#clientlogin first.

To add a holiday, send a request to with the date and description of the holiday. The edit adds new holidays to this page on Test Wikipedia: Sandbox/Holidays_and_observances. This is to prevent adding test holidays to English Wikipedia.

After the holiday is added, redirect to the homepage where the holidays added will also be shown, and formatted in bold to differentiate them from the real holidays. To fetch the test holidays alongside the real holidays, update :

Step 7: Styling the app
To add more style to our app, create a stylesheet named  and link to it from   by adding.

Application layout
At this point, the structure of your app should be:

$HOME/holidays-viewer ├── templates/ │  └── add.html └── index.html └── layout.html └── login.html └── search.html ├── static/ │  └── style.css └── update-links.js ├── app.py

With  and   being:



Next steps

 * Contribute a demo app that you have developed using the MediaWiki API to this code samples repository.