Commit 0426685d by Etienne Freiss

Merge branch 'evolution_bdm' of…

Merge branch 'evolution_bdm' of https://gl.cooperatic.fr/cooperatic-foodcoops/third-party into ticket_1677
parents 99bf603d a7c0febd
Pipeline #1494 passed with stage
in 1 minute 33 seconds
......@@ -18,4 +18,4 @@ shop/shop_admin_settings.json
shop/errors.log
.idea
members/settings.json
.DS_Store
\ No newline at end of file
.DS_Store
......@@ -63,19 +63,26 @@ class CagetteMember(models.Model):
# def update_member_points(self, status):
# fields = {'name': reason,
# 'shift_id': False,
# 'type': stype,
# 'partner_id': self.id,
# 'point_qty': pts
# }
# return self.o_api.create('shift.counter.event', fields)
# fields = {'name': reason,
# 'shift_id': False,
# 'type': stype,
# 'partner_id': self.id,
# 'point_qty': pts
# }
# return self.o_api.create('shift.counter.event', fields)
# if status not in ["suspended", "delay", "up_to_date", "unsuscribed", "alert"]:
# raise Exception("Bad status")
# if status not in ["suspended", "delay", "up_to_date", "unsuscribed", "alert"]:
# raise Exception("Bad status")
# f = { 'cooperative_state': "delay" }
# return self.o_api.update('res.partner', [self.id], f)
# # # BDM
def save_partner_info(self, partner_id, fieldsDatas):
print(fieldsDatas)
return self.o_api.update('res.partner', partner_id, fieldsDatas)
# f = { 'cooperative_state': "delay" }
# return self.o_api.update('res.partner', [self.id], f)
@staticmethod
def retrieve_data_according_keys(keys, full=False):
......@@ -1168,7 +1175,7 @@ class CagetteServices(models.Model):
).total_seconds() / 60 > default_acceptable_minutes_after_shift_begins
if with_members is True:
cond = [['id', 'in', s['registration_ids']], ['state', '!=', 'cancel']]
fields = ['partner_id', 'shift_type', 'state']
fields = ['partner_id', 'shift_type', 'state', 'is_late']
members = api.search_read('shift.registration', cond, fields)
s['members'] = sorted(members, key=lambda x: x['partner_id'][0])
if len(s['members']) > 0:
......@@ -1441,3 +1448,4 @@ class CagetteUser(models.Model):
pass
return answer
......@@ -43,8 +43,9 @@ h1 .member_name {font-weight: bold;}
{border:1px solid #000; border-radius: 5px; padding:5px; margin-bottom:15px;background:#FFF;}
.members_list {list-style: none;}
.members_list li {display:block;margin-bottom:5px;}
.members_list.late li {background-color: #de9b00; color: white}
.members_list li.btn--inverse {background: #449d44 !important; cursor:not-allowed; color: #FFF; }
.members_list li.btn--inverse {background: #449d44; cursor:not-allowed; color: #FFF; }
.members_list li.btn--inverse.late {background-color: #de9b00; color: white}
#service_entry_success {font-size: x-large;}
#service_entry_success .explanations {margin: 25px 0; font-size: 18px;}
......
......@@ -263,15 +263,18 @@ function fill_service_entry(s) {
if (s.members) {
m_list = '<ul class="members_list">';
if (typeof s.late != "undefined" && s.late == true) {
m_list = '<ul class="members_list late">';
}
// if (typeof s.late != "undefined" && s.late == true) {
// m_list = '<ul class="members_list late">';
// }
$.each(s.members, function(i, e) {
var li_class = "btn";
var li_data = "";
if (e.state == "done") {
li_class += "--inverse";
if (e.is_late == true) {
li_class += " late";
}
} else {
li_data = ' data-rid="'+e.id+'" data-mid="'+e.partner_id[0]+'"';
}
......
......@@ -49,6 +49,9 @@ urlpatterns = [
url(r'^easy_validate_shift_presence$', views.easy_validate_shift_presence),
# conso / groupe recherche / socio
url(r'^panel_get_purchases$', views.panel_get_purchases),
# BDM
url(r'^save_partner_info$', views.save_partner_info),
# BDM - members admin
url(r'^admin$', admin.admin),
url(r'^get_makeups_members$', admin.get_makeups_members),
......
......@@ -390,3 +390,23 @@ def panel_get_purchases(request):
message += ' ' + str(res['params'])
response = HttpResponse(message)
return response
# # # BDM # # #
def save_partner_info(request):
""" Endpoint the front-end will call for saving partner information """
res = {}
credentials = CagetteMember.get_credentials(request)
if ('success' in credentials):
data = {}
for post in request.POST:
if post != "idPartner" and data != "verif_token" :
data[post]= request.POST[post]
cm = CagetteMember(int(request.POST['idPartner']))
result = cm.save_partner_info(int(request.POST['idPartner']),data)
res['success']= result
return JsonResponse(res)
else:
res['error'] = "Forbidden"
return JsonResponse(res, safe=False)
......@@ -19,7 +19,7 @@
@media screen and (min-width: 351px) and (max-width: 435px) {
.my_info_line {
font-size: 80%;
font-size: 90%;
padding: 2vw 0;
}
}
......@@ -52,6 +52,9 @@
margin-bottom: 0;
}
#my_info .member_shift_name_area {
margin-top: 0;
}
#attached_info {
display: flex;
flex-direction: column;
......@@ -63,6 +66,24 @@
gap: 10px;
}
.edit-btn{
cursor: pointer;
}
#edit_address_form {
display: none ;
}
#edit_address_form #zip_form {
margin: 5px 0;
}
#edit_phone_form {
display: none ;
}
#edit_phone_form #mobile_form {
margin: 5px 0;
}
@media screen and (max-width: 992px) {
#my_info {
font-size: 1.7rem;
......
......@@ -13,10 +13,11 @@ function init_my_info() {
$(".attached_partner_name").text(partner_data.associated_partner_name);
}
if (partner_data.street !== "") {
$(".member_address").empty();
if (partner_data.street !== "" && partner_data.street !== "False") {
$(".member_address")
.append(partner_data.street + "<br/>");
if (partner_data.street2 !== "") {
if (partner_data.street2 !== "" && partner_data.street2 !== "False") {
$(".member_address")
.append(partner_data.street2 + "<br/>");
}
......@@ -26,17 +27,20 @@ function init_my_info() {
$(".member_address_line").hide();
}
$(".member_mobile").empty();
if (partner_data.mobile !== "" && partner_data.mobile !== "False" && partner_data.mobile !== false && partner_data.mobile !== null) {
$(".member_mobile")
.append(partner_data.mobile);
.append(partner_data.mobile)
.show();
} else {
$(".member_mobile").hide();
}
$(".member_phone").empty();
if (partner_data.phone !== "" && partner_data.phone !== "False" && partner_data.phone !== false && partner_data.phone !== null) {
$(".member_phone")
.append(partner_data.phone);
.append(partner_data.phone)
.show();
} else {
$(".member_phone").hide();
}
......@@ -44,4 +48,88 @@ function init_my_info() {
if ($(".member_mobile").text() === "" && $(".member_phone").text() === "") {
$(".member_phone_line").hide();
}
$('#edit_address').off('click')
.on('click', () => {
$("#street_form").val(partner_data.street);
// $("#street2_form").val(partner_data.street2);
$("#zip_form").val(partner_data.zip);
$("#city_form").val(partner_data.city);
$('#edit_address_value').hide();
$('#edit_address_form').show();
});
$('#cancel_edit_address').
on('click', () => {
$('#edit_address_form').hide();
$('#edit_address_value').show();
});
$('#save_edit_address').off('click')
.on('click', () => {
data= [];
data['street']= $("#street_form").val();
// data['street2']= $("#street2_form").val();
data['zip']= $("#zip_form").val();
data['city']= $("#city_form").val();
saveInfo(data, 'address');
});
$('#edit_phone').off('click')
.on('click', () => {
if (partner_data.phone === "False") partner_data.phone = "";
if (partner_data.mobile === "False") partner_data.mobile = "";
$("#phone_form").val(partner_data.phone);
$("#mobile_form").val(partner_data.mobile);
$('#edit_phone_value').hide();
$('#edit_phone_form').show();
});
$('#cancel_edit_phone').off('click')
.on('click', () => {
$('#edit_phone_form').hide();
$('#edit_phone_value').show();
});
$('#save_edit_phone').off('click')
.on('click', () => {
console.log('ici');
data =[];
data['phone']= $("#phone_form").val();
data['mobile']= $("#mobile_form").val();
saveInfo(data, 'phone');
});
}
function saveInfo(data, field) {
tData = '&idPartner=' + partner_data.partner_id
+ '&shift_type=' + partner_data.shift_type
+ '&verif_token=' + partner_data.verif_token;
for (d in data) {
tData+="&"+d+"="+data[d];
}
tUrl = '/members/save_partner_info';
$.ajax({
type: 'POST',
url: tUrl,
dataType:"json",
data: tData,
timeout: 3000,
success: function() {
for (d in data) {
partner_data[d]=data[d];
}
init_my_info();
if (field == 'address') {
$('#edit_address_form').hide();
$('#edit_address_value').show();
}
if (field == 'phone') {
$('#edit_phone_form').hide();
$('#edit_phone_value').show();
}
},
error: function(error) {
console.log(error);
}
});
}
\ No newline at end of file
......@@ -120,7 +120,7 @@ function init_shifts_list() {
for (shift of incoming_shifts) {
let shift_line_template = $("#selectable_shift_line_template");
let datetime_shift_start = new Date(shift.date_begin);
let datetime_shift_start = new Date(shift.date_begin.replace(/\s/, 'T'));
let f_date_shift_start = datetime_shift_start.toLocaleDateString("fr-fr", date_options);
......@@ -379,4 +379,4 @@ function init_shifts_exchange() {
$("#shifts_exchange_content").show();
init_calendar_page();
}
}
\ No newline at end of file
}
......@@ -138,7 +138,7 @@ function update_content() {
*/
function prepare_shift_line_template(date_begin) {
let shift_line_template = $("#shift_line_template");
let datetime_shift_start = new Date(date_begin);
let datetime_shift_start = new Date(date_begin.replace(/\s/, 'T'));
let f_date_shift_start = datetime_shift_start.toLocaleDateString("fr-fr", date_options);
......
......@@ -5,7 +5,7 @@
<div class="tiles_container">
<div class="tile full_width_tile" id="my_info_area">
<div class="tile_title">
<i class="fas fa-user tile_icon"></i>
<i class="fas fa-user tile_icon"></i>
<span class="member_info member_name"></span>
</div>
<div class="tile_content" id="my_info_content">
......@@ -56,19 +56,35 @@
</div>
<div class="my_info_line member_address_line">
<div class="my_info_line_left">
Adresse
Adresse
</div>
<div class="my_info_line_right member_address_area">
<span class="member_address member_info"></span>
<div class="my_info_line_right member_address_area" id="edit_address_value">
<span class="member_address member_info"></span><br>
<span id="edit_address"><i class="fas fa-edit tile_icon edit-btn" ></i></span>
</div>
<div class="my_info_line_right member_address_area1" id="edit_address_form">
<input type="text" name="street_form" id="street_form" placeholder="Rue"> <br>
<!-- <input type="text" name="street2_form" id="street2_form" placeholder="Complément"> -->
<input type="text" name="zip_form" id="zip_form" placeholder="Code postal"> <br>
<input type="text" name="city_form" id="city_form" placeholder="Ville"> <br>
<span id="cancel_edit_address"><i class="fas fa-times tile_icon edit-btn"></i></span>
<span id="save_edit_address"><i class="fas fa-check tile_icon edit-btn"></i></span>
</div>
</div>
<div class="my_info_line member_phone_line">
<div class="my_info_line_left">
Téléphone
</div>
<div class="my_info_line_right member_phone_area">
<div class="my_info_line_right member_phone_area" id="edit_phone_value">
<span class="member_phone member_info"></span>
<span class="member_mobile member_info"></span>
<span id="edit_phone"><i class="fas fa-edit tile_icon edit-btn" ></i></span>
</div>
<div class="my_info_line_right member_phone_area1" id="edit_phone_form">
<input type="text" name="phone" id="phone_form" placeholder="Tel fixe"> <br>
<input type="text" name="mobile" id="mobile_form" placeholder="Tel mobile"><br>
<span id="cancel_edit_phone"><i class="fas fa-times tile_icon edit-btn"></i></span>
<span id="save_edit_phone"><i class="fas fa-check tile_icon edit-btn"></i></span>
</div>
</div>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment