diff --git a/.gitignore b/.gitignore
index b0af3886860594515460f1df3d25c624bed52200..cb6d38b4f9984f617b359064ea46e0ba964cd909 100644
--- a/.gitignore
+++ b/.gitignore
@@ -104,4 +104,7 @@ GitHub.sublime-settings
 !.vscode/launch.json
 !.vscode/extensions.json
 .history
+
+# Custom #
 db.sqlite3
+media/*
diff --git a/sifrovacka/migrations/0012_auto_20210904_1228.py b/sifrovacka/migrations/0012_auto_20210904_1228.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c811965ad15ec6bc596218f3e30a2c074564a6d
--- /dev/null
+++ b/sifrovacka/migrations/0012_auto_20210904_1228.py
@@ -0,0 +1,28 @@
+# Generated by Django 3.2.3 on 2021-09-04 12:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0011_alter_sifrovacka_pub_date'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='stages',
+            name='stage_img',
+            field=models.ImageField(blank=True, upload_to='UserDirectoryPath'),
+        ),
+        migrations.AddField(
+            model_name='stages',
+            name='stage_passphrase',
+            field=models.CharField(default='hesl0Sifrovacka', max_length=30),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_name',
+            field=models.CharField(max_length=80),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0013_stages_stage_urlhash.py b/sifrovacka/migrations/0013_stages_stage_urlhash.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e52464d3fb7037f1f54b3e5605bddb3997ffe92
--- /dev/null
+++ b/sifrovacka/migrations/0013_stages_stage_urlhash.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-09-04 12:41
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0012_auto_20210904_1228'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='5f2500a80d7d11ec9b142016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0014_auto_20210904_1318.py b/sifrovacka/migrations/0014_auto_20210904_1318.py
new file mode 100644
index 0000000000000000000000000000000000000000..1db0ed6ab50e6a08ea2ec0d279317d205b5fce0a
--- /dev/null
+++ b/sifrovacka/migrations/0014_auto_20210904_1318.py
@@ -0,0 +1,34 @@
+# Generated by Django 3.2.3 on 2021-09-04 13:18
+
+from django.db import migrations, models
+import sifrovacka.models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0013_stages_stage_urlhash'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='participants',
+            old_name='Inactive',
+            new_name='inactive',
+        ),
+        migrations.AddField(
+            model_name='participants',
+            name='at_stage',
+            field=models.IntegerField(default=1),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_img',
+            field=models.ImageField(blank=True, upload_to=sifrovacka.models.UserDirectoryPath),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='a3c350e80d8211ec9b5f2016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0015_auto_20210904_1328.py b/sifrovacka/migrations/0015_auto_20210904_1328.py
new file mode 100644
index 0000000000000000000000000000000000000000..d5fcbcba0326390ae81ba5f69dee16153db9e969
--- /dev/null
+++ b/sifrovacka/migrations/0015_auto_20210904_1328.py
@@ -0,0 +1,23 @@
+# Generated by Django 3.2.3 on 2021-09-04 13:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0014_auto_20210904_1318'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='stages',
+            name='stage_description',
+            field=models.CharField(default='', max_length=500),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='fcb0adee0d8311ecb18b2016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0016_auto_20210904_1328.py b/sifrovacka/migrations/0016_auto_20210904_1328.py
new file mode 100644
index 0000000000000000000000000000000000000000..cd9b6f548ccf62111e893e6ff3067524447fff41
--- /dev/null
+++ b/sifrovacka/migrations/0016_auto_20210904_1328.py
@@ -0,0 +1,23 @@
+# Generated by Django 3.2.3 on 2021-09-04 13:28
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0015_auto_20210904_1328'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_description',
+            field=models.CharField(max_length=500),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='0582c6140d8411ec9c962016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py
new file mode 100644
index 0000000000000000000000000000000000000000..ee146bc37273d52285a4ca6e6b90e4941f9a9049
--- /dev/null
+++ b/sifrovacka/migrations/0017_alter_stages_stage_urlhash.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-09-04 13:29
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0016_auto_20210904_1328'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='2aa2950a0d8411ecb3ad2016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py b/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py
new file mode 100644
index 0000000000000000000000000000000000000000..65e7543b338e63121c7f6b030873f6ef41ab5ec9
--- /dev/null
+++ b/sifrovacka/migrations/0018_alter_stages_stage_urlhash.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.3 on 2021-09-04 18:16
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0017_alter_stages_stage_urlhash'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='2d64fb520dac11ecb4c92016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/migrations/0019_auto_20210904_1913.py b/sifrovacka/migrations/0019_auto_20210904_1913.py
new file mode 100644
index 0000000000000000000000000000000000000000..39d67bfd6636730bea8129353927a3f09a283c3a
--- /dev/null
+++ b/sifrovacka/migrations/0019_auto_20210904_1913.py
@@ -0,0 +1,23 @@
+# Generated by Django 3.2.3 on 2021-09-04 19:13
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('sifrovacka', '0018_alter_stages_stage_urlhash'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='participants',
+            name='at_stage',
+            field=models.CharField(default='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', max_length=32),
+        ),
+        migrations.AlterField(
+            model_name='stages',
+            name='stage_urlhash',
+            field=models.CharField(default='3b1487ba0db411ecae702016b9b07b5b', max_length=32),
+        ),
+    ]
diff --git a/sifrovacka/models.py b/sifrovacka/models.py
index 6cf73731103779e0a53df9054db62b9f8e01c4eb..f7f5682004f698905f0aff68f5add4a2b8aa2d97 100644
--- a/sifrovacka/models.py
+++ b/sifrovacka/models.py
@@ -3,7 +3,14 @@ from django.db import models
 # Create your models here.
 
 from django.conf import settings
+from uuid import uuid1
+from django.utils import encoding
 
+def UserDirectoryPath(instance, filename):
+    # file will be uploaded to MEDIA_ROOT/sifrovacka_<id>/<filename>
+    return 'sifrovacka_{0}/stage{1}/{2}'.format(instance.sifrovacka_id,
+            instance.stage_number,
+            encoding.smart_str(filename, encoding='utf-8', strings_only = True))
 
 class Sifrovacka(models.Model):
     '''
@@ -19,15 +26,19 @@ class Sifrovacka(models.Model):
         return self.sifrovacka_name
 
 
-
-
 class Stages(models.Model):
     '''
     model which describes how many stages are in particular sifrovacka
     '''
-    stage_name = models.CharField(max_length=200)
     sifrovacka = models.ForeignKey(Sifrovacka, on_delete=models.CASCADE)
     stage_number = models.IntegerField()
+    stage_name = models.CharField(max_length=80)
+    stage_description = models.CharField(max_length=500)
+    stage_passphrase = models.CharField(max_length=30,
+                       default='hesl0Sifrovacka')
+    stage_img = models.ImageField(blank=True, upload_to=UserDirectoryPath)
+    stage_urlhash = models.CharField(max_length=32, default=uuid1().hex)
+
 #    if not stage_name_text models:
 #        stage_name = getattr(Stages, sifrovacka_name)
 #            "-" + getattr(Stages, stage_number))
@@ -44,14 +55,15 @@ class Stages(models.Model):
     class Meta:
         unique_together = [['stage_number', 'sifrovacka']]
 
-
 class Participants(models.Model):
     '''
     table which connects sifrovacka with users who participate
     '''
     user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE)
     sifrovacka = models.ForeignKey(Sifrovacka, on_delete = models.CASCADE)
-    Inactive = models.BooleanField(default = False)
+    #at_stage = models.IntegerField(default=1)
+    at_stage = models.CharField(max_length=32,default='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
+    inactive = models.BooleanField(default = False)
 
     def __str__(self):
         return str(self.user) + " - " + str(self.sifrovacka)
diff --git a/sifrovacka/templates/sifrovacka.html b/sifrovacka/templates/sifrovacka.html
index bb322a6288a6c565770dbf452259e7a227249ce0..6796278267f403db8c10bf7f518f7f148c6b141b 100644
--- a/sifrovacka/templates/sifrovacka.html
+++ b/sifrovacka/templates/sifrovacka.html
@@ -11,6 +11,18 @@
 {% if request.user.is_authenticated %}
 <form action="{% url 'home' %}" method="post">
 {% csrf_token %}
+<button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button>
+</form>
+{% endif %}
+</br>
+</br>
+</br>
+Debug:
+<div>
+{% for stage in sifrovacka_stages %}
+ {{ stage }}</br>
+{% endfor %}
+</div>
 {% comment %}
 <form action="{% url 'sifrovacka:home' sifrovacka.id %}" method="post">
 {% csrf_token %}
@@ -26,16 +38,4 @@
 </fieldset>
 <input type="submit" name="signupsif" value={{ sifrovacka_id }}>
 {% endcomment %}
-<button type="submit" value={{ sifrovacka_id }} name='signupsif'>Prihlasit se k sifrovacce</button>
-</form>
-{% endif %}
-</br>
-</br>
-</br>
-Debug:
-<div>
-{% for stage in sifrovacka_stages %}
- {{ stage }}</br>
-{% endfor %}
-</div>
 {% endblock %}
diff --git a/sifrovacka/templates/stage.html b/sifrovacka/templates/stage.html
new file mode 100644
index 0000000000000000000000000000000000000000..4c153e6c4094f3347ee3986d37bab2bc144f43f5
--- /dev/null
+++ b/sifrovacka/templates/stage.html
@@ -0,0 +1,16 @@
+{% extends "sifrovacka.html" %}
+{% block content %}
+ {% if sifrovacka_current %}
+  {% if request.user.is_authenticated %}
+   {{ sifrovacka_current }} - {{ sifrovacka_current.at_stage }}
+  {% endif %}
+ {% else %}
+  <div class="alert alert--red-600">
+   <span> Stranka neni dostupna </span>
+  </div>
+ {% endif %}
+ </br>
+ </br>
+ </br>
+ Debug:
+{% endblock %}
diff --git a/sifrovacka/views.py b/sifrovacka/views.py
index 5eb47d6f78c3e8e7483f338daa68f5d943ac83ac..299ece6d650557ebf4128748af023217ff0c2cb5 100644
--- a/sifrovacka/views.py
+++ b/sifrovacka/views.py
@@ -9,7 +9,49 @@ from django.contrib.auth import login,logout
 from .models import Sifrovacka, Stages, Participants
 
 
+def stage(request, sifrovacka_id, stage_urlhash):
+#    print(dir(request.user.participants_set.values))
+#    print(stage_urlhash)
+#    print(request.user.participants_set.values())
+#    sifrovacka_current_stage = request.user.participants_set.values_list('id')
+    sifrovacka_current = None
+    sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id)
+    sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail)
+    sifrovacka_stage_count = sifrovacka_stages.count()
+    if request.user.is_authenticated:
+#        sifrovacka_current = Participants.objects.filter(user = \
+#                              request.user).filter(sifrovacka_id =
+#                              sifrovacka_id)
+        sifrovacka_all_user_current_stages= Participants.objects.filter(user = \
+                                             request.user).filter(sifrovacka_id = \
+                                             sifrovacka_id).values('sifrovacka_id','id')
+        for s in sifrovacka_all_user_current_stages:
+            if s['sifrovacka_id'] == sifrovacka_id:
+                print("---AA---")
+    #            print(s['at_stage'])
+                tmp_stage_id = s['id']
+                sifrovacka_current_stage_urlhash = Participants.objects.get(id = \
+                                                    tmp_stage_id)
+                if (sifrovacka_current_stage_urlhash.at_stage == stage_urlhash):
+                    print('hehe')
+                    sifrovacka_current = Participants.objects.get(id = \
+                                          tmp_stage_id)
+                else:
+                    print('not same')
+#    else:
+#        sifrovacka_current = None
+
+    print(sifrovacka_current)
+    context = {"sifrovacka_id": sifrovacka_id,
+               "sifrovacka_detail": sifrovacka_detail,
+               "sifrovacka_stages": sifrovacka_stages,
+               "sifrovacka_stage_count": sifrovacka_stage_count,
+               "sifrovacka_current": sifrovacka_current
+              }
+    return render(request, 'stage.html', context)
+
 def detail(request, sifrovacka_id):
+    print(request)
     sifrovacka_detail = Sifrovacka.objects.get(id = sifrovacka_id)
     sifrovacka_stages = Stages.objects.filter(sifrovacka__sifrovacka_name = sifrovacka_detail)
     sifrovacka_stage_count = sifrovacka_stages.count()
@@ -25,8 +67,6 @@ def home(request):
     if request.user.is_authenticated:
         participation_sifrovacky_list = Participants.objects.filter(user =
                                         request.user).order_by('sifrovacka_id')
-       # available_sifrovacky_list = all_sifrovacky_list.difference(
-                                    #participation_sifrovacky_list)
         if request.method == 'POST':
               if request.POST["signupsif"]:
                   post_signupsif = request.POST["signupsif"]
@@ -35,11 +75,12 @@ def home(request):
                       p = Participants.objects.create(user=request.user,
                               sifrovacka_id=post_signupsif)
                   except IntegrityError as e:
-
+                      print(e)
                       context = {"active_sifrovacky_list": all_sifrovacky_list,
                                   "participation_sifrovacky_list": participation_sifrovacky_list,
                                   "error_alreadysigned": e
                                 }
+                      return render(request, 'home.html', context)
                   else:
                       p.save()
     else: