mirror of
https://github.com/kristoferssolo/FOSSDB.git
synced 2025-10-21 17:50:35 +00:00
Created m2m field for Project
Created `programming_language` `ManyToManyField` for `Project`
This commit is contained in:
parent
3cfe95d214
commit
726443ee52
@ -5,6 +5,7 @@ from django.db import models
|
|||||||
|
|
||||||
from .license.models import License
|
from .license.models import License
|
||||||
from .operating_system.models import OperatingSystemVersion
|
from .operating_system.models import OperatingSystemVersion
|
||||||
|
from .programming_language.models import ProgrammingLanguage, ProjectProgrammingLanguage
|
||||||
from .tag.models import Tag
|
from .tag.models import Tag
|
||||||
|
|
||||||
User = settings.AUTH_USER_MODEL
|
User = settings.AUTH_USER_MODEL
|
||||||
@ -18,6 +19,7 @@ class Project(models.Model):
|
|||||||
license = models.ManyToManyField(License, blank=True)
|
license = models.ManyToManyField(License, blank=True)
|
||||||
tag = models.ManyToManyField(Tag, blank=True)
|
tag = models.ManyToManyField(Tag, blank=True)
|
||||||
operating_system = models.ManyToManyField(OperatingSystemVersion, blank=True)
|
operating_system = models.ManyToManyField(OperatingSystemVersion, blank=True)
|
||||||
|
programming_language = models.ManyToManyField(ProgrammingLanguage, through=ProjectProgrammingLanguage, blank=True)
|
||||||
date_created = models.DateTimeField(auto_now_add=True)
|
date_created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@ -5,7 +5,7 @@ from . import views
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("", views.index, name="index"),
|
path("", views.index, name="index"),
|
||||||
path("add/", views.ProjectCreateView.as_view(), name="add-project"),
|
path("add/", views.ProjectCreateView.as_view(), name="add-project"),
|
||||||
path("<str:username>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
|
path("<str:owner>/<str:project_name>/", views.ProjectDetailView.as_view(), name="project-detail"),
|
||||||
path("<str:username>/<str:project_name>/update/", views.ProjectUpdateView.as_view(), name="project-update"),
|
path("<str:owner>/<str:project_name>/update/", views.ProjectUpdateView.as_view(), name="project-update"),
|
||||||
path("<str:username>/<str:project_name>/delete/", views.ProjectDeleteView.as_view(), name="project-delete"),
|
path("<str:owner>/<str:project_name>/delete/", views.ProjectDeleteView.as_view(), name="project-delete"),
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,15 +1,12 @@
|
|||||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse_lazy
|
|
||||||
from django.views.generic import CreateView, DeleteView, DetailView, UpdateView
|
from django.views.generic import CreateView, DeleteView, DetailView, UpdateView
|
||||||
|
|
||||||
from .forms import ProjectForm
|
from .forms import ProjectForm
|
||||||
from .hosting_platform.forms import HostingPlatformForm
|
from .hosting_platform.forms import HostingPlatformForm
|
||||||
from .hosting_platform.models import ProjectHostingPlatform
|
|
||||||
from .models import Project
|
from .models import Project
|
||||||
from .programming_language.forms import ProgrammingLanguageForm
|
from .programming_language.forms import ProgrammingLanguageForm
|
||||||
from .programming_language.models import ProjectProgrammingLanguage
|
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
@ -64,10 +61,6 @@ class ProjectDetailView(DetailView):
|
|||||||
slug_field = "name"
|
slug_field = "name"
|
||||||
slug_url_kwarg = "project_name"
|
slug_url_kwarg = "project_name"
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = super().get_queryset()
|
|
||||||
return queryset.filter(owner__username=self.kwargs.get("username"))
|
|
||||||
|
|
||||||
|
|
||||||
class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
||||||
model = Project
|
model = Project
|
||||||
@ -78,10 +71,6 @@ class ProjectUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
|
|||||||
login_url = "/login/"
|
login_url = "/login/"
|
||||||
redirect_field_name = "redirect_to"
|
redirect_field_name = "redirect_to"
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = super().get_queryset()
|
|
||||||
return queryset.filter(owner__username=self.kwargs.get("username"))
|
|
||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
return self.get_object().owner == self.request.user
|
return self.get_object().owner == self.request.user
|
||||||
|
|
||||||
@ -111,10 +100,6 @@ class ProjectDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
|
|||||||
redirect_field_name = "redirect_to"
|
redirect_field_name = "redirect_to"
|
||||||
success_url = "/"
|
success_url = "/"
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = super().get_queryset()
|
|
||||||
return queryset.filter(owner__username=self.kwargs.get("username"))
|
|
||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
return self.get_object().owner == self.request.user
|
return self.get_object().owner == self.request.user
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user