示例#1
0
def serialize_shared_mission(pending_bargain_shared_mission, kingdom):

	pending_mission = serialize_pending_mission(pending_bargain_shared_mission.pending_mission)

	# Replace links on grids to delete
	pending_mission['links'] = {
		'delete': reverse('bargain.views.shared_pending_mission_delete', args=(pending_bargain_shared_mission.pk,)),
	}

	# Add virtual affectations
	for grid in pending_mission['grids']:
		# Replace links on grid to affect
		grid['links'] = {
			'affect': reverse('bargain.views.shared_mission_affect', args=(pending_bargain_shared_mission.pk, int(grid['id']))),
		}

		grid['virtual_affectations'] = [serialize_mission_affectation(o) for o in pending_bargain_shared_mission.pendingbargainsharedmissionaffectation_set.filter(mission_grid=grid['id'])]

		# Replace links on affectation to defect.
		for affectation in grid["virtual_affectations"]:
			affectation['links'] = {
				'defect': reverse('bargain.views.shared_mission_defect', args=(int(affectation['id']),)),
			}

	# Compute final results
	r = {
		'id': pending_bargain_shared_mission.id,
		'shared_by_me': (pending_bargain_shared_mission.pending_mission.kingdom_id == kingdom.pk),
		'pending_mission': pending_mission,
	}

	return r
示例#2
0
文件: api.py 项目: Neamar/kingdoms
def api(request):
	"""
	JSON contribution from this app.
	"""

	resp = {}

	# Pending missions
	pending_missions = request.user.kingdom.pendingmission_set.all().select_related("mission").prefetch_related("mission__missiongrid_set", "mission__missiongrid_set__pendingmissionaffectation_set")

	resp['pending_missions'] = [serialize_pending_mission(o) for o in pending_missions]

	# Available missions
	available_missions = request.user.kingdom.availablemission_set.all().select_related("mission")

	resp['available_missions'] = [serialize_available_mission(o) for o in available_missions]

	return resp