GithubHelp home page GithubHelp logo

project_system's Introduction

Django CI

Proje Yönetim Sistemi


Başlangıç

Proje Yönetim Sistemi, Python 3.9 ile yazılmış bir web uygulamasıdır. Proje Yönetim Sistemi, Django 4.1.7 ve Django Rest Framework 3.14.0 sürümlerini kullanmaktadır.

Migration işlemleri için ilk olarak:

python manage.py makemigrations yazarak migration dosyalarını oluşturun.

Daha sonra:

python manage.py migrate yazarak migration işlemlerini gerçekleştirin.

Proje Yönetim Sistemi'ni çalıştırmak için:

python manage.py runserver yazarak çalıştırabilirsiniz.


Yazım Standartları

Girintileme:

  • 4 boşluk kullanılmalı, tab karakteri yerine boşluk kullanılmalıdır.

Satır Uzunluğu:

  • Maksimum satır uzunluğu 79 karakter olmalıdır.
  • Eğer bir satır 79 karakterden daha uzun olmak zorunda kalırsa, o satır birden fazla satıra bölünmelidir.

İçe Aktarma İfadeleri (import statements):

  • İçe aktarma ifadeleri şu sıraya göre gruplandırılmalıdır: standart kütüphane içe aktarmaları, ilgili üçüncü taraf içe aktarmaları, yerel uygulama/kütüphane özgü içe aktarmaları.
  • Her grup içe aktarması arasında boş bir satır bırakılmalıdır.

Adlandırma Kuralları:

  • Modül isimleri tamamen küçük harf olmalıdır.
  • Sınıf isimleri CamelCase şeklinde olmalıdır.
  • Fonksiyon ve değişken isimleri alt çizgi ile ayrılmış küçük harflerden oluşmalıdır.

Dize Tırnakları:

  • Dizeler tek tırnak içinde olmalıdır.
  • Dizeler birden fazla satıra yayılmışsa, her satırın başında ve sonunda bir tırnak olmalıdır.

Fonksiyon Argümanları:

  • Fonksiyon argümanları virgülden sonra bir boşlukla ayrılmalıdır.

Boş Satırlar:

  • Mantıksal kod bölümlerini ayırmak için az sayıda boş satır kullanılmalıdır.

Yorumlar:

  • Yorumlar Docstring formatında yazılmalıdır.
  • Yorumlar kodun üzerinde yazılmalıdır.

