débug op view

This commit is contained in:
Ambulance Clerc
2022-07-29 17:47:18 +02:00
parent 895951b063
commit 52dbe120c8
41 changed files with 428 additions and 73 deletions

View File

@@ -1,8 +1,6 @@
# Generated by Django 4.0 on 2022-03-06 19:55 # Generated by Django 4.0 on 2022-01-31 15:05
import django.core.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
@@ -10,7 +8,6 @@ class Migration(migrations.Migration):
initial = True initial = True
dependencies = [ dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
] ]
operations = [ operations = [
@@ -18,21 +15,14 @@ class Migration(migrations.Migration):
name='Collabs_hour', name='Collabs_hour',
fields=[ fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('userName', models.CharField(max_length=100, verbose_name='Auteur')), ('userName', models.CharField(max_length=100, verbose_name="Nom d'utilisateur")),
('nHour', models.PositiveIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(23)], verbose_name='Heures')), ('collab', models.CharField(max_length=10, verbose_name='Collaborateur')),
('nMinutes', models.PositiveIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(60)], verbose_name='Minutes')), ('nHour', models.IntegerField(default=0, verbose_name='Heure')),
('sRemarques', models.TextField(blank=True, verbose_name='Remarques')), ('nMinutes', models.IntegerField(default=0, verbose_name='Minutes')),
('bNoticed', models.BooleanField(blank=True, default=False, verbose_name='Vérifiée')), ('sRemarques', models.TextField(verbose_name='Remarques')),
('dtDate', models.DateField(verbose_name='Date')), ('bNoticed', models.BooleanField(default=0, verbose_name='Pris en compte')),
('sBases', models.CharField(choices=[('1', 'Monthey'), ('2', 'Uvrier')], default=1, max_length=1, verbose_name='Employé de la base de')),
('dtUpdate', models.DateTimeField(auto_now=True, verbose_name='Date de modification')), ('dtUpdate', models.DateTimeField(auto_now=True, verbose_name='Date de modification')),
('dtCreated', models.DateTimeField(auto_now_add=True, verbose_name='Date de création')), ('dtCreated', models.DateTimeField(auto_now_add=True)),
('user', models.ForeignKey(default=0, on_delete=django.db.models.deletion.DO_NOTHING, to='auth.user', verbose_name='Collaborateur')),
], ],
options={
'verbose_name': 'heure suplémentaire',
'verbose_name_plural': 'heures suplémentaires',
'permissions': (('can_notice', 'Peut noter comme traitée'),),
},
), ),
] ]

View File

@@ -1,28 +0,0 @@
# Generated by Django 4.0 on 2022-01-31 15:05
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Collabs_hour',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('userName', models.CharField(max_length=100, verbose_name="Nom d'utilisateur")),
('collab', models.CharField(max_length=10, verbose_name='Collaborateur')),
('nHour', models.IntegerField(default=0, verbose_name='Heure')),
('nMinutes', models.IntegerField(default=0, verbose_name='Minutes')),
('sRemarques', models.TextField(verbose_name='Remarques')),
('bNoticed', models.BooleanField(default=0, verbose_name='Pris en compte')),
('dtUpdate', models.DateTimeField(auto_now=True, verbose_name='Date de modification')),
('dtCreated', models.DateTimeField(auto_now_add=True)),
],
),
]

View File

