示例#1
0
def questions(request):
  return render_to_response("admin/questions.html",
                            { 'menuitems' : createMenuItems('questions'),
                              'questions' : Question.objects.all(),                              
                              'user'      : request.user,
                              'title'     : u"Otázky"  }
                            )
示例#2
0
def list_users(request, sort):
  if sort is None:
    sort = "UID"
  headers = [u"Login", u"Jméno", u"Nick", u"Mail", u"Telefon", u"Narození", u"UID", u"Heslo"]
  table = MightyTable(headers)
  table.setNumeric(u"Narození")
  table.setNumeric(u"UID")
  for player in Player.objects.select_related():
    record = {}
    record[u"Login"]     = SimpleCell(player.getLogin())
    record[u"Jméno"]     = SimpleCell(player.getFullName(nick=False))
    record[u"Nick"]      = SimpleCell(player.getNick())
    record[u"Mail"]      = SimpleCell(player.getMail())
    record[u"Telefon"]   = SimpleCell(player.getPhone())
    record[u"Narození"]  = SimpleCell(player.getBirth())
    record[u"UID"]       = SimpleCell(player.getUID())
    record[u"Heslo"]     = URLCell("reset/%s/" % player.getID(), "reset")
    table.addRecord(record)
  table.sort(sort)
  return render_to_response("admin/users.html",
                            { 'menuitems' : createMenuItems('users'),
                              'table'     : table,
                              'user'      : request.user,
                              'title'     : "Uživatelé"  }
                            )
示例#3
0
def slot_modify(request, eventid, slotid=None):

  if slotid != 'new':
    inst = MultiGameSlot.objects.get(id=slotid)
    form = ActualSlotForm(instance = inst)
    sgf = SlotForm(slotid)
  else:
    sgf = None
    slotid = None
    form = ActualSlotForm()

  if request.method == u'POST':
    form = ActualSlotForm(request.POST)
    if form.is_valid():
      form.save()
      request.user.message_set.create(message=u"V eventu %s změněn slot")
      return HttpResponseRedirect(u'/admin/events/multi/%s/' % eventid )
  else:
    form.initial[u'event'] = eventid
    form.fields[u'event'].choices = ((eventid,u"LARP"),)

  return render_to_response(u'admin/slotform.html',
                              {u'form'         : form,
                               u'slotform'     : sgf,
                               u'slotid'       : slotid,
                               u'menuitems'    : createMenuItems(),
                               u'eventid'      : eventid,
                               u'gamespresent' : GameInSlot.objects.filter(slot=slotid),
                               u'title'        : u"Editace slotu",
                               u'user'         : request.user},
                              )
示例#4
0
def administrate_games(request):
  games = Game.objects.all()
  return render_to_response("admin/games.html", 
                            {'games'     : games,
                             'menuitems' : createMenuItems("games"),
                             'user'      : request.user,
                             'title'     : "Hry",
                             })
示例#5
0
def show_applied_people_in_slots(request, eventid):
  event = Event.objects.get(id=eventid)
  slots = event.multigameslot_set.all()
  for slot in slots:
    slot.printify()
  return render_to_response(u'admin/people_in_slots.html',
                            {u'menuitems'      : createMenuItems(),
                             u'title'          : u'Sloty v %s' % event.name,
                             u'user'           : request.user,
                             u'slots'          : slots,
                             u'eventid'        : eventid})