DocString yazım standartları şöyledir:

  • Docstringler üç çift tırnak işareti """ ile başlar ve biter.
  • Docstring'in ilk satırı, kodunuzun görevini açıklayan bir açıklama içermelidir.
  • İkinci satır boş bırakılmalıdır.
  • Docstring'in geri kalanı, fonksiyonun parametrelerini, döndürdüğü değerleri ve herhangi bir özel işlevselliği açıklayan ek bilgiler içermelidir.
  • Docstring'ler, rahat okunurluk için paragraflara ayrılabilir.
  • Docstringlerde kod örnekleri ve başka belgeler de olabilir.

Örnek Docstring:

def add_numbers(a, b):
    """
    Bu fonksiyon, iki sayıyı toplar.

    :param a: Toplama işlemi için ilk sayı.
    :type a: int
    :param b: Toplama işlemi için ikinci sayı.
    :type b: int
    :return: İki sayının toplamı.
    :rtype: int
    """
    return a + b

Django özel kuralları:

  • Django'nun dahili fonksiyonunu kullanarak geçerli tarih ve saati alın, standart kütüphane datetime modülünü kullanmayın.
  • Mümkün olduğunda, Django'nun dahili şablon etiketleri ve filtrelerini kullanın.

Django Rest Framework kuralları:

  • Giriş ve çıkış verilerini işlemek için Django Rest Framework'un serileştirici sınıflarını kullanın. API isteklerini ve cevaplarını yönetmek için Django Rest Framework'un görünümlerini ve görünüm setlerini kullanın. Kimlik doğrulama ve yetkilendirme işlemlerini yönetmek için Django Rest Framework'un kimlik doğrulama ve izin sınıflarını kullanın.

Yazım standartlarını kontrol etmek için Flake8 kullanılmaktadır. Flake8 kuralları için buraya bakabilirsiniz.

Örnek flake 8 komutu: flake8 --exclude migrations,pycache,manage.py,settings.py,env,venv .

Testleri çalıştırmak ve kapsama miktarını hesaplamak için: coverage run --source='.' manage.py test

HTML formatında kapsam raporu oluşturmak için: coverage html


Kullanıcı Hesapları

project_system's People

Contributors

omursahin avatar muratkaplan06 avatar zahidedusgun avatar gulbikee avatar hafizegungor4 avatar oguzhancnr avatar fatihyavan avatar abdullahuguz avatar ahmetbgr avatar haticenurcoskunn avatar sumeyye-sahin avatar azadyildiz avatar sametbarut avatar elifsudekvc avatar yasinsametkaraca avatar yufus7 avatar biostate avatar ecemklc avatar haticesahinn avatar sevdebulbul avatar sukrankrts avatar nrllahh avatar ilyasbilgihan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

project_system's Issues

Report endpointi

Bu endpointte,

  1. SemesterCourse: ForeignKey
  2. title: CharField (255 karakter)
  3. description: (255 karakter)
  4. is_public: BooleanFiled
  5. is_final: BooleanField

olmak üzere beş farklı alan bulunacaktır.


Yetkilendirme Seviyesi

  • Okuma: Authenticated
  • Yazma: Superuser

Course endpointi

code: CharField - Unique,
title: CharField,
description: CharField

alanları olan bir model oluşturulmalıdır.


Yetkilendirme Seviyesi

  • Okuma: Authenticated
  • Yazma: Superuser

Semester Course endpointi

semester: ForeignKey - Unique,
course: ForeignKey - Unique,
max_group_size: IntegerField

alanları olan bir model oluşturulmalıdır.


Yetkilendirme Seviyesi

Okuma: Authenticated
Yazma: Superuser

Group project endpointi

Group: ForeignKey,
title: CharField 255 karakter, blank veya null olamaz
description: CharField 255 karakter, blank veya null olabilir
is_approved: BooleanField
status: CharField, Aşağıda belirtilen choice türünde olmalı.

STATUS_CHOICES = (("A", "Approved"),
                      ("P", "Pending"),
                      ("D", "Draft"),
                      ("R", "Rejected"))

Yetkilendirme Seviyesi

Okuma: Authenticated
Yazma: Yalnızca Group Owner yazabilir.


Not: Daha sonra yalnızca Superuser tarafından is_approved alanı değiştirilebilir yapılacaktır. İlk versiyonda bu güvenlik kontrolüne gerek yok. Kodlarken dikkate almayabilirsiniz.

Semester endpointi

Bu endpointte,

  1. semester: Charfield,
  2. year: IntegerField

olmak üzere iki farklı alan bulunacaktır.


Yetkilendirme Seviyesi

  • Okuma: Authenticated
  • Yazma: Superuser

Semester_course_student endpointi

Bu endpointte,

  1. SemesterCourse: ForeignKey,
  2. Student: ForeignKey(MyUser)
  3. mid_term: IntegerField
  4. final: IntegerField
  5. make_up: IntegerField

olmak üzere beş farklı alan bulunacaktır.


Yetkilendirme Seviyesi

  • Okuma: Authenticated
  • Yazma: Superuser | Staff

Not: İlk aşamada bütün Staff'ların yazmasına izin verebiliriz. Group member tasarlandıktan sonra ilgili öğrencinin supervisor'ı olması gerekir.

Group member endpointi

Group: ForeignKey,
Member: ForeignKey,
is_accepted: BooleanField
is_supervisor: BooleanField

alanları olan bir model oluşturulmalıdır. Group ve member alanları unique_together ile bağlanmalıdır.


Yetkilendirme Seviyesi

Okuma: Authenticated
Yazma: Authenticated


Not: Daha sonra yalnızca member tarafından is_accepted alanı değiştirilebilir yapılacaktır. İlk versiyonda bu güvenlik kontrolüne gerek yok. Kodlarken dikkate almayabilirsiniz.

Group endpointi

Bu endpointte,

  1. Owner: ForeignKey(MyUser),
  2. SemesterCourse: ForeignKey
  3. title: CharField (255 karakter)
  4. description: (255 karakter)
  5. max_size: IntegerField
  6. status: CharField
  7. invitation_code: CharField

olmak üzere yedi farklı alan bulunacaktır.


Yetkilendirme Seviyesi

  • Okuma: Authenticated
  • Yazma: Authenticated

Önemli Notlar:

  1. Owner için veri göndermesine izin verilmemelidir. Otomatik olarak isteği atan kişi owner olarak atanır.
  2. max_size değeri için veri gönderilmesine izin verilmemeli, SemesterCourse içerisindeki değerden kopyalanmalıdır.
  3. invitation_code için veri gönderilmemesine izin verilmemeli otomatik olarak üretilmelidir. 6 haneli tekil bir id olmalıdır. uuid kütüphanesi kullanılarak üretilebilir. Örnek kod:
    str(uuid.uuid4())[:6].upper()

Project report

Project: ForeignKey,
Report: ForeignKey,
description: CharField, null ve blank olabilir
file: FileField, null ve blank olabilir
is_submitted: BooleanField
version: IntegerField
plagiarism_file: FileField, null ve blank olabilir
plagiarism_rate: IntegerField, null ve blank olabilir

alanları olan bir model oluşturulmalıdır. Project, Report ve version alanları unique_together ile bağlanmalıdır.


Yetkilendirme Seviyesi

Okuma: Authenticated
Yazma: Project->Group->Owner yazabilir olmalıdır.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.