Latest Fixes
This commit is contained in:
+5
-5
@@ -119,11 +119,11 @@ class JM2L_Year(Base):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def AvailableTimeSlots(self, TimeStep=30):
|
def AvailableTimeSlots(self, TimeStep=30):
|
||||||
Available = self.end_time - self.start_time
|
available = self.end_time - self.start_time
|
||||||
NbMinutes = Available.total_seconds() / 60
|
nb_minutes = available.total_seconds() / 60
|
||||||
NbSteps = NbMinutes / TimeStep
|
nb_steps = nb_minutes / TimeStep
|
||||||
# Create the range of date each 30min
|
# Create the range of date each 30min
|
||||||
date_list = [self.start_time + datetime.timedelta(minutes=TimeStep * x) for x in range(0, int(NbSteps))]
|
date_list = [self.start_time + datetime.timedelta(minutes=TimeStep * x) for x in range(0, int(nb_steps))]
|
||||||
# Remove out of range datetime
|
# Remove out of range datetime
|
||||||
# Remove hours > 19h
|
# Remove hours > 19h
|
||||||
date_list = filter(lambda x: x.hour < 19, date_list)
|
date_list = filter(lambda x: x.hour < 19, date_list)
|
||||||
@@ -131,7 +131,7 @@ class JM2L_Year(Base):
|
|||||||
date_list = filter(lambda x: x.hour >= 10, date_list)
|
date_list = filter(lambda x: x.hour >= 10, date_list)
|
||||||
# Remove 12h < hours < 13h
|
# Remove 12h < hours < 13h
|
||||||
date_list = filter(lambda x: x.hour < 12 or x.hour >= 13, date_list)
|
date_list = filter(lambda x: x.hour < 12 or x.hour >= 13, date_list)
|
||||||
return date_list
|
return list(date_list)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def DocLinks(self):
|
def DocLinks(self):
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ ${jsitem | n}
|
|||||||
HandleControls();
|
HandleControls();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Piwik -->
|
<!-- Piwik
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var _paq = _paq || [];
|
var _paq = _paq || [];
|
||||||
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
|
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
|
||||||
@@ -237,7 +237,7 @@ HandleControls();
|
|||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<noscript><p><img src="//stats.style-python.fr/piwik.php?idsite=4" style="border:0;" alt="" /></p></noscript>
|
<noscript><p><img src="//stats.style-python.fr/piwik.php?idsite=4" style="border:0;" alt="" /></p></noscript>
|
||||||
<!-- End Piwik Code -->
|
End Piwik Code -->
|
||||||
% if request.user:
|
% if request.user:
|
||||||
<script>
|
<script>
|
||||||
function handlevote() {
|
function handlevote() {
|
||||||
|
|||||||
+67
-57
@@ -196,6 +196,15 @@ def JSON_User_Request(request):
|
|||||||
return {"Results": ListMatchUser, "Total": records.item_count,
|
return {"Results": ListMatchUser, "Total": records.item_count,
|
||||||
"logged_in": request.authenticated_userid}
|
"logged_in": request.authenticated_userid}
|
||||||
|
|
||||||
|
def get_paginator(request, page=1, items_per_page=10):
|
||||||
|
def url_maker(page_number):
|
||||||
|
query = request.GET
|
||||||
|
query["page"] = str(page_number)
|
||||||
|
return request.current_route_url(_query=query)
|
||||||
|
|
||||||
|
return Page(sql-query-here, page=page, items_per_page=items_per_page, url_maker=url_maker)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='tiers_json', renderer="json")
|
@view_config(route_name='tiers_json', renderer="json")
|
||||||
def JSON_Tiers_Request(request):
|
def JSON_Tiers_Request(request):
|
||||||
@@ -216,6 +225,7 @@ def JSON_Tiers_Request(request):
|
|||||||
# Query database
|
# Query database
|
||||||
JTiers = DBSession.query(Tiers.uid, Tiers.name) \
|
JTiers = DBSession.query(Tiers.uid, Tiers.name) \
|
||||||
.filter(Tiers.slug.contains(remove_accents(TiersQuery)))
|
.filter(Tiers.slug.contains(remove_accents(TiersQuery)))
|
||||||
|
|
||||||
page_url = paginate.PageURL_WebOb(request)
|
page_url = paginate.PageURL_WebOb(request)
|
||||||
records = paginate.Page(JTiers, current_page, url=page_url, items_per_page=pageSize)
|
records = paginate.Page(JTiers, current_page, url=page_url, items_per_page=pageSize)
|
||||||
ListMatchTiers = map(lambda t: {"id": t.uid, "text": t.name}, records)
|
ListMatchTiers = map(lambda t: {"id": t.uid, "text": t.name}, records)
|
||||||
@@ -739,9 +749,9 @@ def handle_salle(request):
|
|||||||
else:
|
else:
|
||||||
Salle = Salles()
|
Salle = Salles()
|
||||||
form = SalleForm(request.POST, Salle, meta={'csrf_context': request.session})
|
form = SalleForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
form.year_uid.choices = map(tuple, DBSession.query(JM2L_Year.year_uid, JM2L_Year.year_uid).order_by(
|
form.year_uid.choices = tuple(DBSession.query(JM2L_Year.year_uid, JM2L_Year.year_uid).order_by(
|
||||||
sa.desc(JM2L_Year.year_uid)).all())
|
sa.desc(JM2L_Year.year_uid)).all())
|
||||||
form.phy_salle_id.choices = map(tuple, DBSession.query(SallePhy.uid, SallePhy.name).all())
|
form.phy_salle_id.choices = tuple(DBSession.query(SallePhy.uid, SallePhy.name).all())
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
form.populate_obj(Salle)
|
form.populate_obj(Salle)
|
||||||
if 'uid' in form._fields.keys():
|
if 'uid' in form._fields.keys():
|
||||||
@@ -1275,23 +1285,23 @@ def Modal(request):
|
|||||||
form.populate_obj(Exch)
|
form.populate_obj(Exch)
|
||||||
if modtype in ['AskC', 'PropC']:
|
if modtype in ['AskC', 'PropC']:
|
||||||
Exch.itin_id = Itinerary.itin_id
|
Exch.itin_id = Itinerary.itin_id
|
||||||
if form._fields.has_key("Hour_start"):
|
if "Hour_start" in form._fields:
|
||||||
TargetTime = datetime.datetime.strptime('%d %d %d %s' % (year, int(Week), \
|
TargetTime = datetime.datetime.strptime('%d %d %d %s' % (year, int(Week),
|
||||||
int(form.Day_start.data),
|
int(form.Day_start.data),
|
||||||
form.Hour_start.data), "%Y %W %w %H:%M")
|
form.Hour_start.data), "%Y %W %w %H:%M")
|
||||||
Exch.start_time = TargetTime
|
Exch.start_time = TargetTime
|
||||||
elif form._fields.has_key("Day_start"):
|
elif "Day_start" in form._fields:
|
||||||
TargetTime = datetime.datetime.strptime('%d %d %d' % (year, int(Week), \
|
TargetTime = datetime.datetime.strptime('%d %d %d' % (year, int(Week),
|
||||||
int(form.Day_start.data)), "%Y %W %w")
|
int(form.Day_start.data)), "%Y %W %w")
|
||||||
Exch.start_time = TargetTime
|
Exch.start_time = TargetTime
|
||||||
|
|
||||||
if form._fields.has_key("Hour_end"):
|
if "Hour_end" in form._fields:
|
||||||
TargetTime = datetime.datetime.strptime('%d %d %d %s' % (year, int(Week), \
|
TargetTime = datetime.datetime.strptime('%d %d %d %s' % (year, int(Week),
|
||||||
int(form.Day_end.data), form.Hour_end.data),
|
int(form.Day_end.data), form.Hour_end.data),
|
||||||
"%Y %W %w %H:%M")
|
"%Y %W %w %H:%M")
|
||||||
Exch.end_time = TargetTime
|
Exch.end_time = TargetTime
|
||||||
elif form._fields.has_key("Day_end"):
|
elif "Day_end" in form._fields:
|
||||||
TargetTime = datetime.datetime.strptime('%d %d %d' % (year, int(Week), \
|
TargetTime = datetime.datetime.strptime('%d %d %d' % (year, int(Week),
|
||||||
int(form.Day_end.data)), "%Y %W %w")
|
int(form.Day_end.data)), "%Y %W %w")
|
||||||
Exch.end_time = TargetTime
|
Exch.end_time = TargetTime
|
||||||
|
|
||||||
@@ -1618,7 +1628,7 @@ def edit_event(request):
|
|||||||
if not TheYear:
|
if not TheYear:
|
||||||
raise HTTPNotFound(u"Cette année n'est pas pris en charge")
|
raise HTTPNotFound(u"Cette année n'est pas pris en charge")
|
||||||
# Generate Timeslots for current year
|
# Generate Timeslots for current year
|
||||||
TimeSlots = list(enumerate([x.strftime('%a %d %b %H:%M').decode('utf-8') for x in
|
TimeSlots = list(enumerate([x.strftime('%a %d %b %H:%M') for x in
|
||||||
TheYear.AvailableTimeSlots]))
|
TheYear.AvailableTimeSlots]))
|
||||||
|
|
||||||
if event_id:
|
if event_id:
|
||||||
@@ -1683,7 +1693,7 @@ def edit_event(request):
|
|||||||
formAdd = None
|
formAdd = None
|
||||||
formAddT = None
|
formAddT = None
|
||||||
|
|
||||||
SalleDispo = DBSession.query(Salles) \
|
salle_dispo = DBSession.query(Salles) \
|
||||||
.filter(Salles.year_uid == year) \
|
.filter(Salles.year_uid == year) \
|
||||||
.order_by('name')
|
.order_by('name')
|
||||||
|
|
||||||
@@ -1696,37 +1706,37 @@ def edit_event(request):
|
|||||||
]
|
]
|
||||||
if not duration in [15, 30, 60, 90]:
|
if not duration in [15, 30, 60, 90]:
|
||||||
form.duration.choices.append((duration, u'Conférence (%d min)' % duration))
|
form.duration.choices.append((duration, u'Conférence (%d min)' % duration))
|
||||||
if not form._fields.has_key("uid"):
|
if not "uid" in form._fields:
|
||||||
form.duration.data = 60
|
form.duration.data = 60
|
||||||
SalleDispo = SalleDispo.filter(Salles.place_type.in_(['Conference', 'MAO', 'Atelier']))
|
salle_dispo = salle_dispo.filter(Salles.place_type.in_(['Conference', 'MAO', 'Atelier']))
|
||||||
elif intervention == "Stand":
|
elif intervention == "Stand":
|
||||||
form.duration.choices = [
|
form.duration.choices = [
|
||||||
(8 * 60, u'Toute la journée'),
|
(8 * 60, u'Toute la journée'),
|
||||||
(4 * 60, u'une demi-journée')
|
(4 * 60, u'une demi-journée')
|
||||||
]
|
]
|
||||||
SalleDispo = SalleDispo.filter(Salles.place_type == 'Stand')
|
salle_dispo = salle_dispo.filter(Salles.place_type == 'Stand')
|
||||||
elif intervention == "Atelier":
|
elif intervention == "Atelier":
|
||||||
form.duration.choices = map(lambda d: (d, u'Atelier (%dh%.2d)' % (d / 60, d % 60)), \
|
form.duration.choices = map(lambda d: (d, u'Atelier (%dh%.2d)' % (d / 60, d % 60)),
|
||||||
[60, 90, 120, 150, 180, 210, 240])
|
[60, 90, 120, 150, 180, 210, 240])
|
||||||
if not duration in map(lambda d, y: d, form.duration.choices):
|
if not duration in map(lambda d, y: d, form.duration.choices):
|
||||||
form.duration.choices.append((duration, u'Atelier (%dh%.2d)' % (duration / 60, duration % 60)))
|
form.duration.choices.append((duration, u'Atelier (%dh%.2d)' % (duration / 60, duration % 60)))
|
||||||
SalleDispo = SalleDispo.filter(Salles.place_type.in_(['Atelier', 'MAO']))
|
salle_dispo = salle_dispo.filter(Salles.place_type.in_(['Atelier', 'MAO']))
|
||||||
elif intervention == "Table_ronde":
|
elif intervention == "Table_ronde":
|
||||||
form.duration.choices = map(lambda d: (d, u'Table ronde (%dh%.2d)' % (d / 60, d % 60)), \
|
form.duration.choices = map(lambda d: (d, u'Table ronde (%dh%.2d)' % (d / 60, d % 60)),
|
||||||
[60, 90, 120, 150])
|
[60, 90, 120, 150])
|
||||||
if not duration in map(lambda d, y: d, form.duration.choices):
|
if not duration in map(lambda d, y: d, form.duration.choices):
|
||||||
form.duration.choices.append((duration, u'Table ronde (%dh%.2d)' % (duration / 60, duration % 60)))
|
form.duration.choices.append((duration, u'Table ronde (%dh%.2d)' % (duration / 60, duration % 60)))
|
||||||
SalleDispo = SalleDispo.filter(Salles.place_type == 'Table ronde')
|
salle_dispo = salle_dispo.filter(Salles.place_type == 'Table ronde')
|
||||||
elif intervention == "Concert":
|
elif intervention == "Concert":
|
||||||
form.duration.choices = map(lambda d: (d, u'Concert (%dh%.2d)' % (d / 60, d % 60)), \
|
form.duration.choices = map(lambda d: (d, u'Concert (%dh%.2d)' % (d / 60, d % 60)),
|
||||||
[60, 90, 120, 150, 180, 210, 240])
|
[60, 90, 120, 150, 180, 210, 240])
|
||||||
if not duration in map(lambda d, y: d, form.duration.choices):
|
if not duration in map(lambda d, y: d, form.duration.choices):
|
||||||
form.duration.choices.append((duration, u'Concert (%dh%.2d)' % (duration / 60, duration % 60)))
|
form.duration.choices.append((duration, u'Concert (%dh%.2d)' % (duration / 60, duration % 60)))
|
||||||
SalleDispo = SalleDispo.filter(Salles.place_type.in_(['Stand', 'MAO']))
|
salle_dispo = salle_dispo.filter(Salles.place_type.in_(['Stand', 'MAO']))
|
||||||
else:
|
else:
|
||||||
raise HTTPForbidden(u"Pas encore disponible.")
|
raise HTTPForbidden(u"Pas encore disponible.")
|
||||||
|
|
||||||
form.salle_uid.choices = [(s.salle_id, s.name) for s in SalleDispo]
|
form.salle_uid.choices = [(s.salle_id, s.name) for s in salle_dispo]
|
||||||
form.start_sel.choices = TimeSlots
|
form.start_sel.choices = TimeSlots
|
||||||
|
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
@@ -1734,8 +1744,8 @@ def edit_event(request):
|
|||||||
TheEvent.start_time = TheYear.AvailableTimeSlots[form.start_sel.data]
|
TheEvent.start_time = TheYear.AvailableTimeSlots[form.start_sel.data]
|
||||||
TheEvent.end_time = TheEvent.start_time + datetime.timedelta(minutes=form.duration.data)
|
TheEvent.end_time = TheEvent.start_time + datetime.timedelta(minutes=form.duration.data)
|
||||||
# Ok, time to put in database
|
# Ok, time to put in database
|
||||||
if not form._fields.has_key("uid"):
|
if not "uid" in form._fields:
|
||||||
TheEvent.slug = unicode(slugify(TheEvent.name))
|
TheEvent.slug = slugify(TheEvent.name)
|
||||||
if intervention == u"Table_ronde":
|
if intervention == u"Table_ronde":
|
||||||
TheEvent.event_type = "Table ronde"
|
TheEvent.event_type = "Table ronde"
|
||||||
DBSession.add(TheEvent)
|
DBSession.add(TheEvent)
|
||||||
@@ -1925,7 +1935,7 @@ def edit_tiers(request):
|
|||||||
form.populate_obj(TheTiers)
|
form.populate_obj(TheTiers)
|
||||||
# Handle Remove of accents
|
# Handle Remove of accents
|
||||||
OriginalSlug = TheTiers.slug
|
OriginalSlug = TheTiers.slug
|
||||||
if not form._fields.has_key('uid'):
|
if not "uid" in form._fields:
|
||||||
TheTiers.slug = slugify(form.name.data)
|
TheTiers.slug = slugify(form.name.data)
|
||||||
TheTiers.creator_id = request.user.uid
|
TheTiers.creator_id = request.user.uid
|
||||||
DBSession.add(TheTiers)
|
DBSession.add(TheTiers)
|
||||||
@@ -1970,71 +1980,71 @@ def edit_tiers_category(request):
|
|||||||
if request.user is None:
|
if request.user is None:
|
||||||
# Don't answer to users that aren't logged
|
# Don't answer to users that aren't logged
|
||||||
raise HTTPForbidden(u'Vous devez vous identifier pour obtenir une réponse.')
|
raise HTTPForbidden(u'Vous devez vous identifier pour obtenir une réponse.')
|
||||||
DicResult = dict()
|
dic_result = dict()
|
||||||
ListChanges = list()
|
list_changes = list()
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
# Reformat data
|
# Reformat data
|
||||||
RegExist = re.compile('collection\[(?P<slug>[\w-]+)\]\[(?P<num>\d+)\]\[(?P<id>\d+)\]')
|
reg_exist = re.compile(r'collection\[(?P<slug>[\w-]+)\]\[(?P<num>\d+)\]\[(?P<id>\d+)\]')
|
||||||
RegTitle = re.compile('collection\[(?P<slug>[\w-]+)\]\[title]')
|
reg_title = re.compile(r'collection\[(?P<slug>[\w-]+)\]\[title]')
|
||||||
RegNew = re.compile('collection\[(?P<slug>[\w-]+)\]\[(?P<num>\d+)\]\[id\]')
|
reg_new = re.compile(r'collection\[(?P<slug>[\w-]+)\]\[(?P<num>\d+)\]\[id\]')
|
||||||
for key, value in request.POST.items():
|
for key, value in request.POST.items():
|
||||||
regN = RegNew.match(key)
|
regN = reg_new.match(key)
|
||||||
regT = RegTitle.match(key)
|
regT = reg_title.match(key)
|
||||||
reg = RegExist.match(key)
|
reg = reg_exist.match(key)
|
||||||
if reg:
|
if reg:
|
||||||
if not reg.group('slug') in DicResult:
|
if not reg.group('slug') in dic_result:
|
||||||
DicResult[reg.group('slug')] = dict()
|
dic_result[reg.group('slug')] = dict()
|
||||||
|
|
||||||
if 'items' in DicResult[reg.group('slug')]:
|
if 'items' in dic_result[reg.group('slug')]:
|
||||||
DicResult[reg.group('slug')]['items'].append((int(reg.group('id')), value))
|
dic_result[reg.group('slug')]['items'].append((int(reg.group('id')), value))
|
||||||
else:
|
else:
|
||||||
DicResult[reg.group('slug')]['items'] = [(int(reg.group('id')), value)]
|
dic_result[reg.group('slug')]['items'] = [(int(reg.group('id')), value)]
|
||||||
elif regN:
|
elif regN:
|
||||||
if not DicResult.has_key(regN.group('slug')):
|
if not regN.group('slug') in dic_result:
|
||||||
DicResult[regN.group('slug')] = dict()
|
dic_result[regN.group('slug')] = dict()
|
||||||
|
|
||||||
if DicResult[regN.group('slug')].has_key('items'):
|
if 'items' in dic_result[regN.group('slug')]:
|
||||||
DicResult[regN.group('slug')]['items'].append(('id', value))
|
dic_result[regN.group('slug')]['items'].append(('id', value))
|
||||||
else:
|
else:
|
||||||
DicResult[regN.group('slug')]['items'] = [('id', value)]
|
dic_result[regN.group('slug')]['items'] = [('id', value)]
|
||||||
ListChanges.append(('add', 0, DicResult[regN.group('slug')]['title'], value))
|
list_changes.append(('add', 0, dic_result[regN.group('slug')]['title'], value))
|
||||||
elif regT:
|
elif regT:
|
||||||
if not DicResult.has_key(regT.group('slug')):
|
if not regT.group('slug') in dic_result:
|
||||||
DicResult[regT.group('slug')] = dict()
|
dic_result[regT.group('slug')] = dict()
|
||||||
DicResult[regT.group('slug')]['title'] = value
|
dic_result[regT.group('slug')]['title'] = value
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
for opt in DBSession.query(TiersOpt).all():
|
for opt in DBSession.query(TiersOpt).all():
|
||||||
if opt.slug_entity_type in DicResult:
|
if opt.slug_entity_type in dic_result:
|
||||||
found = filter(lambda x, y: opt.uid == x,
|
found = filter(lambda x, y: opt.uid == x,
|
||||||
DicResult[opt.slug_entity_type].get('items', []))
|
dic_result[opt.slug_entity_type].get('items', []))
|
||||||
if not found:
|
if not found:
|
||||||
ListChanges.append(('remove', opt.uid, opt.entity_type, opt.entity_subtype))
|
list_changes.append(('remove', opt.uid, opt.entity_type, opt.entity_subtype))
|
||||||
else:
|
else:
|
||||||
for tst in found:
|
for tst in found:
|
||||||
# Check changes on Cat Name
|
# Check changes on Cat Name
|
||||||
if DicResult[opt.slug_entity_type]['title'] != opt.entity_type or \
|
if dic_result[opt.slug_entity_type]['title'] != opt.entity_type or \
|
||||||
tst[1] != opt.entity_subtype:
|
tst[1] != opt.entity_subtype:
|
||||||
ListChanges.append(('changed', opt.uid,
|
list_changes.append(('changed', opt.uid,
|
||||||
DicResult[opt.slug_entity_type]['title'],
|
dic_result[opt.slug_entity_type]['title'],
|
||||||
tst[1]))
|
tst[1]))
|
||||||
else:
|
else:
|
||||||
ListChanges.append(('remove', opt.uid, opt.entity_type, opt.entity_subtype))
|
list_changes.append(('remove', opt.uid, opt.entity_type, opt.entity_subtype))
|
||||||
|
|
||||||
# Do The change
|
# Do The change
|
||||||
for action, uid, entity, subentity in ListChanges:
|
for action, uid, entity, sub_entity in list_changes:
|
||||||
if action == "changed":
|
if action == "changed":
|
||||||
opt = TiersOpt.by_id(uid)
|
opt = TiersOpt.by_id(uid)
|
||||||
opt.entity_type = entity
|
opt.entity_type = entity
|
||||||
opt.entity_subtype = subentity
|
opt.entity_subtype = sub_entity
|
||||||
elif action == "remove":
|
elif action == "remove":
|
||||||
opt = TiersOpt.by_id(uid)
|
opt = TiersOpt.by_id(uid)
|
||||||
DBSession.delete(opt)
|
DBSession.delete(opt)
|
||||||
elif action == "add":
|
elif action == "add":
|
||||||
opt = TiersOpt()
|
opt = TiersOpt()
|
||||||
opt.entity_type = entity
|
opt.entity_type = entity
|
||||||
opt.entity_subtype = subentity
|
opt.entity_subtype = sub_entity
|
||||||
DBSession.add(opt)
|
DBSession.add(opt)
|
||||||
|
|
||||||
MainTab = {'programme': '', 'presse': '', 'plan': '', 'participer': '',
|
MainTab = {'programme': '', 'presse': '', 'plan': '', 'participer': '',
|
||||||
|
|||||||
Reference in New Issue
Block a user