@@ -0,0 +1,38 @@
# Generated by Django 4.0 on 2022-03-06 19:55
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]
operations = [
migrations.CreateModel(
name='Collabs_hour',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('userName', models.CharField(max_length=100, verbose_name='Auteur')),
('nHour', models.PositiveIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(23)], verbose_name='Heures')),
('nMinutes', models.PositiveIntegerField(default=0, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(60)], verbose_name='Minutes')),
('sRemarques', models.TextField(blank=True, verbose_name='Remarques')),
('bNoticed', models.BooleanField(blank=True, default=False, verbose_name='Vérifiée')),
('dtDate', models.DateField(verbose_name='Date')),
('sBases', models.CharField(choices=[('1', 'Monthey'), ('2', 'Uvrier')], default=1, max_length=1, verbose_name='Employé de la base de')),
('dtUpdate', models.DateTimeField(auto_now=True, verbose_name='Date de modification')),
('dtCreated', models.DateTimeField(auto_now_add=True, verbose_name='Date de création')),
('user', models.ForeignKey(default=0, on_delete=django.db.models.deletion.DO_NOTHING, to='auth.user', verbose_name='Collaborateur')),
],
options={
'verbose_name': 'heure suplémentaire',
'verbose_name_plural': 'heures suplémentaires',
'permissions': (('can_notice', 'Peut noter comme traitée'),),
},
),
]

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,10 @@
from datetime import datetime, timedelta, time from datetime import datetime, timedelta, time
import datetime as Datetime import datetime as Datetime
import pickle
import os
from dateutil.relativedelta import relativedelta
from django.db import models from django.db import models
import urllib.request import urllib.request
@@ -30,7 +35,7 @@ class cls_caldav():
def sort_array(self): def sort_array(self):
self.items.sort(key=lambda x: x.dtstamp, reverse=False) self.items.sort(key=lambda x: x.dtstamp, reverse=False)
def get_caldav_data(self,periode=1): def get_caldav_data(self,periode=1,calendar=None):
ctx = ssl.create_default_context() ctx = ssl.create_default_context()
ctx.check_hostname = False ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE ctx.verify_mode = ssl.CERT_NONE
@@ -96,8 +101,13 @@ class cls_caldav():
class cls_caldav_client(): class cls_caldav_client():
caldav_url = "https://sync.infomaniak.com" caldav_url = "https://sync.infomaniak.com"
caldav_user = 'SC01066' #caldav_user = 'SC01066' #ambulanciers@ambulance-clerc.ch
caldav_password = "mc144*1870CLERC" #caldav_password = "mc144*1870CLERC"
caldav_user = 'AA01593' #agenda@ambulance-clerc.ch
caldav_password = "Agendamc144"
caldav_agenda_config_url = "https://sync.infomaniak.com/calendars/AA01593/29d5c8d0-9b86-4d45-bc2b-13585a2e78f8?export"
@@ -105,11 +115,35 @@ class cls_caldav_client():
self.client = caldav.DAVClient(url=self.caldav_url, username=self.caldav_user, password=self.caldav_password) self.client = caldav.DAVClient(url=self.caldav_url, username=self.caldav_user, password=self.caldav_password)
self.data = self.client.principal() self.data = self.client.principal()
self.m38 = self.data.calendar(name="M38") for cal in self.data.calendars():
self.m37 = self.data.calendar(name="M37") print(f"name: {cal.name}({cal.url})")
self.clear_all_events_by_Date(self.m38)
self.add_event_in_calandar(self.m38) self.a_task = self.data.calendar(name="Tâche")
self.add_event_in_calandar(self.m37)
if datetime.today().day == 29:
try:
with open(os.path.join("mycaldav", "last_sync_config.bin"), "rb") as file:
array = pickle.load(file)
except:
array = {"year": 0, "month": 0}
print("Erreur lecture fichier débiteur")
if array["month"] == datetime.now().month:
if array["year"] == datetime.now().year:
print("pas de copy, sync déjà fait")
else:
self.get_caldav_data(self.a_task)
else:
self.get_caldav_data(self.a_task)
self.clear_all_events_by_Date(self.a_task)
def add_event_in_calandar(self, calandar): def add_event_in_calandar(self, calandar):
@@ -117,9 +151,53 @@ class cls_caldav_client():
dtstart=datetime(2022, 6, 30, 12), dtstart=datetime(2022, 6, 30, 12),
dtend=datetime(2022, 6, 30, 13), dtend=datetime(2022, 6, 30, 13),
summary="Do the needful", summary="Do the needful",
) )
def get_caldav_data(self, calandar=None):
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
o_url = urllib.request.urlopen(self.caldav_agenda_config_url, context=ctx)
data = o_url.read()
o_url.close()
now = f"01.{datetime.now().month}.{datetime.now().year}"
next_month = datetime.strptime(f"1.{datetime.today().month}.{datetime.today().year}","%d.%m.%Y") + relativedelta(months=1) - relativedelta(days=1)
next_month = (next_month.year, next_month.month, next_month.day)
today = (datetime.now().year, datetime.now().month, 1)
print(f"today:{today}")
print(f"next:{next_month}")
events = None
events = recurring_ical_events.of(Calendar.from_ical(data)).between(today, next_month)
cur_events = calandar.date_search(start=datetime(today[0],today[1],today[2]), end=datetime(next_month[0],next_month[1],next_month[2]), expand=True)
for event in events:
print(f"copy de l'événement: {event['SUMMARY']}")
my_event = calandar.save_event(
dtstart=event["DTSTART"].dt,
dtend=event["DTEND"].dt,
summary= event["SUMMARY"],
description=event["DESCRIPTION"],
)
with open(os.path.join("mycaldav", "last_sync_config.bin"), "wb") as file:
array = {"year":datetime.now().year, "month":datetime.now().month}
pickle.dump(array, file)
def clear_all_events_by_Date(self, calandar): def clear_all_events_by_Date(self, calandar):
events = calandar.date_search(start=datetime(2022, 6, 30), end=datetime(2022, 7, 1), expand=True) events = calandar.date_search(start=datetime(2000, 1, 1), end=datetime.now() - relativedelta(years=1), expand=True)
for e in events: for e in events:
e.delete() e.delete()
print(events) print(events)