示例#6
0
def game_modify(request, gameid=None, qmod=False):
  question_form = None 
  inst = None
  if gameid != "new":
    inst = Game.objects.get(id=gameid)

    questions = Question.objects.all()
    question_form = QuestionForm()
    fields = {}
    our_questions = inst.questionforgame_set

    for question in questions:
      fields["%s" % question.id] = BooleanField(label=question.uniq_name, required=False, widget=CheckboxInput)
      fields["%s_required" % question.id] = BooleanField(label="  %s povinne" % question.uniq_name, required=False, widget=CheckboxInput)

      if question in [ que.question for que in our_questions.all() ]:
        fields["%s" % question.id].initial = True
        if our_questions.get(question=question).required:
          fields["%s_required" % question.id].initial = True
    question_form.setFields(fields)


  if request.method == 'POST':

    if qmod:
      form = QuestionForm()
      fields={}
      for question in Question.objects.all():
        fields["%s" % question.id] = BooleanField(label=question.uniq_name, required=False, widget=CheckboxInput)
        fields["%s_required" % question.id] = BooleanField(label="  %s povinne" % question.uniq_name, required=False, widget=CheckboxInput)
      form.setFields(fields)
      form.setData(request.POST)
      form.validate(request.POST)
      if form.is_valid():
        form.save(gameid)
        return HttpResponseRedirect('/admin/games/')
    else:
      form = GameForm(request.POST, instance=inst)
      print "We should end here"
      if form.is_valid():
        form.save()
        return HttpResponseRedirect('/admin/games/')
  else:
    form = GameForm(instance=inst)
  return render_to_response('admin/gameform.html', 
                            {'form': form, 'gameid': gameid,
                             'menuitems'  : createMenuItems(),
                             'user'       : request.user,
                             'title'      : "Editace hry",
                             'questions'  : question_form})
示例#7
0
def events(request):
  return render_to_response(u"admin/events.html",
                            { u'menuitems' : createMenuItems(u'events'),
                              u'events_s'  : Event.objects.filter(type=u"single").filter(Q(state="OPEN")   |

                                                                                         Q(state="CLOSED") |
                                                                                         Q(state="CREATED")),
                              u'events_m'  : Event.objects.filter(type=u"multi").filter(Q(state="OPEN")   |

                                                                                         Q(state="CLOSED") |
                                                                                         Q(state="CREATED")),
                              u'user'      : request.user,
                              u'title'     : u"Eventy"  }
                            )
示例#8
0
def question_edit(request, queid):
  if request.method == 'POST':
    form = CreateQuestionForm(request.POST)
    if form.is_valid():
      form.save()
      return HttpResponseRedirect('/admin/questions')
  else:
    form = CreateQuestionForm()
    if queid != "new":
      form.loadValues(queid)
    return render_to_response("admin/questionform.html",
                            { 'menuitems' : createMenuItems('questions'),
                              'user'      : request.user,
                              'title'     : u'Změnit otázku',
                              'form'      : form})
示例#9
0
def slotregistration_action(request, eventid=None):
  ids = []
  for key in request.POST.keys():
    if key[:2] == u"sr":
      try:
        ids.append(int(key[2:]))
      except ValueError:
        pass

  filterer = Q(id=None)
  for id in ids:
    filterer = filterer | Q(id=id)

  affected_sgrs = SlotGameRegistration.objects.filter(filterer)
  if len(affected_sgrs) == 0:
    return HttpResponseRedirect(u'/admin/events/multi/%s/people_at_slots/' % eventid)

  if u'unregister_with_mail' in request.POST.keys():
    form = ThrowOutForm()
    form.load(affected_sgrs)
    return render_to_response(u"admin/throwout.html",
                              {u'form': form,
                               u"menuitems"      : createMenuItems(),
                               u'title'          : u"Odhlášení účastníků",
                               u'eventid'        : eventid,
                              })
  elif u'unregister_and_send_mails' in request.POST.keys():
    lists = {}
    for reg in affected_sgrs:
      email = reg.player.user.email
      if not lists.has_key(email):
        lists[email] = []
      lists[email].append(u"Akce %s, slot %s, hra %s" % (reg.slot.slot.event.name,
                                                       reg.slot.slot.name,
                                                       reg.slot.game.name))

    for mail in lists.keys():
      message = render_to_string(u'admin/throwout.txt',
                                 {u'message' : request.POST[u'mail'],
                                  u'games' : lists[mail]})
      subject = u"%s - odhlášení z her" % settings.SITE_NAME
      subject = ''.join(subject.splitlines())
      send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [email])

    affected_sgrs.delete()
  elif u'unregister' in request.POST.keys():
    affected_sgrs.delete()
  return HttpResponseRedirect(u'/admin/events/multi/%s/people_at_slots/' % eventid)
