From 3e8309d106c16a419ee946f8f417d508c8a0b17e Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sat, 14 Dec 2013 21:59:54 +0700 Subject: [PATCH 01/24] Change setting for develop --- gdgvietnam/gdgvietnam_db | Bin 0 -> 120832 bytes gdgvietnam/settings.py | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 gdgvietnam/gdgvietnam_db diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db new file mode 100644 index 0000000000000000000000000000000000000000..02cc5adbb74f598cc472df65815447f96dd8e8cf GIT binary patch literal 120832 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 Date: Sat, 14 Dec 2013 22:13:06 +0700 Subject: [PATCH 02/24] Add readme for develop --- gdgvietnam/README.rm | 18 ++++++++++++++++++ gdgvietnam/requirements.txt | 2 ++ gdgvietnam/requirements/project.txt | 1 - 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gdgvietnam/README.rm create mode 100644 gdgvietnam/requirements.txt delete mode 100644 gdgvietnam/requirements/project.txt diff --git a/gdgvietnam/README.rm b/gdgvietnam/README.rm new file mode 100644 index 0000000..eb68488 --- /dev/null +++ b/gdgvietnam/README.rm @@ -0,0 +1,18 @@ +## How to develop + +Install pip, virtualenv, virtualenvwrapper + +[Read tutorial](http://www.jontourage.com/2011/02/09/virtualenv-pip-basics/) + +In virtualenv run + +```sh +pip install -r /home/Workspace/gdgvietnam/gdgvietnam/requirements.txt +``` + +Clone source code + +```sh + git clone -b develop https://github.com/gdgvietnam/gdgvietnam.git + /home/username/.virtualenvs/gdgvietnam/bin/python /home/Workspace/gdgvietnam/gdgvietnam/manage.py runserver 8000 +``` \ No newline at end of file diff --git a/gdgvietnam/requirements.txt b/gdgvietnam/requirements.txt new file mode 100644 index 0000000..c132d28 --- /dev/null +++ b/gdgvietnam/requirements.txt @@ -0,0 +1,2 @@ +mezzanine +mezzanine-events diff --git a/gdgvietnam/requirements/project.txt b/gdgvietnam/requirements/project.txt deleted file mode 100644 index 11f4f83..0000000 --- a/gdgvietnam/requirements/project.txt +++ /dev/null @@ -1 +0,0 @@ -Mezzanine==1.4.14 From 2e2e5161b8d4dd7c962ee056b574ac5fcba5f055 Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sat, 14 Dec 2013 22:14:58 +0700 Subject: [PATCH 03/24] Add readme for develop --- gdgvietnam/{README.rm => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename gdgvietnam/{README.rm => README.md} (100%) diff --git a/gdgvietnam/README.rm b/gdgvietnam/README.md similarity index 100% rename from gdgvietnam/README.rm rename to gdgvietnam/README.md From fccd6a6bd07c4099cc4972aa29475cdfc9d975d4 Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sat, 14 Dec 2013 22:18:13 +0700 Subject: [PATCH 04/24] Add readme for develop --- gdgvietnam/README.md | 7 ++++++- gdgvietnam/gdgvietnam_db | Bin 120832 -> 120832 bytes 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gdgvietnam/README.md b/gdgvietnam/README.md index eb68488..c7f1780 100644 --- a/gdgvietnam/README.md +++ b/gdgvietnam/README.md @@ -15,4 +15,9 @@ Clone source code ```sh git clone -b develop https://github.com/gdgvietnam/gdgvietnam.git /home/username/.virtualenvs/gdgvietnam/bin/python /home/Workspace/gdgvietnam/gdgvietnam/manage.py runserver 8000 -``` \ No newline at end of file +``` + +Account demo + +- Username: nampnq +- Pass: 1 \ No newline at end of file diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db index 02cc5adbb74f598cc472df65815447f96dd8e8cf..c403052d308bac12ae99b33e14e6776425a5b7c0 100644 GIT binary patch delta 224 zcmZqJz}~QdeS$P&`$QRM#`cW~`R074R)*$QMizReCg#S*mYeUItIKdPF|jZ(0|~}W zn-y7>F;3nT7No|)>f6lfSYeS^RApdZk(OIlnwnXXmS$jJkY12hnvqb Date: Sat, 14 Dec 2013 23:23:52 +0700 Subject: [PATCH 05/24] update readme for develop add demo database --- gdgvietnam/README.md | 1 + gdgvietnam/gdgvietnam_db | Bin 120832 -> 124928 bytes gdgvietnam/settings.py | 1 + .../1473027_610615545666153_1646769349_n.jpg | Bin 0 -> 29909 bytes .../1457600_637186462999630_1624120922_n.jpg | Bin 0 -> 52043 bytes gdgvietnam/static/media/3/android.jpg | Bin 0 -> 68142 bytes 6 files changed, 2 insertions(+) create mode 100644 gdgvietnam/static/media/2/1473027_610615545666153_1646769349_n.jpg create mode 100644 gdgvietnam/static/media/3/1457600_637186462999630_1624120922_n.jpg create mode 100644 gdgvietnam/static/media/3/android.jpg diff --git a/gdgvietnam/README.md b/gdgvietnam/README.md index c7f1780..51ee5e9 100644 --- a/gdgvietnam/README.md +++ b/gdgvietnam/README.md @@ -8,6 +8,7 @@ In virtualenv run ```sh pip install -r /home/Workspace/gdgvietnam/gdgvietnam/requirements.txt +pip install -e pip install -e /home/Workspace/gdgvietnam/mezzanine-events/ ``` Clone source code diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db index c403052d308bac12ae99b33e14e6776425a5b7c0..ff62f6e69d92ef8334e3e992521e54719e993113 100644 GIT binary patch delta 4454 zcmbtXeQ;D)6~E`+x7n~wN&*Q>fM#zJV?pwg_p#s7hOng20Yb5{l>k{cyU*Q~&D%A* zp@wm~grasFokF)x?ASlBI<#Yp(nLswX)8@yivtcgqcVyegLS4;Ep(LrVLMYj@4Zd3 z2@%F|2TtzZ^ZmQ$-gEZA3HyPI_QNZyj}k)m%uzOX4u1z%Vi@@(b>6A({ugW z{{0a>scT`)_?k7TQg0(`#Wkh?52f{71O)~b6pc=E$DUo^$CwKS3-*m`1sH_GW6H*M zXkQ_SPFPUY)g*{(7G}*@tsnbY=L3p^v10^rc#|DNB)-Rb>Y0r|b2D^n(FA`m7a7P6 zW^%X|v(|bAMSepAY}&YqZ;o(1os7rgVj?2qY84=_smbI$l+<#1q~BofvzDV@6NIWV z_A+5N*t_fsyT~Tl%jon+Y_p@Ri~xQps|Sb8S_9x(u-1g)noY~pQU@){P+UV%25RZ( zAz__^K`&ujsSLenybJP|$?yYg8L5QM?UhdG=m3=%&MF^vf|bR@QQkFm=IJCCd1=@ZZ;mLxT7!>mGs7;BX05=ow#%AY=-;kki{ z7xe^>CHdqL+)OH+&`#iFJdu{6b4WJokL z4H)L3Ap3)|)avzlJ+dc%Q>s#+)#LHWzQBAGyg}6iWEO=vdHfG)kYO2?kq4o!uCfmD z(*2K72rE|``=-&dwI+6M5;W>L-Rn@C_*3cr$Q72TEILgo73RQLcWb|~a>W1O6a)%l3unl&U z*g-RRO^n*{xh0<$T#5xE27Jpp$uC^*Gl?YiaKEMxW;xb1pOa6_J`+f3LPj7~eFr?= zfO@+?^0&EoAeLFM)y;v;@M0E|TT&G~pL)4iife6_ckPh$ZV}mht=N8&@zErB(7NvJ`;Y*;?t)cbM6z0D?!=U8u0tQsvm02 zoM=~?e<`V@Vp$%wYO!_n@4~A48las(J9I+|4#89K9Gr%8@JD!`GP;U-=w{kWbMzbZ z`}72Tjb5UEp&v2_b1^^bW*PP^_8fMj-?6{pZToOMTMlRGW(VFj4t)grAP>*LaX1UV zg?Hf-T0_^;P8y~s`+PO-vJnxQ=f~$NjjFL{My50vS7`{VcG}3@;F|S}j$M(Mz36Yes}@dC)(huH z?91V$3b+ivf%EVlyaR6|(&aGnK^+LZzSqWZg4koy-3E2-GHH)VcaEb}%?6x)t`YVT z4kXvcsw@7?Ox=-xtb`>vs9Z5PSIuGN8oPqF-?I2_R%X}$n?b2yP{zzPHTS_NoT54! z##!fTsXDJW)$2|5dQ-jDRIfGFF}noDUsFyt5&ZWG4xp#$YI=-)hCPMF*)~4*IBa7h zUpWq`Q>#Fz`R^$p=Q?2@vk%#IOm4~wz7kAd7&pTqXmo3taOY)0F2g>&C>i=OJBU6e z$NzL3n&|j@7r+MK7=sEXEO)TUB2rdDcv&v8U$IHV<$23=GmdTsE{jZBZc@8ROYnk` z_g4aTEW?@sjEOzolAEmgU8XgcY0YI?bD7pG_-ah}Y8Ha;Qy^4T2yl+TIl77dfn_kn zpTqd|UqdyFbYFmxkvGo66INd3xR!(gw^e@OCB&?b=H{5ksu zj_QdP9G8o3fX%tPGl01~m4b1?#zPX@1xwdNi`kog@k6wDFT|pRp zs-*bBURlES=y7|zUi_;f3~roJ1FAb9D;KdkSzJGX3sgZN9R zFQv`@u{G}rybXIO^tsNC?oQs_v0-Z`Z@i6kBVX+(oV>U#-{Ro-X-p(zS~!|WreXt{ z-pKpX=@jqU-p#u{zjdo)&7t;Pc4r^}kJsHI(1krda_g|ltRxFBUEERdKYC~3`Y#t3 z+F!7LF^1i%ksEX-jAEqbFU4>!*^hjK&gW}->=xW?MvLs#2C@a|g=Io29gP&8cw=x-k~>` zovmOZ3$dMSFME^~*z@dF_IvmU-iFuN2lUf)DZVs^Aiq)oA1vImdo5mRQ=Dn%dzK3z uL;cO|clQzjnqf}2-DPc++UcngU=28dZ>?pkcFJO2YO;qo>B delta 770 zcmXw0T}YE*6h6;;-uaoon{Lih>1P`GN0gEUwn~lYA`_JGO4;04(#kp4kK~0{B^BYU z96?dDAG@f~ed1?b1X33XrCt=27F47`M2?CGGVS|<4$tA`{O~@{Ij4JC=^j#gb1bKc z=$P*RZC|*gOiz}6SZmT#R=#2sLgBy$)sm>N;&0Hymi_8&ZjwphIip&`bE?HW!`anY z5~WCYc|6T-f19tx74rJpf}O>&6j{!BG;l%LSs5N^RtI*vne#AmL8&QLx76%Fc&J(( z*%UI<`Q z$>x$WBM7#(91M9+gaR&~S6zN=lKOvf;L49Gbe+cNDb3PX`h#?=MFr~6iZ1lw4jy6(AMst7gk2O0r>GZx(Iak(M`Bj| z;v`W?yg}FL9T75^non=dC0kG% zQLJzbNAsc8+Au1(5%GwUjp59S%Bpe-z1g6j%nVCdHTf7emZQ?mB KK$41-W#um)lhqag diff --git a/gdgvietnam/settings.py b/gdgvietnam/settings.py index 8b6def1..8789388 100644 --- a/gdgvietnam/settings.py +++ b/gdgvietnam/settings.py @@ -241,6 +241,7 @@ "mezzanine.pages", "mezzanine.galleries", "mezzanine.twitter", + "mezzanine_events" #"mezzanine.accounts", #"mezzanine.mobile", ) diff --git a/gdgvietnam/static/media/2/1473027_610615545666153_1646769349_n.jpg b/gdgvietnam/static/media/2/1473027_610615545666153_1646769349_n.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c03aae3facc34422ddd419f21d046ad5100a902d GIT binary patch literal 29909 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 literal 0 HcmV?d00001 diff --git a/gdgvietnam/static/media/3/1457600_637186462999630_1624120922_n.jpg b/gdgvietnam/static/media/3/1457600_637186462999630_1624120922_n.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57c45eb65b358e3574ef334482dac61a0e93f95e GIT binary patch literal 52043 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 O2^C_qevkkA@P7aRpmgE@ literal 0 HcmV?d00001 diff --git a/gdgvietnam/static/media/3/android.jpg b/gdgvietnam/static/media/3/android.jpg new file mode 100644 index 0000000000000000000000000000000000000000..357fe1a699fabee2769aaff6831b8162c89fb500 GIT binary patch literal 68142 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 literal 0 HcmV?d00001 From 7a0727e11009f2aa3d553ddd90c9fd579b3a94dc Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sat, 14 Dec 2013 23:24:49 +0700 Subject: [PATCH 06/24] update readme for develop --- gdgvietnam/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdgvietnam/README.md b/gdgvietnam/README.md index 51ee5e9..0732caf 100644 --- a/gdgvietnam/README.md +++ b/gdgvietnam/README.md @@ -7,8 +7,8 @@ Install pip, virtualenv, virtualenvwrapper In virtualenv run ```sh -pip install -r /home/Workspace/gdgvietnam/gdgvietnam/requirements.txt -pip install -e pip install -e /home/Workspace/gdgvietnam/mezzanine-events/ + pip install -r /home/Workspace/gdgvietnam/gdgvietnam/requirements.txt + pip install -e pip install -e /home/Workspace/gdgvietnam/mezzanine-events/ ``` Clone source code From 170e5a30e7a84e5877dc2d3ef85600fc31aa0cff Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sun, 15 Dec 2013 00:15:27 +0700 Subject: [PATCH 07/24] =?UTF-8?q?task=20"S=E1=BB=ADa=20trang=20list=20even?= =?UTF-8?q?t=20l=E1=BA=A1i"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gdgvietnam/gdgvietnam_db | Bin 124928 -> 124928 bytes .../templates/pages/eventcontainer.html | 20 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db index ff62f6e69d92ef8334e3e992521e54719e993113..5372c79ed9718089c98651c3656d2dca70a0d64d 100644 GIT binary patch delta 289 zcmZp;z}|3yeS$RO!ih4@j0-m=G#}(KHn%c0(=#zKF|#z^{QjV*niMy~S_bBW%#)bC znPr&XGaX=xV!X)M!>G)#cH+W*)e>$_21iCl{&2=vBLhQYT|*;XLlXrc4&qpM|OWoBfQ z=iYu~H=~mbn-Bvt2b0jog})i)7?~Mhps|=)kU>>ZR+hJszmcDvoi~wpy2LHU$J;q> IGydQK0F)6}mjD0& delta 201 zcmZp;z}|3yeS$ROf{8NDj0-jxnGP^TF zDp|oi{rz%A*6Am=Gg?E`fmA@$qN>||WH+Oe3>zy0GY1nZQ0GrZ;U)%VK?YStSy|pj i{ziUwcHTtw>8iIFA9EV(C+4LT + + {% endif %} {% endfor %} From 4a9c4eece3bacbea40acb46f8ce3bf99707c3a6f Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sun, 15 Dec 2013 00:38:46 +0700 Subject: [PATCH 08/24] Fix check is_future_due, is_past_due --- gdgvietnam/gdgvietnam_db | Bin 124928 -> 126976 bytes mezzanine-events/mezzanine_events/models.py | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db index 5372c79ed9718089c98651c3656d2dca70a0d64d..fe6a77e75cbabf11633f0fc6da4f2eb0c67a6fe0 100644 GIT binary patch delta 379 zcmZp;z~1nHeS$RWVg?3=nu!YbjEgrWv>xI!w=y=jGBnb&G%++bFx>q45U(m9D^Lj| z^KT%@P{aItvmnoVW@d(Jo=tC9PRQ{xZ(?Bn#r%c&9rFw3N6dGauQ6X>KE-^5c^~r* z=1rRwStc+~f4`iOm7SNBnURr^XZpVFjBXHJAoUQP*mUuL)XRf)$@6UAx0|s_p2@&q zyVY&RV?4gRK&S99s4*}fWS+$A%`C(8p6LKn6yrt49!6z`wLl3lXk_8xVsK<+xI!vof@_GO*M$H8nRhx7_^s5U=W_H7rux z3~L#f4>C_;_GXr0de3x#DT?tTV-KS;!`jJ;EdATpzF-VzUd;05gcLXPJ_hDr%wL$_ zF~4Ab#C(VO8uJC_Q_M%0_ia{WS-?E~{c=Xu>4Izm)})Ie0DtK7bCH)EANlacXu JtJ{pncmSRnKCJ)% diff --git a/mezzanine-events/mezzanine_events/models.py b/mezzanine-events/mezzanine_events/models.py index e50d466..19f5134 100644 --- a/mezzanine-events/mezzanine_events/models.py +++ b/mezzanine-events/mezzanine_events/models.py @@ -9,7 +9,7 @@ from mezzanine.utils.sites import current_site_id from mezzanine.conf import settings import os -from datetime import date +from datetime import datetime def _get_current_domain(): return Site.objects.get(id=current_site_id()).domain def get_image_path(instance, filename): @@ -81,17 +81,17 @@ def save(self, *args, **kwargs): super(Event, self).save(*args, **kwargs) @property def is_past_due(self): - if date.today() > self.date: + if datetime.now() > self.end_datetime(): return True return False @property def is_future_due(self): - if date.today() < self.date: + if datetime.now() < self.start_datetime(): return True return False @property def is_ongoing(self): - if date.today() == self.date: + if self.start_datetime() <= datetime.today() <= self.end_datetime(): return True return False class Meta: From 499ceaaba0ce0643666d9b28e9566f64c875b5d7 Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Fri, 20 Dec 2013 12:25:09 +0700 Subject: [PATCH 09/24] Add ongoing, past event in event container --- mezzanine-events/mezzanine_events/models.py | 285 ++++++++++++-------- 1 file changed, 172 insertions(+), 113 deletions(-) diff --git a/mezzanine-events/mezzanine_events/models.py b/mezzanine-events/mezzanine_events/models.py index 19f5134..ac952fe 100644 --- a/mezzanine-events/mezzanine_events/models.py +++ b/mezzanine-events/mezzanine_events/models.py @@ -1,3 +1,7 @@ +from datetime import datetime as dt +import os +from datetime import datetime + from django.db import models from mezzanine.pages.models import Page from mezzanine.core.models import RichText @@ -5,124 +9,179 @@ from geopy.geocoders import GoogleV3 as GoogleMaps from geopy.geocoders.googlev3 import GQueryError from django.contrib.sites.models import Site -from datetime import timedelta, datetime as dt from mezzanine.utils.sites import current_site_id from mezzanine.conf import settings -import os -from datetime import datetime + + def _get_current_domain(): - return Site.objects.get(id=current_site_id()).domain + return Site.objects.get(id=current_site_id()).domain + + def get_image_path(instance, filename): - path= os.path.join('', str(instance.id), filename) + path = os.path.join('', str(instance.id), filename) print path return path + class Event(Page, RichText): - date = models.DateField() - start_time = models.TimeField() - end_time = models.TimeField() - speakers = models.TextField(blank=True, help_text="Leave blank if not relevant. Write one name per line.") - location = models.TextField() - mappable_location = models.CharField(max_length=128, blank=True, help_text="This address will be used to calculate latitude and longitude. Leave blank and set Latitude and Longitude to specify the location yourself, or leave all three blank to auto-fill from the Location field.") - lat = models.DecimalField(max_digits=10, decimal_places=7, blank=True, null=True, verbose_name="Latitude", help_text="Calculated automatically if mappable location is set.") - lon = models.DecimalField(max_digits=10, decimal_places=7, blank=True, null=True, verbose_name="Longitude", help_text="Calculated automatically if mappable location is set.") - rsvp = models.TextField(blank=True, help_text="RSVP information. Leave blank if not relevant. Emails will be converted into links.") - banner_photo = models.ImageField(upload_to=get_image_path, blank=True, null=True, help_text="960px : 300px") - small_banner_photo = models.ImageField(upload_to=get_image_path, blank=True, null=True, help_text="width : height = 4:3") - live_youtube_link = models.TextField(blank=True, help_text="Ongoing event will be post in homepage.") - - def speakers_list(self): - return [x for x in self.speakers.split("\n") if x.strip() != ""] - - def start_datetime(self): - return dt.combine(self.date, self.start_time) - - def end_datetime(self): - return dt.combine(self.date, self.end_time) - - def clean(self): - super(Event, self).clean() - - if self.lat and not self.lon: - raise ValidationError("Longitude required if specifying latitude.") - - if self.lon and not self.lat: - raise ValidationError("Latitude required if specifying longitude.") - - if not (self.lat and self.lon) and not self.mappable_location: - self.mappable_location = self.location.replace("\n",", ") - - if self.mappable_location: #location should always override lat/long if set - g = GoogleMaps(domain=settings.MZEVENTS_GOOGLE_MAPS_DOMAIN) - try: - location, (lat, lon) = g.geocode(self.mappable_location.encode('utf-8')) - except GQueryError as e: - raise ValidationError("The mappable location you specified could not be found on {service}: \"{error}\" Try changing the mappable location, removing any business names, or leaving mappable location blank and using coordinates from getlatlon.com.".format(service="Google Maps", error=e.message)) - except ValueError as e: - raise ValidationError("The mappable location you specified could not be found on {service}: \"{error}\" Try changing the mappable location, removing any business names, or leaving mappable location blank and using coordinates from getlatlon.com.".format(service="Google Maps", error=e.message)) - self.mappable_location = location - self.lat = lat - self.lon = lon - - def save(self, *args, **kwargs): - # determine whether the page needs to be hidden - # this has to be done here because we don't have access to the parent in clean() - hide_page = False - - if self.parent is not None: - hide_page = isinstance(self.parent.get_content_model(), EventContainer) and self.parent.get_content_model().hide_children - - if hide_page: - # older versions - self.in_navigation = False - # newer versions - self.in_menus = "" - - super(Event, self).save(*args, **kwargs) - @property - def is_past_due(self): - if datetime.now() > self.end_datetime(): - return True - return False - @property - def is_future_due(self): - if datetime.now() < self.start_datetime(): - return True - return False - @property - def is_ongoing(self): - if self.start_datetime() <= datetime.today() <= self.end_datetime(): - return True - return False - class Meta: - verbose_name = "Event" - -class EventContainer (Page): - hide_children = models.BooleanField(default=True, verbose_name="Hide events in this container from navigation") - class Meta: - verbose_name = "Event Container" - - def events(self): - """Convenience method for getting at all events in a container, in the right order, from a template.""" - return self.children.published().order_by('_order') - def future_events(self): - events = self.children.published().order_by('_order') - event_list=[] - for event in events: - if event.event.is_future_due: - event_list.append(event) - return event_list - @property - def has_past_due(self): - events = self.events() - for event in events: - if event.event.is_past_due: - return True - return False - @property - def has_future_due(self): - events = self.events() - for event in events: - if event.event.is_future_due: - return True - return False + date = models.DateField() + start_time = models.TimeField() + end_time = models.TimeField() + speakers = models.TextField( + blank=True, help_text="Leave blank if not relevant. Write one name per line.") + location = models.TextField() + mappable_location = models.CharField( + max_length=128, blank=True, + help_text="This address will be used to calculate latitude and longitude. Leave blank and set Latitude and Longitude to specify the location yourself, or leave all three blank to auto-fill from the Location field.") + lat = models.DecimalField( + max_digits=10, decimal_places=7, blank=True, null=True, + verbose_name="Latitude", help_text="Calculated automatically if mappable location is set.") + lon = models.DecimalField( + max_digits=10, decimal_places=7, blank=True, null=True, + verbose_name="Longitude", help_text="Calculated automatically if mappable location is set.") + rsvp = models.TextField( + blank=True, help_text="RSVP information. Leave blank if not relevant. Emails will be converted into links.") + banner_photo = models.ImageField( + upload_to=get_image_path, blank=True, null=True, help_text="960px : 300px") + small_banner_photo = models.ImageField( + upload_to=get_image_path, blank=True, null=True, help_text="width : height = 4:3") + live_youtube_link = models.TextField( + blank=True, help_text="Ongoing event will be post in homepage.") + + def speakers_list(self): + return [x for x in self.speakers.split("\n") if x.strip() != ""] + + def start_datetime(self): + return dt.combine(self.date, self.start_time) + + def end_datetime(self): + return dt.combine(self.date, self.end_time) + + def clean(self): + super(Event, self).clean() + + if self.lat and not self.lon: + raise ValidationError("Longitude required if specifying latitude.") + + if self.lon and not self.lat: + raise ValidationError("Latitude required if specifying longitude.") + + if not (self.lat and self.lon) and not self.mappable_location: + self.mappable_location = self.location.replace("\n", ", ") + + # location should always override lat/long if set + if self.mappable_location: + g = GoogleMaps(domain=settings.MZEVENTS_GOOGLE_MAPS_DOMAIN) + try: + location, (lat, lon) = g.geocode( + self.mappable_location.encode('utf-8')) + except GQueryError as e: + raise ValidationError( + "The mappable location you specified could not be found on {service}: \"{error}\" Try changing the mappable location, removing any business names, or leaving mappable location blank and using coordinates from getlatlon.com.".format( + service="Google Maps", error=e.message)) + except ValueError as e: + raise ValidationError( + "The mappable location you specified could not be found on {service}: \"{error}\" Try changing the mappable location, removing any business names, or leaving mappable location blank and using coordinates from getlatlon.com.".format( + service="Google Maps", error=e.message)) + self.mappable_location = location + self.lat = lat + self.lon = lon + + def save(self, *args, **kwargs): + # determine whether the page needs to be hidden + # this has to be done here because we don't have access to the parent + # in clean() + hide_page = False + + if self.parent is not None: + hide_page = isinstance(self.parent.get_content_model(), + EventContainer) and self.parent.get_content_model().hide_children + + if hide_page: + # older versions + self.in_navigation = False + # newer versions + self.in_menus = "" + + super(Event, self).save(*args, **kwargs) + + @property + def is_past_due(self): + if datetime.now() > self.end_datetime(): + return True + return False + + @property + def is_future_due(self): + if datetime.now() < self.start_datetime(): + return True + return False + + @property + def is_ongoing(self): + if self.start_datetime() <= datetime.today() <= self.end_datetime(): + return True + return False + + class Meta: + verbose_name = "Event" + + +class EventContainer(Page): + hide_children = models.BooleanField( + default=True, verbose_name="Hide events in this container from navigation") + + class Meta: + verbose_name = "Event Container" + + def events(self): + """Convenience method for getting at all events in a container, in the right order, from a template.""" + return self.children.published().order_by('_order') + + def ongoing_events(self): + events = self.children.published().order_by('_order') + event_list = [] + for event in events: + if event.event.is_ongoing: + event_list.append(event) + return event_list + + def future_events(self): + events = self.children.published().order_by('_order') + event_list = [] + for event in events: + if event.event.is_future_due: + event_list.append(event) + return event_list + + def past_events(self): + events = self.children.published().order_by('_order') + event_list = [] + for event in events: + if event.event.is_past_due: + event_list.append(event) + return event_list + + @property + def has_past_due(self): + events = self.events() + for event in events: + if event.event.is_past_due: + return True + return False + + @property + def has_future_due(self): + events = self.events() + for event in events: + if event.event.is_future_due: + return True + return False + + @property + def has_ongoing(self): + events = self.events() + for event in events: + if event.event.is_ongoing: + return True + return False From 75bff40afb623eceb4e7d646626e8fc746cd8f93 Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Fri, 20 Dec 2013 12:26:35 +0700 Subject: [PATCH 10/24] Change context processors --- gdgvietnam/context_processors.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gdgvietnam/context_processors.py b/gdgvietnam/context_processors.py index c037665..bfdc3e9 100644 --- a/gdgvietnam/context_processors.py +++ b/gdgvietnam/context_processors.py @@ -1,4 +1,9 @@ from mezzanine_events.models import EventContainer + + def all_events(request): - event_container = EventContainer.objects.all()[0] - return {'events': event_container.events} + event_container = EventContainer.objects.all()[0] + return { + 'events': {'ongoing_events': event_container.ongoing_events(), + 'future_events': event_container.future_events(), + 'lastest_events': event_container.past_events()[:3], }} From 45a2c2f5c44179bda11794106d55ff0e898da101 Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Fri, 20 Dec 2013 12:27:05 +0700 Subject: [PATCH 11/24] Add context process to setting --- gdgvietnam/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/gdgvietnam/settings.py b/gdgvietnam/settings.py index 8789388..486d089 100644 --- a/gdgvietnam/settings.py +++ b/gdgvietnam/settings.py @@ -259,6 +259,7 @@ "django.core.context_processors.request", "django.core.context_processors.tz", "mezzanine.conf.context_processors.settings", + "context_processors.all_events", ) # List of middleware classes to use. Order is important; in the request phase, From 8e702f5f36c14495de2fa387923bc46b0b00ac2f Mon Sep 17 00:00:00 2001 From: NamPNQ Date: Sat, 21 Dec 2013 01:33:19 +0700 Subject: [PATCH 12/24] Add feature ongoing, upcoming, lastest event, Fixed #1, Fixed #2 --- gdgvietnam/gdgvietnam_db | Bin 126976 -> 137216 bytes gdgvietnam/static/css/gdgvietnam.css | 2 +- gdgvietnam/static/css/jquery.countdown.css | 28 + gdgvietnam/static/js/jquery.countdown.js | 810 +++++++++++++++++++++ gdgvietnam/templates/index.html | 149 +++- 5 files changed, 948 insertions(+), 41 deletions(-) create mode 100644 gdgvietnam/static/css/jquery.countdown.css create mode 100644 gdgvietnam/static/js/jquery.countdown.js diff --git a/gdgvietnam/gdgvietnam_db b/gdgvietnam/gdgvietnam_db index fe6a77e75cbabf11633f0fc6da4f2eb0c67a6fe0..4db437b5e582316a42231ce488280812aad44c81 100644 GIT binary patch delta 7209 zcmcgxTW}NC8P;kI28XK&mq1e;oC_wESGy~%Zez?C1BQSN4UW?^ozm56tzApnRiu@T zOp-;A%R`$PTu(>CWHPbiNtj%i0A@n5Cd~v9`qGC!CvB(dLrX7Hrqez(%}oDuR$8qL z#3XI<;A3g`{Fn2e|MLC6PW-<0#Q9~Xw=DVC<#N3^iFQ&SU-(fn)XuYr3q?608VE81 zC-AI)?zf=_zO`xzY@_JUV0Ar5e>S&v#ZCG?*R!o{^rx<+?$2Fxzx#8#gMOb*(UbJ# z+}4&qxy=XZ0cs>NkqJlSV@g0b!iIlTD`>~Wd?A};6^VO#VtfVOq~;8rjmLyUC^2G; z7c%irasf?HQhX%UhBx`;QIX3gI8DuDB2pr&=Eja?(xFUDGe&ZwqOlBb$| z)IYC2x#Gu<&>MlpoICMKCKe_lzs+Ym$ecfyK}I&OCGh7N6&=wP5%q~9GV0_w7Cz}{NU6@h zrzN~7qY(M9H-Mhb1F44m+kt1bdv|$3GpMg&GN63Vz;fr$ z=Fu3IkpfRF&K<1${J~{3{SWMyFV3xKxk0y@o8j{_>*hZD>++%YrSx7GU8S$mv-I<{ zOz)+)fp6YRm)`879xwx4EZ4>Q8x9`~vH}}f@ol=7;#sc#nvFz-FurImBKQO0wuP_5 z(E#k=7@iLW!tAnzuZ5_ekFq?&2ZMo#e`)Qtzl*#4t3E26p|{XKEVXW;LZBF;OE=F_ zOAc*WLQ@pAnXLDbbrV@Pl63=F*OT>LvaTa*J6YF~bq!fplXX?;;$`ZwRUpSj-=P0M z|C|07{r6J)Cdx}h4&hB6BGN-ddWc955$Pc!Jw&93i1ZMV9wO31M0$uw4-x4hB0Z}v zUo2CDO#tvjw_w`3$?TKlN;35ZN+=qZHlKBP_R)pzzE?W>!8>W zNvUJ<(Sn{g@-g{nO4X7~@t(D}=K;4TM7b~%4h1+NY)jn`zLm#wYit(1PBnmqKN=92 zpg+I``34JbTr^~myxJyf(w>m<0fy!MY@l)8+iJgRmCZw3AexW*IVKnhvVo8-dTr^C zH>u4f{U$ZJW+g-mO)YiNZg&g(`vIiFL)6=_zS&tkzI4gJsU^M6ta`hoI^`YyaHAb9 z&Hg^uGW;KEp^!_M{nVw$AA5KO5wKX5zyfyG1=!`uiq_)sHo{}EBGSZTK}Z*mFC#n_ zt1*~IS6vTqNN3z*JGSDwQgHvxouY0~&r&YeC>(TXTXEfH`+Aa&>*1^l!ZU1;4+@dS z_3ZW{N!JWnGrR~p2@P`9!Ru)r=D7P!*BKU3U6RXduN zwR~<7j_Rg5$NmKhvQb`O0zp2&2MEXRI!B^ZO--gqZM2WLfCC$f`ol~h%n7U`ewaGt za~o_zXVkzg2f`3IjNc!E@@m^=LoI6B*4t!HIyDCD62$S!1p^@=V3V!gaeGS^Tkf^_ zG-Vse=#ePTGogS##5baEYa702isD=pH@CHA8)d${n{IcNmT$fP{*}em#nr8?E5()j zyE8rCP~|u8RQkW6%5UDO^nZ<&zcMeONR(w!?*K9}CiqZ80{(t@0Dw+qx`6nQk7Iq< zFT7W$yJOj&0|2|4FoXk+#Y7E|Rb?iPl7L}mbqr`e0KjqyP!FK8NrKSM63|n`*aIa& zqCw!$EHcSv8_@xnn|~usb{Sa!QVA6}s^ohLt6f)9s$2o?L|F#w*QZqGF(9j4QbF<@ zI;>7ih=fc6ff=RpHfW(cQ4|3|3DpF2h_0Q|08d>%FM0{D2Gr89IvVB!fC=gx%8B`_ z(-wTYHVI@2l&qY?MBO4%vhv7|4sh@1;m_qX@)y|HtQq-hGw>qzHSfZ}U)i|Lw(Yx} zUCl2ttYR3MT-4`_>r#$MSg2Og(>{!KbH2Eb3-3NU_}$T=@zFgKN4}ra4}?Rbg^}bF z{;*mw^ga97$Js8G52~Z%-(!7asyvPfcY(Y16L&oTw`zL1exRw6m_h^aM9)UiU;;cH9R^-A&~WtC@&1rfnNgtw z!tQI3F5opS5e3QQ32`hViZ~PXro{Z>l7_~|fS`g% z%8iQ&l)8RCk2Kumq;UuI4zes$_9wE=%qcat!rmGWF)jdN`oRR8SV49})8q_9`?@q`7eha=8}sP&ykoPux*UDA(RX zSrJt}h$91A3~Wx%CXpHofxao7I6w+cs5X0jO60mJ> z#l6(j{6}`n>4#>7VL2%9?9|PVc3JhvU2(Z9P>-&-&7U&vcGvWJQjdCNQjUttp&oVT zjI6FDdce%LX==NDwb$LgOivqZ-v`$NDGxRm^GK;oL%-Rp#k0B^Z)(zDiwH-D^UWBL zg4C*6hFoNw5jUU`Ntf$O_KY|fv*$Q(+R7T0Ld9lLJkBTH3!#j zbNNx8bC?n-|fpp+2}!C^R61LA!7VFJYw=cnTJUI5F#5 zNtKHl*-IuJ5d9ahPs0sCrt%_^P+lPyI{yy%Jx&88$|NOUz-;lT!*T*_a@_R8#X;pQ zUje1@AOfJVqGQLf#xq)N3}ISx2roRoe*XFlNC2OMAqQNzRZsC010OvGV-x4K*cWn# zKp`hcf{k9%qPIj#1MHa&U|}Z{INsMg=dr+^0HI=9^P=0%c|^4z67{}(40ZCMT>v&N zidLxfc~OcO*15|n zq87Lg0Sp?h&8jf+vg9`iFa-K4<=b4ees`d(oZ8W$=_7h7rH`ZfhYkb{UP3l@bR3PP zL@n9Tb0_)T;~22{@LER__9HXf^988F-j?mTGr;Kfi9Hw+HUo{j#2IECXkZRs4s2iw zs7{Ljjz#c>dG~E%zTNa|4WtwB64PPo$|5CuR2RD)`{1c(93jdd+1DK)Tx z6b`^^wYouajss!AoVfw-8VIrhX`qZZ&$z9zIRP0pVnc@MJk)jEGFkxCP|VuE-jUuw zg97OtVfc+F_zh_ZDEZL&0aU~man_45H4de?R-EfUMF0w&wMXt&X?9>#(ouGs;9Pz6 zB3Kg`!!2pGJOv;Fqb&pDfj6Xu+%0rtmF)V@4wjI;DP1&FIAkA8PIKspk&ml7*naqk zoE?MzLwX)C%Mm@5H&j#Ca`31(K9Z7;!G{4E_37CR-mMy9DhVGRJ@h2n19PsdA*vdT zsSNl9!mb_U*Vzm;}ctj57Fi7Tkw@$VH3pI+(0ssI2 delta 521 zcmZvYPiPZS5XRrUFX^Vi*ZcvsU|TBDi_n;t-OZY{MznZ~Rm6)Fih?<52#1YLbf0jQwyRePa;@BJqdyV>8U~RZGwk_bC|=-_nY}<)?XynzZx6I;vL4= znm>P@IxlbDakA2ym$oY%w|FLRTaIa#gD*~QW=d!o=P?GIs2gMwPf7Lm=vp}OoAzlc ziO-C~XXwF)uiFn1_$#g3leEfE<&su)ZJER;=3T`RCg{=?akSm(SL3Z(vnACd@Z4y3 z$u%9}{=Pxi-z6A`kQFI&}wP&`5VUS4=5d8URTu*XrGkn7~I@-?@s8dUn3*Rl#*~Xkemth}!_=O+%j$M4j z2fW7)wy=rl;ti<5Gm5J)q|0MQlorC5;Wf-ElR!wRk}xwfh1QhY~xcX^uSM%;zk0qg)} b|Dy_OnB{MKyA(@L5b6wdZKVcPACUhSu?vtR diff --git a/gdgvietnam/static/css/gdgvietnam.css b/gdgvietnam/static/css/gdgvietnam.css index 45edc58..7548c0d 100644 --- a/gdgvietnam/static/css/gdgvietnam.css +++ b/gdgvietnam/static/css/gdgvietnam.css @@ -58,7 +58,7 @@ html, body { width: 100%; height: 100%; background-position: center; - background-size: cover; + background-size: 100% 100%; } /* Social Icons Styles */ diff --git a/gdgvietnam/static/css/jquery.countdown.css b/gdgvietnam/static/css/jquery.countdown.css new file mode 100644 index 0000000..29c71ec --- /dev/null +++ b/gdgvietnam/static/css/jquery.countdown.css @@ -0,0 +1,28 @@ +/* jQuery Countdown styles 1.6.3. */ +.hasCountdown { +} +.countdown_rtl { + direction: rtl; +} +.countdown_holding span { + color: #888; +} +.countdown_row { + /*clear: both;*/ + padding: 0px 2px; + /*text-align: center;*/ +} +.countdown_section { + /*float: left;*/ + display: inline-block; + font-size: 12px; + padding: 5px; + text-align: center; +} +.countdown_amount { + font-size: 36px; +} +.countdown_descr { + display: block; + width: 100%; +} diff --git a/gdgvietnam/static/js/jquery.countdown.js b/gdgvietnam/static/js/jquery.countdown.js new file mode 100644 index 0000000..d487570 --- /dev/null +++ b/gdgvietnam/static/js/jquery.countdown.js @@ -0,0 +1,810 @@ +/* http://keith-wood.name/countdown.html + Countdown for jQuery v1.6.3. + Written by Keith Wood (kbwood{at}iinet.com.au) January 2008. + Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. + Please attribute the author if you use it. */ + +/* Display a countdown timer. + Attach it with options like: + $('div selector').countdown( + {until: new Date(2009, 1 - 1, 1, 0, 0, 0), onExpiry: happyNewYear}); */ + +(function($) { // Hide scope, no $ conflict + +/* Countdown manager. */ +function Countdown() { + this.regional = []; // Available regional settings, indexed by language code + this.regional[''] = { // Default regional settings + // The display texts for the counters + labels: ['Years', 'Months', 'Weeks', 'Days', 'Hours', 'Minutes', 'Seconds'], + // The display texts for the counters if only one + labels1: ['Year', 'Month', 'Week', 'Day', 'Hour', 'Minute', 'Second'], + compactLabels: ['y', 'm', 'w', 'd'], // The compact texts for the counters + whichLabels: null, // Function to determine which labels to use + digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], // The digits to display + timeSeparator: ':', // Separator for time periods + isRTL: false // True for right-to-left languages, false for left-to-right + }; + this._defaults = { + until: null, // new Date(year, mth - 1, day, hr, min, sec) - date/time to count down to + // or numeric for seconds offset, or string for unit offset(s): + // 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds + since: null, // new Date(year, mth - 1, day, hr, min, sec) - date/time to count up from + // or numeric for seconds offset, or string for unit offset(s): + // 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds + timezone: null, // The timezone (hours or minutes from GMT) for the target times, + // or null for client local + serverSync: null, // A function to retrieve the current server time for synchronisation + format: 'dHMS', // Format for display - upper case for always, lower case only if non-zero, + // 'Y' years, 'O' months, 'W' weeks, 'D' days, 'H' hours, 'M' minutes, 'S' seconds + layout: '', // Build your own layout for the countdown + compact: false, // True to display in a compact format, false for an expanded one + significant: 0, // The number of periods with values to show, zero for all + description: '', // The description displayed for the countdown + expiryUrl: '', // A URL to load upon expiry, replacing the current page + expiryText: '', // Text to display upon expiry, replacing the countdown + alwaysExpire: false, // True to trigger onExpiry even if never counted down + onExpiry: null, // Callback when the countdown expires - + // receives no parameters and 'this' is the containing division + onTick: null, // Callback when the countdown is updated - + // receives int[7] being the breakdown by period (based on format) + // and 'this' is the containing division + tickInterval: 1 // Interval (seconds) between onTick callbacks + }; + $.extend(this._defaults, this.regional['']); + this._serverSyncs = []; + var now = (typeof Date.now == 'function' ? Date.now : + function() { return new Date().getTime(); }); + var perfAvail = (window.performance && typeof window.performance.now == 'function'); + // Shared timer for all countdowns + function timerCallBack(timestamp) { + var drawStart = (timestamp < 1e12 ? // New HTML5 high resolution timer + (perfAvail ? (performance.now() + performance.timing.navigationStart) : now()) : + // Integer milliseconds since unix epoch + timestamp || now()); + if (drawStart - animationStartTime >= 1000) { + plugin._updateTargets(); + animationStartTime = drawStart; + } + requestAnimationFrame(timerCallBack); + } + var requestAnimationFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || window.msRequestAnimationFrame || null; + // This is when we expect a fall-back to setInterval as it's much more fluid + var animationStartTime = 0; + if (!requestAnimationFrame || $.noRequestAnimationFrame) { + $.noRequestAnimationFrame = null; + setInterval(function() { plugin._updateTargets(); }, 980); // Fall back to good old setInterval + } + else { + animationStartTime = window.animationStartTime || + window.webkitAnimationStartTime || window.mozAnimationStartTime || + window.oAnimationStartTime || window.msAnimationStartTime || now(); + requestAnimationFrame(timerCallBack); + } +} + +var Y = 0; // Years +var O = 1; // Months +var W = 2; // Weeks +var D = 3; // Days +var H = 4; // Hours +var M = 5; // Minutes +var S = 6; // Seconds + +$.extend(Countdown.prototype, { + /* Class name added to elements to indicate already configured with countdown. */ + markerClassName: 'hasCountdown', + /* Name of the data property for instance settings. */ + propertyName: 'countdown', + + /* Class name for the right-to-left marker. */ + _rtlClass: 'countdown_rtl', + /* Class name for the countdown section marker. */ + _sectionClass: 'countdown_section', + /* Class name for the period amount marker. */ + _amountClass: 'countdown_amount', + /* Class name for the countdown row marker. */ + _rowClass: 'countdown_row', + /* Class name for the holding countdown marker. */ + _holdingClass: 'countdown_holding', + /* Class name for the showing countdown marker. */ + _showClass: 'countdown_show', + /* Class name for the description marker. */ + _descrClass: 'countdown_descr', + + /* List of currently active countdown targets. */ + _timerTargets: [], + + /* Override the default settings for all instances of the countdown widget. + @param options (object) the new settings to use as defaults */ + setDefaults: function(options) { + this._resetExtraLabels(this._defaults, options); + $.extend(this._defaults, options || {}); + }, + + /* Convert a date/time to UTC. + @param tz (number) the hour or minute offset from GMT, e.g. +9, -360 + @param year (Date) the date/time in that timezone or + (number) the year in that timezone + @param month (number, optional) the month (0 - 11) (omit if year is a Date) + @param day (number, optional) the day (omit if year is a Date) + @param hours (number, optional) the hour (omit if year is a Date) + @param mins (number, optional) the minute (omit if year is a Date) + @param secs (number, optional) the second (omit if year is a Date) + @param ms (number, optional) the millisecond (omit if year is a Date) + @return (Date) the equivalent UTC date/time */ + UTCDate: function(tz, year, month, day, hours, mins, secs, ms) { + if (typeof year == 'object' && year.constructor == Date) { + ms = year.getMilliseconds(); + secs = year.getSeconds(); + mins = year.getMinutes(); + hours = year.getHours(); + day = year.getDate(); + month = year.getMonth(); + year = year.getFullYear(); + } + var d = new Date(); + d.setUTCFullYear(year); + d.setUTCDate(1); + d.setUTCMonth(month || 0); + d.setUTCDate(day || 1); + d.setUTCHours(hours || 0); + d.setUTCMinutes((mins || 0) - (Math.abs(tz) < 30 ? tz * 60 : tz)); + d.setUTCSeconds(secs || 0); + d.setUTCMilliseconds(ms || 0); + return d; + }, + + /* Convert a set of periods into seconds. + Averaged for months and years. + @param periods (number[7]) the periods per year/month/week/day/hour/minute/second + @return (number) the corresponding number of seconds */ + periodsToSeconds: function(periods) { + return periods[0] * 31557600 + periods[1] * 2629800 + periods[2] * 604800 + + periods[3] * 86400 + periods[4] * 3600 + periods[5] * 60 + periods[6]; + }, + + /* Attach the countdown widget to a div. + @param target (element) the containing division + @param options (object) the initial settings for the countdown */ + _attachPlugin: function(target, options) { + target = $(target); + if (target.hasClass(this.markerClassName)) { + return; + } + var inst = {options: $.extend({}, this._defaults), _periods: [0, 0, 0, 0, 0, 0, 0]}; + target.addClass(this.markerClassName).data(this.propertyName, inst); + this._optionPlugin(target, options); + }, + + /* Add a target to the list of active ones. + @param target (element) the countdown target */ + _addTarget: function(target) { + if (!this._hasTarget(target)) { + this._timerTargets.push(target); + } + }, + + /* See if a target is in the list of active ones. + @param target (element) the countdown target + @return (boolean) true if present, false if not */ + _hasTarget: function(target) { + return ($.inArray(target, this._timerTargets) > -1); + }, + + /* Remove a target from the list of active ones. + @param target (element) the countdown target */ + _removeTarget: function(target) { + this._timerTargets = $.map(this._timerTargets, + function(value) { return (value == target ? null : value); }); // delete entry + }, + + /* Update each active timer target. */ + _updateTargets: function() { + for (var i = this._timerTargets.length - 1; i >= 0; i--) { + this._updateCountdown(this._timerTargets[i]); + } + }, + + /* Reconfigure the settings for a countdown div. + @param target (element) the control to affect + @param options (object) the new options for this instance or + (string) an individual property name + @param value (any) the individual property value (omit if options + is an object or to retrieve the value of a setting) + @return (any) if retrieving a value */ + _optionPlugin: function(target, options, value) { + target = $(target); + var inst = target.data(this.propertyName); + if (!options || (typeof options == 'string' && value == null)) { // Get option + var name = options; + options = (inst || {}).options; + return (options && name ? options[name] : options); + } + + if (!target.hasClass(this.markerClassName)) { + return; + } + options = options || {}; + if (typeof options == 'string') { + var name = options; + options = {}; + options[name] = value; + } + if (options.layout) { + options.layout = options.layout.replace(/</g, '<').replace(/>/g, '>'); + } + this._resetExtraLabels(inst.options, options); + var timezoneChanged = (inst.options.timezone != options.timezone); + $.extend(inst.options, options); + this._adjustSettings(target, inst, + options.until != null || options.since != null || timezoneChanged); + var now = new Date(); + if ((inst._since && inst._since < now) || (inst._until && inst._until > now)) { + this._addTarget(target[0]); + } + this._updateCountdown(target, inst); + }, + + /* Redisplay the countdown with an updated display. + @param target (jQuery) the containing division + @param inst (object) the current settings for this instance */ + _updateCountdown: function(target, inst) { + var $target = $(target); + inst = inst || $target.data(this.propertyName); + if (!inst) { + return; + } + $target.html(this._generateHTML(inst)).toggleClass(this._rtlClass, inst.options.isRTL); + if ($.isFunction(inst.options.onTick)) { + var periods = inst._hold != 'lap' ? inst._periods : + this._calculatePeriods(inst, inst._show, inst.options.significant, new Date()); + if (inst.options.tickInterval == 1 || + this.periodsToSeconds(periods) % inst.options.tickInterval == 0) { + inst.options.onTick.apply(target, [periods]); + } + } + var expired = inst._hold != 'pause' && + (inst._since ? inst._now.getTime() < inst._since.getTime() : + inst._now.getTime() >= inst._until.getTime()); + if (expired && !inst._expiring) { + inst._expiring = true; + if (this._hasTarget(target) || inst.options.alwaysExpire) { + this._removeTarget(target); + if ($.isFunction(inst.options.onExpiry)) { + inst.options.onExpiry.apply(target, []); + } + if (inst.options.expiryText) { + var layout = inst.options.layout; + inst.options.layout = inst.options.expiryText; + this._updateCountdown(target, inst); + inst.options.layout = layout; + } + if (inst.options.expiryUrl) { + window.location = inst.options.expiryUrl; + } + } + inst._expiring = false; + } + else if (inst._hold == 'pause') { + this._removeTarget(target); + } + $target.data(this.propertyName, inst); + }, + + /* Reset any extra labelsn and compactLabelsn entries if changing labels. + @param base (object) the options to be updated + @param options (object) the new option values */ + _resetExtraLabels: function(base, options) { + var changingLabels = false; + for (var n in options) { + if (n != 'whichLabels' && n.match(/[Ll]abels/)) { + changingLabels = true; + break; + } + } + if (changingLabels) { + for (var n in base) { // Remove custom numbered labels + if (n.match(/[Ll]abels[02-9]|compactLabels1/)) { + base[n] = null; + } + } + } + }, + + /* Calculate interal settings for an instance. + @param target (element) the containing division + @param inst (object) the current settings for this instance + @param recalc (boolean) true if until or since are set */ + _adjustSettings: function(target, inst, recalc) { + var now; + var serverOffset = 0; + var serverEntry = null; + for (var i = 0; i < this._serverSyncs.length; i++) { + if (this._serverSyncs[i][0] == inst.options.serverSync) { + serverEntry = this._serverSyncs[i][1]; + break; + } + } + if (serverEntry != null) { + serverOffset = (inst.options.serverSync ? serverEntry : 0); + now = new Date(); + } + else { + var serverResult = ($.isFunction(inst.options.serverSync) ? + inst.options.serverSync.apply(target, []) : null); + now = new Date(); + serverOffset = (serverResult ? now.getTime() - serverResult.getTime() : 0); + this._serverSyncs.push([inst.options.serverSync, serverOffset]); + } + var timezone = inst.options.timezone; + timezone = (timezone == null ? -now.getTimezoneOffset() : timezone); + if (recalc || (!recalc && inst._until == null && inst._since == null)) { + inst._since = inst.options.since; + if (inst._since != null) { + inst._since = this.UTCDate(timezone, this._determineTime(inst._since, null)); + if (inst._since && serverOffset) { + inst._since.setMilliseconds(inst._since.getMilliseconds() + serverOffset); + } + } + inst._until = this.UTCDate(timezone, this._determineTime(inst.options.until, now)); + if (serverOffset) { + inst._until.setMilliseconds(inst._until.getMilliseconds() + serverOffset); + } + } + inst._show = this._determineShow(inst); + }, + + /* Remove the countdown widget from a div. + @param target (element) the containing division */ + _destroyPlugin: function(target) { + target = $(target); + if (!target.hasClass(this.markerClassName)) { + return; + } + this._removeTarget(target[0]); + target.removeClass(this.markerClassName).empty().removeData(this.propertyName); + }, + + /* Pause a countdown widget at the current time. + Stop it running but remember and display the current time. + @param target (element) the containing division */ + _pausePlugin: function(target) { + this._hold(target, 'pause'); + }, + + /* Pause a countdown widget at the current time. + Stop the display but keep the countdown running. + @param target (element) the containing division */ + _lapPlugin: function(target) { + this._hold(target, 'lap'); + }, + + /* Resume a paused countdown widget. + @param target (element) the containing division */ + _resumePlugin: function(target) { + this._hold(target, null); + }, + + /* Pause or resume a countdown widget. + @param target (element) the containing division + @param hold (string) the new hold setting */ + _hold: function(target, hold) { + var inst = $.data(target, this.propertyName); + if (inst) { + if (inst._hold == 'pause' && !hold) { + inst._periods = inst._savePeriods; + var sign = (inst._since ? '-' : '+'); + inst[inst._since ? '_since' : '_until'] = + this._determineTime(sign + inst._periods[0] + 'y' + + sign + inst._periods[1] + 'o' + sign + inst._periods[2] + 'w' + + sign + inst._periods[3] + 'd' + sign + inst._periods[4] + 'h' + + sign + inst._periods[5] + 'm' + sign + inst._periods[6] + 's'); + this._addTarget(target); + } + inst._hold = hold; + inst._savePeriods = (hold == 'pause' ? inst._periods : null); + $.data(target, this.propertyName, inst); + this._updateCountdown(target, inst); + } + }, + + /* Return the current time periods. + @param target (element) the containing division + @return (number[7]) the current periods for the countdown */ + _getTimesPlugin: function(target) { + var inst = $.data(target, this.propertyName); + return (!inst ? null : (inst._hold == 'pause' ? inst._savePeriods : (!inst._hold ? inst._periods : + this._calculatePeriods(inst, inst._show, inst.options.significant, new Date())))); + }, + + /* A time may be specified as an exact value or a relative one. + @param setting (string or number or Date) - the date/time value + as a relative or absolute value + @param defaultTime (Date) the date/time to use if no other is supplied + @return (Date) the corresponding date/time */ + _determineTime: function(setting, defaultTime) { + var offsetNumeric = function(offset) { // e.g. +300, -2 + var time = new Date(); + time.setTime(time.getTime() + offset * 1000); + return time; + }; + var offsetString = function(offset) { // e.g. '+2d', '-4w', '+3h +30m' + offset = offset.toLowerCase(); + var time = new Date(); + var year = time.getFullYear(); + var month = time.getMonth(); + var day = time.getDate(); + var hour = time.getHours(); + var minute = time.getMinutes(); + var second = time.getSeconds(); + var pattern = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g; + var matches = pattern.exec(offset); + while (matches) { + switch (matches[2] || 's') { + case 's': second += parseInt(matches[1], 10); break; + case 'm': minute += parseInt(matches[1], 10); break; + case 'h': hour += parseInt(matches[1], 10); break; + case 'd': day += parseInt(matches[1], 10); break; + case 'w': day += parseInt(matches[1], 10) * 7; break; + case 'o': + month += parseInt(matches[1], 10); + day = Math.min(day, plugin._getDaysInMonth(year, month)); + break; + case 'y': + year += parseInt(matches[1], 10); + day = Math.min(day, plugin._getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day, hour, minute, second, 0); + }; + var time = (setting == null ? defaultTime : + (typeof setting == 'string' ? offsetString(setting) : + (typeof setting == 'number' ? offsetNumeric(setting) : setting))); + if (time) time.setMilliseconds(0); + return time; + }, + + /* Determine the number of days in a month. + @param year (number) the year + @param month (number) the month + @return (number) the days in that month */ + _getDaysInMonth: function(year, month) { + return 32 - new Date(year, month, 32).getDate(); + }, + + /* Determine which set of labels should be used for an amount. + @param num (number) the amount to be displayed + @return (number) the set of labels to be used for this amount */ + _normalLabels: function(num) { + return num; + }, + + /* Generate the HTML to display the countdown widget. + @param inst (object) the current settings for this instance + @return (string) the new HTML for the countdown display */ + _generateHTML: function(inst) { + var self = this; + // Determine what to show + inst._periods = (inst._hold ? inst._periods : + this._calculatePeriods(inst, inst._show, inst.options.significant, new Date())); + // Show all 'asNeeded' after first non-zero value + var shownNonZero = false; + var showCount = 0; + var sigCount = inst.options.significant; + var show = $.extend({}, inst._show); + for (var period = Y; period <= S; period++) { + shownNonZero |= (inst._show[period] == '?' && inst._periods[period] > 0); + show[period] = (inst._show[period] == '?' && !shownNonZero ? null : inst._show[period]); + showCount += (show[period] ? 1 : 0); + sigCount -= (inst._periods[period] > 0 ? 1 : 0); + } + var showSignificant = [false, false, false, false, false, false, false]; + for (var period = S; period >= Y; period--) { // Determine significant periods + if (inst._show[period]) { + if (inst._periods[period]) { + showSignificant[period] = true; + } + else { + showSignificant[period] = sigCount > 0; + sigCount--; + } + } + } + var labels = (inst.options.compact ? inst.options.compactLabels : inst.options.labels); + var whichLabels = inst.options.whichLabels || this._normalLabels; + var showCompact = function(period) { + var labelsNum = inst.options['compactLabels' + whichLabels(inst._periods[period])]; + return (show[period] ? self._translateDigits(inst, inst._periods[period]) + + (labelsNum ? labelsNum[period] : labels[period]) + ' ' : ''); + }; + var showFull = function(period) { + var labelsNum = inst.options['labels' + whichLabels(inst._periods[period])]; + return ((!inst.options.significant && show[period]) || + (inst.options.significant && showSignificant[period]) ? + '' + + '' + + self._translateDigits(inst, inst._periods[period]) + '
' + + (labelsNum ? labelsNum[period] : labels[period]) + '
' : ''); + }; + return (inst.options.layout ? this._buildLayout(inst, show, inst.options.layout, + inst.options.compact, inst.options.significant, showSignificant) : + ((inst.options.compact ? // Compact version + '' + + showCompact(Y) + showCompact(O) + showCompact(W) + showCompact(D) + + (show[H] ? this._minDigits(inst, inst._periods[H], 2) : '') + + (show[M] ? (show[H] ? inst.options.timeSeparator : '') + + this._minDigits(inst, inst._periods[M], 2) : '') + + (show[S] ? (show[H] || show[M] ? inst.options.timeSeparator : '') + + this._minDigits(inst, inst._periods[S], 2) : '') : + // Full version + '' + + showFull(Y) + showFull(O) + showFull(W) + showFull(D) + + showFull(H) + showFull(M) + showFull(S)) + '' + + (inst.options.description ? '' + + inst.options.description + '' : ''))); + }, + + /* Construct a custom layout. + @param inst (object) the current settings for this instance + @param show (string[7]) flags indicating which periods are requested + @param layout (string) the customised layout + @param compact (boolean) true if using compact labels + @param significant (number) the number of periods with values to show, zero for all + @param showSignificant (boolean[7]) other periods to show for significance + @return (string) the custom HTML */ + _buildLayout: function(inst, show, layout, compact, significant, showSignificant) { + var labels = inst.options[compact ? 'compactLabels' : 'labels']; + var whichLabels = inst.options.whichLabels || this._normalLabels; + var labelFor = function(index) { + return (inst.options[(compact ? 'compactLabels' : 'labels') + + whichLabels(inst._periods[index])] || labels)[index]; + }; + var digit = function(value, position) { + return inst.options.digits[Math.floor(value / position) % 10]; + }; + var subs = {desc: inst.options.description, sep: inst.options.timeSeparator, + yl: labelFor(Y), yn: this._minDigits(inst, inst._periods[Y], 1), + ynn: this._minDigits(inst, inst._periods[Y], 2), + ynnn: this._minDigits(inst, inst._periods[Y], 3), y1: digit(inst._periods[Y], 1), + y10: digit(inst._periods[Y], 10), y100: digit(inst._periods[Y], 100), + y1000: digit(inst._periods[Y], 1000), + ol: labelFor(O), on: this._minDigits(inst, inst._periods[O], 1), + onn: this._minDigits(inst, inst._periods[O], 2), + onnn: this._minDigits(inst, inst._periods[O], 3), o1: digit(inst._periods[O], 1), + o10: digit(inst._periods[O], 10), o100: digit(inst._periods[O], 100), + o1000: digit(inst._periods[O], 1000), + wl: labelFor(W), wn: this._minDigits(inst, inst._periods[W], 1), + wnn: this._minDigits(inst, inst._periods[W], 2), + wnnn: this._minDigits(inst, inst._periods[W], 3), w1: digit(inst._periods[W], 1), + w10: digit(inst._periods[W], 10), w100: digit(inst._periods[W], 100), + w1000: digit(inst._periods[W], 1000), + dl: labelFor(D), dn: this._minDigits(inst, inst._periods[D], 1), + dnn: this._minDigits(inst, inst._periods[D], 2), + dnnn: this._minDigits(inst, inst._periods[D], 3), d1: digit(inst._periods[D], 1), + d10: digit(inst._periods[D], 10), d100: digit(inst._periods[D], 100), + d1000: digit(inst._periods[D], 1000), + hl: labelFor(H), hn: this._minDigits(inst, inst._periods[H], 1), + hnn: this._minDigits(inst, inst._periods[H], 2), + hnnn: this._minDigits(inst, inst._periods[H], 3), h1: digit(inst._periods[H], 1), + h10: digit(inst._periods[H], 10), h100: digit(inst._periods[H], 100), + h1000: digit(inst._periods[H], 1000), + ml: labelFor(M), mn: this._minDigits(inst, inst._periods[M], 1), + mnn: this._minDigits(inst, inst._periods[M], 2), + mnnn: this._minDigits(inst, inst._periods[M], 3), m1: digit(inst._periods[M], 1), + m10: digit(inst._periods[M], 10), m100: digit(inst._periods[M], 100), + m1000: digit(inst._periods[M], 1000), + sl: labelFor(S), sn: this._minDigits(inst, inst._periods[S], 1), + snn: this._minDigits(inst, inst._periods[S], 2), + snnn: this._minDigits(inst, inst._periods[S], 3), s1: digit(inst._periods[S], 1), + s10: digit(inst._periods[S], 10), s100: digit(inst._periods[S], 100), + s1000: digit(inst._periods[S], 1000)}; + var html = layout; + // Replace period containers: {p<}...{p>} + for (var i = Y; i <= S; i++) { + var period = 'yowdhms'.charAt(i); + var re = new RegExp('\\{' + period + '<\\}([\\s\\S]*)\\{' + period + '>\\}', 'g'); + html = html.replace(re, ((!significant && show[i]) || + (significant && showSignificant[i]) ? '$1' : '')); + } + // Replace period values: {pn} + $.each(subs, function(n, v) { + var re = new RegExp('\\{' + n + '\\}', 'g'); + html = html.replace(re, v); + }); + return html; + }, + + /* Ensure a numeric value has at least n digits for display. + @param inst (object) the current settings for this instance + @param value (number) the value to display + @param len (number) the minimum length + @return (string) the display text */ + _minDigits: function(inst, value, len) { + value = '' + value; + if (value.length >= len) { + return this._translateDigits(inst, value); + } + value = '0000000000' + value; + return this._translateDigits(inst, value.substr(value.length - len)); + }, + + /* Translate digits into other representations. + @param inst (object) the current settings for this instance + @param value (string) the text to translate + @return (string) the translated text */ + _translateDigits: function(inst, value) { + return ('' + value).replace(/[0-9]/g, function(digit) { + return inst.options.digits[digit]; + }); + }, + + /* Translate the format into flags for each period. + @param inst (object) the current settings for this instance + @return (string[7]) flags indicating which periods are requested (?) or + required (!) by year, month, week, day, hour, minute, second */ + _determineShow: function(inst) { + var format = inst.options.format; + var show = []; + show[Y] = (format.match('y') ? '?' : (format.match('Y') ? '!' : null)); + show[O] = (format.match('o') ? '?' : (format.match('O') ? '!' : null)); + show[W] = (format.match('w') ? '?' : (format.match('W') ? '!' : null)); + show[D] = (format.match('d') ? '?' : (format.match('D') ? '!' : null)); + show[H] = (format.match('h') ? '?' : (format.match('H') ? '!' : null)); + show[M] = (format.match('m') ? '?' : (format.match('M') ? '!' : null)); + show[S] = (format.match('s') ? '?' : (format.match('S') ? '!' : null)); + return show; + }, + + /* Calculate the requested periods between now and the target time. + @param inst (object) the current settings for this instance + @param show (string[7]) flags indicating which periods are requested/required + @param significant (number) the number of periods with values to show, zero for all + @param now (Date) the current date and time + @return (number[7]) the current time periods (always positive) + by year, month, week, day, hour, minute, second */ + _calculatePeriods: function(inst, show, significant, now) { + // Find endpoints + inst._now = now; + inst._now.setMilliseconds(0); + var until = new Date(inst._now.getTime()); + if (inst._since) { + if (now.getTime() < inst._since.getTime()) { + inst._now = now = until; + } + else { + now = inst._since; + } + } + else { + until.setTime(inst._until.getTime()); + if (now.getTime() > inst._until.getTime()) { + inst._now = now = until; + } + } + // Calculate differences by period + var periods = [0, 0, 0, 0, 0, 0, 0]; + if (show[Y] || show[O]) { + // Treat end of months as the same + var lastNow = plugin._getDaysInMonth(now.getFullYear(), now.getMonth()); + var lastUntil = plugin._getDaysInMonth(until.getFullYear(), until.getMonth()); + var sameDay = (until.getDate() == now.getDate() || + (until.getDate() >= Math.min(lastNow, lastUntil) && + now.getDate() >= Math.min(lastNow, lastUntil))); + var getSecs = function(date) { + return (date.getHours() * 60 + date.getMinutes()) * 60 + date.getSeconds(); + }; + var months = Math.max(0, + (until.getFullYear() - now.getFullYear()) * 12 + until.getMonth() - now.getMonth() + + ((until.getDate() < now.getDate() && !sameDay) || + (sameDay && getSecs(until) < getSecs(now)) ? -1 : 0)); + periods[Y] = (show[Y] ? Math.floor(months / 12) : 0); + periods[O] = (show[O] ? months - periods[Y] * 12 : 0); + // Adjust for months difference and end of month if necessary + now = new Date(now.getTime()); + var wasLastDay = (now.getDate() == lastNow); + var lastDay = plugin._getDaysInMonth(now.getFullYear() + periods[Y], + now.getMonth() + periods[O]); + if (now.getDate() > lastDay) { + now.setDate(lastDay); + } + now.setFullYear(now.getFullYear() + periods[Y]); + now.setMonth(now.getMonth() + periods[O]); + if (wasLastDay) { + now.setDate(lastDay); + } + } + var diff = Math.floor((until.getTime() - now.getTime()) / 1000); + var extractPeriod = function(period, numSecs) { + periods[period] = (show[period] ? Math.floor(diff / numSecs) : 0); + diff -= periods[period] * numSecs; + }; + extractPeriod(W, 604800); + extractPeriod(D, 86400); + extractPeriod(H, 3600); + extractPeriod(M, 60); + extractPeriod(S, 1); + if (diff > 0 && !inst._since) { // Round up if left overs + var multiplier = [1, 12, 4.3482, 7, 24, 60, 60]; + var lastShown = S; + var max = 1; + for (var period = S; period >= Y; period--) { + if (show[period]) { + if (periods[lastShown] >= max) { + periods[lastShown] = 0; + diff = 1; + } + if (diff > 0) { + periods[period]++; + diff = 0; + lastShown = period; + max = 1; + } + } + max *= multiplier[period]; + } + } + if (significant) { // Zero out insignificant periods + for (var period = Y; period <= S; period++) { + if (significant && periods[period]) { + significant--; + } + else if (!significant) { + periods[period] = 0; + } + } + } + return periods; + } +}); + +// The list of commands that return values and don't permit chaining +var getters = ['getTimes']; + +/* Determine whether a command is a getter and doesn't permit chaining. + @param command (string, optional) the command to run + @param otherArgs ([], optional) any other arguments for the command + @return true if the command is a getter, false if not */ +function isNotChained(command, otherArgs) { + if (command == 'option' && (otherArgs.length == 0 || + (otherArgs.length == 1 && typeof otherArgs[0] == 'string'))) { + return true; + } + return $.inArray(command, getters) > -1; +} + +/* Process the countdown functionality for a jQuery selection. + @param options (object) the new settings to use for these instances (optional) or + (string) the command to run (optional) + @return (jQuery) for chaining further calls or + (any) getter value */ +$.fn.countdown = function(options) { + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (isNotChained(options, otherArgs)) { + return plugin['_' + options + 'Plugin']. + apply(plugin, [this[0]].concat(otherArgs)); + } + return this.each(function() { + if (typeof options == 'string') { + if (!plugin['_' + options + 'Plugin']) { + throw 'Unknown command: ' + options; + } + plugin['_' + options + 'Plugin']. + apply(plugin, [this].concat(otherArgs)); + } + else { + plugin._attachPlugin(this, options || {}); + } + }); +}; + +/* Initialise the countdown functionality. */ +var plugin = $.countdown = new Countdown(); // Singleton instance + +})(jQuery); diff --git a/gdgvietnam/templates/index.html b/gdgvietnam/templates/index.html index 3f1454e..05f8ac2 100644 --- a/gdgvietnam/templates/index.html +++ b/gdgvietnam/templates/index.html @@ -1,71 +1,140 @@ {% extends "base.html" %} -{% load i18n %} +{% load i18n staticfiles mezzanine_tags %} {% block meta_title %}{% trans "GDGVietnam" %}{% endblock %} - +{% block extra_css %} + +{% endblock %} +{% block extra_js %} + + +{% endblock %} {% block main %} -

Our latest events

-