View File

@@ -2,7 +2,7 @@
<table style="font-family: 'Source Sans Pro', sans-serif; font-size: 12pt;"> <table style="font-family: 'Source Sans Pro', sans-serif; font-size: 12pt;">
<td style="font-weight: bold;padding-bottom: 5px; text-align: center;" colspan="2">Jour</td> <td style="font-weight: bold;padding-bottom: 5px; text-align: center;" colspan="2">Jour</td>
{% for task in latest_task_list %} {% for task in latest_task_list %}
<tr><td style="font-weight: bold;vertical-align: top;" width="75" >{{task.key}}</td>&nbsp;&nbsp;&nbsp;&nbsp;<td style="{% if task.done %}text-decoration:line-through{% endif %}">{{ task.name }}<br>{{task.desc}}</td></tr> <tr><td style="font-weight: bold;vertical-align: top;" width="75" >{{task.key}}</td>&nbsp;&nbsp;&nbsp;&nbsp;<td style="{% if task.done %}text-decoration:line-through{% endif %}">{{ task.name }}<br>{{task.desc}}{{task.dtstart}}</td></tr>
{% endfor %} {% endfor %}
<tr><td>&nbsp;</td></tr> <tr><td>&nbsp;</td></tr>
<tr> <tr>

View File

@@ -16,6 +16,7 @@ def view_task_caldav(request):
o_caldav.get_caldav_data() o_caldav.get_caldav_data()
template = loader.get_template("task/task.html") template = loader.get_template("task/task.html")
context = {'latest_task_list':o_caldav.day, 'night_task_list': o_caldav.night} context = {'latest_task_list':o_caldav.day, 'night_task_list': o_caldav.night}
myClient = cls_caldav_client()
return HttpResponse(template.render(context,request)) return HttpResponse(template.render(context,request))
@xframe_options_exempt @xframe_options_exempt
@@ -55,4 +56,5 @@ def view_dayly_caldav(request):
myClient = cls_caldav_client() myClient = cls_caldav_client()
return HttpResponse(ret) return HttpResponse(ret)

View File