示例#10
0
def show_applied_people(request, eventid, slotted=False, cvsexport=False, sorted=None):
  event = Event.objects.get(id=eventid)
  records = []
  table = event.getPeopleTable(qfe=True, qfg=True, slotted=slotted)
  if sorted:
    table.sort(sorted)

  if cvsexport:
    return HttpResponse(table.asCSV(), mimetype="text/plain")

  return render_to_response('admin/eventpeople.html',
                              {'menuitems'    : createMenuItems(),
                               'title'        : u"Lidé přihlášení na %s" % event.name,
                               'user'         : request.user,
                               'table'        : table,
                               'event'        : event},
                              )
示例#11
0
def slot_details(request, eventid, slotid):
  game = GameInSlot.objects.get(id=slotid)
  regs = SlotGameRegistration.objects.filter(slot=game).order_by("player")
  headlines = [ "Jméno", "Telefon" ] + [ que.question.uniq_name for que in game.game.questionforgame_set.all() ]
  people = [ reg.player for reg in regs ]
  people.sort(lambda x,y: cmp(x.surname, y.surname))
  rows = []
  for person in people:
    cols = [ " ".join((person.name, person.surname, "".join((u"(" , person.nick , u")")))), person.phone ]
    registration = SlotGameRegistration.objects.get(slot=game, player=person)
    for question in game.game.questionforgame_set.all():
      answers = registration.answers.filter(question=question.question)
      cols += [ u",".join( [ ans.answer for ans in answers ]) ]
    rows.append(cols)

  return render_to_response(u"admin/slot_details.html",
                            {u"menuitems"      : createMenuItems(),
                             u'title'          : u"Detaily slotu",
                             u'user'           : request.user,
                             u'game'           : game,
                             u'rows'           : rows,
                             u'headlines'      : headlines})
示例#12
0
def modify(request, eventid=None, type=u"single", regcreate=None):

  if type == u"single":
    Form  = SingleEventForm
  else:
    Form  = MultiEventForm

  if request.method == u'POST':
    if regcreate is not None:
      form = RegistrationForm()
      fields={}
      for question in Question.objects.all():
        fields[u"%s" % question.id] = BooleanField(label=question.uniq_name, widget=CheckboxInput)
        fields[u"%s_required" % question.id] = BooleanField(label=u"  %s povinné" % question.uniq_name, required=False, widget=CheckboxInput)
      form.setFields(fields)
      form.setData(request.POST)
      form.validate(request.POST)
    else:
      form = Form(request.POST)

    form.save(eventid)
    if eventid == "new":
      return HttpResponseRedirect(u'/admin/events/')
    else:
      return HttpResponseRedirect(u'/admin/events/%s/%s/' % (type, eventid))
  else:

    form = Form()
    event = None
    slots = None
    reg   = None
    if eventid != u"new":
      event = Event.objects.get(id=eventid)
      form.loadValues(event)
      slots = MultiGameSlot.objects.filter(event=event)
      questions = Question.objects.all()
      reg = RegistrationForm()
      fields = {}
      our_questions = event.question

      for question in questions:
        fields[u"%s" % question.id] = BooleanField(label=question.uniq_name, required=False, widget=CheckboxInput)
        fields[u"%s_required" % question.id] = BooleanField(label=u"  %s povinne" % question.uniq_name, required=False, widget=CheckboxInput)

        if question in [ que.question for que in our_questions.all() ]:
          fields[u"%s" % question.id].initial = True
          if our_questions.get(question=question).required:
            fields[u"%s_required" % question.id].initial = True

      reg.setFields(fields)

  return render_to_response(u'admin/eventform.html',
                            {u'form'         : form,
                             u'eventid'      : eventid,
                             u'menuitems'    : createMenuItems(),
                             u'user'         : request.user,
                             u'title'        : u"Vlastnosti hry",
                             u'event'        : event,
                             u'slots'        : slots,
                             u'reg'          : reg
                             }
                            )
示例#13
0
def overview(request):
  return render_to_response(u"admin/overview.html",
                            { u'menuitems' : createMenuItems(u"overview"),
                              u'user'      : request.user,
                              u'title'     : u'Přehled'})