Muhammad Hafid

Muhammad Hafid

Muhammad Hafid

Muhammad Hafid

Tugas kita itu adalah bukan untuk berhasil, tugas kita adalah untuk mencoba, karena di dalam mencoba itulah kita menemukan dan belajar membangun kesempatan untuk berhasil.

Integration GraphQL with Django Framework

Disini saya akan membahas mengenai pemasangan GraphQL di Django Framework. Jika kalian belum memahami apa itu GraphQL, kalian bisa baca di website officialnya disini https://graphql.org/.


Sedangkan Django Framework adalah framework yang dibangun dengan menggunakan bahasa Python. Disini saya menggunakan OS Ubuntu 18 dan Django Versi 1.11 dengan Python Versi 2.7

Pertama kalian aktif didalam environment kalian dan install graphene :
pip install "graphene-django>=2.0"
Setelah di install, sekarang edit file settings.py kalian dan tambahkan seperti dibawah ini :
INSTALLED_APPS = (
    # ...
    'graphene_django',
)

GRAPHENE = {
    'SCHEMA': 'perpus.schema.schema' # Where your Graphene schema lives
}
Lalu buka file urls.py kalian, dan tambahkan seperti dibawah ini :
from django.conf.urls import url
from graphene_django.views import GraphQLView

urlpatterns = [
    # ...
    url(r'^graphql', GraphQLView.as_view(graphiql=True)),
]
Dan sekarang kita akan melakukan editing dan penambahan file di bagian app. Sebagai contoh saya mempunyai aplikasi/app bernama perpus dan modul yang bernama globalmasters dan secara default pasti mempunyai admin.py dan model.py. Ikuti tahapan dibawah ini :
  1. Buat file baru bernama schema.py di dalam folder globalmasters
  2. Buka file bernama model.py dan lihat script model punya saya, (kita hanya bekerja di 1 tabel ya.
class Zipcode (models.Model):
    STATUS_CHOICES = (
        ('Y', 'Enabled'),
        ('N', 'Disabled'),
    )
    kelurahan = models.CharField(verbose_name="Kelurahan", max_length=250, blank=False)
    kecamatan = models.CharField(verbose_name="Kecamatan", max_length=250, blank=False)
    kabupaten = models.CharField(verbose_name="Kabupaten", max_length=250, blank=False)
    provinsi = models.CharField(verbose_name="Provinsi", max_length=250, blank=False)
    kodepos = models.CharField(verbose_name="Kodepos", max_length=6, blank=False)

    def __unicode__(self):
        return self.kodepos
setelah itu buka file schema.py yang sudah kita buat tadi dan isi dengan script dibawah ini :
from globalmasters.models import Zipcode
from graphene import ObjectType, Node, Schema
from graphene_django.fields import DjangoConnectionField
from graphene_django.types import DjangoObjectType


class zipcodeNode(DjangoObjectType):
    class Meta:
        model = Zipcode
        interfaces = (Node, )

class Query(ObjectType):
    zipcode = Node.Field(zipcodeNode)
    all_zipcodes = DjangoConnectionField(zipcodeNode)
schema = Schema(query=Query)
Setelah langkah diatas selesai, kini kalian buat file schema.py lagi didalam folder aplikasi (contoh:perpus) yang didalam foldernya ada settings.py.

File tersebut isi dengan script dibawah ini :
import globalmasters.schema
import graphene
from graphene_django.debug import DjangoDebug

class Query(globalmasters.schema.Query, graphene.ObjectType):
    debug = graphene.Field(DjangoDebug, name='__debug')

schema = graphene.Schema(query=Query)
Sekarang coba kalian running django kalian, dan untuk ke graphql nya kalian tambahkan slash  
localhost:8000/graphql
Jika sudah tampil seperti dibawah ini bearti kalian sudah berhasil memasang engine graphql di django kalian.


Sekarang coba dengan skema query menggunakan node, contoh nya dibawah ini :
query{
  allZipcodes{
    edges{
      node{
        provinsi
        kabupaten
        kecamatan
        kelurahan
        kodepos
      }
    }
  }
}
Pada keterangan diatas disana saya mengquery mengdaaagunakan metode node dimana nama parameternya adalah  allZipcodes dan didalam node nya tuliskan nama nama fieldnya yang hendak kalian tampilkan.

Dibawah ini adalah milik saya yan sudah berhasil jalan graphql nya.

Untuk berkenalan tentang teknil Graphqlnya sendiri akan ada pembahasan lain ya, seperti menampilkan data limit, relasi dll.

Brew Commands Not Found After Install

Pernah kan menggunakan brew, atau bisa disebut dengan Homebrew. Disini saya ingin menjelaskan apabila kalian muncul error saat menginstall paket menggunakan brew.



Sebelumnya kalian harus menginstall brew nya dengan menggunakan baris dibawah ini pada terminal :
sudo apt install linuxbrew-wrapper
Setelah itu coba kalian install paket brew yang hendak kalian install, contoh disini saya ingin menginstall paket prest milik postgresql.
brew install prest
Pada saat proses tiba tiba diakhir muncul pesan dibawah ini :
Warning: /home/linuxbrew/.linuxbrew/bin is not in your PATH.
/usr/bin/brew: 78: exec: /home/mhafid/.linuxbrew/bin/brew: not found 
Artinya paket anda tidak ditemukan apabila di install dengan menggunakan brew, lalu caranya bagaimana ? kita harus import path brewnya dengan cara dibawah ini :
export PATH=$HOME/.linuxbrew/bin:$PATH
Sekarang coba kalian install kembali paket kalian dengan menggunakan brew. Semoga berhasil.

Menampilkan Data Filter di Django Admin

Saya sempat bingung ingin memberikan judul apa, jadi disini biasanya django admin menampilkan data pada tabel sesuai dengan list_display yang sudah di daftarkan di admin.py, lalu bagaimana jika kita ingin memberikan kondisi atas data yang mau ditampilkan ?

Biar ada gambaran ya saya beri screenshootnya, yang sedang kita bahas adalah menampilkan data pada tabel dibawah ini :


Nah sekarang yang ada di list display saya adalah id, codename, name, dan status. Semua data yang tampil tanpa di filter, sekarang saya ingin memberikan filtering yang ditampilkan hanya data yang enable saja atau disabled saja.

Untuk bisa memfilternya, kita harus membuat function queryset seperti contoh dibawah ini, dan script ini di tulisn di admin.py ya dimasukan kedalam class adminnya.
def get_queryset(self, request):
    qs = super(NamaClassAdmin, self).get_queryset(request)
    return qs.filter(namafieldfilter='Y')
Bagaimana mudah bukan ?

Parsing Tag HTML From Database in Django Template

Hallo selamat pagi,, disini saya masih berkutat dengan Django Framework karena memang saya sedang mencoba mendalami konsep si Django, siapa tau dikemudian hari saya bisa membuat framework keren dari bahasa Python seperti Django Framework.
Saya akan membahas mengenai parsing tag HTML. Contoh kasusnya adalah projek saya sendiri dimana saya membuat sebuah printout dari HTMLPrint untuk kebutuhan lembaran report.

Saya menggunakan jenis field RichTextField pada model field yang saya gunakan, dibawah ini contohnya :
description = RichTextField(verbose_name="Description", blank=True)
Dari baris diatas, model data yang di simpan ke dalam field di database sudah pasti formatnya html, perhatikan gambar dibawah ini :


Kini dari data yang sudah tersimpan didalam field "description" akan saya keluarkan ke dalam template report berformat HTML yang sudah saya siapkan.

Pertama kalian seperti biasa membuat query bisa menggunakan ORM atau RawQuery pada view / admin kalian, setelah itu kalian parsing ke dalam html template yang sudah disediakan dengan format seperti ini :
{{ note.description }}
Ternyata jika hanya di parsing dengan model seperti paka tag-tag htmlnya keluar dan tidak di execute,, jika ada <b> ya di tampilkan tag <b> di layar template, seharusnya kan di eksekusi menjadi Bold model. 

Lalu tambahkan baris ini dan perhatikan :
{% autoescape off %}{{ note.description }}{% endautoescape %}
Sekarang coba kalian lihat apa yang ditampilkan pada html template kalian hasil get render data tersebut.

Semoga bermanfaat.

Field Read Only Base On Condition in Django Admin

Hello, kali ini saya menuliskan lagi tentang django, cara memanipulasi field di form django admin, maksudnya seperti ini,

Kita mempunyai sebuah raw data, dengan status data tersebut O / Open, selama status nya Open berarti data tersebut boleh dilakukan perubahan, tetapi jika status datanya Close / C bearti data tersebut sudah tidak boleh dilakukan perubahan.

Disini saya mengakali dengan cara simple jika statusnya Open Field-field nya bisa di isi / diubah, sedangkan jika statusnya Close maka field-fieldnya akan readOnly (tidak bisa dilakukan editing/pengetikan)

Sekarang kita ke mekanisme codingnya ya.

Bekerja di file admin.py dan tambahkan function seperti dibawah ini :

def get_readonly_fields(self, request, obj=None):
        fields = super(NamaAdminNya, self).get_readonly_fields(request, obj=obj)
        if obj.status == 'C':
            return fields + ('field 1', 'field 2')
        return fields
if object status C sesuaikan dengan kebutuhan kalian ya / sesuaikan dengan data di database yg kalian simpan.

return fields + artinya kalian tambahkan jika status nya C maka yang di hidden/readonly adalah field apa saja.

Bagaimana mudah bukan ?

Etherape Crashes on Start

Etherape adalah salah satu aplikasi yang saya gunakan untuk memonitoring Wifi dirumah saya yang menggunakan produk Telkom Indihome. Disini saya menggunakan Ubuntu versi 18.00. Cara installnya sih mudah hanya dengan menggunakan apt get install.
sudo apt-get install etherape
Setelah itu coba kalian langsung run dengan menggunakan root, jika menggunakan akses root berarti menggunakan sudo ya.
sudo etherape

Bagaimana muncul error tidak ? disini saya akan membahas solve problemnya.



Error nya seperti dibawah ini :
Gtk-Message: 11:42:29.592: Failed to load module "canberra-gtk-module"
(etherape:12675): libglade-WARNING **: 11:42:29.642: Could not load support for `gnome': libgnome.so: cannot open shared object file: No such file or directory
(etherape:12675): libglade-WARNING **: 11:42:29.814: unknown widget class 'GnomeCanvas'
(etherape:12675): Gtk-WARNING **: 11:42:29.814: gtk_scrolled_window_add(): cannot add non scrollable widget use gtk_scrolled_window_add_with_viewport() instead
EtherApe-INFO: 11:42:29.859: sctp protocol not supported
EtherApe-INFO: 11:42:29.859: ddp protocol not supported
EtherApe-INFO: 11:42:29.859: ddp protocol not supported
EtherApe-INFO: 11:42:29.859: ddp protocol not supported
EtherApe-INFO: 11:42:29.859: ddp protocol not supported
(etherape:12675): GLib-GObject-WARNING **: 11:42:29.860: invalid cast from 'GtkLabel' to 'GnomeCanvas'
(etherape:12675): GnomeCanvas-CRITICAL **: 11:42:29.860: gnome_canvas_root: assertion 'GNOME_IS_CANVAS (canvas)' failed
(etherape:12675): GnomeCanvas-CRITICAL **: 11:42:29.860: gnome_canvas_item_new: assertion 'GNOME_IS_CANVAS_GROUP (parent)' failed
**
ERROR:diagram.c:250:addref_canvas_obj: assertion failed: (obj)
unexpected EOF in read_all()
critical: read_all() failed on control socket
Aborted
Perhatikan yang saya cetak tebal, kita akan mulai satu persatu solve problemnya.

Untuk error Failed to load module "canberra-gtk-module",  coba kalian install dibawah ini :
sudo apt install libcanberra-gtk-module libcanberra-gtk3-module
Oke coba sekarang di run kembali etherapenya, jika masih error sekarang kita atasi masalah berikutnya untuk error unknown widget class 'GnomeCanvas', coba kalian install dibawah ini :
sudo apt install libgnomeui-0
Sekarang coba run kembali. Sudah dipastikan sudah tidak ada errornya.

Cara Mengkoneksikan Hidden Wifi di Ubuntu 18

Ubuntu 18.00 sudah banyak perubahannya menurut saya, selain lebih smoot dari segi penyajiannya dan lebih elegan dari font dan ukuran dimensi-dimensinya, disini saya juga akan memberikan cara singkat, mungkin ada yang kebingungan bagaimana cara mengkoneksikan wifi yang bersifat Hidden Wifi.

Biasanya kalian pengguna ubuntu 16 s.d 17 langsung mengklik icon wifi di pojok kanan atas. Lalu klik Select Network. Ternyata tampilannya hanya ini saja dan tidak ada klik New Connection atau pilihan untuk menambah jaringan wifi.


Untuk di Ubuntu versi 18, caranya adalah pilih pojok kanan atas dan ada pilihan 3 Pilihan yaitu :
  • Select Network, untuk memilih jaringan wifi/network yang sudah pernah terkoneksi sebelumnya atau jaringan yang bersifat open bukan hidden network,
  • Turn Off, mematikan jaringan wifi
  • Wi-fi Settings, pilihlah opsi ini dan akan tampil seperti pada gambar dibawah ini



  • Pilih tab Wifi
  • Lalu pilih icon di pojok kanan atas (perhatikan gambar diatas), 
  • Pilih Connect to Hidden Network
  • Sekarang kalian tinggal masukan SSID nya, passwordnya dan tipe Wi-fi Securty nya.
Semoga berhasil dan bermanfaat.

Membuat Live Chat di Blogger

Disini saya akan memberikan cara/tutorial bagaimana memasang fitur live chat dengan mudah yang memanfaatkan fitur widget.

Pertama pastinya kalian sudah mempunyai blogger dan jika sudah mempunyai bloggernya silahkan kalian ke link dibawah ini :

https://www.mylivechat.com/addons/blogger-live-chat.aspx
Lalu lakukan registrasi dengan menggunakan google email kalian yang digunakan untuk blogger kalian.

Setelah kalian sudah registrasi kalian akan diberikan script seperti dibawah ini :


Sekarang kalian masuk ke dalam akun blogger kalian dan masuk ke menu Theme lalu pilih Edit HTML.

Copy code dari live chat kalian dan pastekan di editHTML blogger kalian sebelum tag </body> sekarang kalian refresh blog kalian dan lihatlah perubahannya.

Semoga bermanfaat.

Back To Top