@@ -1,7 +1,7 @@
from django.contrib import admin from django.contrib import admin
from polls.models import Question, Choice from polls.models import Question, Choice
from vehicles.models import *
class ChoiceInline(admin.TabularInline): class ChoiceInline(admin.TabularInline):
@@ -19,4 +19,4 @@ class QuestionAdmin(admin.ModelAdmin):
admin.site.register(Question, QuestionAdmin) admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice) admin.site.register(Choice)
admin.site.register(Vehicles)

View File

@@ -1,3 +1,41 @@
from django.contrib import admin from django.contrib import admin
# Register your models here. from vehicles.models import *
class _vhc_admin(admin.ModelAdmin):
list_display = ('sName', 'nBases', 'nStatus')
search_fields = ['sName']
#fields = ["sBases", "dtDate",'type', "user","nHour", "nMinutes", "sRemarques"]
class _vhc_infos_admin(admin.ModelAdmin):
#list_display = ('Vehicle', 'nType', 'sTitle','sDesc')
search_fields = ['sName']
#fields = ["Vehicle", "nType",'sTitle', "sDesc","dtStart", "dtEnd", "Author"]
fieldsets = (
('Informations liées au véhicule', {
'fields': ('Vehicle',)
}),
('Information sur le message', {
'fields': ('nType','sTitle','sDesc')
}),
('Information supplémentaires et validité', {
'fields': ("dtStart","dtEnd", 'Author')
}),
)
admin.site.register(vehicles_infos, _vhc_infos_admin)
admin.site.register(vehicles, _vhc_admin)

View File

@@ -4,3 +4,4 @@ from django.apps import AppConfig
class VehiclesConfig(AppConfig): class VehiclesConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField' default_auto_field = 'django.db.models.BigAutoField'
name = 'vehicles' name = 'vehicles'
verbose_name = "Clerc véhicule"

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.0 on 2022-07-04 10:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vehicles', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='vehicles',
name='nBases',
field=models.CharField(choices=[('1', 'Monthey'), ('2', 'Uvrier')], default=1, max_length=1, verbose_name='Basé à '),
),
migrations.AddField(
model_name='vehicles',
name='nStatus',
field=models.CharField(choices=[('1', 'Opérationnel'), ('2', 'Hors Service'), ('3', 'Réserve'), ('4', 'Utilisation altérée')], default=1, max_length=1, verbose_name='Statut'),
),
migrations.AddField(
model_name='vhc_problems',
name='nType',
field=models.CharField(choices=[('1', 'Technique'), ('2', 'Matériel'), ('3', 'Opérationnel')], default=1, max_length=1, verbose_name='Type'),
),
]

View File

