Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions blt/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
UserProfileDetailsView,
UserProfileDetailView,
contributors_view,
create_monitor,
dislike_issue2,
dislike_issue3,
facebook_callback,
Expand Down Expand Up @@ -502,6 +503,7 @@
ContributorStatsView.as_view(today=True),
name="today-contributor-stats",
),
path("create_monitor/", create_monitor, name="create_monitor"),
]

if settings.DEBUG:
Expand Down
36 changes: 35 additions & 1 deletion website/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django import forms
from mdeditor.fields import MDTextFormField

from .models import UserProfile
from .models import Monitor, UserProfile


class UserProfileForm(forms.ModelForm):
Expand Down Expand Up @@ -37,3 +37,37 @@ class QuickIssueForm(forms.Form):
url = forms.CharField()
label = forms.CharField()
description = forms.CharField()


from datetime import datetime


class MonitorForm(forms.ModelForm):
created = forms.DateTimeField(widget=forms.HiddenInput(), required=False, label="Created")
modified = forms.DateTimeField(widget=forms.HiddenInput(), required=False, label="Modified")

class Meta:
model = Monitor
fields = ["url", "keyword", "status"]

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if not self.instance.pk:
self.initial["created"] = "2024-03-21 22:55:10"
self.initial["modified"] = datetime.now()

def clean_created(self):
return self.instance.created if self.instance else None

def clean_modified(self):
return (
datetime.now()
) # Set modified field to current datetime every time the form is submitted

def save(self, commit=True):
if not self.instance.pk: # Check if instance is new
self.instance.created = self.initial[
"created"
] # Set created field to the initial value if new
self.instance.modified = datetime.now() # Update modified field before saving
return super().save(commit)
43 changes: 43 additions & 0 deletions website/migrations/0087_monitor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Generated by Django 5.0.2 on 2024-03-09 06:06

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("website", "0086_merge_20240308_1030"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
name="Monitor",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("url", models.URLField()),
("keyword", models.CharField(max_length=255)),
("last_checked_time", models.DateTimeField(auto_now=True)),
(
"status",
models.CharField(choices=[("UP", "Up"), ("DOWN", "Down")], max_length=20),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
),
]
24 changes: 24 additions & 0 deletions website/migrations/0088_monitor_created_monitor_modified.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 5.0.2 on 2024-03-21 04:29

import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("website", "0087_monitor"),
]

operations = [
migrations.AddField(
model_name="monitor",
name="created",
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AddField(
model_name="monitor",
name="modified",
field=models.DateTimeField(auto_now=True),
),
]
12 changes: 12 additions & 0 deletions website/migrations/0089_merge_20240321_2353.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Generated by Django 5.0.2 on 2024-03-21 18:23

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("website", "0087_issue_cve_score"),
("website", "0088_monitor_created_monitor_modified"),
]

operations = []
19 changes: 19 additions & 0 deletions website/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -551,3 +551,22 @@ class ContributorStats(models.Model):

def __str__(self):
return self.username


class Monitor(models.Model):
url = models.URLField()
keyword = models.CharField(max_length=255)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
last_checked_time = models.DateTimeField(auto_now=True)
status = models.CharField(
max_length=20,
choices=[
("UP", "Up"),
("DOWN", "Down"),
],
)
user = models.ForeignKey(User, on_delete=models.CASCADE)

def __str__(self):
return f"Monitor for {self.url} by {self.user}"
68 changes: 68 additions & 0 deletions website/templates/Monitor.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f8f9fa;
}
.container {
max-width: 600px;
margin: 50px auto;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
h1 {
text-align: center;
color: #333;
}
form {
margin-top: 20px;
}
form label {
display: block;
margin-bottom: 5px;
color: #333;
}
form input[type="text"],
form textarea{
width: 100%;
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
form button {
padding: 8px 20px;
background-color: #dc3545;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
form button:hover {
background-color: #c82333;
}
.created-field,
.modified-field{
width: 100%;
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
text-align:center;
}
</style>
<div class="container">
<h1>Create Monitor</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-danger">Submit</button>
</form>
<p class="created-field">Created: {{ form.created.value }}</p>
<p class="modified-field">Modified: {{ form.modified.value }}</p>
</div>
39 changes: 38 additions & 1 deletion website/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,14 @@
Winner,
)

from .forms import CaptchaForm, HuntForm, QuickIssueForm, UserDeleteForm, UserProfileForm
from .forms import (
CaptchaForm,
HuntForm,
MonitorForm,
QuickIssueForm,
UserDeleteForm,
UserProfileForm,
)

WHITELISTED_IMAGE_TYPES = {
"jpeg": "image/jpeg",
Expand Down Expand Up @@ -2440,6 +2447,19 @@ def create_wallet(request):
return JsonResponse("Created", safe=False)


def monitor_create_view(request):
if request.method == "POST":
form = MonitorForm(request.POST)
if form.is_valid():
monitor = form.save(commit=False)
monitor.user = request.user # Assuming you have a logged-in user
monitor.save()
# Redirect to a success page or render a success message
else:
form = MonitorForm()
return render(request, "Moniter.html", {"form": form})


def issue_count(request):
open_issue = Issue.objects.filter(status="open").count()
close_issue = Issue.objects.filter(status="closed").count()
Expand Down Expand Up @@ -4260,3 +4280,20 @@ def get_context_data(self, **kwargs):
context["end_date"] = datetime.now().date().isoformat()

return context


@login_required
def create_monitor(request):
if request.method == "POST":
form = MonitorForm(request.POST)
if form.is_valid():
monitor = form.save(commit=False)
monitor.user = request.user # Set the user field to the current user
monitor.save()
messages.success(request, "Form submitted successfully!")
else:
messages.error(request, "Form submission failed. Please correct the errors.")
else:
form = MonitorForm()

return render(request, "Monitor.html", {"form": form})