@@ -0,0 +1,22 @@
# Generated by Django 4.0 on 2022-07-04 10:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vehicles', '0002_vehicles_nbases_vehicles_nstatus_vhc_problems_ntype'),
]
operations = [
migrations.RemoveField(
model_name='vehicles',
name='bEnabled',
),
migrations.AlterField(
model_name='vehicles',
name='sName',
field=models.CharField(max_length=250, verbose_name='Indicatif'),
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 4.0 on 2022-07-04 10:58
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('vehicles', '0003_remove_vehicles_benabled_alter_vehicles_sname'),
]
operations = [
migrations.AlterModelOptions(
name='vehicles',
options={'verbose_name': 'véhicule', 'verbose_name_plural': 'véhicules'},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.0 on 2022-07-04 13:11
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('vehicles', '0004_alter_vehicles_options'),
]
operations = [
migrations.RenameModel(
old_name='Vhc_problems',
new_name='Vhc_infos',
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.0 on 2022-07-04 16:13
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('vehicles', '0005_rename_vhc_problems_vhc_infos'),
]
operations = [
migrations.RenameModel(
old_name='Vhc_infos',
new_name='Vehicles_infos',
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 4.0 on 2022-07-04 18:19
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('vehicles', '0006_rename_vhc_infos_vehicles_infos'),
]
operations = [
migrations.AlterModelOptions(
name='vehicles_infos',
options={'verbose_name': 'véhicule info', 'verbose_name_plural': 'véhicule infos'},
),
]

View File

@@ -0,0 +1,65 @@
# Generated by Django 4.0 on 2022-07-04 18:59
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('vehicles', '0007_alter_vehicles_infos_options'),
]
operations = [
migrations.AlterField(
model_name='vehicles_infos',
name='Author',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='auth.user', verbose_name='Auteur'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='Vehicle',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='vehicles.vehicles', verbose_name='Véhicule'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='bEnabled',
field=models.BooleanField(default=1, verbose_name='Actif'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='dtCreated',
field=models.DateTimeField(auto_now_add=True, verbose_name='date published'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='dtEnd',
field=models.DateField(blank=True, verbose_name='Date de fin'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='dtStart',
field=models.DateField(verbose_name='Date de début'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='dtUpdated',
field=models.DateTimeField(auto_now=True, verbose_name='date updated'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='sAuthor',
field=models.CharField(max_length=120, verbose_name='auteur string'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='sDesc',
field=models.TextField(verbose_name='Description'),
),
migrations.AlterField(
model_name='vehicles_infos',
name='sTitle',
field=models.CharField(max_length=250, verbose_name='Titre'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.0 on 2022-07-04 19:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vehicles', '0008_alter_vehicles_infos_author_and_more'),
]
operations = [
migrations.AlterField(
model_name='vehicles_infos',
name='dtEnd',
field=models.DateField(blank=True, null=True, verbose_name='Date de fin'),
),
]

View File

@@ -4,20 +4,53 @@ from django.db import models
from django.conf import settings from django.conf import settings
from django.utils import timezone from django.utils import timezone
BASES_CHOICES = [
('1', 'Monthey'),
('2', 'Uvrier'),
]
STATUS_CHOICES = [
('1', 'Opérationnel'),
('2', 'Hors Service'),
('3', 'Réserve'),
('4', 'Utilisation altérée'),
]
TYPES_CHOICES = [
('1', 'Technique'),
('2', 'Matériel'),
('3', 'Opérationnel'),
]
class Vehicles(models.Model):
sName = models.CharField (max_length=250)
bEnabled = models.BooleanField( default=0 )
class Vhc_problems(models.Model): class vehicles(models.Model):
Vehicle = models.ForeignKey( Vehicles, on_delete=models.CASCADE) sName = models.CharField("Indicatif", max_length=250)
sTitle = models.CharField( max_length=250) nBases = models.CharField('Basé à ', max_length=1, choices=BASES_CHOICES, default=1)
sDesc = models.TextField() nStatus = models.CharField('Statut', max_length=1, choices=STATUS_CHOICES, default=1)
bEnabled = models.BooleanField( default=1)
dtStart = models.DateTimeField()
dtEnd = models.DateTimeField()
sAuthor = models.CharField( max_length=120)
Author = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING )
dtUpdated = models.DateTimeField('date updated')
dtCreated = models.DateTimeField('date published')
def __str__(self):
return self.sName
class Meta:
verbose_name = "véhicule"
verbose_name_plural = "véhicules"
class vehicles_infos(models.Model):
Vehicle = models.ForeignKey(vehicles, on_delete=models.CASCADE, verbose_name="Véhicule")
nType = models.CharField('Type', max_length=1, choices=TYPES_CHOICES, default=1)
sTitle = models.CharField("Titre",max_length=250)
sDesc = models.TextField("Description")
bEnabled = models.BooleanField("Actif",default=1)
dtStart = models.DateField("Date de début")
dtEnd = models.DateField("Date de fin", blank=True, null=True)
sAuthor = models.CharField("auteur string",max_length=120)
Author = models.ForeignKey(settings.AUTH_USER_MODEL,verbose_name="Auteur", on_delete=models.DO_NOTHING)
dtUpdated = models.DateTimeField('date updated', auto_now=True)
dtCreated = models.DateTimeField('date published', auto_now_add=True)
def __str__(self):
return self.sTitle
class Meta:
verbose_name = "véhicule info"
verbose_name_plural = "véhicule infos"